diff options
2 files changed, 20 insertions, 19 deletions
diff --git a/core/java/android/hardware/camera2/CameraExtensionCharacteristics.java b/core/java/android/hardware/camera2/CameraExtensionCharacteristics.java index f6b22edaafb1..76c20ce2184a 100644 --- a/core/java/android/hardware/camera2/CameraExtensionCharacteristics.java +++ b/core/java/android/hardware/camera2/CameraExtensionCharacteristics.java @@ -808,13 +808,11 @@ public final class CameraExtensionCharacteristics { extender.init(mCameraId, mCharacteristicsMapNative); CameraMetadataNative metadata = extender.getAvailableCharacteristicsKeyValues(mCameraId); - CameraCharacteristics fallbackCharacteristics = mCharacteristicsMap.get(mCameraId); if (metadata == null) { - return fallbackCharacteristics.get(key); + return null; } CameraCharacteristics characteristics = new CameraCharacteristics(metadata); - T value = characteristics.get(key); - return value == null ? fallbackCharacteristics.get(key) : value; + return characteristics.get(key); } } catch (RemoteException e) { Log.e(TAG, "Failed to query the extension for the specified key! Extension " diff --git a/packages/services/CameraExtensionsProxy/src/com/android/cameraextensions/CameraExtensionsProxyService.java b/packages/services/CameraExtensionsProxy/src/com/android/cameraextensions/CameraExtensionsProxyService.java index c134a4c5b2ad..d8a94d8b8b59 100644 --- a/packages/services/CameraExtensionsProxy/src/com/android/cameraextensions/CameraExtensionsProxyService.java +++ b/packages/services/CameraExtensionsProxy/src/com/android/cameraextensions/CameraExtensionsProxyService.java @@ -1204,23 +1204,26 @@ public class CameraExtensionsProxyService extends Service { List<Pair<CameraCharacteristics.Key, Object>> entries = mAdvancedExtender.getAvailableCharacteristicsKeyValues(); - if ((entries != null) && !entries.isEmpty()) { - CameraMetadataNative ret = new CameraMetadataNative(); - long vendorId = mMetadataVendorIdMap.containsKey(cameraId) - ? mMetadataVendorIdMap.get(cameraId) : Long.MAX_VALUE; - ret.setVendorId(vendorId); - int[] characteristicsKeyTags = new int[entries.size()]; - int i = 0; - for (Pair<CameraCharacteristics.Key, Object> entry : entries) { - int tag = CameraMetadataNative.getTag(entry.first.getName(), vendorId); - characteristicsKeyTags[i++] = tag; - ret.set(entry.first, entry.second); - } - ret.set(CameraCharacteristics.REQUEST_AVAILABLE_CHARACTERISTICS_KEYS, - characteristicsKeyTags); + if (entries == null || entries.isEmpty()) { + throw new RuntimeException("A valid set of key/value pairs are required that " + + "are supported by the extension."); + } - return ret; + CameraMetadataNative ret = new CameraMetadataNative(); + long vendorId = mMetadataVendorIdMap.containsKey(cameraId) + ? mMetadataVendorIdMap.get(cameraId) : Long.MAX_VALUE; + ret.setVendorId(vendorId); + int[] characteristicsKeyTags = new int[entries.size()]; + int i = 0; + for (Pair<CameraCharacteristics.Key, Object> entry : entries) { + int tag = CameraMetadataNative.getTag(entry.first.getName(), vendorId); + characteristicsKeyTags[i++] = tag; + ret.set(entry.first, entry.second); } + ret.set(CameraCharacteristics.REQUEST_AVAILABLE_CHARACTERISTICS_KEYS, + characteristicsKeyTags); + + return ret; } return null; |