diff options
Diffstat (limited to 'core/java/android/hardware/Camera.java')
| -rw-r--r-- | core/java/android/hardware/Camera.java | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index 73b8af024e3f..9350aab799a9 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -177,6 +177,7 @@ public class Camera { private OnZoomChangeListener mZoomListener; private FaceDetectionListener mFaceListener; private ErrorCallback mErrorCallback; + private ErrorCallback mDetailedErrorCallback; private boolean mOneShot; private boolean mWithBuffer; private boolean mFaceDetectionRunning = false; @@ -1240,8 +1241,14 @@ public class Camera { case CAMERA_MSG_ERROR : Log.e(TAG, "Error " + msg.arg1); - if (mErrorCallback != null) { - mErrorCallback.onError(msg.arg1, mCamera); + if (mDetailedErrorCallback != null) { + mDetailedErrorCallback.onError(msg.arg1, mCamera); + } else if (mErrorCallback != null) { + if (msg.arg1 == CAMERA_ERROR_DISABLED) { + mErrorCallback.onError(CAMERA_ERROR_EVICTED, mCamera); + } else { + mErrorCallback.onError(msg.arg1, mCamera); + } } return; @@ -2005,6 +2012,15 @@ public class Camera { public static final int CAMERA_ERROR_EVICTED = 2; /** + * Camera was disconnected due to device policy change or client + * application going to background. + * @see Camera.ErrorCallback + * + * @hide + */ + public static final int CAMERA_ERROR_DISABLED = 3; + + /** * Media server died. In this case, the application must release the * Camera object and instantiate a new one. * @see Camera.ErrorCallback @@ -2043,6 +2059,24 @@ public class Camera { mErrorCallback = cb; } + /** + * Registers a callback to be invoked when an error occurs. + * The detailed error callback may contain error code that + * gives more detailed information about the error. + * + * When a detailed callback is set, the callback set via + * #setErrorCallback(ErrorCallback) will stop receiving + * onError call. + * + * @param cb The callback to run + * + * @hide + */ + public final void setDetailedErrorCallback(ErrorCallback cb) + { + mDetailedErrorCallback = cb; + } + private native final void native_setParameters(String params); private native final String native_getParameters(); |
