我只需要有关设备的信息,以便将来我可以将其发送到度量。
在互联网上,我发现了很多方法来确定设备是否是平板电脑,我已经测试了所有这些方法,它们都起作用了。当然,我无法在各种设备上进行测试。所以我想知道哪种方法是确定设备是否是平板电脑的最佳和最准确的方法。
这是我能够找到的方法的列表:
1)使用最小宽度限定符
inres/values-sw600dp/attrs.xml
:
<resources>
<bool name="isTablet">true</bool>
</resources>
inres/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)UsingTelephonyManager
fun isTablet(context: Context) =
with(context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager) {
this.phoneType == TelephonyManager.PHONE_TYPE_NONE
}
3)UsingConfiguration
:
fun isTablet(context: Context): Boolean {
return ((context.resources.configuration.screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE)
}
4)UsingDisplayMetrics
:
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
}
请帮我找到最好的方法,将工作 100 % 的时间。
3
这些在很大程度上是完全不同的事情。
方法 1 是检查设备屏幕最小边的长度。基本上,它是说平板电脑在最小尺寸上超过 4 英寸(在任何正常的屏幕分辨率上,这将至少是英寸诊断)。
方法 2 是说平板电脑是没有打电话能力的任何东西。
方法 3 正在检查其至少 480x640 dp,或至少 3 英寸乘 4 英寸。(可以小至 5 英寸诊断)。
方法 4 准确地测量诊断。这消除了方法 1 上的一些理论问题,但它做了很多毫无意义的数学(这个实现没有优化)。
所有这些都取决于你对平板电脑的定义。没有实际的定义。方法 1 、 3 和 4 是基于大小的。方法 2 基于这样的想法,即如果它有打电话的能力,你会称它为手机,而不是平板电脑。
假设你想要一个基于大小的解决方案,我会去 1,它更准确,更可扩展的方法 3(这将无法从一个大的告诉一个板电脑),比方法 4(和角落的情况下,有些东西可以通过方法 1,但方法 4 捕获他们真的不会发生在现实世界中)。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(76条)