我想在亚马逊的AppStore上提供Android应用程序。我的应用程序有一些基于位置的功能和相机功能,如果用户的设备是Kindle,我需要禁用它。有没有办法以编程方式检测用户的设备是否是Kindle?我知道我可以为Kindle和非Kindle构建不同的版本,但我想我首先会问是否有办法在代码中检测到这一点。
答案 0 :(得分:13)
要检查设备是否具有某项功能,您PackageManager.hasSystemFeature(String name)
就足够了。
要检查位置和相机,您可以使用FEATURE_LOCATION
和FEATURE_CAMERA
作为hasSystemFeature
的参数
如果您仍需要了解设备的硬件,可以查看
android.os.Build.MANUFACTURER
android.os.Build.BRAND
android.os.Build.BOARD
android.os.Build.DEVICE
答案 1 :(得分:10)
如果您想检测Kindle,请使用Build.MANUFACTURER检查制造商(亚马逊)并使用Build.MODEL进行建模。在Kindle的情况下,模型的价值会有所不同,可以是KFTT,KFOT,Kindle Fire等。See this for model nos.
答案 2 :(得分:5)
您可以使用此方法识别Kindle设备
public static boolean isKindle(){
final String AMAZON = "Amazon";
final String KINDLE_FIRE = "Kindle Fire";
return (Build.MANUFACTURER.equals(AMAZON) && Build.MODEL.equals(KINDLE_FIRE) ) || Build.MODEL.startsWith("KF");
}
答案 3 :(得分:1)
我知道这篇文章很老,但这种方法是错误的。如果您对Kindles的关注与硬件相关,即Kindles没有相机或相机支持,那么您需要检查相机支持而不是设备类型。如果其他设备不提供相机支持怎么办?不是建议的答案,试试这个
public static boolean isCameraAvailable(Context context) {
PackageManager packageManager=context.getPackageManager();
if (packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) {
// this device has a camera
return true;
} else {
// no camera on this device
return false;
}
}
这比检测设备是否是一个点燃要好得多,否则做另一个特定于点燃的构建。