我需要编写一个方法来确定设备是平板电脑还是手机。我不需要根据此显示不同的用户界面。我只需要关于设备的信息,以便将来可以将其发送到指标中。
在互联网上,我找到了许多确定设备是否为平板电脑的方法。我已经测试了所有这些方法,它们都有效。当然,我无法在所有类型的设备上进行测试。因此,我想知道确定设备是否为平板电脑的最佳和最准确的方法是什么。
以下是我能够找到的方法列表:
1) 使用最小宽度限定符
在 `res/values-sw600dp/attrs.xml` 中:
在
在互联网上,我找到了许多确定设备是否为平板电脑的方法。我已经测试了所有这些方法,它们都有效。当然,我无法在所有类型的设备上进行测试。因此,我想知道确定设备是否为平板电脑的最佳和最准确的方法是什么。
以下是我能够找到的方法列表:
1) 使用最小宽度限定符
在 `res/values-sw600dp/attrs.xml` 中:
<resources>
<bool name="isTablet">true</bool>
</resources>
在
res/values/attrs.xml
中<resources>
<bool name="isTablet">false</bool>
</resources>
然后:
fun isTablet() = context.resources.getBoolean(R.bool.isTablet)
我对这种方式感到担忧。或许值得添加一个资源 res/values-sw720dp/attrs.xml
,其中包含:
<resources>
<bool name="isTablet">true</bool>
</resources>
2) 使用 TelephonyManager
fun isTablet(context: Context) =
with(context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager) {
this.phoneType == TelephonyManager.PHONE_TYPE_NONE
}
3) 使用 配置
:
fun isTablet(context: Context): Boolean {
return ((context.resources.configuration.screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE)
}
4) 使用 DisplayMetrics
:
fun isTablet(activity: Activity): Boolean {
val metrics = DisplayMetrics()
activity.windowManager.defaultDisplay.getMetrics(metrics)
val yInches = metrics.heightPixels / metrics.ydpi
val xInches = metrics.widthPixels / metrics.xdpi
val diagonalInches = sqrt((xInches * xInches + yInches * yInches).toDouble())
return diagonalInches >= 6.5
}
请帮助我找到一种可以百分之百地工作的最佳方式。