summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/CameraHolder.java
diff options
context:
space:
mode:
authorChih-Chung Chang <chihchung@google.com>2010-06-15 16:41:33 +0800
committerChih-Chung Chang <chihchung@google.com>2010-06-23 12:44:35 +0800
commitac9d0a1ce538eb4bd50cba3b257737a05b9ac4e5 (patch)
tree3afe1d6a8399087d1fc5c30065464828225a23da /src/com/android/camera/CameraHolder.java
parent186ff08e71d106e329171055accd4395760495ea (diff)
downloadLegacyCamera-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.java25
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