diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2015-08-14 13:11:16 -0700 |
---|---|---|
committer | Eino-Ville Talvala <etalvala@google.com> | 2015-08-14 14:52:57 -0700 |
commit | 5717612ba9ac78021e81f5b45ca7903c318499f9 (patch) | |
tree | 91d5b680930f5fda68c41e727a15e42231367c9d /core | |
parent | f75577295765ca13bf3d0d5bffa81b569cb88da2 (diff) | |
download | frameworks_base-5717612ba9ac78021e81f5b45ca7903c318499f9.zip frameworks_base-5717612ba9ac78021e81f5b45ca7903c318499f9.tar.gz frameworks_base-5717612ba9ac78021e81f5b45ca7903c318499f9.tar.bz2 |
Camera2: Add camera type to getNumberOfCameras.
Do not list strange cameras in old API; ensure new API gets all
cameras.
Bug: 23194168
Change-Id: Ia1fdffac245525674c913fefb1ec06e9094fe8d3
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/hardware/ICameraService.aidl | 2 | ||||
-rw-r--r-- | core/java/android/hardware/camera2/CameraManager.java | 5 | ||||
-rw-r--r-- | core/jni/android_hardware_Camera.cpp | 6 |
3 files changed, 11 insertions, 2 deletions
diff --git a/core/java/android/hardware/ICameraService.aidl b/core/java/android/hardware/ICameraService.aidl index c933f92..0b165cd 100644 --- a/core/java/android/hardware/ICameraService.aidl +++ b/core/java/android/hardware/ICameraService.aidl @@ -35,7 +35,7 @@ interface ICameraService /** * Keep up-to-date with frameworks/av/include/camera/ICameraService.h */ - int getNumberOfCameras(); + int getNumberOfCameras(int type); // rest of 'int' return values in this file are actually status_t diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java index 2e4f628..1fcfaca 100644 --- a/core/java/android/hardware/camera2/CameraManager.java +++ b/core/java/android/hardware/camera2/CameraManager.java @@ -64,6 +64,9 @@ public final class CameraManager { private static final int API_VERSION_1 = 1; private static final int API_VERSION_2 = 2; + private static final int CAMERA_TYPE_BACKWARD_COMPATIBLE = 0; + private static final int CAMERA_TYPE_ALL = 1; + private ArrayList<String> mDeviceIdList; private final Context mContext; @@ -615,7 +618,7 @@ public final class CameraManager { } try { - numCameras = cameraService.getNumberOfCameras(); + numCameras = cameraService.getNumberOfCameras(CAMERA_TYPE_ALL); } catch(CameraRuntimeException e) { throw e.asChecked(); } catch (RemoteException e) { diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp index 169fb60..4f44c26 100644 --- a/core/jni/android_hardware_Camera.cpp +++ b/core/jni/android_hardware_Camera.cpp @@ -497,6 +497,12 @@ static void android_hardware_Camera_getCameraInfo(JNIEnv *env, jobject thiz, jint cameraId, jobject info_obj) { CameraInfo cameraInfo; + if (cameraId >= Camera::getNumberOfCameras() || cameraId < 0) { + ALOGE("%s: Unknown camera ID %d", __FUNCTION__, cameraId); + jniThrowRuntimeException(env, "Unknown camera ID"); + return; + } + status_t rc = Camera::getCameraInfo(cameraId, &cameraInfo); if (rc != NO_ERROR) { jniThrowRuntimeException(env, "Fail to get camera info"); |