相机扩展验证工具

借助相机扩展验证工具,设备制造商可以验证是否已正确实现相机扩展 OEM 供应商库。该工具包含自动和手动验证测试。

  • 自动验证测试:验证是否已正确实现供应商库接口。例如,如果图片拍摄需要使用 CaptureProcessor,该测试会验证 ImageCaptureExtenderImpl#getCaptureStages() 是否会返回图片拍摄所需的 CaptureStage 实例。

  • 手动验证测试:验证预览和所拍摄图片的图片效果和画质。例如,设备制造商可以通过该测试手动验证是否正确应用了脸部照片修复效果,或者焦外成像强度是否足够。

Android Jetpack 代码库内的扩展测试应用中包含了该验证工具的源代码。

构建相机扩展验证工具

如需构建扩展验证工具,请按以下步骤操作:

  1. 下载 Android Jetpack 库源代码。如需了解详情,请参阅 Android Jetpack 自述文件中的检出代码部分。

  2. 构建 extensionstestapp APK。此 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

运行手动验证测试

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

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

camera_validation_result-initial

图 3. 验证工具模式

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

extension_mode_validation_result-initial

图 4. 适用于某个摄像头的扩展程序模式

验证预览结果

如需验证预览结果,请点按所选相机的某个扩展模式,开始执行手动测试。系统随即会显示包含预览的图片拍摄 activity。

preview-bokeh_enabled

图 5. 启用了焦外成像的预览图片

图片拍摄 activity 支持以下功能:

  • 缩放
  • 点按对焦
  • 闪光灯模式切换按钮
  • 增/减曝光值
  • 启用/停用扩展程序切换按钮

验证“缩放”“点按对焦”“闪光灯模式”和“增/减曝光值”功能在预览中是否能够正常工作。

验证拍摄的图片效果

如需拍摄图片,请在图片拍摄 activity 中点按拍摄按钮(圆形按钮)。这会启动一个显示所拍摄图片的图片验证 activity。

photo_viewer-bokeh_enabled

图 6. 启用了焦外成像时拍摄的图片

图片验证 activity 包含以下功能:

  • 双指张合缩放图片
  • 左右滑动切换拍摄的图片
  • 重新拍摄
  • “保存图片”菜单项

验证拍摄的图片是否正确,以及是否与拍摄图片时指定的“缩放”“点按对焦”“闪光灯模式”和“增/减曝光值”设置相符。

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

查看测试结果

验证扩展程序模式是否通过测试后,相应的列表项会显示不同的背景颜色和指示符。在包含所有摄像头的列表视图中,列表项会按以下颜色显示:

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

camera_validation_result extension_mode_validation_result

图 7. 指示摄像头和扩展程序模式测试结果的几种颜色

验证工具的其他功能

所有测试完成后,摄像头列表 activity 会提供以下功能:

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

完成测试后,您可以导出测试结果。如果您发现了问题,并且需要重新验证解决方案的新版供应商库实现,请重置之前的测试结果,并对所有摄像头上重新运行所有受支持的扩展程序模式,以验证问题是否已解决。