2014年10月1日水曜日

特定端末でのカメラプレビューの歪みの問題を解消

先の記事の通り、SilentCamについて
特定端末でカメラプレビューに歪みが出ていたのを解消した。

結論から言えば、原因は2つ。
まず一つ目が、
端末画面の横幅と縦幅を取得した際
どの側面を縦横とするかが端末によって違ったという点。
これはGALAXY S IIIで起きていた歪みの原因であった。

SilentCamの検証に使ったスマホ端末8機種の内、
7機種(日本メーカー製)はスマホを持ったそのままの方向で縦横。
残り1機種、GALAXY S IIIはその逆だった。つまり短い側が縦で長いほうが横。

これはGALAXY特別のおかしさかもしれないが、他にそういう端末もあるかも知れず
また、今後タブレットにも対応させるといった時のことも考え、どちらであっても柔軟に対応できるように実装した。


二つ目が、端末のカメラプレビューの対応サイズ。
これはCamera.Parameters..getSupportedPreviewSizes()メソッドにて取得でき、
戻り値はandroid.hardware.Camera.Sizeのインスタンスのリストとなっている。
このリストでは、概ね最初の要素がディスプレイサイズとなっている場合がほとんどで
index0をプレビューサイズをするという所謂ハードコーディングをしていたが
中にはそうではない場合もあったので、
取得した要素を全て検証し最適なものを適用するという実装にした。

以上で、把握してはいたものの修正できていなかったSilentCamの不具合を解消できた。

また今回、色々な端末のデータを取得する必要があったので、
Android端末を持っている方達にご協力いただいた。 その際、こちらで各端末をPCにつないでログを取るといったことができないため
Display Detail Checlerという
前述の事項で言及したような、端末の各値をスマホ側で確認するためのアプリを作成し
これを使ってデータを収集した。

なお、需要があればと思い、Google Playにて公開している。
ディスプレイ詳細取得 D.D.Checker

0 件のコメント:

コメントを投稿