Android手持设备是指通常通过将其握在手中使用的Android设备实现,例如mp3播放器、手机或平板电脑。
如果Android设备实现满足以下所有条件,则它们被归类为手持设备,手持设备申请GMS认证需要获得MADA协议。
深光标准技术提示:手提设备需拥有提供移动性的电源,例如电池。
二、手持设备过GMS的测试要求
必须至少有一个符合本文档中描述的所有要求的Android兼容显示器。
强烈建议为用户提供更改显示尺寸(屏幕密度)的功能。
必须支持图形缓冲区的GPU组合,至少与任何内置显示器的*高分辨率一样大。
如果手持设备实现支持软件屏幕旋转,它们:
必须使可供第三方应用程序使用的逻辑屏幕的短边至少为2英寸,长边至少为2.7英寸。
如果手持设备不支持软件屏幕旋转,它们:
必须使可供第三方应用程序使用的逻辑屏幕的短边至少为2.7英寸。
如果手持设备实现通过Configuration.isScreenHdr()声明支持高动态范围显示,它们:须宣传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扩展的支持。
必须通过系统属性graphics.gpu.profiler.support报告设备是否支持GPU分析功能。
如果手持设备实现通过系统属性graphics.gpu.profiler.support声明支持,它们:
必须将符合Perfetto文档中定义的GPU计数器和GPU渲染阶段架构的protobuf跟踪报告为输出。
必须在gpu计数器跟踪数据包proto之后报告设备的GPU计数器的一致值。
必须在渲染阶段跟踪数据包proto之后报告设备的GPURenderStages的一致值。
必须报告由以下格式指定的GPU频率跟踪点:power/gpu_frequency。
必须包括对上游Android开源代码实现的旧版应用程序兼容模式的支持。也就是说,设备实现不得更改激活兼容模式的触发器或阈值,并且不得更改兼容模式本身的行为。
必须包括对第三方输入法编辑器(IME)应用程序的支持。
必须在所有提供主屏幕的Android兼容显示器上提供主屏幕功能。
必须在所有与Android兼容的显示器上提供Back功能,并在至少一个与Android兼容的显示器上提供Recents功能。
必须将返回功能(KEYCODE_BACK)的正常和长按事件发送到前台应用程序。这些事件不得由系统使用,并且可以由Android设备外部触发(例如,连接到Android设备的外部硬件键盘)。
必须支持触摸屏输入。
如果手持设备实现包括3轴加速度计,则它们:
必须能够以至少100Hz的频率报告事件。
如果手持设备实现包括GPS/GNSS接收器并通过android.hardware.location.gps功能标志向应用程序报告功能,则它们:
必须在发现GNSS测量结果后立即报告,即使尚未报告根据GPS/GNSS计算的位置。
必须报告GNSS伪距和伪距率,在确定位置后的开阔天空条件下,当静止或以小于0.2米/秒平方的加速度移动时,足以计算位置在20米以内,速度在0.2米/秒以内,至少95%的时间。
如果手持设备实现包括3轴陀螺仪,它们:
必须能够以至少100Hz的频率报告事件。
必须能够测量高达每秒1000度的方向变化。
可以进行语音呼叫并在getPhoneType中指示除PHONE_TYPE_NONE的任何值的手持设备实现:
手持设备实现:
建议支持具有6个自由度的姿势传感器。
应该包括对蓝牙和蓝牙LE的支持。
如果手持设备实现包括计量连接,则它们:
必须提供数据保护模式。
如果手持设备实现包括使用列出功能的逻辑相机设备,则它们:
默认情况下必须具有正常视野(FOV),并且必须在50到90度之间。
必须有至少4GB的非易失性存储空间可用于应用程序私有数据(又名“/data”分区)。
当内核和用户空间的可用内存少于1GB时,必须为ActivityManager.isLowRamDevice()返回“true”。
如果手持设备实现声明仅支持32位ABI:
如果默认显示使用高达qHD的帧缓冲分辨率(例如FWVGA),内核和用户空间可用的内存必须至少为416MB。
如果默认显示使用高达HD+的帧缓冲分辨率(例如HD、WSVGA),内核和用户空间可用的内存必须至少为592MB。
如果默认显示使用高达FHD的帧缓冲分辨率(例如WSXGA+),内核和用户空间可用的内存必须至少为896MB。
如果默认显示使用高达QHD的帧缓冲区分辨率(例如QWXGA),内核和用户空间可用的内存必须至少为1344MB。
如果手持设备实现声明支持32位和64位ABI:
如果默认显示使用高达qHD的帧缓冲分辨率(例如FWVGA),内核和用户空间可用的内存必须至少为816MB。
如果默认显示使用高达HD+的帧缓冲分辨率(例如HD、WSVGA),内核和用户空间可用的内存必须至少为944MB。
如果默认显示器使用高达FHD的帧缓冲分辨率(例如WSXGA+),内核和用户空间可用的内存必须至少为1280MB。
如果默认显示使用高达QHD的帧缓冲分辨率(例如QWXGA),内核和用户空间可用的内存必须至少为1824MB。
请注意,上面的“内核和用户空间可用的内存”是指除了已经专用于硬件组件(如无线电、视频等)的任何内存之外提供的内存空间,这些内存不受内核对设备实现的控制。
如果手持设备实现包括小于或等于1GB的内核和用户空间可用内存,它们:
必须声明功能标志android.hardware.ram.low。
必须有至少1.1GB的非易失性存储空间用于存储应用程序私有数据(又名“/data”分区)。
如果手持设备实现包括超过1GB的可用于内核和用户空间的内存,它们:
必须有至少4GB的非易失性存储空间可用于应用程序私有数据(又名“/data”分区)。
应该声明功能标志android.hardware.ram.normal。
如果手持设备实现包括大于或等于2GB且小于4GB的内核和用户空间可用内存,则它们:强烈建议仅支持32位用户空间(应用程序和系统代码)
如果手持设备实现包括少于2GB的可用于内核和用户空间的内存,它们:必须仅支持32位ABI。
不得提供小于1GiB的应用程序共享存储。
应包括支持外围模式的USB端口。
如果手持设备实现包括支持外围模式的USB端口,则它们:
必须实现AndroidOpenAccessory(AOA)API。
如果手持设备实现包括支持主机模式的USB端口,它们:
必须按照AndroidSDK文档中的说明实现USB音频类。
手持设备:
必须包括麦克风。
必须有音频输出并声明android.hardware.audio.output。