2014-04-29 5 views
6

Ho un'app per fotocamera che consente all'utente di scattare foto. Sul mio schermo principale ho una macchina fotografica renderizzata su un SurfaceView. Quando l'utente scatta una foto, chiamo camera.autoFocus e sul callback AutoFocusCallback chiamo camera.takePicture. Quindi salvi la foto e vai a un'altra attività per visualizzare l'anteprima della foto. Chiamo camera.stopPreview() quando esco dalla pagina della fotocamera (onPause), e camera.startPreview() quando ritorna (onResp).Android Camera.autoFocus e FOCUS_MODE_CONTINUOUS_PICTURE

La telecamera viene inizializzata utilizzando FOCUS_MODE_CONTINUOUS_PICTURE. Non ricicla la fotocamera quando ritorna alla pagina della videocamera (poiché è un'operazione lenta che richiede ~ 2 secondi), ma basta chiamare startPreview se la telecamera è stata inizializzata in precedenza.

Ecco il mio problema. Prima di scattare la prima foto, l'autofocus continuo funziona bene poiché FOCUS_MODE_CONTINUOUS_PICTURE è impostato inizialmente sulla fotocamera. Tuttavia, dopo aver chiamato camera.autoFocus, FOCUS_MODE_CONTINUOUS_PICTURE smette di funzionare. Più tardi quando torno allo stesso schermo e chiamo startPreview, la messa a fuoco automatica continua non funziona più.

C'è un modo per riavviare la messa a fuoco automatica continua senza dover riavviare la fotocamera? Mi piacerebbe evitare di riavviare la videocamera, poiché ciò provoca diversi secondi di ritardo per l'utente.

risposta

17

Ho risolto il problema chiamando camera.cancelAutoFocus(). Ciò ha provocato un nuovo autofocus continuo.

+2

Se le applicazioni vogliono riprendere la messa a fuoco continua, deve essere chiamato cancelAutoFocus. Il riavvio dell'anteprima non riprenderà la messa a fuoco automatica continua. http://developer.android.com/reference/android/hardware/Camera.Parameters.html#FOCUS_MODE_CONTINUOUS_PICTURE –