2011-05-23 11 views
19

J'ai besoin d'une fonction pour vérifier si la caméra frontale existe, et si oui, afficher l'aperçu. J'ai trouvé quelques liens, mais chacun d'eux parle d'un dispositif spécifique:Appareil photo frontal Android

Quelqu'un peut-il fournir un code générique pour cette ? Ou peut-être un code combiné qui fonctionnera avec tous les appareils?

Répondre

20

pour les API> = 9, vous pouvez utiliser la classe Camera: http://developer.android.com/reference/android/hardware/Camera.html pour voir si elle a plus d'une caméra, et interroger le CameraInfo

  • getNumberOfCameras

  • getCameraInfo:

http://developer.android.com/reference/android/hardware/Camera.CameraInfo.html

Constantes

int CAMERA_FACING_BACK Le parement de l'appareil est opposé à celui de l'écran.

int CAMERA_FACING_FRONT La face de la caméra est la même que celle de l'écran.


Pour les API> = 5, une option est de lire public List<Camera.Size> getSupportedPictureSizes(). Les caméras frontales auront généralement une résolution max beaucoup plus faible que les caméras arrière.

http://developer.android.com/reference/android/hardware/Camera.Parameters.html

2

dans 2.3 c'est possible.

Mais avant cela, Android sdk n'avait pas d'API générique pour trouver et utiliser la deuxième caméra frontale.

11

Cela a été posté par kcoppock, mais je me suis dit someome croiserez ce message et quelque temps. Je l'ai testé personnellement, j'ai beaucoup travaillé sur Froyo.

PackageManager pm = getPackageManager(); 
boolean frontCam, rearCam; 

//It would be safer to use the constant PackageManager.FEATURE_CAMERA_FRONT 
//but since it is not defined for Android 2.2, I substituted the literal value 
frontCam = pm.hasSystemFeature("android.hardware.camera.front"); 

rearCam = pm.hasSystemFeature(PackageManager.FEATURE_CAMERA); 
+0

Belle pointe. Vous pouvez également utiliser une constante pour la caméra frontale au lieu de coder en dur la valeur. C'est PackageManager.FEATURE_CAMERA_FRONT – androidevil