TextToSpeech.setEngineByPackageName () ничего не устанавливает - PullRequest
4 голосов
/ 28 февраля 2012

Следуя подсказке в этом ответе , я позвонил setEngineByPackageName прямо в onActivityResult(), когда requestCode == REQ_TTS_STATUS_CHECK && TextToSpeech.Engine.CHECK_VOICE_DATA_PASS:

  tts = new TextToSpeech(this, this);
  tts.setEngineByPackageName("com.ivona.tts.voicebeta.eng.usa.kendra");          

Но независимо отНезависимо от того, проверяю я или снимаю флажок Always use my settings в настройках преобразования текста в речь, я всегда получаю pico движок по умолчанию!

Да, я намеренно устанавливаю движок pico по умолчанию,так что я могу проверить переопределение с помощью вышеупомянутого совета .Но этот метод API, похоже, не работает вообще, или ... я что-то упустил?

(я знаю, что setEngineByPackageName устарела, так как он не сообщает вызывающей стороне, когдаЯдро TTS было инициализировано, но мне нужно поддерживать API 8, поэтому этот метод - мой единственный вариант на данный момент)

1 Ответ

5 голосов
/ 28 февраля 2012

Вы говорите, что поместили вызов setEngineByPackageName в onActivityResult(). Это неправильное место для этого.

setEngineByPackageName, как и getDefaultEngine, нельзя вызывать до достижения onInit().

...