diff options
| author | Yin-Chia Yeh <yinchiayeh@google.com> | 2018-05-31 15:12:00 -0700 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2018-05-31 15:12:00 -0700 |
| commit | e384ef876850aa3859c28df5158e5f401eb8a57f (patch) | |
| tree | b3a8e6abc616abd533d35adf4eb51dd22be4c2d8 /core/java/android | |
| parent | 7696265ef69d1c6f5dc7780fd83aa79111029717 (diff) | |
| parent | d4c5d1e44847fd3712068ac0d0144839f84b4479 (diff) | |
Merge "Camera: add new detailed error callback" into pi-dev
am: d4c5d1e448
Change-Id: I05c46b7e8558a0877d4274c5dcd86cfa9c4f2917
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/hardware/Camera.java | 38 | ||||
| -rw-r--r-- | core/java/android/hardware/camera2/legacy/RequestThreadManager.java | 7 |
2 files changed, 42 insertions, 3 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(); diff --git a/core/java/android/hardware/camera2/legacy/RequestThreadManager.java b/core/java/android/hardware/camera2/legacy/RequestThreadManager.java index aaf07e60bef5..da0899be8cfa 100644 --- a/core/java/android/hardware/camera2/legacy/RequestThreadManager.java +++ b/core/java/android/hardware/camera2/legacy/RequestThreadManager.java @@ -193,6 +193,11 @@ public class RequestThreadManager { mDeviceState.setError( CameraDeviceImpl.CameraDeviceCallbacks.ERROR_CAMERA_DISCONNECTED); } break; + case Camera.CAMERA_ERROR_DISABLED: { + flush(); + mDeviceState.setError( + CameraDeviceImpl.CameraDeviceCallbacks.ERROR_CAMERA_DISABLED); + } break; default: { Log.e(TAG, "Received error " + i + " from the Camera1 ErrorCallback"); mDeviceState.setError( @@ -1005,7 +1010,7 @@ public class RequestThreadManager { mFaceDetectMapper = new LegacyFaceDetectMapper(mCamera, mCharacteristics); mCaptureCollector = new CaptureCollector(MAX_IN_FLIGHT_REQUESTS, mDeviceState); mRequestThread = new RequestHandlerThread(name, mRequestHandlerCb); - mCamera.setErrorCallback(mErrorCallback); + mCamera.setDetailedErrorCallback(mErrorCallback); } /** |
