2011-05-26 19 views
17

Estoy haciendo un proyecto con la cámara y después de tomar una cámara fotográfica se congela y tienes que terminar la actividad y recuperarla nuevamente para tomar otra foto, ¿cómo puedo tomar la foto congelada por solo 1 -2 segundos y luego vista de superficie para tener la cámara de nuevo. lo mismo para video Estoy usando grabadora de medios, tomando video presione stop video save y la pantalla sigue viva pero no puedo volver a tomar video ¿Tengo que reiniciar la actividad?La cámara Android se congela después de tomar una foto

¿Alguien tiene una solución?

+1

puede ¿Muestra algún código por favor? – PedroAGSantos

+0

@subspider ¿estás usando galaxy s para verificar la funcionalidad de la cámara? – includeMe

+0

mismo problema aquí. @dsc sí, estoy usando una galaxia s – stoefln

Respuesta

3

Realiza cualquier procesamiento de imágenes en un fondo AsyncTask. Esto permitirá que su actividad de UI continúe y tome otra fotografía.

Editar: No puedo eliminar una respuesta aceptada, por favor vea la respuesta de stoefin a continuación. Llamar al camera.startPreview() antes de tomar la siguiente foto funciona para él.

+3

No es por eso que la cámara está helada, la respuesta de stoefln es correcta; la vista previa debe reiniciarse. – elijah

56

Encontré una solución para esto: después de tomar una foto, la vista previa se habrá detenido. Para tomar más fotos, primero llame al camera.startPreview().

+0

esta es la respuesta correcta. ¡¡Gracias!! – elijah

+1

simplemente comenzando la vista previa no funcionó para mí. Sin embargo, detener e iniciar la vista previa funcionó como se menciona en la respuesta a continuación. – shshnk

+0

Oye, incluso si llamo 'startPreview()' primero, la cámara no se puede abrir. ¡Realmente apreciaría si me ayudas! https://stackoverflow.com/questions/47483990/can-only-open-camera-once –

0

La cámara es la congelación, porque no se está reiniciando la vista previa de la cámara, por lo que reiniciar llamando camera.startpreview()

15

después de capturar la imagen que debe detener la vista previa y empezar de nuevo otra vez.

mCamera.stopPreview(); 
mCamera.startPreview(); 

funcionaría bien.

+0

Incluso si hago eso, la cámara no puede abrir. ¡Realmente apreciaría si me ayudas! https://stackoverflow.com/questions/47483990/can-only-open-camera-once –

1

camera.startpreview(); respuesta no funcionó para mi caso, pero el código de abajo se resolvió el problema para mí y espero que ayude a otros también.yo utiliza un hilo para retrasar el cierre y apertura de la cámara después de una foto es capturada por 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();} 
Cuestiones relacionadas