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