如何检测没有相机的Android设备可用? 如果设备有前置摄像头如何使用它?

如何检测没有相机的Android设备可用? 如果设备有前置摄像头如何使用它?

Solutions Collecting From Web of "如何检测没有相机的Android设备可用? 如果设备有前置摄像头如何使用它?"

我build议的是类似于doc_180的答案,但应该能够检测到正面和背面摄像头,即使是Froyo,但如果我没有错,Froyo从来不支持前置摄像头,所以你会永远得到一个错误在Froyo上frontCam反应。

 PackageManager pm = getPackageManager(); boolean frontCam, rearCam; //Must have a targetSdk >= 9 defined in the AndroidManifest frontCam = pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT); rearCam = pm.hasSystemFeature(PackageManager.FEATURE_CAMERA); 

编辑:刚才意识到这是一个非常非常古老的问题。 噢,希望未来能帮助别人。

使用packagemanager检查设备是否支持Intent。 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE );

 public static boolean isIntentAvailable(Context context, String action) { final PackageManager packageManager = context.getPackageManager(); final Intent intent = new Intent(action); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; } 
  CameraInfo cameraInfo = new CameraInfo(); for (int i = 0; i < numberOfCameras; i++) { Camera.getCameraInfo(i, cameraInfo); if (cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT) { } } 

我发现检查是否存在(背面)相机最快的方法是检查Camera.open()是否返回null。

 Camera cam = Camera.open(); if(null == cam){ //no camera exists } 

这也应该可用于早期版本的Android。

你可以使用这个静态方法,如果你只是想知道有多less个摄像头:Camera.getNumberOfCameras(); (api 9)

 /** Check if this device has a camera */ private boolean checkCameraHardware(Context context) { if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){ // this device has a camera return true; } else { // no camera on this device return false; } } 

试试这个,在Moto RAZR HD中为我工作:

 public static Camera open (int cameraId) 

用法示例:

 mCamera = Camera.open(1);