当我尝试使用下面的代码打开前置摄像头时,它不是在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();
}
}
}
}
});
答案 0 :(得分:0)
你需要使用surfaceview和surface holder。只是调用开始预览不会开始预览相机,首先你需要使用surfacview设置在xml中显示预览的位置。
检查this documentation和this以了解有关如何使用surfaceview进行预览的更多信息
答案 1 :(得分:0)
因此,在您发布旧相机后,在开始预览之前获得新相机,您需要设置新相机的预览:
try {
camera.setPreviewDisplay(surfaceView.getHolder());
} catch (IOException e) {
Log.e(TAG, e.getLocalizedMessage());
}