diff options
-rw-r--r-- | src/com/android/camera/CameraErrorCallback.java | 11 | ||||
-rw-r--r-- | src/com/android/camera/PhotoModule.java | 1 | ||||
-rw-r--r-- | src/com/android/camera/VideoModule.java | 2 | ||||
-rw-r--r-- | src/com/android/camera/WideAnglePanoramaModule.java | 2 |
4 files changed, 13 insertions, 3 deletions
diff --git a/src/com/android/camera/CameraErrorCallback.java b/src/com/android/camera/CameraErrorCallback.java index 7029ac427..71fa9cefd 100644 --- a/src/com/android/camera/CameraErrorCallback.java +++ b/src/com/android/camera/CameraErrorCallback.java @@ -21,6 +21,11 @@ import android.util.Log; public class CameraErrorCallback implements android.hardware.Camera.ErrorCallback { private static final String TAG = "CameraErrorCallback"; + public CameraActivity mActivity = null; + + public void setActivity(CameraActivity activity) { + mActivity = activity; + } @Override public void onError(int error, android.hardware.Camera camera) { @@ -30,7 +35,11 @@ public class CameraErrorCallback // We are not sure about the current state of the app (in preview or // snapshot or recording). Closing the app is better than creating a // new Camera object. - throw new RuntimeException("Media server died."); + if (mActivity != null) { + mActivity.finish(); + } else { + throw new RuntimeException("Media server died."); + } } } } diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index 3d6481a29..b23a99783 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -2613,6 +2613,7 @@ public class PhotoModule Log.w(TAG, "startPreview: parameters for preview are not ready."); return; } + mErrorCallback.setActivity(mActivity); mCameraDevice.setErrorCallback(mErrorCallback); // ICS camera frameworks has a bug. Face detection state is not cleared 1589 // after taking a picture. Stop the preview to work around it. The bug diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java index 51487ca52..ed2fd3aef 100644 --- a/src/com/android/camera/VideoModule.java +++ b/src/com/android/camera/VideoModule.java @@ -1073,7 +1073,7 @@ public class VideoModule implements CameraModule, mStartPrevPending = false; return; } - + mErrorCallback.setActivity(mActivity); mCameraDevice.setErrorCallback(mErrorCallback); if (mPreviewing == true) { stopPreview(); diff --git a/src/com/android/camera/WideAnglePanoramaModule.java b/src/com/android/camera/WideAnglePanoramaModule.java index f7432bfb0..c5adde802 100644 --- a/src/com/android/camera/WideAnglePanoramaModule.java +++ b/src/com/android/camera/WideAnglePanoramaModule.java @@ -1033,7 +1033,7 @@ public class WideAnglePanoramaModule // UI is not ready. return; } - + mErrorCallback.setActivity(mActivity); mCameraDevice.setErrorCallback(mErrorCallback); // This works around a driver issue. startPreview may fail if |