私のAndroidアプリケーションに質問があります。 私の主な活動では、アクティビティB、私はカメラの向きをonResume()でディスプレイと同じに設定しました。それは、活動Bに行く前に が、私は別の活性を有する(アクティビティAと)、それはカメラの向きがここ 前のアクティビティのonStopが呼び出された後、カメラの向きがデフォルトに戻ります
が流れているAさんonStop()デフォルトのそれのコールアクティビティに戻って次のようになります。Activity A onCreate()
Activity A onResume()
Activity A onPause()
Activity B onCreate()
Activity B onResume()
set mCamera.setDisplayOrientation(result);
----> set properly, i can see the good orientation about 1-2 ms.
Activity A onStop()
----> camera orientation goes to default.
----> If i didn't do anything here, device will sleep, once i wake up, i can get the camera orientation i want
Activity B onPause() --> due to device sleep
Activity B onResume() ---> because I turn on back device
set mCamera.setDisplayOrientation(result);
---> camera orientation is good now
私の質問は "以前のアクティビティのonStop()は設定を元の状態に戻すように設定する方法を設定する方法は?"
私はアンドロイドを追加しました:私の活動のBのマニフェストファイルでalwaysRetainTaskStateは=「true」と、それは事前に
おかげで働いていません。
私のオリエンテーションは、アクティビティB自体のonResume()に設定されています。 http://developer.android.com/reference/android/app/Activity.html#ConfigurationChangesによれば、 が指定されていない限り、設定の変更(画面の向き、言語、入力デバイスの変更など) )は、あなたの現在のアクティビティを破壊し、onPause()、onStop()、およびonDestroy()の通常のアクティビティライフサイクルプロセスを適宜実行します。 このアクティビティのonStop()が呼び出されると、カメラの向きがデフォルトになりました。 – Ronald
@ user1193079はい、わかります。起こっていることは、向きを設定するために使用する結果変数がメモリから消去されている(またはアクティビティAのonStopが呼び出された後に誤った値に設定されている可能性がある)ため、デフォルト値とデフォルトの向きに戻ります。アクティビティー間で値を維持するには、永続ストレージを使用して方向を保管する必要があります。 onResume()では、永続ストレージ(sharedPreferencesの推奨)をチェックし、その値に基づいて方向をリセットする必要があります。 – onit
私はこの問題の根本的な原因を発見しました。これはonPreviewFrame(byte []、Camera)で渡されたバイト配列の順序、JPEG画像、または記録されたビデオには影響しません。私はこの問題の真の根本原因を発見しました。 – Ronald