summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/CameraHolder.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/CameraHolder.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/CameraHolder.java')
-rw-r--r--src/com/android/camera/CameraHolder.java53
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() {