お世話になっております。荒井と申します。現在、APILevel10以上をターゲットに端末を縦持ちで動画を撮影するカメラアプリを作成しようと考えております。
まず、manifestで画面はlandscapeで固定して
プレビューのSurfaceViewに関してはsetDisplayOrientation(90)で回転させ
出力されるmp4ファイルに関しては録画時にsetOrientationHint(270)で回転させる
というような作りで作成致しました。
この作りで、Nexus7、GalaxyNote、Optimasでは正常に(人の頭が画面の上方、胴が画面下方に来る)プレビューも動画ファイルの作成もなされたのですがMediasではプレビューは正常に表示されても録画された動画ファイルが天地逆になってしまう、という現象が起こりました。
今回、テストとして使用したのは上記4端末ですが、この状態では他の端末を使って録画して出来た動画ファイルも頭の位置が上下左右どちらに来るか、全く予測の付かない状態です。
また、動画として作成されたファイルがこのような状態であるとすれば、プレビュー用のSurfaceViewに関しても上記4端末ではたまたま正常(頭が上にくる)に表示されただけで、他の端末ではやはり90〜270度ずれた状態で表示される可能性もあります。
setDisplayOrientationやsetOrientationHintに固定値を与えているのが問題だと思われますので、それぞれ端末ごとに適切な値を動的に取得して与えてやりたいと思います。
この場合、皆様どのような値を取得して、どのような値を与えていらっしゃいますでしょうか?
以上、お忙しい所まことに恐縮ですが、何卒よろしくお願い致します。