Anteprima della camera Android su SurfaceTexture

Questo è il mio scenario: cerco di scattare una foto dalla camera frontale quando qualcuno mette nella password la password errata nella schermata di block. Fondamentalmente, devo essere in grado di scattare una foto fuori dalla camma anteriore senza un'anteprima.

Dopo molto googling, ho capito che il modo per farlo è opengl e SurfaceTexture. L'anteprima della telecamera è diretta su una superficie di superficie e successivamente estrae l'image da questa struttura in qualche modo. Ho trovato questo dalle seguenti risorse:

  • Accertare l'esistenza della function Google Streetview
  • Errore di Android 3.0 Studio. Migrazione delle configurazioni di dipendenza per i moduli locali
  • Come evitare un errore di memory durante l'utilizzo di bitmap in Android
  • Fotocamera di qualsiasi emulatore che non funziona
  • Il jar di output è vuoto. Hai specificato le opzioni '-keep' corretta?
  • WebView non carica la pagina web
    1. https://stackoverflow.com/a/10776349/902572 (suggerimento 1)
    2. http://www.freelancer.com/projects/Android-opengl/Android-OpenGL-App-Access-Raw.html , che è lo stesso di (1)
    3. https://groups.google.com/forum/#!topic/android-developers/U5RXFGpAHPE (vedi post di Romain il 22/12/11)

    Capisco cosa deve essere fatto, ma non sono riuscito a metterle correttamente nel codice, perché sono nuovo a opengl.

  • Comunicare tra un frammento e un'attività - migliori pratiche
  • Come posso identificare che l'ultimo elemento di RecyclerView è visibile sullo schermo?
  • ExpandableListView - Come impostare il divisore solo tra gli elementi del genitore
  • Applicazione lanciata da Action Main (da AAR) invece di NDEF scoperta
  • Problemi di impostazione Ciao, app View della vigilanza in Android Studio
  • Arresto di implementazione Android Visualizer
  • One Solution collect form web for “Anteprima della camera Android su SurfaceTexture”

    L'esempio CameraToMpegTest ha gran parte di quello che ti serve, anche se va ben oltre il tuo caso di utilizzo (sta registrando una serie di frame di anteprima come un video).

    Il resto di quello che ti serve è in ExtractMpegFramesTest . In particolare, si desidera rendere a un pbuffer offscreen (piuttosto che una superficie di ingresso encoder MediaCodec ) e è ansible salvare il contenuto di pbuffer come file PNG usando saveFrame() .

    Quanto sopra è scritto come piccolo "test senza testa" casi di prova. È ansible vedere codice simile in un'applicazione completa in Grafika .

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.