相机扩展验证工具

相机扩展程序验证工具允许设备制造商验证是否正确实现了相机扩展程序 OEM 供应商库。该工具包括自动和手动验证测试。

  • 自动验证测试:验证是否正确实现了供应商库接口。例如,如果图像捕获需要 CaptureProcessor,则测试会验证 ImageCaptureExtenderImpl#getCaptureStages() 是否返回捕获图像所需的 CaptureStage 实例。

  • 手动验证测试:验证预览和拍摄图像的图像效果和质量。例如,测试允许设备制造商手动验证是否正确应用了人脸修饰效果,或者散景强度是否足够。

验证工具的源代码是 extensions 测试应用的一部分,该应用位于 Android Jetpack 代码库中。

构建相机扩展程序验证工具

要构建扩展程序验证工具,请按以下步骤操作

  1. 下载 Android Jetpack 库源代码。如需了解详情,请参阅 Checking out the Code 部分(位于 Android Jetpack README 中)。

  2. 构建 extensionstestapp APK。这允许运行手动验证测试。

      cd path/to/checkout/frameworks/support/
      ./gradlew camera:integration-tests:camera-testapp-extensions:assembleDebug

    APK 输出到以下路径

      path/to/checkout/out/androidx/camera/integration-tests/camera-testapp-extensions/build/outputs/apk/debug/camera-testapp-extensions-debug.apk
    
  3. 构建 androidTest APK。此 APK 允许运行自动验证测试。

      cd path/to/checkout/frameworks/support/
      ./gradlew camera:integration-tests:camera-testapp-extensions:assembleAndroidTest

    APK 输出到以下路径

      path/to/checkout/out/androidx/camera/integration-tests/camera-testapp-extensions/build/outputs/apk/androidTest/debug/camera-testapp-extensions-debug-androidTest.apk
    

运行自动验证测试

要运行自动验证测试,请安装 extensionstestappandroidTest APK。

  • extensionstestapp APK

      adb install -r path/to/checkout/out/androidx/camera/integration-tests/camera-testapp-extensions/build/outputs/apk/debug/camera-testapp-extensions-debug.apk
  • androidTest APK

      adb install -r path/to/checkout/out/androidx/camera/integration-tests/camera-testapp-extensions/build/outputs/apk/androidTest/debug/camera-testapp-extensions-debug-androidTest.apk

运行所有自动测试

安装 APK 后,要运行所有自动测试以验证供应商库实现,请运行以下命令

adb shell am instrument -w -r androidx.camera.integration.extensions.test/androidx.test.runner.AndroidJUnitRunner

如果所有测试均通过,则会返回 OK 结果。否则,最终测试报告会在所有测试完成后在终端中显示失败。

automated_validation_result-pass

图 1. 自动测试 OK 结果

automated_validation_result-fail

图 2. 自动测试结果(包含失败)

运行特定类的自动测试

要运行特定类的自动测试,请指定目标类的名称和路径。以下示例显示了运行 ImageCaptureTest 类的测试的命令

adb shell am instrument -w -r -e class **androidx.camera.integration.extensions.ImageCaptureTest** androidx.camera.integration.extensions.test/androidx.test.runner.AndroidJUnitRunner

运行手动验证测试

手动验证测试位于 extensions 测试应用中。安装并启动扩展程序测试应用后,通过点按右上角的菜单项切换到验证工具模式。

切换到验证工具模式后,第一页会列出包含 REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE 功能的所有相机。如果相机不支持任何扩展模式,则其对应的列表项会显示为灰色。

camera_validation_result-initial

图 3. 验证工具模式

点按其中一个相机以查看要测试的扩展模式。所选相机不支持的扩展模式会显示为灰色。

extension_mode_validation_result-initial

图 4. 相机可用的扩展模式

验证预览结果

要验证预览结果,请点按所选相机的扩展模式以开始手动测试。然后会显示包含预览的图像捕获活动。

preview-bokeh_enabled

图 5. 启用散景效果的预览图像

图像捕获活动支持以下功能

  • 放大/缩小
  • 点按对焦
  • 闪光灯模式切换按钮
  • EV +/-
  • 扩展程序启用/停用切换按钮

验证放大/缩小、点按对焦、闪光灯模式和 EV +/- 功能在预览中是否按预期工作。

验证拍摄图像结果

要拍摄图像,请点按图像捕获活动中的拍摄按钮(圆形按钮)。这会启动图像验证活动,其中显示拍摄的图像。

photo_viewer-bokeh_enabled

图 6. 启用散景效果的拍摄图像

图像验证活动包括以下功能

  • 双指捏合放大/缩小图像
  • 左右滑动以切换拍摄的图像
  • 重新拍摄
  • 保存图像菜单项

验证拍摄的图像是否正确,以及是否与拍摄图像时设置的放大/缩小、点按对焦、闪光灯模式和 EV +/- 设置相符。

如果拍摄的结果正确,请点按右下角的通过按钮(对勾)。否则,请点按左下角的失败按钮(感叹号)。

查看测试结果

在扩展模式验证为通过或失败后,扩展模式的列表项会显示不同的背景颜色和指示符。在所有相机的列表视图中,项目会以以下颜色显示

  • 白色背景:相机至少支持一种扩展模式,并且受支持的扩展模式未完全验证。
  • 绿色背景:相机至少支持一种扩展模式。所有受支持的扩展模式都经过验证,且所有结果均通过。
  • 红色背景:相机至少支持一种扩展模式。所有受支持的扩展模式都经过验证,且至少有一个扩展模式结果失败。
  • 灰色背景:此功能不可用。

camera_validation_result extension_mode_validation_result

图 7. 指示相机和扩展模式测试结果的颜色

其他验证工具功能

完成所有测试后,相机列表活动提供以下功能

  • 导出测试结果:将测试结果作为 CSV 文件导出到 Documents/ExtensionsValidation 文件夹。
  • 重置:清除所有缓存的测试结果。
  • 扩展程序示例应用:切换到扩展程序示例应用模式。

完成测试后,您可以导出测试结果。如果您发现问题,并且需要再次验证包含解决方案的新版本供应商库实现,请重置之前的测试结果,然后重新运行所有相机上所有受支持的扩展模式,以验证问题是否已修复。