相关报错信息:
- android.hardware.camera2.cts.ExtendedCameraCharacteristicsTest#[1]:junit.framework.AssertionFailedError: RAW_SENSOR must be supported if RAW capability is advertised
- android.hardware.camera2.cts.StaticMetadataTest#testCapabilities[1]:
java.lang.Exception: Test failed for camera 0: REQUEST_AVAILABLE_CAPABILITIES_RAW should support RAW_SENSOR output - 多项测试:junit.framework.AssertionFailedError: No capture sizes available for RAW format!
从testStreamConfigurationMap测试项入手:
直接查看源码:ExtendedCameraCharacteristicsTest.java
public void testStreamConfigurationMap() throws Exception {
……
StreamConfigurationMap config =
c.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
……
int[] actualCapabilities = c.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES);
assertNotNull("android.request.availableCapabilities must never be null",
actualCapabilities);
……
// Check RAW
if (arrayContains(actualCapabilities,
CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_RAW)) {
assertTrue("RAW_SENSOR must be supported if RAW capability is advertised",
config.isOutputSupportedFor(ImageFormat.RAW_SENSOR));
}
……
}
测试时首先检查actualCapabilities中是否包含REQUEST_AVAILABLE_CAPABILITIES_RAW项。同一个函数往上翻可以看到actualCapabilities的来源:获取metadata REQUEST_AVAILABLE_CAPABILITIES对应的值。这个metadata的值可以直接通过"dumpsys media.camera"命令查看,对应其中的"android.request.availableCapabilities"一项。查看dump结果,包含RAW一项,且从报错看这里if条件为真,所以继续往下看。
assertTrue("RAW_SENSOR must be supported if RAW capability is advertised",
config.isOutputSupportedFor(ImageFormat.RAW_SENSOR));
报错就在这里,这句的意思是:调用config对象中的"isOutputSupportedFor"方法,传入的参数是"ImageFormat.RAW_SENSOR"。
查找定义:ImageFormat.RAW_SENSOR = 0x20
查找config的来源:获取metadata SCALER_STREAM_CONFIGURATION_MAP对应的值。这个值在dumpsys中找不到,直接从总接口文件中去找:CameraMetadataNative.java
sGetCommandMap.put(
CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP.getNativeKey

博客围绕Android CTS测试中的报错信息展开,从testStreamConfigurationMap测试项入手,通过查看源码、分析metadata值等方式,逐步定位到问题所在。发现客制化修改对列表过滤更新,导致测试找不到对应配置项,最终调整客制化代码解决问题。
最低0.47元/天 解锁文章
949





