【发布时间】:2017-02-14 10:57:02
【问题描述】:
我正在使用此代码(如下所示)在按钮单击时拍照,照片已成功拍摄,但处于横向模式,我已使用 params.set("orientation", "portrait"); 将相机方向设置为纵向,但这不起作用。我也尝试过camera.setDisplayOrientation(90);,但结果没有变化。那么请帮助我如何以纵向模式拍照?
我的代码:
package com.example.appdeveloperahmed.ct2;
import android.hardware.Camera;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Display;
import android.view.Surface;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
@SuppressWarnings("deprecation")
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button);
b.setOnClickListener(this);
}
@Override
public void onClick(View v) {
takeSnapShots();
}
private void takeSnapShots() {
SurfaceView surface = new SurfaceView(this);
Camera camera = null;
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
int cameraCount = Camera.getNumberOfCameras();
for (int camIdx=0; camIdx < cameraCount; camIdx++) {
Camera.getCameraInfo(camIdx, cameraInfo);
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT)
camera = Camera.open(camIdx);
}
if(camera==null)
camera = Camera.open();
try {
camera.setPreviewDisplay(surface.getHolder());
}
catch (IOException e) {
e.printStackTrace();
}
Camera.Parameters parameters = camera.getParameters();
parameters.set("orientation", "portrait");
camera.setParameters(parameters);
camera.startPreview();
camera.takePicture(null, null, jpegCallback);
}
Camera.PictureCallback jpegCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
FileOutputStream outStream = null;
try {
String dir_path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder/";
outStream = new FileOutputStream(dir_path+ File.separator+"sl_img"+"1"+".jpg");
outStream.write(data);
outStream.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
finally {
camera.stopPreview();
camera.release();
camera = null;
Toast.makeText(getApplicationContext(), "Image snapshot Done",Toast.LENGTH_LONG).show();
}
}
};
}
【问题讨论】:
-
可能您的设备太旧了? stackoverflow.com/a/8516211/3836142
-
我的设备是三星 Tab E
-
最常见的问题或可能是重复的问题试试这个链接。 stackoverflow.com/a/10218309/5860777
-
stackoverflow.com/questions/15808719/… 看看这个............
标签: android