3

私たちのアプリケーションはカメラプレビューを表示し、カメラパラメータを設定したときにランタイム例外が発生するMotorola Droidを除いて、すべての電話で正常に動作しているようです。

    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から取得されたsurfaceChanged()のコードです。

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();

}

Motorola Droidで例外を引き起こすパラメータを設定する方法の何が問題になっているのか誰かが知っていますか?

4

3 に答える 3

2

あなたの問題は次の2行のうちの1つにあると言えます。

parameters.setPreviewFormat(PixelFormat.YCbCr_422_SP);
parameters.setPreviewFrameRate(1);

私はこれを知っています。なぜなら、そのコードの残りの部分は、私の本のいくつかのカメラサンプルで行っていることであり、DROIDでテストされているからです。

Camera.Parametersオブジェクトを使用getSupportedPreviewFormats()して、問題のデバイスが目的のフォーマットとフレームレートをサポートしているかどうかを確認することをお勧めします。getSupportedPreviewFrameRates()これらのメソッドはAndroid2.0の新機能であるため、DROID / Milestone(およびおそらくNexus One)で機能しますが、この記事の執筆時点では他に何も機能しません。古いバージョンのAndroidAPIをターゲットにしている場合は、リフレクションまたはクラスローディングのトリックを使用して、これらのメソッドをAndroid 2.0で機能させ、古いバージョンではスキップする必要があります。

于 2010-01-10T12:18:36.710 に答える
0

できるだけ多くのデバイスで実行できることを確認するために、使用可能なプレビュー形式を確認する必要があります。

DROIDはPixelFormat.YCbCr_422_IPixelFormat.YCbCr_420_SPをサポートしているようです

次の方法を使用して、使用可能な形式のリストを取得できます。 getSupportedPreviewFormats()

ピクセルフォーマット

于 2010-02-24T03:48:54.397 に答える
0

あなたが調査したいと思うかもしれないもう一つのこと:

Motoblurを実行し、2.3にアップデートしたデバイス(特にDroid2、DroidX、およびVerizonを搭載したAtrix)でこの問題が発生しています。

カメラパラメータは問題ありませんでしたが、layout/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"
/>

Android2.3のMotoblurの透過性はそれほど透過的ではないようです...

削除

android:background="@color/transparent"

ビューファインダーから私の問題を解決しました。

于 2012-08-23T00:16:39.790 に答える