Я создаю базовое приложение для камеры в виде небольшого проекта, которым я занимаюсь, чтобы начать разработку под Android.
Когда я нажимаю кнопку, чтобы сделать снимок, происходит задержка примерно в 1 секунду, при которой предварительный просмотр останавливается, а затем снова размораживается. С сбоями проблем нет - только проблема с зависанием. Почему это происходит и как я могу это исправить?
Ниже приведен метод создания экземпляра камеры, а также мой класс SurfaceView.
private void startCamera() {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
cameraPreviewLayout = (FrameLayout) findViewById(R.id.camera_preview);
camera = checkDeviceCamera();
camera.setDisplayOrientation(90);
mImageSurfaceView = new ImageSurfaceView(MainActivity.this, camera);
cameraPreviewLayout.addView(mImageSurfaceView);
ImageButton captureButton = (ImageButton)findViewById(R.id.imageButton);
captureButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
camera.takePicture(null, null, pictureCallback);
camera.stopPreview();
camera.startPreview();
}
});
}
public class ImageSurfaceView extends SurfaceView implements
SurfaceHolder.Callback {
private Camera camera;
private SurfaceHolder surfaceHolder;
public ImageSurfaceView(Context context, Camera camera) {
super(context);
this.camera = camera;
this.surfaceHolder = getHolder();
this.surfaceHolder.addCallback(this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
this.camera.setPreviewDisplay(holder);
this.camera.startPreview();
this.camera.setDisplayOrientation(90);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
}
РЕДАКТИРОВАТЬ: В настоящее время на картинке нет ничего. Обратный звонок.
Camera.PictureCallback pictureCallback = new Camera.PictureCallback() {
}