2012-03-17 19 views
8

Sto tentando di accedere al feed raw della fotocamera frontale di Android. Per impostazione predefinita, l'anteprima della fotocamera frontale viene ruotata orizzontalmente in modo che gli utenti possano vedere se stessi come se guardassero uno specchio: è grandioso, ma non quello di cui ho bisogno. Qual è il modo migliore per ottenere il feed raw? C'è un modo per disabilitare il flipping automatico, o dovrei provare a capovolgerlo in codice da solo? La mia applicazione deve visualizzare un feed in tempo reale della fotocamera frontale senza che venga ruotato come uno specchio.Prevenire il ribaltamento della fotocamera frontale

risposta

1

I dati dalla fotocamera anteriore sono come la fotocamera lo vede, guardandoti. Il lato sinistro dell'immagine è il tuo lato destro. Penso che questo sia quello che vuoi già? Quando viene inserito su uno SurfaceView, viene ruotato in modo da agire come dici tu, ma questa è una trasformazione cosmetica separata.

Almeno, questo è il modo in cui ogni dispositivo che ho visto funziona e ho cercato di implementare il supporto della fotocamera frontale in Barcode Scanner/Barcode Scanner+.

+0

questo ha un senso. In effetti sto tentando di renderlo con SurfaceView - come dovrei farlo invece? – daedalus28

+0

Ah. Allora non lo so. Penso che dovresti ricevere i dati dell'immagine e dipingerli manualmente su 'View'. O forse devi invertirlo a mano poiché sarà solo invertire nuovamente. Non ho mai toccato questo aspetto da solo, lascio sempre che lanci ciò che vuole sul 'SurfaceView' mentre ascolto i dati separatamente. –

+0

Anch'io vorrei renderlo non specchiato in SurfaceView. Hai mai trovato una soluzione? –

11

Se si desidera utilizzare una fotocamera frontale per la scansione di codici a barre, è possibile utilizzare TextureView e applicare una matrice di trasformazione. Quando la trama viene aggiornata, puoi leggere i dati dell'immagine e usarli.

Vedi https://github.com/hadders/camera-reverse

particolare da MainActivity.java

mCamera.setDisplayOrientation(90); 
Matrix matrix = new Matrix(); 
matrix.setScale(-1, 1); 
matrix.postTranslate(width, 0); 
mTextureView.setTransform(matrix); 
+0

che il codice da github non funziona. – CENT1PEDE

+0

Ehi @GreenFox Fox. Ho appena clonato il repository e ho eseguito "gradle installDebug" dalla riga di comando e installato sul mio Nexus 5. Questo funziona. Quando lancio l'app e visualizzo un testo "ABC", sullo schermo viene visualizzato "ABC" anziché il normale "back-to-front" CBA invertito come previsto. Qual è il problema esatto? – Steve

+0

ma quando l'ho usato, non funziona nulla .. – CENT1PEDE

Problemi correlati