无法在包外部访问类-camera2 CameraCharacteristics.Key

问题描述

我正在使用Camera2 API,并且无法构造要查找的密钥 例如

public static CameraCharacteristics.Key<Byte> IS_SUPPORT_QCFA_SENSOR =
        new CameraCharacteristics.Key<>("org.codeaurora.qcamera3.quadra_cfa.is_qcfa_sensor",Byte.class);

导致该消息

'Key(java.lang.String,java.lang.Class<T>)' is not public in 'android.hardware.camera2.CameraCharacteristics.Key'. Cannot be accessed from outside package

但是要查找密钥,必须构造它们。 developer.android.com上的文档说是

public static final class CameraCharacteristics.Key

如何构造密钥?或解决此问题?

解决方法

最近在看类似的东西发现了这个。看一下来自:

的示例

https://github.com/dragonGR/packages_apps_SnapdragonCamera/blob/1c35bb80c3abfe6a7c5212572aa8abbeb9850eb2/src/com/android/camera/util/VendorTagUtil.java

他们使用 CaptureRequest 而不是 CameraCharacteristics 来定义键,并且一旦定义了相机设备就可以访问。

可能值得一试,链接有更多详细信息。

private static CaptureRequest.Key<Integer> CdsModeKey =
        new CaptureRequest.Key<>("org.codeaurora.qcamera3.CDS.cds_mode",Integer.class);

and

private static boolean isSupported(CaptureRequest.Builder builder,CaptureRequest.Key<?> key) {
    boolean supported = true;
    try {
        builder.get(key);
    }catch(IllegalArgumentException exception){
        supported = false;
        Log.d(TAG,"vendor tag " + key.getName() + " is not supported");
        exception.printStackTrace();
    }
    if ( supported ) {
        Log.d(TAG,"vendor tag " + key.getName() + " is supported");
    }
    return supported;
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...