如何確定設備是否具有S Pen?如何檢查支持的S Pen設備?
請注意,我在Samsung S3上使用SDrawLibrary.isSupportedModel()
它返回true,我們都知道S3沒有S Pen。
任何gaudiness或幫助將不勝感激。
如何確定設備是否具有S Pen?如何檢查支持的S Pen設備?
請注意,我在Samsung S3上使用SDrawLibrary.isSupportedModel()
它返回true,我們都知道S3沒有S Pen。
任何gaudiness或幫助將不勝感激。
您正在使用的方法已從S Pen SDK中刪除。將SDK更新到2.2.5版本,因爲有很多改進。
目前圖書館沒有提供任何方法來檢查設備是否有S Pen。使用Build
類獲取有關設備的信息,準備包含具有S Pen的模型的列表,然後檢查設備是否在列表中。這可能不是您所期望的答案,因爲它需要保持列表最新。
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開始工作。我更新了上面的代碼。
您還可以通過輸入管理檢測S-筆:
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;
}
}
我希望能找到更好的答案,我腦子裏想的這個解決辦法,但正如你所說的**它需要保持清單的更新* *我會將您的解決方案標記爲答案,直到有人讓我更可靠。 – Sammy 2013-02-18 05:07:15
檢查更新的帖子。 – tomrozb 2013-02-18 08:26:57
這是否意味着只支持note和samsung設備?運行spen應用程序的其他設備不會起作用嗎? – 2014-03-24 06:07:03