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

sur*_*196 15 android

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

kco*_*ock 41

我建议的类似于doc_180的答案,但即使对于Froyo也应该能够检测前后摄像头,但如果我没有弄错的话,Froyo从不支持前置摄像头,所以你总会得到一个假的frontCam对Froyo的回应.

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);
Run Code Online (Sandbox Code Playgroud)

编辑:刚刚意识到这是一个非常非常古老的问题.哦,希望它能帮助将来的某个人.

  • 请注意,您可以使用Android 2.3或更高版本编译您的应用,并使其与Android 2.2兼容.请记住,像'PackageManager.FEATURE_CAMERA_FRONT`这样的常量实际上是由编译器硬编码的,所以在Android 2.2或更早版本的运行时它不会失败. (2认同)

unc*_*ons 5

使用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;
}
Run Code Online (Sandbox Code Playgroud)

  • 没有评论权限的用户评论([profile](http://stackoverflow.com/users/1005899/cfg)):`MediaStore.ACTION_IMAGE_CAPTURE`不起作用,你应该使用`android.media.action.IMAGE_CAPTURE`. (2认同)

Sou*_*nta 2

    CameraInfo cameraInfo = new CameraInfo();
    for (int i = 0; i < numberOfCameras; i++) {
        Camera.getCameraInfo(i, cameraInfo);
        if (cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT) {              

        }
    }
Run Code Online (Sandbox Code Playgroud)