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