私のアプリにはプレビュー画面があります。1つのデバイス(LG、Android 2.2、320x480画面)と別のデバイス(HTC、Android 2.3、480x800画面)では、すべて問題ありません。どちらの場合も、サポートされているプレビューサイズのリストには、画面サイズにぴったり合うものが含まれています。私はそれを選択し、画像は完璧です。問題は、最初のデバイスと同様の画面(Samsung、Android 2.3、320x480画面)を持つさらに別のデバイスにあります。以前の場合のように、画面サイズに合ったプレビューサイズを選択したにもかかわらず、画像はアスペクト比を保持しません。円は楕円形に見えます。画像は画面の短軸に沿って絞り込まれます。ハードウェア自体が320x480のプレビューを取得するために、画像を圧縮しているようです(カメラのフォームファクターは4:3で、画面のフォームファクターは3:2です)。Camera.Parameters.getHorizontalViewAngleとCamera.Parameters.getHorizontalViewAngleは役立つようです。3つのデバイスすべてで同じ値を示します。誰か助けてもらえますか?
質問する
606 次
1 に答える
3
プレビューが実際に画面にどのように表示されるかを確認するためのアドホックコードの記述を含む詳細な調査の結果、これが私が見つけたものです。1つのデバイス(LG E-720)では、3:2のフォームファクターを取得するためにプレビュー画像がトリミングされ、画面に収まるようにサイズが変更されます。アスペクト比は保持されます:
2番目のデバイス(Samsung ACE)では、プレビュー画像が別の方法でトリミングされているように見え、5:4の画像(!?)になり、画面に合わせてサイズが変更されます。フォームファクタが異なるため、画面上の画像は絞り込まれたように見えます。
2番目のデバイスでソフトウェアアップデートが利用可能かどうかを確認しましたが、そうではありません。したがって、画面上で多かれ少なかれ正しい画像を取得するために、ターゲットビューを384ピクセルの高さとして定義しました。これにより、実際には正しいアスペクト比を復元するトリミングが発生します。ただし、元のトリミングが水平方向に非対称であるため、わずかな水平方向のシフトは補正されません。
于 2012-10-22T08:23:08.493 に答える