Android Nexus 4中的摄像头未打开
目前,我正在构建一个应用程序,其中我将通过surfaceholder在framelayout上打开一个摄像头。除nexus 4和其他nexus系列外,它可用于所有设备。我用下面的代码打开相机Android Nexus 4中的摄像头未打开,android,android-camera,Android,Android Camera,目前,我正在构建一个应用程序,其中我将通过surfaceholder在framelayout上打开一个摄像头。除nexus 4和其他nexus系列外,它可用于所有设备。我用下面的代码打开相机 SurfaceHolder mHolder; public Camera camera; int mCameraId; Preview(Context context) { super(context); mHolder = getHolder(); mHolder.addCal
SurfaceHolder mHolder;
public Camera camera;
int mCameraId;
Preview(Context context) {
super(context);
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open();
camera.setDisplayOrientation(90);
try {
if (camera != null) {
camera.setPreviewDisplay(holder);
camera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera arg1) {
FileOutputStream outStream = null;
try {
Log.d(TAG, "onPreviewFrame - wrote bytes: "
+ data.length);
} finally {
}
Preview.this.invalidate();
}
});
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
camera.stopPreview();
camera.release();
camera = null;
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
Camera.Parameters parameters = camera.getParameters();
parameters.setPreviewSize(w, h);
camera.setParameters(parameters);
camera.startPreview();
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
Paint p = new Paint(Color.RED);
Log.d(TAG, "draw");
canvas.drawText("PREVIEW", canvas.getWidth() / 2,
canvas.getHeight() / 2, p);
}
}试试下面的代码,这对我来说很有用
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> sizes = parameters.getSupportedPreviewSizes();
Camera.Size cs = sizes.get(0);
parameters.setPreviewSize(cs.width, cs.height);
// parameters.setPreviewSize(w, h);
camera.setParameters(parameters);
camera.startPreview();
Camera.Parameters=Camera.getParameters();
列表大小=参数。getSupportedPreviewSizes();
Camera.Size cs=Size.get(0);
parameters.setPreviewSize(cs.width,cs.height);
//参数设置预览大小(w,h);
设置参数(参数);
camera.startPreview();
堆栈跟踪中显示的任何错误。错误是什么?尝试此演示java.lang.RuntimeException:setParameters失败10-29 10:28:24.445:E/AndroidRuntime(6556):在android.hardware.Camera.native_setParameters(native方法)E/AndroidRuntime(6556):在android.hardware.Camera.setParameters(Camera.java:1495)