summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/WideAnglePanoramaModule.java
diff options
context:
space:
mode:
authorAngus Kong <shkong@google.com>2013-09-16 14:25:35 -0700
committerAngus Kong <shkong@google.com>2013-09-17 14:50:53 -0700
commit4f795b878843e59810ec1dca05b7cdb37b5614c5 (patch)
tree24f810cea8691c797a69a1595c931de44cc4c5f0 /src/com/android/camera/WideAnglePanoramaModule.java
parent5bee41c6d727c730c7b10fba886862284a489257 (diff)
downloadandroid_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.java36
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;
}