问题描述
在我的示例中,我正在使用camera2 API。我可以使用CameraCharacteristics.CONTROL_AE_LOCK_AVAILABLE,但是CameraCharacteristics.MEDIATEK_FACE_FEATURE_AVAILABLE_GESTURE_MODES呢?显然,Android Studio会说找不到符号变量。
但是,以下代码将此键枚举为com.mediatek.facefeature.availablegesturemodes。如何使用不属于Android Studio等标准列表的枚举键?
for (CameraCharacteristics.Key <?> key : characteristics.getKeys()) {
for (CaptureRequest.Key<?> key : myrequest.getKeys()) {
mystring.append(key.getName() + "\n");
}
解决方法
好吧,对于那个特定的Key,您在调用getKeys并进行迭代时已经有了一个,因此您只需查找具有所需名称的一个,然后将其与CameraCharacteristics.get(Key)
或CaptureRequest.Builder.set(Key,value)
一起使用即可。
您还可以直接构造Key对象-constructors从API 29开始是公共的。您需要Key名称,例如com.mediatek.facefeature.availablegesturemodes
,还需要知道key的类型。 。因此,对名称进行迭代和匹配以找到Key可能更简单,并且也可以在较早的API上运行。
当然,这些自定义键仅在某些设备上有效,因此您必须使代码健壮起来以防丢失。没有保证,除非特定的OEM表示密钥将是可靠的。