Кордова: как убить камеру, созданную SurfaceView и CameraSource
Я открываю камеру, используя SurfaceView и CameraView, как показано ниже
surfaceView = new SurfaceView(context);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT,
Gravity.CENTER);
cordova.getActivity().addContentView(surfaceView, params);
cameraSource = new CameraSource.Builder(context, textRecognizer)
.setFacing(CameraSource.CAMERA_FACING_BACK)
.setRequestedPreviewSize(1280, 1024)
.setRequestedFps(2.0f)
.setAutoFocusEnabled(true)
.build();
surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
try {
cameraSource.start(surfaceView.getHolder());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
cameraSource.stop();
}
});
После этого я пытаюсь закрыть камеру, но не могу закрыть камеру. Кто-нибудь знает, как это сделать?
Что я пробовал (которые не работают)
1. cordova.getActivity().finish();
2. cameraSource.stop();
3. cordova.getActivity().addContentView(null, null);
4. ((ViewGroup) surfaceView.getParent()).removeView(surfaceView);