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