如何获得用户首选单位? (公制(米)或英制(英里))?

问题描述 投票:14回答:4

我想知道英里和米之间的用户首选单位是什么。似乎“Locale”类不允许这样做。

java android eclipse units-of-measurement metric
4个回答
8
投票

对于所有语言环境,我认为对于度量/英制问题不一定是正确的答案。

例如,在英国,我们通常使用英里长距离,如汽车旅行,英尺和英寸,人们的身高,但可以使用米来描述房间的尺寸。

我们几乎总是使用升来测量液体体积,除了啤酒,有时还可以用品脱的牛奶。

公斤通常比磅和盎司更受欢迎,但大多数食谱书都会列出,因为有些人仍然有使用后者的秤。

我认为你必须做一些研究,以找出哪些国家使用哪个量表来衡量你感兴趣的东西(当然,让用户可以选择手动选择一个或另一个。)


11
投票

虽然没有办法使用Locale获取首选单位,但默认情况下,如果Locale指示美国或缅甸(locale.getISO3Country().equalsIgnoreCase("usa") || locale.getISO3Country().equalsIgnoreCase("mmr")),则首选单位为英制,否则首选单位为公制。在任何情况下,单位可以以英制或公制形式显示,所示的测量系统应该是用户可设置的偏好。

某些国家/地区存在某些涉及单位的特质。 (另见撰写本文时接受的答案。)例如,虽然英国的首选日常单位是公制单位,但也有一些例外情况,特别是 -

  • 地面交通中每小时英里数和英里数;
  • 风速每小时英里数;
  • 品脱和加仑,牛奶和啤酒(但不是大多数其他食品和饮料);和
  • 石头,石头和磅,一个人的体重。

2
投票

由于美国以外的某些人可能已将语言设置为英语(美国),因此最好采用getSimCountryIso()的返回值而不是getISO3Country()

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String countryCode = tm.getSimCountryIso();

如果countryCodeus,SIM卡是美国人,因此英制单位可能是更好的选择 - 在任何其他情况下,公制系统都适用


1
投票
  1. 建立一个Locale : Country : Metric
  2. 您可以使用Locale.getDefault()为正在运行的设备的用户获取适当的区域设置
  3. 在构建的表上执行搜索

结果是你的!

© www.soinside.com 2019 - 2024. All rights reserved.