识别设备是不是为 Kindle

Posted

技术标签:

【中文标题】识别设备是不是为 Kindle【英文标题】:Identify if device is Kindle识别设备是否为 Kindle 【发布时间】:2013-01-25 00:29:02 【问题描述】:

我想在亚马逊的 AppStore 上提供一个 android 应用程序。我的应用有一些基于位置的功能和相机功能,如果用户的设备是 Kindle,我需要禁用这些功能。有没有办法以编程方式检测用户的设备是否是 Kindle?我知道我可以为 Kindle 和非 Kindle 构建不同的版本,但我想我首先要问是否有办法在代码中检测到这一点。

【问题讨论】:

您可能问错了问题。 Kindle 有什么问题? 例如,kindle 没有摄像头。我的应用程序的功能之一是访问相机。我正在探索是否可以根据检查设备是否为 Kindle 来删除相机菜单项。 @Simon 你是对的——这是个错误的问题。 “如何检测设备功能”会更好。谢谢。 那么错误的问题:) “如果设备没有某些硬件功能,我如何禁用我的应用程序中的功能”即使您确实检测到了 Kindle,那么其他 500 台没有摄像头的设备呢?跨度> 【参考方案1】:

要检查设备是否具有特定功能,您 PackageManager.hasSystemFeature(String name) 对您来说应该足够了。

要检查位置和摄像头,您可以使用 FEATURE_LOCATIONFEATURE_CAMERA 作为 hasSystemFeature 的参数

如果您仍需要了解设备的硬件,可以查看 android.os.Build.MANUFACTURER android.os.Build.BRAND android.os.Build.BOARD android.os.Build.DEVICE

【讨论】:

谢谢,完美!非常感谢它,如此快速而详细的答案。【参考方案2】:

如果您想检测 Kindle,请使用Build.MANUFACTURER 查找制造商(亚马逊),使用Build.MODEL 查找型号。在 Kindle 的情况下,model 的值会有所不同,可以是 KFTT、KFOT、Kindle Fire 等。See this for model nos.

【讨论】:

谢谢,真的很有帮助。+1。【参考方案3】:

您可以使用此方法识别 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");
 

【讨论】:

@Kate 我想你错过了我的代码的最后一部分|| Build.MODEL.startsWith("KF") ;) @Kate 我实际上有一个旧的 Kindle Fire,我可以确认 Build.Model == "Kindle Fire" 是可能的,而 || 部分是我的代码的后备。【参考方案4】:

我知道这篇文章很旧,但处理这个问题的方法是错误的。如果您对 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; 
     
 

这比检测设备是否是kindle要好得多,否则为kindle做另一个构建。

【讨论】:

以上是关于识别设备是不是为 Kindle的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIActivityViewController 中识别和排除第 3 方 ActivityType(例如“发送到 Kindle”、“Chrome”)?

如何连接到 Kindle Fire 进行开发?

VMware上的macOS无法识别iOS设备

如果华为设备不支持谷歌服务,是不是可以从用户代理中识别?

找不到连接的设备。重新连接所有连接的设备,验证您的系统是不是能够识别它们,然后再次运行此命令

Android 设备被“adb 设备”识别但不是通过 Eclipse?