2013-08-08 2 views
1

Я создаю приложение, которое использует Text to Speech, и я хочу, чтобы пользователь имел возможность использовать его в автономном режиме, поэтому я делаю чек, чтобы проверить, установлены ли данные TTS на устройстве, вот код, который делает это:Как проверить, установлены ли на устройстве определенные данные языка для текста в речь (TTS)?

// Check tts data is installed 
Intent checkTTSIntent = new Intent(); 
checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE); 

protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    if(requestCode == MY_DATA_CHECK_CODE){ 
     if(resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){ 
      tts = new TextToSpeech(this, this); 
     } 
     else{ 
      Intent installTTSIntent = new Intent(); 
      installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
      startActivity(installTTSIntent); 
     } 
    } 
} 

Но это предлагает пользователю установить немецкий, испанский, французский и итальянский в качестве опции четыре загрузки, как я могу просто просто проверить, что один язык установлен, таких как итальянский?

Я провел некоторое исследование, но я изо всех сил пытаюсь найти примеры кода, которые позволили бы мне достичь этого.

ответ

1

Использование EXTRA_CHECK_VOICE_DATA_FOR

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if (requestCode == MY_DATA_CHECK_CODE) { 
    if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { 
     tts = new TextToSpeech(this, this); 
    } 
    else { 
     Intent installTTSIntent = new Intent(); 
     installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
     ArrayList<String> languages = new ArrayList<String>(); 
     languages.add("it-IT"); // non sure if "it" is the right abbr for italian 
     installTTSIntent.putStringArrayListExtra(TextToSpeech.Engine.EXTRA_CHECK_VOICE_DATA_FOR, 
                languages); 
     startActivity(installTTSIntent); 
    } 
    } 
} 

Ссылка на документ http://developer.android.com/reference/android/speech/tts/TextToSpeech.Engine.html#EXTRA_CHECK_VOICE_DATA_FOR

+0

Я пытаюсь это, но не могу заставить его работать, ничего не происходит, я буду стараться! Спасибо!!! – deucalion0

+0

Я точно знаю, что для английского языка, когда «eng-USA» нет подсказки. Но если вы удалите лишний экземпляр для EXTRA_CHECK_VOICE_DATA_FOR, он предложит установить немецкий, испанский, французский и итальянский языки. Может быть, абрр для итальянца - это «ита»? –

+0

Привет, я попробовал - IT и ita-ITA, но даже если итальянец установлен, он по-прежнему предлагает загрузить, похоже, он близок к решению! :) Спасибо! – deucalion0