相机 ITS 可折叠设备测试

从 Android 13 开始,相机 ITS 包含对可折叠设备的测试支持。可折叠设备的摄像头是否可用取决于设备是处于折叠状态还是展开状态。

摄像头 ID 因设备类型、型号和品牌而异,而物理前置摄像头的可用性则取决于设备的状态。因此,相机 ITS 会动态确定用于测试的场景和摄像头组合。由于摄像头需要在折叠和展开状态下分别进行测试,所以可折叠设备测试需要在测试过程中重新装载 DUT。

前置和后置摄像头测试

可折叠设备上的可用摄像头传感器因设备是处于折叠状态还是展开状态而异。对于可折叠设备,前置摄像头的可用性取决于设备的状态。例如,前置摄像头在折叠状态下不可用。由于前置摄像头的可用性会视情况而异,所以前置摄像头必须在折叠和展开状态下分别进行测试。相机 ITS 假定无论设备是折叠还是展开,后置摄像头都始终可用,所以后置摄像头只需测试一次。

根据设备状态,相机 ITS 会过滤掉不可用的摄像头,该摄像头也不会出现在摄像头和场景组合列表中。

下表介绍了针对各个摄像头方向,相机 ITS 的测试行为。

摄像头方向 相机 ITS 的测试行为
后置摄像头 在折叠或展开状态下测试一次摄像头。
主前置摄像头 在展开和折叠状态下,分别测试一次摄像头。
物理前置摄像头 仅在摄像头处于可用状态时测试摄像头。

测试程序

本部分介绍针对可折叠设备测试摄像头的具体步骤。

设置设备

如需查看具体的设置说明,请参阅设置

授予测试 API 访问权限

为了使相机 ITS 能够确定设备是否为可折叠设备,您必须在调用测试之前授予测试 API 访问权限。否则,运行相机 ITS 测试会导致应用崩溃。

如需授予访问权限,请运行以下 ADB 命令。此命令需要针对每个设备运行一次。如果您重新安装不同版本的 CTS 验证程序,则必须再次运行该命令。

adb shell am compat enable ALLOW_TEST_API_ACCESS com.android.cts.verifier

配置文件

如要指定设备为可折叠设备,请在 config.yml 文件中为 tabletsensor_fusion 测试平台添加 foldable_device 参数。相机 ITS 使用此参数确定折叠状态和展开状态的 camera_id 和场景组合。

以下是与可折叠设备对应的 config.yml 文件的示例。

TestBeds:
  - Name: TABLET_SCENES
    # Test configuration for scenes[0:4, 6]
    Controllers:
        AndroidDevice:
          - serial: 8A9X0NS5Z
            label: dut
          - serial: 5B16001229
            label: tablet

    TestParams:
      brightness: 192
      chart_distance: 22.0
      debug_mode: "False"     # "quotes" needed
      chart_loc_arg: ""
      camera: 0
      scene: scene2_a
  lighting_cntl: arduino    # can be "arduino" or "None"
  lighting_ch: 1
  foldable_device: "True"     # "False" for non-foldable DUTs

运行测试

如需在可折叠设备上运行 ITS 测试,请运行 run_all_tests.py 命令。 如需了解详情,请参阅调用测试

在可折叠设备上运行相机 ITS 时,主前置摄像头测试将在两种状态(折叠和展开)下进行。如果设备处于折叠状态,测试结果将显示在 CTS 验证程序应用中的 camera1_SCENE_NAME_folded 选项下。根据设备状态,某些前置物理摄像头 ID 会显示为不可用,而且不会测试。后置摄像头只需要在一种状态下进行测试(最好是折叠状态),并且后置摄像头的测试结果不会有 _folded 后缀。

为了确保在设备处于折叠状态时执行折叠场景并检查可折叠 DUT 的状态,请运行以下命令。

adb shell cmd device_state state

在折叠状态下执行测试时,相机 ITS 会在终端显示一条消息,提示用户在 ITS 盒上正确设置设备。如需在提示后继续执行测试,请按 Enter 键。

如果您要分别在折叠状态和展开状态下运行所有场景,系统会先执行折叠场景,再执行展开场景。这样可最大限度地减少测试期间所需的重新装载次数。

相机 ITS 还会将 folded 后缀添加到为折叠状态场景创建的 tmp 目录。

命令示例

以下是在可折叠设备上执行测试的命令示例。

命令 说明
python tools/run_all_tests.py 运行所有场景。
python tools/run_all_tests.py scenes=scene0 运行 scene0。如果设备处于折叠状态,并且用户正在测试主前置摄像头,该脚本会确定设备状态并为场景名称添加后缀 _folded。用户无需手动添加后缀,即可运行折叠场景。
python tests/scene0/ -c config.yml 运行特定测试。