Камера Android зависает после съемки одной фотографии
Я делаю один проект с камерой, и после того, как одна фотокамера замерзает, и вам нужно закончить работу и снова вспомнить ее, чтобы сделать еще одну фотографию, Как я могу сделать замораживание фотографии всего за 1-2 секунды, а затем вид поверхности, чтобы снова иметь камеру. то же самое для видео я использую media recorder, принимая видео нажмите Стоп видео сохраняет и экран все еще жив, но я не могу взять видео снова я должен перезапустить деятельность?
У кого-нибудь есть решение?
6 ответов
сделайте любую обработку изображений в фоновом режиме AsyncTask
. Это позволит вашей активности пользовательского интерфейса, чтобы продолжить и сделать еще один снимок.
Edit: я не могу удалить принятый ответ, поэтому см. ответ stoefin ниже. Зову camera.startPreview()
перед тем, как сделать следующую фотографию, работает для него.
Я нашел решение для этого: после съемки предварительный просмотр дисплея будет остановлен. Чтобы сделать больше фотографий, позвоните camera.startPreview()
сначала еще раз.
после захвата изображения, вы должны остановить просмотр и начать его снова.
mCamera.stopPreview();
mCamera.startPreview();
он будет работать нормально.
камера.startpreview (); ответ не работал для моего случая, но код ниже решил эту проблему для меня и надеюсь, что это поможет другим.Я использовал нить для задержки закрытия и открытия камеры после съемки фотографии на 500ms
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();}
вместо использования действий, определенных существующим приложением камеры на вашем телефоне, вы можете написать свою собственную деятельность, которая использует API камеры непосредственно для выполнения описанных вами функций. Класс Camera задокументирован здесь:http://developer.android.com/reference/android/hardware/Camera.html
камера замерзает, потому что вы не перезапускаете предварительный просмотр камеры, поэтому перезапустите ее, вызвав camera.startpreview()