Android カメラにアクセスし、フレーム (画像) を取得し、それを処理してからプロセスを再開するアプリケーションを作成しようとしています。
これを行うには、 を呼び出してフレームを取得camera.setOneShotPreviewCallback(...)
し、コールバックで受信したデータを処理してから、setOneShotPreviewCallback
再度呼び出します。
setOneShotPreviewCallback
問題は、メインアクティビティのonResume()
関数を入れてプロセスを開始できないことです。それを行うと、コールバックは呼び出されません。
次のテスト コードを参照してください。
public void onResume() {
super.onResume();
camera = getCameraInstance();
cameraPreviewSurface = new CameraPreview(this, camera);
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
preview.removeAllViews();
preview.addView(cameraPreviewSurface);
camera.setOneShotPreviewCallback(cameraPreviewCallback);
Button button = (Button) findViewById(R.id.button_capture);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
camera.setOneShotPreviewCallback(cameraPreviewCallback);
}
});
}
アプリケーションの起動時にコールバックが呼び出されることはありませんが、ボタンが押されるとすぐにコールバックが返されます。
の後にクラスsetOneShotPreviewCallback
内で使用しようとしましたが、それでもメソッドが呼び出されませんでした。CameraPreview
camera.startPreview();