Android の Camera previewCallback について質問があります。私のアプリには、カメラを開いてそのパラメーターを構成するアクティビティと、プレビューを表示するために使用される SurfaceView のサブクラスの 2 つの主要部分があります。私は4.0.4でテストしています
アクティビティが Camera.PreviewCallback を実装している場合、次のようにします。
Public Class PreviewFrameActivity extends Activity implements Camera.PreviewCallback {<br />
@Override
public void onCreate(Bundle savedInstanceState) {
// setup layout and create SurfaceView object before getting here
Camera mCamera = Camera.open();
mCamera.setPreviewCallback(this);
}
public void onPreviewFrame(byte[] data, Camera camera) {
Log.d(TAG, "Starting frame processing...");
}
}
previewCallback は、この方法で実際に呼び出されることはありません。ただし、SurfaceView に PreviewCallback を実装させ、それを surfaceCreated の一部としてカメラ オブジェクトに設定すると、突然コールバックが機能し始めます。これにより、ドキュメントでは setPreviewCallback をいつでも呼び出すことができると書かれていますが、実際にはそうではないと私は信じています。startPreview() と同じように、有効なプレビュー サーフェスを取得するまで setPreviewFormat を呼び出せないようです (これが、サーフェスの作成後にプレビューを開始するブロックにコードを移動したときに機能し始めた理由です)。誰かが私のためにこれを確認できますか?