检测设备类型,为不同设备用户打造更佳体验
作者 / Alex Vanyo,开发技术推广工程师
可折叠设备和平板电脑
https://android-developers.googleblog.com/2023/06/pixel-fold-and-pixel-tablet-developers-guide.html
支持不同的屏幕尺寸
https://developer.android.google.cn/guide/topics/large-screens/support-different-screen-sizes
您是否希望将 "翻盖" 式手机归为可折叠设备? 您想要确定设备是否为平板电脑,还是只想知道设备是否具备移动数据网络功能? 可卷曲屏幕设备会被归类为哪种设备?ChromeOS 设备呢?其他可运行 Android 应用的桌面设备又该如何归类?
布局 - 针对不同设备和折叠模式显示最合适的界面
硬件功能 - 实现对各种硬件功能的支持
向用户显示实体设备类型的名称 - 针对设备类型向终端用户显示个性化的信息。
设备类型指标跟踪 - 了解用户在不同类型的设备上如何使用您的应用
布局
目标
针对不同的设备、显示模式和折叠模式显示最合适的界面。
建议
借助源自常见设备类型得出的主观划分点,使用窗口大小类别作为指导,根据当前窗口状态做出布局决策。不要限制屏幕方向或尺寸可调整性;否则,用户就无法按照他们希望的方式使用您的应用。
窗口大小类别
https://developer.android.google.cn/guide/topics/large-screens/support-different-screen-sizes
观察折叠功能
https://developer.android.google.cn/guide/topics/large-screens/make-apps-fold-aware
原因
兼容模式
https://developer.android.google.cn/guide/practices/enhanced-letterboxing
硬件功能
目标
实现对各种硬件功能的支持 (例如,如果设备具有 SIM 卡)。
建议
根据某项功能是否可用来做出动态的运行时决策,而不是假设某类设备是否支持某项功能。
如果您的应用具有绝对必需的功能,Google Play 将尊重您的应用清单中所声明的必需 uses-feature。但请注意,任何必需的功能都会减少可安装您应用的设备集,并且添加新的必需功能会阻止以前支持的设备进行更新。
uses-feature
https://developer.android.google.cn/guide/topics/manifest/uses-feature-element#market-feature-filtering
原因
许多硬件功能仅出现在一部分 Android 设备上,而在其他设备上则不存在。随着设备的不断发展,我们已经看到了许多面向用户的功能不受支持的情况,因为开发者会假定某种实体设备类型不支持特定的硬件功能。
例如,在一些情况下,支持生物识别身份验证的平板电脑并未提供生物识别身份验证作为登录选项,即使同一应用在手机上支持生物识别身份验证。如果设备支持生物识别身份验证,生物识别身份验证就应当成为用户的一个可用选项,而不是取决于设备的类型。
另一个例子是假设移动数据网络连接仅限于标准尺寸的手机。可折叠设备可能具有 "平板电脑" 大小的屏幕,但仍然具有移动数据网络连接和电话号码。如果设备具有该功能,则用户应当能够相应地选择使用该设备。
一些硬件功能也是动态可用的。用户可以连接或断开外围设备,而应用则应当妥善处理好获得和失去这些功能的访问权限。摄像头和麦克风等硬件功能一次只能由一个应用使用,因此不同应用之间的多任务处理也可能会导致无法访问硬件功能。
向用户显示实体设备类型
目标
建议
原因
PackageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_HINGE_ANGLE)
https://developer.android.google.cn/reference/android/content/pm/PackageManager#hasSystemFeature%28java.lang.String%29
99.96% 的手机在纵向时,其内屏宽度小于 600dp,但平板电脑或桌面设备上使用自由模式/分屏窗口时也可能会出现这样的屏幕尺寸。
设备类型指标跟踪
目标
建议
原因
是否正在使用外设与应用进行交互,例如键盘、鼠标、触控板或触控笔? 该设备是否具有内置触摸屏? 应用是否在自由模式的窗口环境中使用?
总结
推荐阅读