Tutti i metodi delle risposte precedenti sono deprecati da Google (presumibilmente a causa di problemi come questo), poiché l'API 21 è necessario use la Camera 2 API:
Questa classe è stata dichiarata obsoleta in livello API 21. Si consiglia di utilizzare la nuova API android.hardware.camera2 per nuove applicazioni.
In the newer API avete quasi completo potere sopra la fotocamera del dispositivo Android e la documentazione in modo esplicito consiglio per
String[] getCameraIdList()
e quindi utilizzare CameraId ottenuto per aprire la fotocamera:
void openCamera(String cameraId, CameraDevice.StateCallback callback, Handler handler)
Il 99% delle telecamere frontali ha id = "1" e la telecamera posteriore id = "0" secondo questa:
telecamere non removibile uso interi iniziando a 0 per i loro identificatori , mentre le telecamere rimovibili hanno un identificatore unico per ciascun singolo dispositivo, anche se sono dello stesso modello.
Tuttavia, questo significa che se la situazione dispositivo è rara come tablet -Camera solo 1-frontale è necessario contare quanti incorporati telecamere che hai, e l'ordine della telecamera per la sua importanza (" 0"). Quindi CAMERA_FACING_FRONT == 1 CAMERA_FACING_BACK == 0, il che implica che la fotocamera posteriore è più importante piuttosto che frontale.
Non conosco un metodo uniforme per identificare la fotocamera frontale su tutti i dispositivi Android. Detto semplicemente, il sistema operativo Android all'interno del dispositivo non è in grado di scoprire quale telecamera è esattamente dove, per qualche motivo: forse l'unico ID hardcoded della fotocamera è un numero intero che rappresenta la sua importanza o forse su alcuni dispositivi qualunque sarà il tuo turno. " indietro".
Documentazione: https://developer.android.com/reference/android/hardware/camera2/package-summary.html
esempi espliciti: https://github.com/googlesamples/android-Camera2Basic
per l'API vecchio (non è consigliabile, perché non funziona su telefoni moderni versione più recente di Android e il trasferimento è un vero rompicapo). Basta usare lo stesso Integer CameraID (1) per aprire fotocamera frontale come in this answer:
cam = Camera.open(1);
Se vi fidate OpenCV a fare la parte della macchina fotografica:
All'interno
<org.opencv.android.JavaCameraView
../>
utilizzare quanto segue per la fotocamera frontale:
opencv:camera_id="1"
possibile duplicato di [Come usare fotocamera frontale su Samsung Galaxy S] (http://stackoverflow.com/questions/4241292/how-to-use-front-facing-camera-on-samsung-galaxy-s) – voyager