5

DroidX を使用して、カメラのプレビュー画像を使用するアプリを開発しています。私が使用しているコードは Web 上のさまざまな場所にありますが、一般的なメソッド "getBestPreviewSize(width,height,camera.parameters)" が返すサイズが非常に小さいため、標準的な decodeYUV420SP メソッドが null ポインター例外で失敗することに気付きました。

いくつかのデバッグにより、私の DroidX でサポートされているプレビュー サイズは次のようになります。

  • 144h×176w
  • 縦240×横320
  • 288h×352w
  • 縦480×横640
  • 縦480×横720
  • 448h×800w
  • 縦720×横1280

高さと幅の値は、横長の遠近感を与えることに注意してください。これは、カメラの向きによって変わりません。渡されるサーフェスの幅と高さgetBestSupportedPreviewSizesは 480w x 778h です。

camera.parameters を渡すとgetBestSupportedPreviewSizes()、288 x 352 のサイズが返されます。呼び出しコードは次のとおりです。フォーマットがオフの場合は申し訳ありませんが、次のとおりです。

      if (!cameraConfigured) {
        Camera.Parameters parameters=camera.getParameters();
        Camera.Size size=getBestPreviewSize(pwidth, pheight, parameters);
        if (size!=null) {
          parameters.setPreviewSize(size.width, size.height);
          camera.setParameters(parameters);
          cameraConfigured=true;
        }
    }

pwidthおよびコールバックの幅と高さのパラメーターpheightからのものです。surfaceChanged私は camera.setDisplayOrientation(90); を試しました。onResume() で。マニフェストに orientation("Portrait") も入れました。これらの試行の 4 つの組み合わせのいずれも、この動作を変更していないようです。

私の考えは単純にそれらを逆にすることですが、非常に多くのレベルで間違っていると感じています. この無料で入手できるコードは、他の非常に多くの例で証明されているように見えるので、明らかに間違ったアプローチをしています。誰かがこの行動についての洞察を提供できますか?

前もって感謝します。

4

1 に答える 1

3

カメラは横向きモードで考えるのが適切な方法です。つまり、縦向きモードでカメラについて考えると、幅と高さが「反転」したように感じられます。

この関数は の関数のgetBestPreviewSize( w, h, p )単なるラッパーであるため、渡された幅と高さによって bestPreviewSize 関数の結果が変わることはありません。getSupportedPreviewSizes()Camera.Parameters

于 2012-07-04T03:52:21.003 に答える