Как получить предпочтительные юниты пользователя? (метрические (метры) или имперские (мили))?

Я хотел бы знать, какие предпочтительные для пользователя единицы между милями и метрами. Кажется, что класс "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() для получения соответствующей локали для пользователя устройства, на котором вы работаете

  • Выполнить поиск по встроенной таблице

Результат за вами!