From 18fe0ae08d49b0fe4b6414a3841bd0fcab5419e8 Mon Sep 17 00:00:00 2001 From: Zhijun He Date: Tue, 1 Oct 2013 11:09:28 -0700 Subject: Camera2: return device list with the only supported device Bug: 10360518 Change-Id: I823f0b6965728ddefc9b70f3df0f50259919cce5 --- .../android/hardware/camera2/CameraManager.java | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'core/java/android/hardware') diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java index 798ad7b..f5ee367 100644 --- a/core/java/android/hardware/camera2/CameraManager.java +++ b/core/java/android/hardware/camera2/CameraManager.java @@ -369,10 +369,30 @@ public final class CameraManager { } mDeviceIdList = new ArrayList(); + CameraMetadataNative info = new CameraMetadataNative(); for (int i = 0; i < numCameras; ++i) { // Non-removable cameras use integers starting at 0 for their // identifiers - mDeviceIdList.add(String.valueOf(i)); + boolean isDeviceSupported = false; + try { + mCameraService.getCameraCharacteristics(i, info); + if (!info.isEmpty()) { + isDeviceSupported = true; + } else { + throw new AssertionError("Expected to get non-empty characteristics"); + } + } catch(IllegalArgumentException e) { + // Got a BAD_VALUE from service, meaning that this + // device is not supported. + } catch(CameraRuntimeException e) { + throw e.asChecked(); + } catch(RemoteException e) { + // impossible + } + + if (isDeviceSupported) { + mDeviceIdList.add(String.valueOf(i)); + } } } -- cgit v1.1