Android 如何检查设备是否有带反射的摄像头?
我正在修改一个应用程序,以便它能在没有摄像头的KindleFire上工作 我没有任何安卓设备没有摄像头,所以我不知道下面的代码是否会对Kindle返回false。我之所以使用反射,是因为我的应用程序已经发布了与甜甜圈兼容的版本,而甜甜圈没有Android 如何检查设备是否有带反射的摄像头?,android,Android,我正在修改一个应用程序,以便它能在没有摄像头的KindleFire上工作 我没有任何安卓设备没有摄像头,所以我不知道下面的代码是否会对Kindle返回false。我之所以使用反射,是因为我的应用程序已经发布了与甜甜圈兼容的版本,而甜甜圈没有PackageManager.hasSystemFeature() 我假设甜甜圈设备都有摄像头——还没有给我带来麻烦 public static boolean isCameraAvailable(Context context){ PackageMa
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;
}
实际上,如果要确保设备具有摄像头,建议在清单文件中添加此行:
<uses-feature android:name="android.hardware.camera" />
Market将阻止没有摄像头的设备下载您的应用程序。我的应用程序确实使用摄像头。这并不重要,所以如果没有摄像头,我需要隐藏某些功能。否则,我将浪费时间尝试更新Kindle。谢谢。@TenFour04,您还可以考虑创建两个版本的应用程序:有摄像头支持和没有摄像头支持。Android Market支持多个apk,并将自动为用户提供适合其设备的正确版本。谢谢,我知道这是一个选项。但如果我能以某种方式测试我的上述代码,我就不必管理多个APK了。