Refine camera fatal error handling in CameraActivity.
Use Log.e() to clearly indicate what action has been taken to handle
the error.
Bug: 17964147
Change-Id: I073e06d99a89e6e1e697766736791ef419339944
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 12edaf5..5ead5c4 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -1321,6 +1321,7 @@
= new CameraExceptionHandler.CameraExceptionCallback() {
@Override
public void onCameraError(int errorCode) {
+ // Not a fatal error. only do Log.e().
Log.e(TAG, "Camera error callback. error=" + errorCode);
}
@Override
@@ -1334,14 +1335,19 @@
onFatalError();
}
private void onFatalError() {
+ if (mCameraFatalError) {
+ return;
+ }
mCameraFatalError = true;
+
// If the activity receives exception during onPause, just exit the app.
if (mPaused && !isFinishing()) {
- Log.v(TAG, "Fatal error during onPause, call Activity.finish()");
+ Log.e(TAG, "Fatal error during onPause, call Activity.finish()");
finish();
+ } else {
+ CameraUtil.showErrorAndFinish(CameraActivity.this,
+ R.string.cannot_connect_camera);
}
- CameraUtil.showErrorAndFinish(CameraActivity.this,
- R.string.cannot_connect_camera);
}
};
@@ -1692,9 +1698,10 @@
if (mCameraFatalError && !isFinishing()) {
Log.v(TAG, "onPause when camera is in fatal state, call Activity.finish()");
finish();
+ } else {
+ // Close the camera and wait for the operation done.
+ mCameraController.closeCamera(true);
}
- // Close the camera and wait for the operation done.
- mCameraController.closeCamera(true);
}
@Override
diff --git a/src/com/android/camera/util/CameraUtil.java b/src/com/android/camera/util/CameraUtil.java
index a55aa84..b415901 100644
--- a/src/com/android/camera/util/CameraUtil.java
+++ b/src/com/android/camera/util/CameraUtil.java
@@ -301,6 +301,7 @@
// appearing, so check to ensure that the activity is not shutting down
// before attempting to attach a dialog to the window manager.
if (!activity.isFinishing()) {
+ Log.e(TAG, "Show fatal error dialog");
new AlertDialog.Builder(activity)
.setCancelable(false)
.setTitle(R.string.camera_error_title)