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/WideAnglePanoramaModule.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/WideAnglePanoramaModule.java')
-rw-r--r-- | src/com/android/camera/WideAnglePanoramaModule.java | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/src/com/android/camera/WideAnglePanoramaModule.java b/src/com/android/camera/WideAnglePanoramaModule.java index abdb24825..59c4350be 100644 --- a/src/com/android/camera/WideAnglePanoramaModule.java +++ b/src/com/android/camera/WideAnglePanoramaModule.java @@ -316,11 +316,19 @@ public class WideAnglePanoramaModule } } - private void setupCamera() throws CameraHardwareException, CameraDisabledException { - openCamera(); + /** + * Opens camera and sets the parameters. + * + * @return Whether the camera was opened successfully. + */ + private boolean setupCamera() { + if (!openCamera()) { + return false; + } Parameters parameters = mCameraDevice.getParameters(); setupCaptureParams(parameters); configureCamera(parameters); + return true; } private void releaseCamera() { @@ -331,16 +339,27 @@ public class WideAnglePanoramaModule } } - private void openCamera() throws CameraHardwareException, CameraDisabledException { + /** + * Opens the camera device. The back camera has priority over the front + * one. + * + * @return Whether the camera was opened successfully. + */ + private boolean openCamera() { int cameraId = CameraHolder.instance().getBackCameraId(); // If there is no back camera, use the first camera. Camera id starts // from 0. Currently if a camera is not back facing, it is front facing. // This is also forward compatible if we have a new facing other than // back or front in the future. if (cameraId == -1) cameraId = 0; - mCameraDevice = CameraUtil.openCamera(mActivity, cameraId); + mCameraDevice = CameraUtil.openCamera(mActivity, cameraId, + mMainHandler, mActivity.getCameraOpenErrorCallback()); + if (mCameraDevice == null) { + return false; + } mCameraOrientation = CameraUtil.getCameraOrientation(cameraId); if (cameraId == CameraHolder.instance().getFrontCameraId()) mUsingFrontCamera = true; + return true; } private boolean findBestPreviewSize(List<Size> supportedSizes, boolean need4To3, @@ -820,13 +839,8 @@ public class WideAnglePanoramaModule mCaptureState = CAPTURE_STATE_VIEWFINDER; - try { - setupCamera(); - } catch (CameraHardwareException e) { - CameraUtil.showErrorAndFinish(mActivity, R.string.cannot_connect_camera); - return; - } catch (CameraDisabledException e) { - CameraUtil.showErrorAndFinish(mActivity, R.string.camera_disabled); + if (!setupCamera()) { + Log.e(TAG, "Failed to open camera, aborting"); return; } |