2015-01-25 20 views
5

Sto sviluppando un'applicazione Android con funzionalità di funzionalità correlate alla fotocamera.Fotocamera Android: messa a fuoco dell'obiettivo fissa

Prima di tutto, ho letto un sacco di cose su SO, XDA e così via, quindi per favore non reindirizzarmi ad altri post inutili.

Sto cercando di implementare qualcosa di simile a una "modalità di messa a fuoco fisso", in modo che:

  1. inizio la mia applicazione con FOCUS_MODE_AUTO (o altro);
  2. mette a fuoco un oggetto a una distanza arbitraria;
  3. correggere il focus corrente;
  4. spostare la fotocamera su un altro oggetto a una distanza diversa sfuocata.

Ho provato diverse soluzioni, cioè .:

  • mCamera.cancelAutoFocus() nel AutoFocusCallback per impedire la regolazione della messa a fuoco;
  • impostare un FocusArea: new Camera.Area(new Rect(-50, -50, 50, 50), 1000) per correggere lo stato attivo nell'area corrente.

Mi sto occupando dell'API 20 e sto lavorando a un Samsung Galaxy S5. Su questo dispositivo, le modalità di messa a fuoco supportati sono: - auto - infinito - macro - continua-video - continua-picture

Il suggerimento che ho trovato più frequentemente è quello di ricompilare Android ...

+0

Vuoi toccare per mettere a fuoco? e puoi pubblicare qualche codice della classe Surfaceview? – sandeepmaaram

+0

Ciao. Ho aggiunto un pulsante sopra l'anteprima che, idealmente, deve passare dalla modalità di messa a fuoco automatica alla modalità "a fuoco fisso" e viceversa. Non c'è nulla di interessante nel mio codice, semplicemente non so come farlo o anche se è possibile. – Zeb

+3

Come stai mettendo a fuoco? La modalità "AUTO" non significa che la fotocamera mette a fuoco continuamente - solo che quando si chiama il comando autoFocus la messa a fuoco viene eseguita automaticamente senza alcuna indicazione sul risultato che ci si aspetta non come "Macro" o "Infinito". http://developer.android.com/reference/android/hardware/Camera.html#autoFocus(android.hardware.Camera.AutoFocusCallback) Quindi, se non si dispone di un loop che richiama la funzione autoFocus (come fanno molti esempi o richiamalo di nuovo nel callback) la messa a fuoco dovrebbe rimanere dopo che viene eseguita una volta. – Raanan

risposta

-1

Se ho capito, vuoi mettere a fuoco mantenendo il fuoco del primo oggetto. Hai provato a cambiare la modalità della fotocamera in FOCUS_MODE_FIXED dopo aver messo a fuoco il primo oggetto? Come quella:

Camera.Parameters mParam = mCamera.getParameters(); 
mParam.setFocusMode(Camera.Parameters.FOCUS_MODE_FIXED); 
mCamera.setParameters(mParam); 
+0

Ciao Alonso, sfortunatamente i dispositivi di destinazione per la mia applicazione (S4 e S5) non supportano FOCUS_MODE_FIXED. Tuttavia, questa modalità non lo aggiusta all'attuale focus ma a una distanza iperfocale. – Zeb

2

modalità "AUTO" non significa che la fotocamera mette a fuoco continuamente - solo che quando si chiama l'autofocus comando la messa a fuoco avviene automaticamente senza alcuna indicazione su ciò che si tradurrà non aspettatevi piace "Macro "o" Infinito ".

http://developer.android.com/reference/android/hardware/Camera.html#autoFocus(android.hardware.Camera.AutoFocusCallback)

Quindi, se non si dispone di un ciclo che chiama la messa a fuoco automatica (come molti esempi fanno o chiamare di nuovo nella richiamata) la vostra attenzione dovrebbe stare dopo che viene eseguito una volta.

Problemi correlati