2011-10-13 16 views
6

Io lavoro sulla registrazione video; tutto funziona tranne per la richiesta di messa a fuoco continua. Questo è quello che faccio (provato sia in surfaceCreated e surfaceChanged senza successo):Android: registra video con autofocus "continuo"

camera = Camera.open(); 
camera.setPreviewDisplay(holder); 

Parameters parameters = camera.getParameters(); 

poi faccio sia

parameters.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO); 

o

parameters.set("focus-mode", "continuous-video"); 

sia dovrebbe fare la stessa cosa; poi ho impostato i parametri con

camera.setParameters(parameters); 

Quest'ultima riga si arresta sempre! Quindi mi manca qualcosa?

A proposito, eseguo test su dispositivi piuttosto nuovi come Desire HD, Galaxy S, Galaxy Tab 7 e 10.1, che devono supportare l'auto-focus continuo; almeno le app per fotocamera incorporate lo supportano.

+0

Cosa viene visualizzato nel registro errori? – ingsaurabh

+0

Grazie per la pronta risposta, ingsaurabh. Questa è la (relazione crash per lo più priva di senso): 'java.lang.RuntimeException: setParameters fallito a android.hardware.Camera.native_setParameters (metodo nativo) a android.hardware.Camera.setParameters (Camera.java:1062) su com.mr.RecorderScreen.surfaceCreated (RecorderScreen.java:76) ' – myself

+0

Qualcuno è riuscito ** a registrare video con messa a fuoco automatica ** in Android? Se è così, per favore pubblica qualche panoramica su cosa dovrebbe essere fatto qui ... – myself

risposta

4

Ok, ho una sorta di soluzione a questo problema: sono stato in grado di mettere a fuoco manualmente la videocamera # AutoFocus (...).

Questo ha ancora problemi gravi. Innanzitutto, l'attivazione dell'autofocus durante la ripresa di video non funziona su alcuni dispositivi Samsung. Inoltre, non è una buona idea obbligare gli utenti a mettere a fuoco manualmente la fotocamera durante la registrazione di un video.

Quindi se si è in grado di normalmente mettere a fuoco i video durante la registrazione, il tuo consiglio sarebbe molto utile.

5

È necessario verificare se la messa a fuoco automatica continua è supportata dal dispositivo. Questo è qualcosa che funziona per me, per favore provalo.

boolean startContinuousAutoFocus() { 

    Camera.Parameters params = mCamera.getParameters(); 

    List<String> focusModes = params.getSupportedFocusModes(); 

    String CAF_PICTURE = Parameters.FOCUS_MODE_CONTINUOUS_PICTURE, 
      CAF_VIDEO = Parameters.FOCUS_MODE_CONTINUOUS_VIDEO, 
      supportedMode = focusModes 
        .contains(CAF_PICTURE) ? CAF_PICTURE : focusModes 
        .contains(CAF_VIDEO) ? CAF_VIDEO : ""; 

    if (!supportedMode.equals("")) { 

     params.setFocusMode(supportedMode); 
     mCamera.setParameters(params); 
     return true; 
    } 

    return false; 
} 
+0

Ci scusiamo per la risposta tardiva. Ho provato un codice simile, ma il problema è che il focus continuo non è supportato su quei dispositivi. – myself

Problemi correlati