2017-12-31 27 views
0

Ich arbeite an einer App, die TTS verwenden soll, um Text in verschiedenen Sprachen zu lesen. Anstatt dem Benutzer eine Liste aller verfügbaren Sprachen zur Verfügung zu stellen (was ich persönlich sehr mühselig finde), möchte ich, dass er nur die Sprachen sieht, die derzeit auf seinem Telefon installiert sind. Mit anderen Worten, meine App sollte keine neuen Sprachen installieren, sondern nur auf die bereits auf dem Telefon installierten Sprachen zugreifen und zwischen ihnen wechseln.So greifen Sie auf die Liste der installierten Sprachen zu

Hier ist mein Beispiel mit System/Einstellungen/Sprachen & Eingabe/Sprache Einstellungen: phone language preferences.

Mit Locale.getDefault() bekomme ich nur die Standardsprache (in meinem Fall: en_US), mit getLocales bekomme ich alle Arten von Locales, also wie bekomme ich eine Liste der 3 installierten Sprachen: en_US, de_DE, es_ES, vorzugsweise in einem Array vom Typ Locale.

Ich fühle mich irgendwie hier fest, also jede Hilfe wird sehr geschätzt :-).

Antwort

0

Mit API-Stufe 24 die folgende Lösung möglich:

LocaleList.getDefault(): liefert eine Liste von den aktuell installierten Locales.

 String strLocales = ""; 
     LocaleList myLocales = LocaleList.getDefault(); 
     for (int i = 0; i<myLocales.size(); i++) { 
      strLocales = stringLocales + "\n" + myLocales.get(i).getDisplayLanguage(); 
      strLocales = stringLocales + "/" + myLocales.get(i).getDisplayCountry(); 
     } 

Das Ergebnis (strLocales) ist:

  • Englisch/Vereinigte Staaten
  • Spanisch/Spanien
  • Deutsch/Deutschland

Das ist genau das, was ich suchte . Unglücklicherweise; Ich weiß immer noch nicht, wie ich das für die Version vor 24 lösen soll und würde mich über jede Hilfe freuen.

Verwandte Themen