summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit5717612ba9ac78021e81f5b45ca7903c318499f9 (patch)
tree91d5b680930f5fda68c41e727a15e42231367c9d
parentf75577295765ca13bf3d0d5bffa81b569cb88da2 (diff)
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
-rw-r--r--core/java/android/hardware/ICameraService.aidl2
-rw-r--r--core/java/android/hardware/camera2/CameraManager.java5
-rw-r--r--core/jni/android_hardware_Camera.cpp6
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java5
4 files changed, 15 insertions, 3 deletions
diff --git a/core/java/android/hardware/ICameraService.aidl b/core/java/android/hardware/ICameraService.aidl
index c933f923297a..0b165cd78607 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 2e4f62854c29..1fcfacab34a3 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 169fb601e90c..4f44c262f261 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");
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java
index 14c261904d26..57969baffdf9 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java
@@ -56,6 +56,9 @@ public class CameraBinderTest extends AndroidTestCase {
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;
+
protected CameraBinderTestUtils mUtils;
public CameraBinderTest() {
@@ -71,7 +74,7 @@ public class CameraBinderTest extends AndroidTestCase {
@SmallTest
public void testNumberOfCameras() throws Exception {
- int numCameras = mUtils.getCameraService().getNumberOfCameras();
+ int numCameras = mUtils.getCameraService().getNumberOfCameras(CAMERA_TYPE_ALL);
assertTrue("At least this many cameras: " + mUtils.getGuessedNumCameras(),
numCameras >= mUtils.getGuessedNumCameras());
Log.v(TAG, "Number of cameras " + numCameras);