android studio中的摄像头打开
这是我的代码:android studio中的摄像头打开,android,camera,android-camera,Android,Camera,Android Camera,这是我的代码: @TargetApi(9) public void surfaceCreated(SurfaceHolder holder){ Log.e(TAG, "surfaceCreated"); mCamera = Camera.open(cameraID); } public void surfaceChanged(SurfaceHolder holder, int for
@TargetApi(9)
public void surfaceCreated(SurfaceHolder holder){
Log.e(TAG, "surfaceCreated");
mCamera = Camera.open(cameraID);
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
Log.e(TAG, "surfaceChanged");
// XXX stopPreview() will crash if preview is not running
if (mPreviewRunning){
mCamera.stopPreview();
}
Camera.Parameters p = mCamera.getParameters();
p.setPreviewSize(300, 300);
mCamera.setParameters(p);
try{
mCamera.setPreviewDisplay(holder);
}catch (Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
}
mCamera.startPreview();
mPreviewRunning = true;
mCamera.takePicture(null, mPictureCallback, mPictureCallback);
}
public void surfaceDestroyed(SurfaceHolder holder) {
Log.e(TAG, "surfaceDestroyed");
//mCamera.stopPreview();
//mPreviewRunning = false;
//mCamera.release();
}
private SurfaceView mSurfaceView;
private SurfaceHolder mSurfaceHolder;
失败原因:mCamera.setParameters(p)代码>
有人能帮忙吗
您的设备不支持预览300x300像素,这就是cmera.setParameters()
失败的原因。对于CameraParameters.getSupportedPreviewSizes()
中列出的一种大小,只能调用CameraParameters.setPreviewsizes()
几点注意:
- 如果您的设备有多个摄像头,每个摄像头都有自己的支持尺寸列表;某些尺寸可能由两个摄像头支持,而其他尺寸则不支持
- 在某些罕见的情况下,即使您选择了由
getSupportedPreviewSizes()
返回的大小之一,某些设备也可能抛出RuntimeException。这些都是平台漏洞,您可以保留每个模型/平台的此类案例黑名单。但无论如何,不要忘记将setParameters()
包装在try…catch
中,并尝试解决问题
- 在一些罕见的情况下,一些设备可能不会抛出RuntimeException,而只是忽略预览大小请求(或其他一些参数)。做好准备
- android.hardware.Camera类已弃用。对于Android棒棒糖(21)及更高版本的设备,请使用API
它失败了
具体如何?我需要在p.setPreviewSize(此处)中输入(int,int)您能解释一下吗?对不起,缺少什么解释?下面是一个示例代码:stackoverflow.com/a/21404771/192373