2011-08-11 9 views

Odpowiedz

8

Nie sądzę, że jest koniecznie poprawna odpowiedź na pytanie metryczno-imperialne dla wszystkich ustawień regionalnych.

Na przykład w Wielkiej Brytanii generalnie używamy mil na duże odległości, np. Podróż samochodem, stopy i cale dla wzrostu ludzi, ale możemy używać mierników do opisu wymiarów pomieszczenia.

Prawie zawsze używamy litrów do pomiaru objętości cieczy, z wyjątkiem piwa, a czasami mleka, które można nadal sprzedawać w kuflach.

Kilogramy są zwykle preferowane do funtów i uncji, ale większość książek na temat receptur będzie się wyświetlać, ponieważ niektóre osoby nadal mają skale, które używają tego ostatniego.

myślę, że będzie trzeba zrobić kilka badań, aby dowiedzieć się, które kraje stosują których skala co jesteś zainteresowany pomiaru (i oczywiście, daje użytkownikowi możliwość wyboru jednego lub drugiego ręcznie.)

+0

Dzięki za udostępnienie. Czy uważasz, że "przeciętny kierowca" w Wielkiej Brytanii lub USA jest w stanie natychmiast przekonwertować km/h na mile (również podczas jazdy)? –

8

Mimo że nie ma sposobu na uzyskanie preferowanych jednostek za pomocą ustawień regionalnych, domyślnie można przyjąć, że jeśli ustawienia regionalne wskazują Stany Zjednoczone lub Birma (locale.getISO3Country().equalsIgnoreCase("usa") || locale.getISO3Country().equalsIgnoreCase("mmr")) preferowane jednostki są imperialne, w przeciwnym razie preferowane jednostki są metryczne.

+1

Czy Anglia nie używa również systemu Imperial? – KevinDTimm

+1

@KevinDTimm: W niektórych przypadkach (np. W napojach alkoholowych itp.), Ale zdecydowanie nie w takim samym stopniu jak w Stanach Zjednoczonych. W związku z tym jest to tylko założenie _default_. –

+1

IIRC mierzą odległość (na drogach) jako mile - patrz http://answers.yahoo.com/question/index?qid=20080614151814AAtg1zo – KevinDTimm

2

Ponieważ niektóre osoby spoza USA mogły ustawić język na angielski (USA), to ostatecznie lepiej wziąć wartość zwracaną getSimCountryIso() zamiast getISO3Country()

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

Jeśli countryCode jest us karta SIM jest amerykański, a zatem jednostki imperialne może być lepszym wyborem - w każdym innym przypadku system metryczny jest stosowany

+0

Zdecydowanie w porządku. –

+5

To jest złe.jesteś za propozycją rozwiązania opartego na opcjonalnym komponencie, który jest po prostu na wpół wypalonym hackem –

+1

w dół głosowanie \t Myślę, że dobrze jest sprawdzić, czy jest karta SIM, a jeśli nie, użyj ustawień narodowych. Absolutnie zgadzam się, mój telefon jest ustawiony na US, chociaż nie jestem stamtąd i używam systemu metrycznego ... –

1
  1. Budowanie Locale : Country : Metric

  2. Można użyć Locale.getDefault() aby uzyskać odpowiednią ustawienia regionalne dla użytkownika urządzenia, którego używasz na

  3. Wykonaj wyszukiwanie na wbudowanej tabeli

wynik jest Twój!

Powiązane problemy