我如何使用找不到的钥匙,却被枚举的钥匙? Android Studio

问题描述

在我的示例中,我正在使用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表示密钥将是可靠的。