parameters.setPreviewSize(width,height) をサポートされているプレビュー サイズ (Camera.Parameters.getSupportedPreviewSizes()) から取得した特定の値に設定すると、カメラが画像をキャプチャしないという、アプリでこの奇妙な問題に直面しています。他のサイズ (サポートされているプレビュー サイズから取得) で試してみると、カメラが写真を撮ります。
まず、カメラを開き、surfaceChanged メソッドでカメラ パラメータを設定します。デバイス画面の幅と高さに応じて、カメラのプレビュー サイズを設定することを目指しています。幅がスクリーン デバイスの幅以下である、サポートされている最大サイズを探しています。
Nexus 4 では、値を 768 * 432 として取得します。 getSupportedPreviewSizes(); をループしたときのすべてのサイズのリストを次に示します。
幅 高さ 1280 * 720
800 * 480
768 * 432
720 * 480
640 * 480
576 * 432
480 * 320
384 * 288
352 * 288
320 * 240
240 * 160
176 * 144
以下のようにプレビューサイズを 768 * 432 に設定しました:- parameters.setPreviewSize(768, 432);
次に、他のいくつかのパラメーターを設定し、最後に camera.setParameters(parameters); および camera.startPreview()。
キャプチャ ボタンをクリックすると、オートフォーカス コールバックが実行されます:-
Camera.AutoFocusCallback mAutoFocusCallback = new Camera.AutoFocusCallback() {
public void onAutoFocus(boolean success, Camera camera) {
camera.setPreviewCallback(null);
camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
};
しかし、camera.takePicture は、写真が実際に撮影される残りのコールバックを呼び出しません。
プレビュー サイズを 800 * 480 または 720 * 480 または上記のリストのその他の値に設定すると、同じコードが機能します。
現在、この問題は Nexus 4 でのみ報告されています。カメラは他の多くのデバイスで正常に動作しています。
特定のデバイスで選択したプレビュー サイズが常にそのデバイスで機能することを確認する方法はありますか?
誰かがこれに光を当ててください。
よろしくお願いします。厳しい86