diff options
author | Chih-Chung Chang <chihchung@google.com> | 2010-06-15 16:41:33 +0800 |
---|---|---|
committer | Chih-Chung Chang <chihchung@google.com> | 2010-06-23 12:44:35 +0800 |
commit | ac9d0a1ce538eb4bd50cba3b257737a05b9ac4e5 (patch) | |
tree | 3afe1d6a8399087d1fc5c30065464828225a23da /src/com/android/camera/CameraHolder.java | |
parent | 186ff08e71d106e329171055accd4395760495ea (diff) | |
download | LegacyCamera-ac9d0a1ce538eb4bd50cba3b257737a05b9ac4e5.zip LegacyCamera-ac9d0a1ce538eb4bd50cba3b257737a05b9ac4e5.tar.gz LegacyCamera-ac9d0a1ce538eb4bd50cba3b257737a05b9ac4e5.tar.bz2 |
Support switching between multiple cameras.
Change-Id: Id444ebcd780c67f4990bd6f6b96c74379b6859ab
Diffstat (limited to 'src/com/android/camera/CameraHolder.java')
-rw-r--r-- | src/com/android/camera/CameraHolder.java | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/com/android/camera/CameraHolder.java b/src/com/android/camera/CameraHolder.java index a4c1537..fc6e687 100644 --- a/src/com/android/camera/CameraHolder.java +++ b/src/com/android/camera/CameraHolder.java @@ -47,6 +47,7 @@ public class CameraHolder { private long mKeepBeforeTime = 0; // Keep the Camera before this time. private final Handler mHandler; private int mUsers = 0; // number of open() - number of release() + private int mNumberOfCameras; // We store the camera parameters when we actually open the device, // so we can restore them in the subsequent open() requests by the user. @@ -90,14 +91,30 @@ public class CameraHolder { HandlerThread ht = new HandlerThread("CameraHolder"); ht.start(); mHandler = new MyHandler(ht.getLooper()); + mNumberOfCameras = android.hardware.Camera.getNumberOfCameras(); + + android.hardware.Camera.CameraInfo info = + new android.hardware.Camera.CameraInfo(); + Log.v(TAG, "# of cameras:" + mNumberOfCameras); + for (int i = 0; i < mNumberOfCameras; i++) { + Log.v(TAG, "camera info #" + i); + android.hardware.Camera.getCameraInfo(i, info); + Log.v(TAG, "facing: " + info.mFacing); + Log.v(TAG, "orientation: " + info.mOrientation); + } + } + + public int getNumberOfCameras() { + return mNumberOfCameras; } - public synchronized android.hardware.Camera open() + public synchronized android.hardware.Camera open(int cameraId) throws CameraHardwareException { Assert(mUsers == 0); if (mCameraDevice == null) { try { - mCameraDevice = android.hardware.Camera.open(); + Log.v(TAG, "open camera " + cameraId); + mCameraDevice = android.hardware.Camera.open(cameraId); } catch (RuntimeException e) { Log.e(TAG, "fail to connect Camera", e); throw new CameraHardwareException(e); @@ -122,9 +139,9 @@ public class CameraHolder { * Tries to open the hardware camera. If the camera is being used or * unavailable then return {@code null}. */ - public synchronized android.hardware.Camera tryOpen() { + public synchronized android.hardware.Camera tryOpen(int cameraId) { try { - return mUsers == 0 ? open() : null; + return mUsers == 0 ? open(cameraId) : null; } catch (CameraHardwareException e) { // In eng build, we throw the exception so that test tool // can detect it and report it |