TextToSpeech.setEngineByPackageName() ничего не устанавливает

Следуя подсказке в этом ответе, я вызвал 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, поэтому этот метод — мой единственный вариант на данный момент)


person an00b    schedule 27.02.2012    source источник


Ответы (1)


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

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

person Eternal Learner    schedule 28.02.2012