Текст в речь не работает в Android 4.2 Jelly Bean
Пару лет назад мы добавили голосовые подсказки в наше приложение, используя API для преобразования текста в речь, и оно работало хорошо. Недавно мы начали получать электронные письма от пользователей, которые обновились до Android 4.2 Jelly Bean, в котором говорится, что голосовые подсказки не работают и что они получают сообщение о том, что голосовые данные отсутствуют, и им необходимо загрузить их. Когда они нажимают для загрузки, им предоставляется возможность загрузки языков, отличных от английского.
Мы внедрили текст в речь, следуя этому посту в блоге разработчика Android. Мы ссылаемся на TextToSpeech.Engine.ACTION_CHECK_TTS_DATA
намерение и, если что-нибудь, кроме TextToSpeech.Engine.CHECK_VOICE_DATA_PASS
возвращается мы вызываем TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA
намерение.
У нас нет доступа к устройству под управлением 4.2. Сегодня я зашел в местный магазин и загрузил приложение на планшет Nexus 7 с установленной версией 4.2 и смог воспроизвести проблему. Однако, когда мы создаем AVD на базе Nexus 7 и запускаем эмулятор, голосовые подсказки работают нормально, и мы не можем воспроизвести проблему.
3 ответа
Проверка TTS с Android OS4.1 и OS 4.2, вежливо, отличается.
OS 4.1 неправильно обрабатывает намерение установить данные *
TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA
OS 4.2 неправильно обрабатывает намерение проверить голосовые данные *
TextToSpeech.Engine.ACTION_CHECK_TTS_DATA
* Под этим я подразумеваю, что он не возвращает правильные коды состояния согласно старым версиям. Например, CHECK_TTS_DATA возвращает CHECK_VOICE_DATA_MISSING_DATA
когда он явно имеет голосовые данные установлены. Возможно, что есть еще какие-то данные о намерениях, которые сейчас нужно передать, но я не уверен, где это задокументировано.
В моих приложениях мне пришлось отключить эти проверки для новых версий ОС. Я подозреваю, что Google, возможно, сделал это, потому что их условия использования Android теперь требуют TTS (но я не могу проверить это - я уверен, что есть сайт, который точно описывает, что должно быть реализовано, чтобы называться "Android")
Обновить
Как я и подозревал, Android OS 4.1 теперь обязывает включать Text-to-Speech в каждое Android-устройство, поэтому проверки теперь несколько избыточны. По этой ссылке: Android 4.1 Определение совместимости
3.11 Преобразование текста в речь
Android 4.1 включает в себя API-интерфейсы, которые позволяют приложениям использовать службы преобразования текста в речь (TTS) и позволяют поставщикам услуг предоставлять реализации служб TTS [Resources, 32]. Реализации устройств ДОЛЖНЫ соответствовать этим требованиям, связанным с платформой Android TTS:
- Реализации устройства ДОЛЖНЫ поддерживать API-интерфейсы платформы Android TTS и ДОЛЖНЫ включать механизм TTS, поддерживающий языки, доступные на устройстве. Обратите внимание, что вышестоящее программное обеспечение Android с открытым исходным кодом включает в себя полнофункциональную реализацию механизма TTS
- Реализации устройств ДОЛЖНЫ поддерживать установку сторонних двигателей TTS.
- Реализации устройств ДОЛЖНЫ обеспечивать доступный для пользователя интерфейс, который позволяет пользователям выбирать механизм TTS для использования на системном уровне.
Прямая ссылка на код
хостинг проектов Google
код ссылки
Я предлагаю увидеть ниже код демо. я помогу тебе
http://code.google.com/p/simple-jellybean-tts-example/
а также
Увидеть
http://developer.android.com/reference/android/speech/tts/TextToSpeech.Engine.html#KEY_FEATURE_NETWORK_SYNTHESIS
а также
http://developer.android.com/reference/android/speech/tts/TextToSpeech.html#speak(java.lang.String,int,java.util.HashMap)
- Джатин