Камера Android замерзает после съемки одной фотографии
Я делаю один проект с камерой, и после того, как одна фотокамера замерзает, и у вас есть, чтобы закончить активность и снова вызвать ее, чтобы сделать еще одну фотографию, как я могу сделать фото заморозить всего 1-2 секунды, а затем посмотреть на поверхность чтобы снова включить камеру. то же самое для видео Я использую медиа-рекордер, снимаю видео-стоп, сохраняя видео, и экран все еще жив, но я не могу снова снимать видео. Мне нужно перезапустить работу?
У кого-нибудь есть решение?
Ответы
Ответ 1
Сделайте любую обработку изображений в фоновом режиме AsyncTask
. Это позволит вашему пользовательскому интерфейсу продолжить работу и сделать еще одно изображение.
Изменить: я не могу удалить принятый ответ, поэтому, пожалуйста, см. ниже приведенный ниже ответ. Вызов camera.startPreview()
перед тем, как сделать следующую фотографию для него.
Ответ 2
Я нашел решение для этого: после съемки изображение предварительного просмотра остановится. Чтобы сделать больше фотографий, сначала вызовите camera.startPreview()
.
Ответ 3
после захвата изображения вы должны остановить предварительный просмотр и снова запустить его.
mCamera.stopPreview();
mCamera.startPreview();
он будет работать нормально.
Ответ 4
Камера .startpreview(); ответ не работал для моего случая, но приведенный ниже код решил эту проблему для меня и надеюсь, что это поможет другим тоже. Я использовал поток, чтобы задержать закрытие и открытие камеры после того, как фотография будет захвачена 500 мс
private void start_camera() {
try {
camera = Camera.open();
// camera.lock();
} catch (RuntimeException e) {
Log.e(tag, "init_camera: " + e);
return;
}
Camera.Parameters param = camera.getParameters();
param = camera.getParameters();
Camera.Size size = param.getSupportedPreviewSizes().get(0);
param.setPreviewSize(size.width, size.height);
camera.setParameters(param);
try {
camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();
previewRunning = true;
} catch (Exception e) {
Log.e(tag, "init_camera: " + e);
return;
}}
private void captureImage() {
camera.takePicture(shutterCallback,null,jpegCallback);
Thread restart_preview=new Thread(){public void run(){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
camera.release();
camera=null;
start_camera();
}};
restart_preview.start();}
Ответ 5
Вместо использования действий, определенных существующим приложением камеры на вашем телефоне, вы можете написать свое собственное действие, которое напрямую использует API-интерфейс камеры для выполнения описанных вами функций. Класс камеры описан здесь: http://developer.android.com/reference/android/hardware/Camera.html
Ответ 6
Камера замерзает, потому что вы не перезапускаете предварительный просмотр камеры, поэтому перезапустите ее, вызвав camera.startpreview()