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

时间:2011-08-11 12:39:18

标签: java android eclipse units-of-measurement metric

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

4 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:8)

我认为对所有语言环境的度量/英制问题都没有必要得到正确答案。

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

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

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

我认为您必须进行一些研究,以找出哪些国家/地区使用哪种比例来衡量您感兴趣的内容(当然,也可以让用户选择手动选择其中一种。)

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:1)

  1. 建立Locale : Country : Metric

  2. 您可以使用Locale.getDefault()为您正在运行的设备的用户获取适当的区域设置

  3. 在构建的表格上执行搜索

  4. 结果是你的!