1. 简介
本文档枚举了设备必须满足哪些要求才能与 Android 17 兼容。
本文档按照 RFC2119 中定义的 IETF 标准使用“必须”“不得”“必需”“会”“不会”“应”“不应”“建议”“可以”和“可选”字样。
在本文档中,“设备实现者”或“实现者”指的是运行 Android 17 的硬件/软件解决方案的开发人员或组织。“设备实现”或“实现”指的是所开发的硬件/软件解决方案。
设备实现必须满足本兼容性定义文档(包括以参考资料的形式纳入的任何文档)中列出的要求,才会被视为与 Android 17 兼容。
本定义或第 10 节中所述的软件测试如有未提及、含糊不清或不完整之处,设备实现者需负责确保与现有实现兼容。
因此,Android 开源项目既是参考 Android 实现,也是首选 Android 实现。强烈建议设备实现者尽可能使其实现基于 Android 开源项目提供的“上游”源代码。虽然从理论上来说某些组件可以替换为备用实现,但强烈建议不要这样做,否则通过软件测试的难度会大大增加。实现者需负责确保行为与标准 Android 实现(包括兼容性测试套件及其他内容)完全兼容。最后请注意,本文档明确禁止替换和修改某些组件。
本文档中链接到的许多资源都直接或间接来自 Android SDK,并且与该 SDK 的文档中包含的信息作用相同。如果本兼容性定义文档或兼容性测试套件与 SDK 文档有任何不一致的情况,均以 SDK 文档为准。本文档中链接到的资源内提供的所有技术详细信息都被视为本兼容性定义文档的一部分。
1.1 文档结构
1.1.1. 针对各种设备类型的要求
第 2 节中包含适用于特定设备类型的所有要求。第 2 节中的每个小节均分别针对一种特定设备类型。
第 2 节之后的各节中列出了普遍适用于所有 Android 设备实现的所有其他要求。本文档中将这些要求称为“核心要求”。
1.1.2. 要求 ID
“必须”满足的要求都被分配了要求 ID。
- 仅“必须”满足的要求被分配了 ID。
- “强烈建议”满足的要求带有 [SR] 标记,但未被分配 ID。
- ID 由以下部分构成:设备类型 ID - 条件 ID - 要求 ID(例如 C-0-1)。
每个 ID 的定义如下:
- 设备类型 ID(如需了解详情,请参阅 2. 设备类型)
- C:核心(适用于所有 Android 设备实现的要求)
- H:Android 手持设备
- T:Android TV 设备
- A:Android Automotive 实现
- W:Android Watch 实现
- Tab:Android 平板电脑实现
- 条件 ID
- 如果要求是无条件的,此 ID 会被设置为 0。
- 如果要求是有条件的,在同一节的同一设备类型下,第 1 个条件分配到的 ID 为 1,后续条件分配到的 ID 依次递增 1。
- 要求 ID
- 在同一节的同一条件下,第 1 项要求的 ID 为 1,后续要求的 ID 则依次递增 1。
1.1.3. 第 2 节中的要求 ID
第 2 节中的要求 ID 包含两个部分。第一个部分对应于如上所述的小节 ID。第二个部分标识外形规格和特定于外形规格的要求。
小节 ID 后跟上述要求 ID。
- 第 2 节中的 ID 由以下部分构成:小节 ID/设备类型 ID - 条件 ID - 要求 ID(例如 7.4.3/A-0-1)。
2. 设备类型
Android 开源项目提供了一个可用于各种设备类型和外形规格的软件堆栈。为了保护设备的安全性,软件堆栈(包括任何替代操作系统或备用内核实现)应在第 9 节以及本 CDD 其他部分所述的安全环境中执行。有些设备类型具有相对来说更为完善的应用分发生态系统。
本节介绍了这些设备类型,以及适用于每种设备类型的额外要求和建议。
不属于任何所述设备类型的所有 Android 设备实现仍必须满足本兼容性定义文档其他各节中的所有要求。
2.1 设备配置
如需了解各种设备类型在硬件配置方面的主要区别,请参阅本节中随后介绍的设备特定要求。
2.2. 手持设备相关要求
Android 手持设备指的是一种 Android 设备实现,通常拿在手中使用,例如 mp3 播放器、手机或平板电脑。
满足以下所有条件的 Android 设备实现可归类为手持设备:
- 具有能够使设备实现移动性的电源,例如电池。
- 屏幕的物理对角线尺寸介于 4 英寸到 8 英寸之间。
- 具有触摸屏输入界面。
本节其余部分中的附加要求针对的是 Android 手持设备实现。
2.2.1. 硬件
手持设备实现:
[7.1.1.1/H-0-1] 必须具有至少一个短边尺寸至少为 2.2 英寸且长边尺寸至少为 3.4 英寸的 Android 兼容显示屏。
[7.1.1.3/H-SR-1] 强烈建议为用户提供一种用于更改显示大小(屏幕密度)的方式。
[7.1.1.1/H-0-2] 必须支持图形缓冲区的 GPU 合成,其大小至少与任何内置屏幕的最高分辨率一样大。
[7.1.1.1/H-0-3]* 必须将提供给第三方应用的每个
UI_MODE_NORMAL显示屏映射到一个无遮挡的实体显示区域,该区域的短边至少为 2.2 英寸,长边至少为 3.4 英寸。[7.1.1.3/H-0-1]* 必须将
DENSITY_DEVICE_STABLE设置为 92% 或大于相应显示屏的实际物理密度。
如果手持设备实现支持 Vulkan,则:
- [7.1.4.2/H-1-1] 必须满足 Android Baseline 2021 配置文件所指定的要求。
如果手持设备实现声明支持任何 64 位 ABI(无论是否支持任何 32 位 ABI),并针对 ActivityManager.isLowRamDevice() 返回 false,则:
- [7.1.4.2/H-2-1] 必须支持 Vulkan 1.1 或更高版本。
如果手持设备实现声明通过 Configuration.isScreenHdr() 支持高动态范围屏幕,则:
- [7.1.4.5/H-1-1] 必须通告对
EGL_EXT_gl_colorspace_bt2020_pq、EGL_EXT_surface_SMPTE2086_metadata、EGL_EXT_surface_CTA861_3_metadata、VK_EXT_swapchain_colorspace和VK_EXT_hdr_metadata扩展的支持。
手持设备实现:
- [7.1.4.6/H-0-1] 必须通过系统属性
graphics.gpu.profiler.support报告设备是否支持 GPU 性能剖析功能。
如果手持设备实现通过系统属性 graphics.gpu.profiler.support 声明支持,则:
[7.1.4.6/H-1-1] 必须报告一条符合 Perfetto 文档中定义的 GPU 计数器和 GPU 渲染阶段架构的 protobuf 跟踪记录。
[7.1.4.6/H-1-2] 必须按照
gpu counter trace数据包 proto 为设备的 GPU 计数器报告符合要求的值。[7.1.4.6/H-1-3] 必须按照渲染阶段跟踪记录包 proto 为设备的 GPU 渲染阶段报告符合要求的值。
[7.1.4.6/H-1-4] 必须报告 GPU 频率跟踪点,格式为:power/gpu_frequency。
手持设备实现:
[7.1.5/H-0-1] 必须支持上游 Android 开放源代码所实现的旧版应用兼容模式。也就是说,设备实现不得更改启用兼容模式的触发条件或阈值,也不得更改兼容模式本身的行为。
[7.2.1/H-0-1] 必须支持第三方输入法 (IME) 应用。
[7.2.3/H-0-2] 必须将“返回”功能 (
KEYCODE_BACK) 的常规按下事件和长按事件都发送到前台应用。上述事件不得被系统占用,且可从 Android 设备外部触发(例如,连接到 Android 设备的外部硬件键盘)。[7.2.3/H-0-3] 必须在提供主屏幕的所有 Android 兼容屏幕上提供“主屏幕”功能。
[7.2.3/H-0-4] 必须在所有 Android 兼容屏幕上提供“返回”功能,并至少在其中一个 Android 兼容屏幕上提供“最近用过”功能。
[7.2.4/H-0-1] 必须支持触摸屏输入。
[7.2.4/H-SR-1] 强烈建议启动用户选择的辅助应用(也就是实现
VoiceInteractionService的应用)或在长按KEYCODE_MEDIA_PLAY_PAUSE或KEYCODE_HEADSETHOOK时负责处理ACTION_ASSIST的 activity(如果前台 activity 不处理上述长按事件)。[7.3.1/H-SR-1] 强烈建议包含 3 轴加速度计。
如果手持设备实现包含 3 轴加速度计,则:
- [7.3.1/H-1-1] 必须能够以至少 100 Hz 的频率报告事件。
如果手持设备实现包含 GPS/GNSS 接收器,并且通过 android.hardware.location.gps 功能标志向应用报告该功能,则:
[7.3.3/H-2-1] 必须在发现 GNSS 测量结果后立即报告,即使尚未报告通过 GPS/GNSS 计算出的位置信息也是如此。
[7.3.3/H-2-2] 必须报告 GNSS 伪距和伪距率,确保在确定位置之后,在露天条件下,当设备处于静止状态或以小于 0.2 m/s² 的加速度移动时,至少在 95% 的情况下能够计算出 20 米以内的位置以及 0.2 m/s 以内的速度。
如果手持设备实现包含 3 轴陀螺仪,则:
如果手持设备实现可以进行语音通话,并且在 getPhoneType 中指出了 PHONE_TYPE_NONE 以外的任何其他值,则:
- [7.3.8/H] 应包含近程传感器。
手持设备实现:
- [7.3.11/H-SR-1] 强烈建议支持具有 6 个自由度的姿势传感器。
如果手持设备实现支持移动数据网络连接,则:
- [7.4.1/H-1-1] 必须声明功能标志
android.hardware.telephony.data。
支持蓝牙 LE 的手持设备实现:
[7.4.3/H-SR-1] 强烈建议支持蓝牙 LE 数据包长度扩展。
如果设备实现支持 802.11 (Wi-Fi),则:
- [7.4.2.4/H-1-1] 必须支持 Wi-Fi Passpoint。
如果设备通过声明 PackageManager.FEATURE_WIFI_AWARE 支持 Wi-Fi 近邻感知网络 (NAN) 协议,及通过声明 PackageManager.FEATURE_WIFI_RTT 支持 Wi-Fi 位置信息(Wi-Fi 往返时间 - RTT),则:
[7.4.2.5/H-1-1] 根据通过 WifiRttManager#startRanging Android API 观察到的测距结果,对于在 10 厘米、1 米、3 米和 5 米的距离上进行的测量,报告范围时必须在 160 MHz 带宽的第 68 个百分位处精确到 +/-1 米以内(使用累积分布函数计算得出);在 80 MHz 带宽的第 68 个百分位处精确到 +/-2 米以内;在 40 MHz 带宽的第 68 个百分位处精确到 +/-4 米以内;在 20 MHz 带宽的第 68 个百分位处精确到 +/-8 米以内。
[7.4.2.5/H-SR-1] 根据通过 WifiRttManager#startRanging Android API 观察到的测距结果,对于在 10 厘米的距离上进行的测量,报告范围时强烈建议在 160 MHz 带宽的第 90 个百分位处精确到 +/-1 米以内(使用累积分布函数计算得出);在 80 MHz 带宽的第 90 个百分位处精确到 +/-2 米以内;在 40 MHz 带宽的第 90 个百分位处精确到 +/-4 米以内;在 20 MHz 带宽的第 90 个百分位处精确到 +/-8 米以内。
强烈建议遵循距离测量校准中指定的测量设置步骤。
如果手持设备实现支持 Wi-Fi 邻近检测 (PD) 协议(通过 PackageManager.FEATURE_WIFI_RTT 声明和 WifiRttManager#getProximityDetectionCharacteristics() 的非 null 返回值表示),则:
[7.4.2.6/H-1-1] 如果设备宣称支持 160 MHz,则必须使用 160 MHz 带宽进行测距。
[7.4.2.6/H-1-2] 使用 IEEE 802.11az 标准时,对于在 10 厘米、1 米、3 米和 5 米距离下通过
WifiRttManager#startContinuousRangingAndroid API 观察到的测距结果,设备必须确保在第 68 个百分位处(通过累积分布函数计算得出)报告的范围准确无误:- 在 160 MHz 带宽下,精度为 +/-0.5 米
- 在 80 MHz 带宽下,精度为 +/-1 米
- 在 40 MHz 带宽下,精度为 +/-2 米
- 在 20 MHz 带宽下,精度为 ±4 米
[7.4.2.6/H-1-3] 使用 IEEE 802.11mc 标准时,对于在 10 厘米、1 米、3 米和 5 米距离下通过
WifiRttManager#startContinuousRangingAndroid API 观察到的测距结果,设备必须确保在第 68 个百分位处(通过累积分布函数计算得出)报告的范围准确无误:- 在 80 MHz 带宽下,精度为 +/-2 米
- 在 40 MHz 带宽下,精度为 +/-4 米
- 在 20 MHz 带宽下,精度为 +/-8 米
[7.4.2.6/H-SR-1] 使用 IEEE 802.11az 标准时,对于在 10 厘米距离下通过
WifiRttManager#startContinuousRangingAndroid API 观察到的测距结果,设备必须确保在第 90 个百分位处(通过累积分布函数计算得出)报告的范围准确无误:- 在 160 MHz 带宽下,精度为 +/-0.5 米
- 在 80 MHz 带宽下,精度为 +/-1 米
- 在 40 MHz 带宽下,精度为 +/-2 米
- 在 20 MHz 带宽下,精度为 ±4 米
[7.4.2.6/H-SR-2] 使用 IEEE 802.11mc 标准时,对于在 10 厘米距离下通过
WifiRttManager#startContinuousRangingAndroid API 观察到的测距结果,强烈建议设备在第 90 个百分位处(通过累积分布函数计算得出)报告的范围准确无误:- 在 80 MHz 带宽下,精度为 +/-2 米
- 在 40 MHz 带宽下,精度为 +/-4 米
- 在 20 MHz 带宽下,精度为 +/-8 米
合规条件包括:两台设备之间有清晰的视线 (LOS);测试环境需开阔且附近的反射物极少,以减少多径效应;测试期间设备周围严禁有人走动,以最大限度减少信道波动。
强烈建议遵循距离测量校准中指定的测量设置步骤。
如果手持设备通过声明 PackageManager.FEATURE_WIFI_PD 支持 Wi-Fi 邻近检测 (PD) 协议,及通过声明 PackageManager.FEATURE_WIFI_RTT 支持 Wi-Fi 位置信息(Wi-Fi 往返时间 - RTT),则设备:
[7.4.2.10/H-1-1] 必须使用至少 160 MHz 的带宽。
[7.4.2.10/H-1-2] 必须确保在 160 MHz 带宽下,根据通过 WifiRttManager#startRanging Android API 观察到的结果,设备报告的测距值达到如下精确度:第 68 个百分位处(使用累积分布函数计算)的误差在 +/-0.25 米以内。
强烈建议遵循邻近感知校准中指定的测量设置步骤。
如果手持设备实现声明 FEATURE_BLUETOOTH_LE,则: