如何检查设备是否有带反射的相机?

时间:2011-11-05 05:35:21

标签: android

我正在调整应用程序,以便它可以在没有摄像头的KindleFire上运行。

我没有任何缺少相机的Android设备,所以我不知道以下代码实际上是否{J}的return false代码。我正在使用反射,因为我的应用已经与Donut兼容性发布,而Donut没有PackageManager.hasSystemFeature()

我假设甜甜圈设备都有摄像头 - 还没有给我带来麻烦。

public static boolean isCameraAvailable(Context context){
    PackageManager pm = context.getPackageManager();
    return tryHasSystemFeature(pm,"android.hardware.camera");
}

private static Method packageManager_hasSystemFeature;

static {
    initCompatibility();
};

private static void initCompatibility() {
    try {
        packageManager_hasSystemFeature = PackageManager.class.getMethod(
                "hasSystemFeature", new Class[] { String.class } );
    } catch (NoSuchMethodException nsme) {
        //leave the Method null
    }
}

static private boolean tryHasSystemFeature(PackageManager pm,String feature){
    if (packageManager_hasSystemFeature != null) {
        try {
            final Boolean hasIt = (Boolean) packageManager_hasSystemFeature.invoke(pm,feature);
            return hasIt.booleanValue();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        }
    }
    return true;
}

1 个答案:

答案 0 :(得分:1)

实际上,如果你想确定设备有一个摄像头,建议在你的清单文件中添加这一行:

<uses-feature android:name="android.hardware.camera" />

市场会阻止没有相机的设备下载您的应用程序。