0

このデモを HTC Hero (CyanogenMod 6.1.0) で実行すると、Camera.startPreview() メソッドから RuntimeException が発生します。

これは、ここで説明されている問題と同じようです。

Android カメラは動作しません。startPreview が失敗する

つまり、プレビュー サイズを設定するときに、幅と高さを切り替える必要があります。実際、これは機能しますが、他のデバイスではデモが壊れてしまいます。

さて、このデモの目的は、カメラのプレビューを起動して実行する方法を示すことだと理解しています (したがって、この問題は範囲を超えています)。 「if HTC_HERO」スタイルのロジックをコードに入れるには (とにかく、他のデバイスも同様の動作をするはずです)?

ハックの 1 つは、例外をキャッチしてから、パラメータを交換して setPreviewSize() メソッドを再度呼び出すことですが、もっと良い方法を見つけたいと思っています。

4

1 に答える 1

1

「if HTC_HERO」スタイルのロジックをコードに入れたくありません (とにかく、他のデバイスも同様の動作をするはずです)。

任意の ROM mod を 100% 実行しているデバイスの 100% に到達しようとしている場合、これはある程度避けられません。バグがたくさんあるからです。

ハックの 1 つは、例外をキャッチしてから、パラメータを交換して setPreviewSize() メソッドを再度呼び出すことですが、もっと良い方法を見つけたいと思っています。

理論的には、適切なサイズを決定し、それに応じて構成するユニバーサル プレビュー サイズ コードが必要SurfaceViewです。AOSP カメラ アプリのコードが何らかの指標であるとすれば、このコードは大規模であり、どこでも機能する可能性は低いです (たとえば、「ユニバーサル」ソリューションの作成者が考慮した想定に違反する規格外のデバイスや ROM mod など)。

ZXing のバーコード スキャナーのようなプロジェクトを調べて、彼らがどのように問題に取り組んでいるかを確認したいと思うかもしれません。

于 2012-03-25T16:55:35.883 に答える