2011-05-23 23 views
19

Necesito UNA función para comprobar si la cámara frontal existe, y si es así - mostrar vista previa. me encontré con un par de enlaces, pero cada uno de ellos hablar de un dispositivo específico:Android cámara frontal

¿Puede cualquier persona proporcionar un código genérico de este ? ¿O tal vez un código combinado que funcionará con todos los dispositivos?

Respuesta

20

para las API> = 9, puede utilizar la clase Camera: http://developer.android.com/reference/android/hardware/Camera.html para ver si tiene más de una cámara, y consultar el CameraInfo

  • getNumberOfCameras

  • getCameraInfo:

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

Constantes

int CAMERA_FACING_BACK El revestimiento de la cámara es opuesta a la de la pantalla.

int CAMERA_FACING_FRONT El frente de la cámara es el mismo que el de la pantalla.


para las API> = 5, una opción es leer public List<Camera.Size> getSupportedPictureSizes(). Las cámaras frontales generalmente tendrán una resolución máxima mucho más baja que las cámaras traseras.

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

11

Este fue publicada por kcoppock, pero pensé someome llegará a través de este mensaje, así en algún momento. Lo probé personalmente, funcionó muy bien en 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

Nice tip. También puede usar una constante para la cámara frontal en lugar del valor del código. Eso es PackageManager.FEATURE_CAMERA_FRONT – androidevil

Cuestiones relacionadas