2015-08-03 2 views
0

Могу ли я читать языки, поддерживаемые устройством Android? Я знаю, что мы можем читать текущий язык, но я хочу читать все языки.Могу ли я читать языки, поддерживаемые андроидом, без его укорачивания?

Afaik, это там в System/Fonts. Но могу ли я получить к нему доступ без укоренения устройства?

EDIT: Я попробовал Locale на Moto-G, и этот список содержит язык Gujarati, который, по-видимому, связан с тем, что v. 5.0.2 поддерживает язык, но устройство не поддерживает шрифт Gujarati. Необходимо знать, какие шрифты поддерживаются на определенном устройстве, чтобы я мог решить, следует ли их отображать.

+1

'Afaik, он есть в Шрифтах System/Fonts ** не имеет отношения ** к языкам. Они предоставляют только графическое представление символов. –

+1

Возможный дубликат [Как найти поддерживающие языки в андроиде программно?] (Http://stackoverflow.com/questions/12406878/how-to-find-supporting-languages-in-android-programatically) –

+1

Возможный дубликат [Что список поддерживаемых языков/локалей на Android?] (http://stackoverflow.com/questions/7973023/what-is-the-list-of-supported-languages-locales-on-android) – IngoAlbers

ответ

0

Это сработало для меня!

public void checkSupportedFonts() { 

    mLanguageFonts = new HashMap<String, String>(); 

    mLanguageFonts.put("en-US", "ab"); 
    mLanguageFonts.put("hi-IN", "अआ"); 
    mLanguageFonts.put("bn-IN", "অআ"); 
    mLanguageFonts.put("gu-IN", "અઆ"); 
    mLanguageFonts.put("mr-IN", "अआ"); 
    mLanguageFonts.put("ta-IN", "அஆ"); 
    mLanguageFonts.put("te-IN", "అఆ"); 
    mLanguageFonts.put("kn-IN", "ಅಆ"); 
    mLanguageFonts.put("ml-IN", "അആ"); 

    Iterator<Entry<String, String>> languageIterator = mLanguageFonts.entrySet().iterator(); 
    while (languageIterator.hasNext()) { 
     Map.Entry<String, String> pair = (Entry<String, String>)languageIterator.next(); 
     String font = pair.getValue().toString(); 

     if(isSupported(font)) 
      Log.d(TAG, "language is supported : " + pair.getKey()); 
     else 
      Log.d(TAG, "language is unsupported : " + pair.getKey()); 
     } 
} 

private boolean isSupported(String text) 
{ 

    String char1 = text.substring(0, 1); 
    text = text.substring(1, 2); 
    Bitmap bitmap1 = generateBitmap(context, char1); 
    Bitmap bitmap2 = generateBitmap(context, text); 
    boolean res = !bitmap1.sameAs(bitmap2); 
    bitmap1.recycle(); 
    bitmap2.recycle(); 
    return res; 
} 
Смежные вопросы