summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/AndroidCameraManagerImpl.java
diff options
context:
space:
mode:
authorSanjeev Garg <sangarg@codeaurora.org>2015-10-12 11:58:01 +0530
committerSteve Kondik <steve@cyngn.com>2016-08-03 15:44:40 -0700
commita2794eab22238885f5a3e2ed95e9fd2a1c42e810 (patch)
treee6a6c6cb3a997fecb7f3709186c5108169f97c3d /src/com/android/camera/AndroidCameraManagerImpl.java
parent7383a2dc7fa69383bfca0a1693e5bbe3c9601d51 (diff)
downloadandroid_packages_apps_Snap-a2794eab22238885f5a3e2ed95e9fd2a1c42e810.tar.gz
android_packages_apps_Snap-a2794eab22238885f5a3e2ed95e9fd2a1c42e810.tar.bz2
android_packages_apps_Snap-a2794eab22238885f5a3e2ed95e9fd2a1c42e810.zip
SnapdragonCamera: Handle startPreview exception in camera.
If any exception occurs in start preview then camera app should handle this exception and should display error pop-up and exit gracefully. CRs-Fixed: 919778 Change-Id: I80b60224d5d47a96dad78c40f8a23e3e9be45e65
Diffstat (limited to 'src/com/android/camera/AndroidCameraManagerImpl.java')
-rw-r--r--src/com/android/camera/AndroidCameraManagerImpl.java28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/com/android/camera/AndroidCameraManagerImpl.java b/src/com/android/camera/AndroidCameraManagerImpl.java
index 97ec6af18..e67c7b463 100644
--- a/src/com/android/camera/AndroidCameraManagerImpl.java
+++ b/src/com/android/camera/AndroidCameraManagerImpl.java
@@ -118,6 +118,8 @@ class AndroidCameraManagerImpl implements CameraManager {
}
private class CameraHandler extends Handler {
+ CameraOpenErrorCallbackForward errorCbInstance;
+
CameraHandler(Looper looper) {
super(looper);
}
@@ -251,6 +253,7 @@ class AndroidCameraManagerImpl implements CameraManager {
return;
}
mCamera.release();
+ errorCbInstance = null;
mCamera = null;
return;
@@ -284,7 +287,13 @@ class AndroidCameraManagerImpl implements CameraManager {
return;
case START_PREVIEW_ASYNC:
- mCamera.startPreview();
+ try {
+ mCamera.startPreview();
+ } catch (Exception e) {
+ e.printStackTrace();
+ if (errorCbInstance != null)
+ errorCbInstance.onStartPreviewFailure(msg.arg1);
+ }
return;
case STOP_PREVIEW:
@@ -415,9 +424,10 @@ class AndroidCameraManagerImpl implements CameraManager {
@Override
public CameraManager.CameraProxy cameraOpen(
Handler handler, int cameraId, CameraOpenErrorCallback callback) {
- mCameraHandler.obtainMessage(OPEN_CAMERA, cameraId, 0,
- CameraOpenErrorCallbackForward.getNewInstance(
- handler, callback)).sendToTarget();
+ mCameraHandler.errorCbInstance = CameraOpenErrorCallbackForward
+ .getNewInstance(handler, callback);
+ mCameraHandler.obtainMessage(OPEN_CAMERA, cameraId, 0, mCameraHandler.errorCbInstance)
+ .sendToTarget();
mCameraHandler.waitDone();
if (mCamera != null) {
return new AndroidCameraProxyImpl();
@@ -990,5 +1000,15 @@ class AndroidCameraManagerImpl implements CameraManager {
}
});
}
+
+ @Override
+ public void onStartPreviewFailure(final int cameraId) {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mCallback.onStartPreviewFailure(cameraId);
+ }
+ });
+ }
}
}