モトローラドロイドにカメラのプレビュー
-
19-09-2019 - |
質問
私たちのアプリケーションは、カメラのプレビューが表示され、我々がカメラパラメータを設定するときに我々は、ランタイム例外を取得モトローラドロイドを除くすべての携帯電話上で正常に動作するようです。
java.lang.RuntimeException: setParameters failed
at android.hardware.Camera.native_setParameters(Native Method)
at android.hardware.Camera.setParameters(Camera.java:611)
at com.highwaynorth.andrometer.CameraPreviewSurfaceView.surfaceChanged(CameraPreviewSurfaceView.java:57)
at android.view.SurfaceView.updateWindow(SurfaceView.java:460)
at android.view.SurfaceView.dispatchDraw(SurfaceView.java:287)
at android.view.ViewGroup.drawChild(ViewGroup.java:1525)
ここで大部分は、 APIDemos の
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
// Now that the size is known, set up the camera parameters and begin
// the preview.
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(w, h);
parameters.setPictureFormat(PixelFormat.JPEG);
parameters.setPreviewFormat(PixelFormat.YCbCr_422_SP);
parameters.setPreviewFrameRate(1);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
誰がどのように我々はモトローラドロイドに例外を発生させたことになるパラメータを設定していると間違っているものを知っていますか?
解決
私はあなたの問題は次の2行のいずれかであるあなたを伝えることができます:
parameters.setPreviewFormat(PixelFormat.YCbCr_422_SP);
parameters.setPreviewFrameRate(1);
私は、そのコードの残りの部分は私が私の本の中でいくつかのカメラのサンプルで行うだけのものですので、このことを知っており、彼らはDROID上でテストされてきています。
あなたは問題のデバイスは、あなたが求めるフォーマットとフレームレートをサポートしているかどうかを確認するために、あなたのCamera.ParametersオブジェクトにgetSupportedPreviewFormats()
とgetSupportedPreviewFrameRates()
を使用することをお勧めします。これらのメソッドは、Android 2.0に新しく追加されたので、彼らはDROID /マイルストーンにうまくいくことに注意してください(と、おそらく、ネクサスワン)が、この記事の執筆時点では何も。古いAndroidのAPIのバージョンをターゲットにしている場合は、これらのメソッドは、Android 2.0上で動作するようにして、古いバージョンでスキップされ得るために、反射やいくつかのクラスローディングのトリックを使用する必要があります。
他のヒント
あなたはできるだけ多くのデバイスとして上で実行できることを確認するために利用されているものをプレビュー形式を確認する必要があります。
これは、DROIDサポートのように見えます PixelFormat.YCbCr_422_I PixelFormat.YCbCr_420_SP
使用可能なフォーマットのリストを取得するには、次の方法を使用することができます。 getSupportedPreviewFormats()の
あなたが調査することをお勧めしますもう一つます:
私はMOTOBLURを実行しているデバイスのためにこの問題が発生し、2.3(特にDroid2、ベライゾンとDroidXとATRIX)に更新しています。
カメラパラメータは罰金だったが、レイアウトに/ capture.xml ViewfinderViewの背景が透明に設定されています:
<com.google.zxing.client.android.ViewfinderView
android:id="@+id/viewfinder_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/transparent"
/>
まあ、それは、Android 2.3でMOTOBLURのための透明で、透明ではないことになります...
削除
android:background="@color/transparent"
ファインダーから私の問題を解決します。