diff options
author | zafir <zafir@google.com> | 2015-03-04 14:02:47 -0800 |
---|---|---|
committer | zafir <zafir@google.com> | 2015-03-06 16:06:25 -0800 |
commit | 698e271d2b263778bfa73d1e67d6e2cd2783c89e (patch) | |
tree | ec25bfbde4132e50c7b1cfc18414e9206608d72d /src/com/android/camera/session | |
parent | 4a1378acfdebc4c2959bf68ee31e44dc9d131ae8 (diff) | |
download | android_packages_apps_Camera2-698e271d2b263778bfa73d1e67d6e2cd2783c89e.tar.gz android_packages_apps_Camera2-698e271d2b263778bfa73d1e67d6e2cd2783c89e.tar.bz2 android_packages_apps_Camera2-698e271d2b263778bfa73d1e67d6e2cd2783c89e.zip |
Added more error handling for camera access and picture storage issues.
Implemented onFailure() method in the OpenCallback interface and
onPictureTakingFailed() in the PictureCallback interface.
OnFailure() routes through showErrorAndFinish() in the AppController.
Bug: 19452391
Change-Id: I3c19a274cc7664f7d1834899a486c57d0585dc9a
Diffstat (limited to 'src/com/android/camera/session')
5 files changed, 11 insertions, 10 deletions
diff --git a/src/com/android/camera/session/CaptureSession.java b/src/com/android/camera/session/CaptureSession.java index 60b8d50e6..22ea08594 100644 --- a/src/com/android/camera/session/CaptureSession.java +++ b/src/com/android/camera/session/CaptureSession.java @@ -176,7 +176,7 @@ public interface CaptureSession { * notification of finished state, {@link #finalize()} must be called to * fully complete the session. */ - public void finishWithFailure(CharSequence reason); + public void finishWithFailure(CharSequence reason, boolean removeFromFilmstrip); /** * All processing complete, finalize the session and remove any resources. diff --git a/src/com/android/camera/session/CaptureSessionImpl.java b/src/com/android/camera/session/CaptureSessionImpl.java index 1500aaf30..12afe6cdc 100644 --- a/src/com/android/camera/session/CaptureSessionImpl.java +++ b/src/com/android/camera/session/CaptureSessionImpl.java @@ -241,14 +241,13 @@ public class CaptureSessionImpl implements CaptureSession { try { mContentUri = mPlaceholderManager.finishPlaceholder(mPlaceHolderSession, mLocation, orientation, exif, data, width, height, FilmstripItemData.MIME_TYPE_JPEG); + mSessionNotifier.notifyTaskDone(mUri); } catch (IOException e) { Log.e(TAG, "IOException", e); // TODO: Replace with a sensisble description // Placeholder string R.string.reason_storage_failure - finishWithFailure("content"); + finishWithFailure("content", true); } - - mSessionNotifier.notifyTaskDone(mUri); } @Override @@ -340,14 +339,14 @@ public class CaptureSessionImpl implements CaptureSession { } @Override - public void finishWithFailure(CharSequence reason) { + public void finishWithFailure(CharSequence reason, boolean removeFromFilmstrip) { if (mPlaceHolderSession == null) { throw new IllegalStateException( "Cannot call finish without calling startSession first."); } mProgressMessage = reason; mSessionManager.putErrorMessage(mUri, reason); - mSessionNotifier.notifyTaskFailed(mUri, reason); + mSessionNotifier.notifyTaskFailed(mUri, reason, removeFromFilmstrip); } @Override diff --git a/src/com/android/camera/session/CaptureSessionManager.java b/src/com/android/camera/session/CaptureSessionManager.java index c11f31bbf..56cc2d802 100644 --- a/src/com/android/camera/session/CaptureSessionManager.java +++ b/src/com/android/camera/session/CaptureSessionManager.java @@ -56,7 +56,7 @@ public interface CaptureSessionManager { public void onSessionDone(Uri mediaUri); /** Called when the session with the given Uri failed processing. */ - public void onSessionFailed(Uri mediaUri, CharSequence reason); + public void onSessionFailed(Uri mediaUri, CharSequence reason, boolean removeFromFilmstrip); /** Called when the session with the given Uri has progressed. */ public void onSessionProgress(Uri mediaUri, int progress); diff --git a/src/com/android/camera/session/CaptureSessionManagerImpl.java b/src/com/android/camera/session/CaptureSessionManagerImpl.java index a07bc556b..e46184004 100644 --- a/src/com/android/camera/session/CaptureSessionManagerImpl.java +++ b/src/com/android/camera/session/CaptureSessionManagerImpl.java @@ -103,13 +103,14 @@ public class CaptureSessionManagerImpl implements CaptureSessionManager { * failed to process. */ @Override - public void notifyTaskFailed(final Uri uri, final CharSequence reason) { + public void notifyTaskFailed(final Uri uri, final CharSequence reason, + final boolean removeFromFilmstrip) { mMainHandler.execute(new Runnable() { @Override public void run() { synchronized (mTaskListeners) { for (SessionListener listener : mTaskListeners) { - listener.onSessionFailed(uri, reason); + listener.onSessionFailed(uri, reason, removeFromFilmstrip); } } finalizeSession(uri); diff --git a/src/com/android/camera/session/SessionNotifier.java b/src/com/android/camera/session/SessionNotifier.java index bfe770bb3..77e1e00d9 100644 --- a/src/com/android/camera/session/SessionNotifier.java +++ b/src/com/android/camera/session/SessionNotifier.java @@ -31,7 +31,8 @@ public interface SessionNotifier { public void notifyTaskDone(final Uri uri); /** A task has failed to process. */ - public void notifyTaskFailed(final Uri uri, final CharSequence reason); + public void notifyTaskFailed(final Uri uri, final CharSequence reason, + boolean removeFromFilmstrip); /** A task has progressed. */ public void notifyTaskProgress(final Uri uri, final int progressPercent); |