diff options
Diffstat (limited to 'src/com/android/camera/one/v2/Camera2OneCameraOpenerImpl.java')
-rw-r--r-- | src/com/android/camera/one/v2/Camera2OneCameraOpenerImpl.java | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/com/android/camera/one/v2/Camera2OneCameraOpenerImpl.java b/src/com/android/camera/one/v2/Camera2OneCameraOpenerImpl.java index 3529310e8..f0a0ce637 100644 --- a/src/com/android/camera/one/v2/Camera2OneCameraOpenerImpl.java +++ b/src/com/android/camera/one/v2/Camera2OneCameraOpenerImpl.java @@ -131,6 +131,9 @@ public class Camera2OneCameraOpenerImpl implements OneCameraOpener { // then we must call close. device.close(); openCallback.onCameraClosed(); + } else { + // Disconnected during active session + openCallback.onCameraInterrupted(); } } @@ -144,7 +147,12 @@ public class Camera2OneCameraOpenerImpl implements OneCameraOpener { @Override public void onError(CameraDevice device, int error) { - if (isFirstCallback) { + if (error == CameraDevice.StateCallback.ERROR_CAMERA_IN_USE) { + // Tolerate ERROR_CAMERA_IN_USE for split-screen. + isFirstCallback = false; + device.close(); + openCallback.onCameraInUse(); + } else if (isFirstCallback) { isFirstCallback = false; device.close(); openCallback.onFailure(); @@ -197,7 +205,11 @@ public class Camera2OneCameraOpenerImpl implements OneCameraOpener { handler.post(new Runnable() { @Override public void run() { - openCallback.onFailure(); + if (ex.getReason() == CameraAccessException.CAMERA_IN_USE) { + openCallback.onCameraInUse(); + } else { + openCallback.onFailure(); + } } }); } catch (UnsupportedOperationException ex) { |