0

デバイスの前面カメラを利用するアプリを開発しています。サポートされているプレビューサイズのリストを取得し、それらをループしてかなり近いものを探して、プレビューサイズを設定しようとしています。私が書いた方法は、基本的にOS独自のカメラアプリの方法と同じです。この方法はうまく機能します。まさに私が望む方法です。それが私がここにいる理由ではありません。

一部のデバイスでは、カメラのプレビューが明らかに歪んで見えるという問題がありました。画像のプレビューを押しつぶすか引き伸ばす。なぜこれが行われているのか理解できなかったので、それをステップスルーして、前面カメラで使用可能なサポートされているすべてのプレビューサイズを調べたところ、2つしかなく、どちらも使用できる正しい側面ではなかったことがわかりました。SurfaceHolder.Callbackクラスの"surfaceChanged"メソッドは、前面カメラの幅と高さを762x480と報告していますが、サポートされている2つのプレビューサイズ(cam.getParameters()。getSupportedPreviewSizes()で取得)の両方が反対の側面:480x800、320x640。

これらが唯一のオプションであるため、歪んでいない正面カメラのプレビューを作成することは不可能のようです。バージョン2.3以下では、サポートされているサイズに関係なく、幅と高さに任意の値を使用できることを知っていますが、新しいバージョンのOSでもアプリを機能させるようにしています。プレビューを正しく表示するにはどうすればよいですか?

4

1 に答える 1

1

私の最初の質問は技術的に未解決のままです(そして私はまだそれが不可能であると信じています)が、私は歪んでいないプレビューへのトリックを理解しました。

サポートされているプレビューサイズがすべて私のデバイスの画面と比較して間違った方向にあることを考えると、画面全体に表示される通常のプレビューを作成することは実際には不可能のようです。さまざまなデバイスでいくつかのネイティブカメラアプリを調べた後(すべてがスキューなしで正面向きのプレビューを表示します)、デバイスのごく一部(実際には1つだけで、1つは非標準でした)に気づきました。画面サイズ)には、アプリで実行しようとしていたときに画面全体をカバーするプレビューがありました。

アプリを作り直して、デバイス画面に最も近い幅と高さのサイズを取得しましたが、寸法やアスペクト比を超えずに、選択したサイズに一致するようにSurfaceViewの高さと幅を手動で設定しました。確かに、一部のデバイスではプレビューの周囲にわずかな黒いスペースがありますが、歪んでいるよりもはるかに見栄えがします。とにかく片側に写真を撮ったり、フラッシュの設定などを操作したりするためのボタンが付いたパネルを持っていたので、想像以上に目立たなくなりました。

于 2012-12-18T20:33:43.153 に答える