diff options
author | Angus Kong <shkong@google.com> | 2013-09-16 14:25:35 -0700 |
---|---|---|
committer | Angus Kong <shkong@google.com> | 2013-09-17 14:50:53 -0700 |
commit | 4f795b878843e59810ec1dca05b7cdb37b5614c5 (patch) | |
tree | 24f810cea8691c797a69a1595c931de44cc4c5f0 /src/com/android/camera/CameraHolder.java | |
parent | 5bee41c6d727c730c7b10fba886862284a489257 (diff) | |
download | android_packages_apps_Snap-4f795b878843e59810ec1dca05b7cdb37b5614c5.tar.gz android_packages_apps_Snap-4f795b878843e59810ec1dca05b7cdb37b5614c5.tar.bz2 android_packages_apps_Snap-4f795b878843e59810ec1dca05b7cdb37b5614c5.zip |
Show dialog when camera device is not connected.
bug:10726516
Change-Id: I3d3433d0b2eced54027b19910473fd55135d0e1c
Diffstat (limited to 'src/com/android/camera/CameraHolder.java')
-rw-r--r-- | src/com/android/camera/CameraHolder.java | 53 |
1 files changed, 23 insertions, 30 deletions
diff --git a/src/com/android/camera/CameraHolder.java b/src/com/android/camera/CameraHolder.java index 0ffc73663..32eae8289 100644 --- a/src/com/android/camera/CameraHolder.java +++ b/src/com/android/camera/CameraHolder.java @@ -188,8 +188,9 @@ public class CameraHolder { return mInfo; } - public synchronized CameraProxy open(int cameraId) - throws CameraHardwareException { + public synchronized CameraProxy open( + Handler handler, int cameraId, + CameraManager.CameraOpenErrorCallback cb) { if (DEBUG_OPEN_RELEASE) { collectState(cameraId, mCameraDevice); if (mCameraOpened) { @@ -204,28 +205,28 @@ public class CameraHolder { mCameraId = -1; } if (mCameraDevice == null) { - try { - Log.v(TAG, "open camera " + cameraId); - if (mMockCameraInfo == null) { - mCameraDevice = CameraManagerFactory - .getAndroidCameraManager().cameraOpen(cameraId); - } else { - if (mMockCamera == null) - throw new RuntimeException(); + Log.v(TAG, "open camera " + cameraId); + if (mMockCameraInfo == null) { + mCameraDevice = CameraManagerFactory + .getAndroidCameraManager().cameraOpen(handler, cameraId, cb); + } else { + if (mMockCamera != null) { mCameraDevice = mMockCamera[cameraId]; + } else { + Log.e(TAG, "MockCameraInfo found, but no MockCamera provided."); + mCameraDevice = null; } - mCameraId = cameraId; - } catch (RuntimeException e) { - Log.e(TAG, "fail to connect Camera", e); - throw new CameraHardwareException(e); } + if (mCameraDevice == null) { + Log.e(TAG, "fail to connect Camera:" + mCameraId + ", aborting."); + return null; + } + mCameraId = cameraId; mParameters = mCameraDevice.getParameters(); } else { - try { - mCameraDevice.reconnect(); - } catch (IOException e) { - Log.e(TAG, "reconnect failed."); - throw new CameraHardwareException(e); + if (!mCameraDevice.reconnect(handler, cb)) { + Log.e(TAG, "fail to reconnect Camera:" + mCameraId + ", aborting."); + return null; } mCameraDevice.setParameters(mParameters); } @@ -239,17 +240,9 @@ public class CameraHolder { * Tries to open the hardware camera. If the camera is being used or * unavailable then return {@code null}. */ - public synchronized CameraProxy tryOpen(int cameraId) { - try { - return !mCameraOpened ? open(cameraId) : null; - } catch (CameraHardwareException e) { - // In eng build, we throw the exception so that test tool - // can detect it and report it - if ("eng".equals(Build.TYPE)) { - throw new RuntimeException(e); - } - return null; - } + public synchronized CameraProxy tryOpen( + Handler handler, int cameraId, CameraManager.CameraOpenErrorCallback cb) { + return (!mCameraOpened ? open(handler, cameraId, cb) : null); } public synchronized void release() { |