当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > Android USB Host与HID 通讯(二)

Android USB Host与HID 通讯(二) 时间:2018-09-20      来源:未知

我们接着上一部分的内容继续朝下看,上次我们只是简单地介绍了一下Android当中USB Host编程的一些基础知识,了解了几个常用的类,其实在Android系统中要想通过USB Host与HID通讯,所做的工作的还有很多。

先看看AndroidManifest.xml文件,对于刚接触好从简单入手,在AndroidManifest.xml中加上intent-filter过滤器,可以先不做请求权限的处理,因为intent-filter方式可以自动请求权限。

1) 添加USB HOST权限

2)添加意图过滤器,并配置自己的资源文件指定USB设备的属性,而资源文件为一个xml文件,如:device_filter.xml

3)对于资源文件device_filter.xml,需要配置设备的product-id 和vendor-id

剩下的就是java代码,大概步骤包括:枚举设备->找到设备的接口->连接设备->分配相应的端点->在IN端点进行读操作,在OUT端点进行写操作。在此可以不做请求权限处理,因为意图过滤器已经帮我们做了,若要进行动态请求权限的可以在此基础上再做扩展。

1)获取USB管理器,若获取失败,return。

mUsbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE); if(mUsbManager == null) {

return;

}

2)枚举Host上所有的HID设备,存入一个列表,若列表不为空,枚举到设备,可以用getVendorId()和getProductId()方法获取到设备的VendorId和ProductId,可继续找设备的UsbInterface;若列表为空,未枚举到设备。

HashMap deviceList = mUsbManager.getDeviceList();

if (!deviceList.isEmpty()) {

for (UsbDevice device : deviceList.values()) {

if(device.getVendorId() == VendorID && device.getProductId()==ProductID) {

mUsbDevice = device;

// 找到Device接口并分配相应端点

findIntfAndEpt();

} else {

oast.makeText(context, "Not find VID and PID",Toast.LENGTH_SHORT).show();

}

}

} else {

new AlertDialog.Builder(context).setTitle("未枚举到设备!")

.setMessage("请先连接设备,再重启程序。。")

.setCancelable(false)

.setNeutralButton("确定", new DialogInterface.OnClickListener() {

public voidonClick(DialogInterface dialog, int which) {

//finish();

}

}).show();

}

到此为止,就可以发现你的HID外设,后面的我们下次再说,主要流程还是:枚举设备->找到设备的接口->连接设备->分配相应的端点->在IN端点进行读操作,在OUT端点进行写操作。

上一篇:关于linux下的xinetd服务

下一篇:ViewPager介绍和使用说明

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部