在 Android 上检测温标的首选方式是什么?

Łuk*_*ski 5 android locale

因此选项是:使用基于语言的检测或使用基于位置的检测。

  • 基于语言的检测应该基本上没问题,除非你像我一样非英语母语,使用 en_US 但习惯于摄氏温标并且住在美国境外。

  • 基于位置的检测应该也基本上没问题,除非您是前往美国旅行的欧洲人或相反,在这种情况下,您的比例会随着您旅行而变化。

是否有一些系统范围的设置?似乎所有天气小部件都提供在 F/C 之间切换的选项,但最好是提前检测设置值。

Com*_*are 3

在 Android 上检测温标的首选方式是什么?

您可以通过询问用户想要什么来“检测”它。

如果您希望使用其他方案之一作为默认答案,以最大程度地减少用户更改设置的需要,那也可以。然而,没有什么可以替代给予用户控制权。

所以选项是:使用基于语言的检测或使用基于位置的检测

在这两者中,基于语言的检测的主要优点是不需要许可。

第三种选择是尝试使用基于 SIM 卡的移动国家/地区代码的内容。这也不能保证是用户想要的,这就是应用程序需要让用户更改默认设置的原因。

就我个人而言,我会选择语言,因为默认情况下它不太可能比其他语言更糟糕,而且它是最容易设置的。将一个res/values/bools.xml文件的use_celsius_default值设置为true. 有一个res/values-en-rUS/bools.xml设置use_celsius_defaultfalse. 同上rest/values-es-rUS/bools.xml。在代码中,getResources().getBoolean(R.id.use_celsius_default)将返回是否使用摄氏度作为默认温度单位。

当然,我的物理专业想要使用开尔文......:-)

是否有一些系统范围的设置?

Android 4.4 起不支持。同样,对于距离是以英里还是公里为单位测量的,也没有系统范围的设置。气压的单位是毫巴、PSI 还是 kPa;重量的单位是磅、公斤还是英石;男鞋尺码是从 3 到 14、从 35 到 48、从 21 到 31 还是其他方案;ETC。