【问题标题】:How to get the user preferred units? (metric (meters) or imperial (miles))?如何获得用户首选单位? (公制(米)还是英制(英里))?
【发布时间】:2011-10-24 22:56:38
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 英国不也使用英制吗?
    • @KevinDTimm:在某些情况下(例如在酒精饮料等中),但绝对不会达到与美国相同的程度。因此,这只是一个默认假设。
    • IIRC,他们以英里为单位测量距离(在道路上) - 请参阅 answers.yahoo.com/question/index?qid=20080614151814AAtg1zo
    • 如果您使用此解决方案,恕我直言,更好的代码是:mLocale.getISO3Country().equalsIgnoreCase(Locale.US.getISO3Country())
    • 几乎正确。因为per Wikipedia 只有美国和缅甸没有采用公制。因此只需检查语言代码xx_USxx_MYlatter is Myanmar),并且只对这两个使用英制。
    【解决方案2】:
    1. 构建Locale : Country : Metric

    2. 您可以使用Locale.getDefault() 为您正在运行的设备的用户获取适当的语言环境

    3. 对建好的表进行搜索

    结果是你的!

    【讨论】:

      【解决方案3】:

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

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

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

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

      我认为您必须进行一些研究,以了解哪些国家/地区使用哪种量表来衡量您感兴趣的内容(当然,让用户可以手动选择一个或另一个。)

      【讨论】:

      • 感谢分享。您认为英国或美国的“普通汽车司机”能够立即将公里/小时转换为英里(也就是在驾驶时)吗?
      【解决方案4】:

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

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

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

      【讨论】:

      • 错了。你是为了提出基于可选组件的解决方案,这只是半生不熟的黑客
      • 投反对票 我认为最好先检查是否有 SIM 卡,如果失败则使用语言环境。我完全同意,我的手机设置为美国,虽然我不是来自那里并且我使用公制......
      • 但是当我到另一个国家旅行并使用他们的 SIM 卡时,我不想要他们的测量单位,我想要我的
      猜你喜欢
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 2016-07-04
      • 2021-12-17
      • 2017-02-10
      • 2017-11-11
      • 2020-01-30
      • 1970-01-01
      相关资源
      最近更新 更多