summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorRuben Brunk <rubenbrunk@google.com>2015-07-29 18:19:11 -0700
committerRuben Brunk <rubenbrunk@google.com>2015-07-31 17:14:18 -0700
commitc620eb7e864e5505f5a6f867223fa8e525669d0b (patch)
tree3ae463ac453abf8660bd0b8b60a0c34abef5f36b /core/java
parenteec3d9e368328d6ca6942ae2fbd94711ecd7adc8 (diff)
downloadframeworks_base-c620eb7e864e5505f5a6f867223fa8e525669d0b.zip
frameworks_base-c620eb7e864e5505f5a6f867223fa8e525669d0b.tar.gz
frameworks_base-c620eb7e864e5505f5a6f867223fa8e525669d0b.tar.bz2
Make vendor keys visible in Camera2 java APIs.
- Add vendor keys to getKeys() calls for CameraCharacteristics, CaptureRequest, and CaptureResult. - Vendors can specify whether custom keys show up by listing visible keys in the REQUEST_AVAILABLE_RESULT_KEYS field. - Vendor key types are always treated as a primitive (or Rational) array type corresponding to one of the valid types for a camera metadata entry. Bug: 22067625 Change-Id: I6e7dd3db7a8bf533c2ec15ff69ca38824134e971
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/hardware/camera2/CameraMetadata.java22
-rw-r--r--core/java/android/hardware/camera2/impl/CameraMetadataNative.java14
2 files changed, 36 insertions, 0 deletions
diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java
index af1367c..c580083 100644
--- a/core/java/android/hardware/camera2/CameraMetadata.java
+++ b/core/java/android/hardware/camera2/CameraMetadata.java
@@ -173,6 +173,28 @@ public abstract class CameraMetadata<TKey> {
}
}
+ ArrayList<TKey> vendorKeys = CameraMetadataNative.getAllVendorKeys(keyClass);
+
+ if (vendorKeys != null) {
+ for (TKey k : vendorKeys) {
+ String keyName;
+ if (k instanceof CaptureRequest.Key<?>) {
+ keyName = ((CaptureRequest.Key<?>) k).getName();
+ } else if (k instanceof CaptureResult.Key<?>) {
+ keyName = ((CaptureResult.Key<?>) k).getName();
+ } else if (k instanceof CameraCharacteristics.Key<?>) {
+ keyName = ((CameraCharacteristics.Key<?>) k).getName();
+ } else {
+ continue;
+ }
+
+ if (filterTags == null || Arrays.binarySearch(filterTags,
+ CameraMetadataNative.getTag(keyName)) >= 0) {
+ keyList.add(k);
+ }
+ }
+ }
+
return keyList;
}
diff --git a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java
index 7e50fd9..12a2910 100644
--- a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java
+++ b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java
@@ -1078,6 +1078,7 @@ public class CameraMetadataNative implements Parcelable {
private native synchronized void nativeWriteValues(int tag, byte[] src);
private native synchronized void nativeDump() throws IOException; // dump to ALOGD
+ private static native ArrayList nativeGetAllVendorKeys(Class keyClass);
private static native int nativeGetTagFromKey(String keyName)
throws IllegalArgumentException;
private static native int nativeGetTypeFromTag(int tag)
@@ -1113,6 +1114,19 @@ public class CameraMetadataNative implements Parcelable {
return nativeIsEmpty();
}
+
+ /**
+ * Return a list containing keys of the given key class for all defined vendor tags.
+ *
+ * @hide
+ */
+ public static <K> ArrayList<K> getAllVendorKeys(Class<K> keyClass) {
+ if (keyClass == null) {
+ throw new NullPointerException();
+ }
+ return (ArrayList<K>) nativeGetAllVendorKeys(keyClass);
+ }
+
/**
* Convert a key string into the equivalent native tag.
*