カメラ2のApiでバースト画像キャプチャを実装しましたが、6fpsで撮影すると問題は発生しません。問題が発生するのは、プレビューがロックされている理由です、私はここで、私はcamera2basic(https://github.com/googlesamples/android-Camera2Basic)にこれで少し実験と私を見つけ画像のキャプチャ中にプレビューがロックされました
private void captuteStillImage() {
try {
count = 0;
CaptureRequest.Builder captureBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
int rotation = getWindowManager().getDefaultDisplay().getRotation();
captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, ORIENTATIONS.get(rotation));
CameraCaptureSession.CaptureCallback captureCallback = new CameraCaptureSession.CaptureCallback() {
@Override
public void onCaptureCompleted(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, @NonNull TotalCaptureResult result) {
super.onCaptureCompleted(session, request, result);
//unlockFocus();
count++;
Log.e("count",count+"");
runOnUiThread(new Runnable() {
@Override
public void run() {
tv_count.setText(count+"");
}
});
if (count >= MAX_CAPTURE) {
unlockFocus();
}
Log.e("Image Capture", "Successfully");
}
};
// mCameraCaptureSession.capture(captureBuilder.build(), captureCallback, null);
List<CaptureRequest> captureList = new ArrayList<CaptureRequest>();
captureBuilder.addTarget(mImageReader.getSurface());
for (int i = 0; i < MAX_CAPTURE; i++) {
captureList.add(captureBuilder.build());
}
//mCameraCaptureSession.stopRepeating();
mCameraCaptureSession.captureBurst(captureList, captureCallback, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
私ができます新しい画像がキャプチャされるとクローズされるので、読者から取得する画像ファイルを保存しないでください。私は6枚の画像バーストをキャプチャしています。それを試してみました。イメージを配列に保存しようとしていましたが、キャプチャが終了したら、1つ1つを保存しようとしましたが、Imageが既に閉じられているためにクラッシュします。@Mick –