MonoDroidを使用していますが、それに相当するJavaの回答が引き続き役立ちます。OnPause()の画面の向きの変化を検出します。
私はポートレートレイアウトとランドスケープレイアウトを使用していますので、可能であれば、Android画面の向きを使用して自動的にアクティビティを作成/作成したいと考えています。
私のアプリではTextToSpeech
が使用されていますので、アクティビティのOnPause()
を停止しています。これは、ホームキーを押すか、着信があったときにうまくいきます。しかし私は、ユーザーからの画面の向きの変更についてTextToSpeechを停止したくない。
TextToSpeech
が中断されないようにこの変更を検出する簡単な方法はありますか?
私の活動のOnStop()
コード:
protected override void OnPause()
{
// I need this for Home key, intercepting phone calls, etc.
// But how can I prevent this for a screen orientation change?
// Need to enable screen orientation to get my portrait/landscape views
if(Text2Speech.IsTextToSpeechInitialised && Text2Speech.TextToSpeech != null)
Text2Speech.TextToSpeech.Stop();
base.OnPause();
}
あなたは 'アンドロイドを使用して見てきました現れますか?これは、向きの変更を自分で処理することを指定します。あなたの 'Activity'で' onConfigurationChanged'をオーバーライドし、あなたがする必要があるかもしれないこと(レイアウトの変更など)を行います。 – Squonk
私はそれを見ました。それは私が行かなければならないアプローチかもしれません。可能であれば、私はポートレートの活動を破壊する/私の風景の活動を作成するときにアンドロイドにすべての世話をしてもらいたいと思います。 OnPause()の間にオリエンテーションの変化を検出する簡単な方法があるかどうか疑問に思っていただけです。 –
いいえ簡単に知る方法はありません。 「アクティビティ」ライフサイクルは、さまざまなもの(例えば、着信電話など)の影響を受けます。 「活動」(休止、破壊破壊)の「アウト」フェーズでは、なぜ「なぜ」起こっているのかを説明するためのシステムメカニズムはありません。あなたが持っている最高のものは、自分で変更を処理することです。 'onConfigurationChanged(...)'に渡された 'Configuration'オブジェクトは、少なくともあなたが正しいレイアウトで' setContentView(...) 'を使わなければならない方向変更であることを確認するのに役立ちます。それはあまりにも悪いことではありません。 – Squonk