summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/session
diff options
context:
space:
mode:
authorzafir <zafir@google.com>2015-03-04 14:02:47 -0800
committerzafir <zafir@google.com>2015-03-06 16:06:25 -0800
commit698e271d2b263778bfa73d1e67d6e2cd2783c89e (patch)
treeec25bfbde4132e50c7b1cfc18414e9206608d72d /src/com/android/camera/session
parent4a1378acfdebc4c2959bf68ee31e44dc9d131ae8 (diff)
downloadandroid_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')
-rw-r--r--src/com/android/camera/session/CaptureSession.java2
-rw-r--r--src/com/android/camera/session/CaptureSessionImpl.java9
-rw-r--r--src/com/android/camera/session/CaptureSessionManager.java2
-rw-r--r--src/com/android/camera/session/CaptureSessionManagerImpl.java5
-rw-r--r--src/com/android/camera/session/SessionNotifier.java3
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);