Вы можете настроить SurfaceView в качестве экрана предварительного просмотра камеры и получать данные каждого кадра предварительного просмотра, используя PreviewCallback.Это было бы лучше, чем использовать takePicture, если вам не нужно высокое разрешение, которое захватывает takePicture.Другими словами, если вы хотите снимать изображения более низкого качества с более высокой скоростью, используйте PreviewCallback ... если вы хотите снимать изображения более высокого качества с очень низкой скоростью, используйте takePicture.
Что касается вашеговопросы, я не думаю, что вы можете делать снимки без предварительного просмотра, но я могу ошибаться.
class MainActivity extends Activity implements Camera.PreviewCallback, SurfaceHolder.Callback {
...
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open();
camera.setPreviewCallback(this);
...
}
public void onPreviewFrame(byte[] data, Camera camera) {
// image data contained in data... do as you wish
}
}