首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查支持的S Pen设备?

如何检查支持的S Pen设备?
EN

Stack Overflow用户
提问于 2013-02-17 21:32:51
回答 2查看 3.1K关注 0票数 1

如何确定设备是否具有S笔?

请注意,我在三星S3上使用SDrawLibrary.isSupportedModel(),它返回true,我们都知道S3没有S笔。

任何华而不实的东西或帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-17 23:10:43

您正在使用的方法已从S Pen SDK中删除。更新SDK到2.2.5版本,因为有很多改进。

目前,该库没有提供任何方法来检查设备是否有S Pen。使用Build类获取有关设备的信息,准备一个包含具有S笔的型号的列表,然后检查该设备是否在列表中。这可能不是您期望的答案,因为它需要使列表保持最新。

代码语言:javascript
复制
private static final String SAMSUNG = "SAMSUNG";
private static final String NOTE = "GT-N";
private static final String SPEN_FEATURE = "com.sec.feature.spen_usp";
private final List<String> mSPenDevices;

public boolean isSPenSupported() {
    FeatureInfo[] infos = getPackageManager().getSystemAvailableFeatures();
    for (FeatureInfo info : infos) {
        if (SPEN_FEATURE.equalsIgnoreCase(info.name)) {
            return true;
        }
    }

    if (Build.MODEL.toUpperCase(Locale.ENGLISH).startsWith(NOTE)) {
        return true;
    }

    if (SAMSUNG.equalsIgnoreCase(Build.MANUFACTURER)) {
        for (String model : mSPenDevices) {
            if (model.equalsIgnoreCase(Build.MODEL)) {
                return true;
            }
        }
    }

    return false;
}

编辑:因为Galaxy Note系列中的大多数型号都是以"GT-N“开头的,所以我在代码中添加了检查。我知道在美国的设备有其他的名称,所以这仍然不是最好的解决方案。

另一种可能的方法是检查设备是否具有com.sec.feature.spen_usp功能,但据我所知,它从JB开始工作。我更新了上面的代码。

票数 1
EN

Stack Overflow用户

发布于 2015-04-08 08:18:53

您还可以通过InputManager检测S-Pen:

代码语言:javascript
复制
    boolean sPen = false;
    if(Build.VERSION.SDK_INT > 15) {
        InputManager inptmgr = (InputManager)getSystemService(INPUT_SERVICE);
        int[] inputs = inptmgr.getInputDeviceIds();
        for(int i = 0;i<inputs.length;i++) {
            if(inptmgr.getInputDevice(inputs[i]).getName().toLowerCase().contains("pen")) sPen = true;
        }
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14921620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档