我想知道英里和米之间的用户首选单位是什么。似乎“Locale”类不允许这样做。
对于所有语言环境,我认为对于度量/英制问题不一定是正确的答案。
例如,在英国,我们通常使用英里长距离,如汽车旅行,英尺和英寸,人们的身高,但可以使用米来描述房间的尺寸。
我们几乎总是使用升来测量液体体积,除了啤酒,有时还可以用品脱的牛奶。
公斤通常比磅和盎司更受欢迎,但大多数食谱书都会列出,因为有些人仍然有使用后者的秤。
我认为你必须做一些研究,以找出哪些国家使用哪个量表来衡量你感兴趣的东西(当然,让用户可以选择手动选择一个或另一个。)
虽然没有办法使用Locale获取首选单位,但默认情况下,如果Locale指示美国或缅甸(locale.getISO3Country().equalsIgnoreCase("usa") || locale.getISO3Country().equalsIgnoreCase("mmr")
),则首选单位为英制,否则首选单位为公制。在任何情况下,单位可以以英制或公制形式显示,所示的测量系统应该是用户可设置的偏好。
某些国家/地区存在某些涉及单位的特质。 (另见撰写本文时接受的答案。)例如,虽然英国的首选日常单位是公制单位,但也有一些例外情况,特别是 -
由于美国以外的某些人可能已将语言设置为英语(美国),因此最好采用getSimCountryIso()
的返回值而不是getISO3Country()
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String countryCode = tm.getSimCountryIso();
如果countryCode
是us
,SIM卡是美国人,因此英制单位可能是更好的选择 - 在任何其他情况下,公制系统都适用
Locale : Country : Metric
Locale.getDefault()
为正在运行的设备的用户获取适当的区域设置结果是你的!