• スポンサードリンク

Nexus7(2013)でのカメラプレビューのアスペクト比の不具合の対応策

Android Android Studio Camera MediaCodec

って今更Nexus7って話でも無いやろってのは置いといて^^;

GitHubで公開している内蔵カメラの映像と内蔵マイクからの音声をMediaCodecを使ってMP4動画ファイルとして出力するサンプルAudioVideoRecordingSampleにNexus7でのアスペクト比不具合のworkaroundを追加して更新しました。
ついでにAndroidStudioのプロジェクトにしてしまったので一見大改造にも見えますが大した違いはありません。

Nexus7でのカメラプレビューのアスペクト比不具合

これについては以前の記事にいっぱい書いたので詳しくはこちらをどうぞ。

で原因は今もって理解不能ですが、Camera.Parameters#setPictureSizeを使って静止画用のサイズを設定すれば回避できるようです。
と言っても自分で見つけたわけではありません(^^)v。自慢することではないけどWebRTCのソースを眺めてて気がついただけです。これはきっと中の人のしわざっぽいな。

今回の修正では次のようなコードを追加しました。

これだけであんなに苦労したNexus7(2013)のアスペクト比の不具合が解消するなんてぇ〜\(^o^)/

ついでに指定したサイズにもっとも近い映像サイズ選択のコードも追加しています。
何も考えずにコードを書くとCamera.Parameters#.getSupportedPreviewSizes()を使ってサポートする映像サイズを取得してループして欲しいサイズに最も近いのを選ぶって事になると思いますが、JavaのComparatorというインターフェースを使うと自前でループさせずにスッキリ?とかけます。
例えば次のようなメソッドを作ります。

後は次のように呼び出せば桶^^

今回は単純に映像サイズの縦横の差の絶対値の和を基準に選択するようになっていますが、アスペクト比が同じなものを優先するようにしたりとか色々応用は可能だと思います。
ちなみにこのComparator、普通はListをソートしたりする時に使いますがこんなこともできるんですねぇ^^

放ったらかしにしてる続き物の記事がまだ他にいくつもあるにもかかわらずしょうもないのを書いてしまったm(_ _)m

ということで今回はおしまい。お疲れ様でした。

« »

  • スポンサードリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

%d人のブロガーが「いいね」をつけました。