Android: 当按钮被点击时切换摄像头

10 浏览
0 Comments

Android: 当按钮被点击时切换摄像头

我有一个叫做switchCamera的方法,我试图在点击按钮时从前置摄像头切换到后置摄像头,并且希望能够平滑过渡。但是当我调用这个方法时,我的应用程序会冻结 - 我知道我做错了什么。有人可以帮帮我吗?

非常感谢任何帮助。

public void switchCamera(){
    int camNum = 0;
    camNum = Camera.getNumberOfCameras();
    int camBackId = Camera.CameraInfo.CAMERA_FACING_BACK;
    int camFrontId = Camera.CameraInfo.CAMERA_FACING_FRONT;
    Camera.CameraInfo currentCamInfo = new Camera.CameraInfo();
    //如果相机正在运行
    if (camera != null){
        //并且有多于一个摄像头
        if (camNum > 1){
            //停止当前相机
            camera.stopPreview();
            camera.setPreviewCallback(null);
            //camera.takePicture(null, null, PictureCallback);
            camera.release();
            camera = null;
            //停止surfaceHolder?
            if (currentCamInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT){
                //切换到后置摄像头
                camera=Camera.open(camBackId);
            }
            else{
                //切换到前置摄像头
                camera=Camera.open(camFrontId);
            }
            //重新打开相机
            //指定surface?
            try {
                camera.setPreviewDisplay(surfaceHolder);
                camera.setPreviewCallback((PreviewCallback) this);
                camera.startPreview();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

0