我正在调整应用程序,以便它可以在没有摄像头的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;
}
答案 0 :(得分:1)
实际上,如果你想确定设备有一个摄像头,建议在你的清单文件中添加这一行:
<uses-feature android:name="android.hardware.camera" />
市场会阻止没有相机的设备下载您的应用程序。