Как получить предпочтительные юниты пользователя? (метрические (метры) или имперские (мили))?
Я хотел бы знать, какие предпочтительные для пользователя единицы между милями и метрами. Кажется, что класс "Locale" не позволяет этого.
Ответы
Ответ 1
Я не думаю, что обязательно будет правильный ответ на метрический/императорский вопрос для всех локалей.
Например, в Великобритании мы обычно используем мили на большие расстояния, такие как путешествие на автомобиле, ноги и дюймы для роста людей, но могут использовать счетчики для описания размеров комнаты.
Мы почти всегда используем литры для измерения объема жидкости, за исключением пива и иногда молока, которое все еще можно продавать в пинтах.
Килограммы обычно предпочитают фунты и унции, но большинство книг рецептов будут перечисляться как с тех пор, как у некоторых людей все еще есть шкалы, которые используют последний.
Думаю, вам нужно будет провести какое-то исследование, чтобы выяснить, какие страны используют масштаб, который вы хотите измерить (и, конечно же, дать пользователю возможность выбрать тот или иной вручную).
Ответ 2
Хотя нет способа получить предпочтительные единицы с использованием Locale, вы можете по умолчанию предположить, что если Locale указывает на Соединенные Штаты или Мьянму (locale.getISO3Country().equalsIgnoreCase("usa") || locale.getISO3Country().equalsIgnoreCase("mmr")
), предпочтительные единицы являются имперскими, в противном случае предпочтительные единицы являются метрическими.
Ответ 3
Поскольку некоторые люди за пределами США могут установить язык на английский (США), в конечном итоге лучше взять возвращаемое значение getSimCountryIso()
вместо getISO3Country()
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String countryCode = tm.getSimCountryIso();
Если countryCode
- us
, SIM-карта является американской, и поэтому имперские единицы могут быть лучшим выбором - в любом другом случае применяется метрическая система
Ответ 4
-
Постройте a Locale : Country : Metric
-
Вы можете использовать Locale.getDefault()
для получения соответствующей локали для пользователя устройства, на котором вы работаете
-
Выполнить поиск по встроенной таблице
Результат за вами!