android - 使用区域设置来检测是否使用英制单位

标签 android localization internationalization units-of-measurement

我正在开发一个应用程序,它希望以厘米 (cm) 或英寸 (") 为单位显示长度。有没有办法从区域设置中选择正确的单位?无论如何我也会放入一个选项,以便用户可以覆盖区域设置。

美国、利比里亚和缅甸应使用英制单位和世界其他地区的普通单位。一种方法是将此逻辑放入我自己的类中,但如果可用,我更喜欢使用任何内置逻辑。有什么指点吗?

最佳答案

最后我选择了以下解决方案。

public class UnitLocale {
    public static UnitLocale Imperial = new UnitLocale();
    public static UnitLocale Metric = new UnitLocale();

    public static UnitLocale getDefault() {
            return getFrom(Locale.getDefault());
    }
    public static UnitLocale getFrom(Locale locale) {
        String countryCode = locale.getCountry();
        if ("US".equals(countryCode)) return Imperial; // USA
        if ("LR".equals(countryCode)) return Imperial; // Liberia
        if ("MM".equals(countryCode)) return Imperial; // Myanmar
        return Metric;
    }
}

例如这样使用它。

if (UnitLocale.getDefault() == UnitLocale.Imperial) convertToimperial();

如果还需要转换方法,最好将它们添加到 UnitLocale 的子类中。我只需要检测是否使用英制单位并将其发送到服务器。

在 java 对象上使用 int 的性能提升非常小,并且使代码更难阅读。在 java 中比较两个引用在速度上与比较两个 ints 相当。同样使用对象允许我们向 UnitLocale 类或子类(例如 convertToMetric 等)添加方法。

如果您愿意,也可以使用枚举来代替。

关于android - 使用区域设置来检测是否使用英制单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4898237/

相关文章:

android - 在 Navigation Drawer 的每个 fragment 中实现不同的 Action Bar 项目

ios - iOS App亚洲语言本地化

ios - iOS Storyboard是否具有相当于工具 :text in android? 的功能

python - 系统日期格式不使用 django 语言环境

java - 如何在 Java 的应用程序属性文件中保存印地语字符?

android - 长按触发多选

android - 如何将 USB 设备连接到我的 Android 设备

Django makemessages 不适用于 JS 文件

zend-framework - Zend Translate 找不到语言

Android 设计布局是否带软按钮