切换到打开前置摄像头时,SurfaceView不会预览

时间:2014-07-25 17:03:08

标签: android front-camera

当我尝试使用下面的代码打开前置摄像头时,它不是在camerapreview类的surfaceview上预览摄像头,有什么问题?

swicthToFrontCamera.setOnClickListener(new View.OnClickListener() {
    @TargetApi(Build.VERSION_CODES.GINGERBREAD)
    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        // Camera.g
        mCamera.stopPreview();
        mCamera.release();

        // Camera getFrontFacingCamera() throws NoSuchElementException {
        Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
        for (int cameraIndex = 0; cameraIndex < Camera
                .getNumberOfCameras(); cameraIndex++) {
            Camera.getCameraInfo(cameraIndex, cameraInfo);
            if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
                try {
                    Camera.open(cameraIndex);
                    //mCamera.setPreviewDisplay(mCameraPreview);
                    mCamera.startPreview();
                } catch (RuntimeException e) {
                    e.printStackTrace();
                }
            }
        }


    }
}); 

2 个答案:

答案 0 :(得分:0)

你需要使用surfaceview和surface holder。只是调用开始预览不会开始预览相机,首先你需要使用surfacview设置在xml中显示预览的位置。

检查this documentationthis以了解有关如何使用surfaceview进行预览的更多信息

答案 1 :(得分:0)

因此,在您发布旧相机后,在开始预览之前获得新相机,您需要设置新相机的预览:

try {
     camera.setPreviewDisplay(surfaceView.getHolder());
} catch (IOException e) {
     Log.e(TAG, e.getLocalizedMessage());
}