0

当我尝试使用下面的代码打开前置摄像头时,它没有在 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();
                }
            }
        }


    }
}); 
4

2 回答 2

0

您需要使用surfaceview 和surface holder。只是调用start preview 不会启动相机预览,首先您需要使用surfacview 设置在xml 中显示该预览的位置。

查看此文档文档以了解有关如何使用 surfaceview 进行预览的更多信息

于 2014-07-26T14:31:53.733 回答
0

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

try {
     camera.setPreviewDisplay(surfaceView.getHolder());
} catch (IOException e) {
     Log.e(TAG, e.getLocalizedMessage());
}
于 2017-04-20T10:12:42.943 回答