因此选项是:使用基于语言的检测或使用基于位置的检测。
基于语言的检测应该基本上没问题,除非你不是 像我这样以英语为母语的人,使用 en_US 但习惯使用摄氏度 扩大规模并居住在美国境外。
基于位置的检测应该是 大部分也很好,除非你是欧洲人前往美国或 换句话说,在这种情况下,您的比例会随着您的旅行而变化。
是否有一些系统范围的设置?似乎所有天气小部件都提供在 F/C 之间切换的选项,但最好是提前检测设置值。
在 Android 上检测温标的首选方式是什么?
您可以通过询问用户想要什么来“检测”它。
如果您希望使用其他方案之一作为默认答案,以最大程度地减少用户更改设置的需要,那也可以。然而,没有什么可以替代给予用户控制权。
因此选项是:使用基于语言的检测或使用基于位置的检测
在这两者中,基于语言的检测的主要优点是不需要许可。
第三种选择是尝试使用基于 SIM 卡的移动国家代码的内容。这也不能保证是用户想要的,这就是为什么应用程序需要让用户更改默认值。
就我个人而言,我会选择语言,因为它的默认值不太可能比其他语言差很多,而且它是最容易设置的。有一个
res/values/bools.xml
文件,其 use_celsius_default
值设置为 true
。有一个 res/values-en-rUS/bools.xml
,将 use_celsius_default
设置为 false
。 rest/values-es-rUS/bools.xml
也是如此。在代码中,getResources().getBoolean(R.id.use_celsius_default)
将返回是否使用摄氏度作为默认温度单位。
当然,物理专业的我想用开尔文...:-)
是否有一些系统范围的设置?
Android 4.4 起不适用。同样,对于距离是以英里还是公里为单位测量的,也没有系统范围的设置。气压的单位是毫巴、PSI 还是 kPa;重量的单位是磅、公斤还是英石;男鞋尺码是从 3 到 14、从 35 到 48、从 21 到 31 还是其他方案;等等