私のアプリは、うまく機能しているテキスト読み上げを実装しています。しかし、電話を回転させると、口述は自動的に停止します。
横向き/縦向きモードに2つの異なるレイアウトを使用していることを知っておく必要があります。
画面の回転はどのように処理すればよいですか?1)android:configChanges="orientation|screenSize"
//を使用するのが最善の方法ではないと思います2)他の方法を使用しますか?
ありがとうございました
私のアプリは、うまく機能しているテキスト読み上げを実装しています。しかし、電話を回転させると、口述は自動的に停止します。
横向き/縦向きモードに2つの異なるレイアウトを使用していることを知っておく必要があります。
画面の回転はどのように処理すればよいですか?1)android:configChanges="orientation|screenSize"
//を使用するのが最善の方法ではないと思います2)他の方法を使用しますか?
ありがとうございました
アプリで構成の変更を処理しなくても、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エンジンによって完全に読み上げられると読み上げられます。
基本的に2つのオプションがあります。
1)向きの変更は自分で行ってください。通常、これは非常に簡単です。実装する必要がonConfigurationChange()
あり、そこでを呼び出すことでレイアウトを再構築できますsetContentView()
。これによりすべてのUIビューが再作成findViewById()
されるため、追跡する必要のあるすべてのビューに対してonClickListenersを再度呼び出してリセットする必要があることに注意してください。
2)方向の変更時にTTSインスタンスがシャットダウンしないことを確認します。これを行うには、アクティビティの1つのインスタンスから次のインスタンスにTTSインスタンスを渡すか、静的変数でTTSインスタンスを追跡します(これを行う場合はshutdown()
、適切なタイミングでTTSインスタンスを呼び出す必要があります。onDestroy()
あなたの活動ではありません。