Android text to speech очень медленно инициализируется
мое приложение используется людьми с нарушениями зрения, поэтому оно в значительной степени зависит от текста в речь. Приложение делает вызов API и считывает нагрузку (используя android.речь.функция TTS.TextToSpeech) некоторая соответствующая информация для пользователя.
все работает хорошо, за исключением того, что я заметил, что иногда инициализация текста в речь занимает 10 секунд или более и является основным узким местом моего приложения.
мне было интересно, если у кого-нибудь идеи о как я мог бы оптимизировать свой код, чтобы смягчить эту проблему.
во-первых, мое приложение запускает действие для проверки данных TTS.
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
затем этот метод вызывается с результатом действия. В зависимости от результата, text to speech либо просто инициализируется (это почти всегда происходит), либо text to speech устанавливается на устройство (очень редко).
private TextToSpeech mTts;
@Override
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance
mTts = new TextToSpeech(this, this);
} else {
// missing data, install it
Intent installIntent = new Intent();
installIntent.setAction(
TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}
наконец, когда все это завершается, мое приложение делает вызов API и имеет несколько строк вот так:
mTts.speak("<Useful output here>", TextToSpeech.QUEUE_FLUSH, null);
Спасибо за помощь!
1 ответов
немного поздно, но я бы сказал, это просто то, что происходит в устройстве. Другие вещи с более высоким приоритетом занимают процессорное время. Я думаю, что слепому человеку не нужно много приложений на устройстве. Также рассмотрим приложение Auto Start. для автоматического запуска приложения.