Как предотвратить преобразования текста в речь от остановки во время вращения
Мое приложение реализует преобразование текста в Речь, которое работает хорошо. Но когда я поворачиваю телефон, диктовка прекращается сама собой.
Вы должны знать, что я использую два разных макета для ландшафтного/портретного режима.
Как я должен обращаться с вращением экрана ?
1) с android:configChanges="orientation|screenSize"
/ / я не думаю, что это лучший способ
2) с чем-то еще?
Спасибо
2 ответа:
У вас в основном есть 2 варианта:
1) справьтесь с изменением ориентации самостоятельно. Обычно это довольно просто. Вам просто нужно реализоватьonConfigurationChange()
, и там вы можете просто перестроить макет, вызвавsetContentView()
. Имейте в виду, что это позволит воссоздать все ваши представления пользовательского интерфейса, так что вам придется вызватьfindViewById()
и сбросить onClickListeners снова для всех представлений, которые вам нужно отслеживать.2) Убедитесь, что экземпляр TTS не отключается при изменении ориентации. Вы можете сделать это либо проходя мимо экземпляр TTS от одного экземпляра действия к следующему или отслеживать экземпляр TTS в статической переменной (если вы делаете это, вам нужно убедиться, что вы вызываете
shutdown()
на нем в соответствующее время, а не вonDestroy()
вашего действия.
Существует несколько шагов, позволяющих TTS продолжать работу по ротации без необходимости обрабатывать изменения конфигурации в вашем приложении. Эти шаги включают:
Сделайте переменную TTS статической
private static TextToSpeech tts;
Инициализируйте его только один раз, если он равен null
if (tts == null) { ... }
Инициализируйте объект TTS, используя контекст приложения
tts = new TextToSpeech(getApplicationContext(), this);
Вот снимок моего экспериментального приложения, которое включает эти элементы http://code.google.com/p/android-tts-experiments/source/detail?r=b879fd1042151cbebc736b89a9fb660c895081ea мне удалось протестировать его на различных устройствах android и версиях android. Иногда TTS, кажется, немного колеблется при вращении на моих старых, менее мощных устройствах, однако он продолжает говорить текст, который ему дают сказать, и сообщения в очереди сохраняются в очереди и произносятся, как только текущий текст был полностью произнесен двигателем TTS.