做淘宝的导购网站,wordpress主題移动端,网站制作的核心是什么,通讯录管理网站建设理论
摘自#xff1a;USB 主机和配件概览 | Connectivity | Android Developers (google.cn)
Android 通过 USB 配件和 USB 主机两种模式支持各种 USB 外围设备和 Android USB 配件#xff08;实现 Android 配件协议的硬件#xff09;。
在 USB 主机模式下#xff0…理论
摘自USB 主机和配件概览 | Connectivity | Android Developers (google.cn)
Android 通过 USB 配件和 USB 主机两种模式支持各种 USB 外围设备和 Android USB 配件实现 Android 配件协议的硬件。
在 USB 主机模式下Android 设备充当主机。设备示例包括数码相机、键盘、鼠标和游戏控制器。当 Android 设备处于主机模式时它会充当 USB 主机并为总线供电。 Android 3.1API 级别 12或更高版本的平台直接支持 USB 配件和主机模式。USB 配件模式还作为插件库向后移植到 Android 2.3.4API 级别 10以支持更广泛的设备。设备制造商可以选择是否在设备的系统映像中包含插件库。
注意对 USB 主机和配件模式的支持最终取决于设备的硬件而与平台级别无关。您可以通过 uses-feature 元素过滤出支持 USB 主机和配件的设备。如需了解详情请参阅 USB 配件和主机文档。
主机模式
官网使用说明
USB 主机概览 | Connectivity | Android Developers (google.cn)
其实官网写的很清楚了但是有些东西还是要实践后才能真正清楚。
AndroidManifest.xml
添加特征
uses-feature android:nameandroid.hardware.usb.host android:requiredtrue /
如果需要程序在USB 插入或拔出做些处理还需要配置一下
intent-filteraction android:nameandroid.hardware.usb.action.USB_DEVICE_ATTACHED /
/intent-filtermeta-data android:nameandroid.hardware.usb.action.USB_DEVICE_ATTACHEDandroid:resourcexml/device_filter /
其中res/xml/device_filter.xml如下供应商id值和产品id值都是厂家提供的
?xml version1.0 encodingutf-8?
resourcesusb-device vendor-id1061 product-id33113/
/resources
整合起来 AndroidManifest.xml 为
manifest ...uses-feature android:nameandroid.hardware.usb.host /uses-sdk android:minSdkVersion12 /...applicationactivity ......intent-filteraction android:nameandroid.hardware.usb.action.USB_DEVICE_ATTACHED //intent-filtermeta-data android:nameandroid.hardware.usb.action.USB_DEVICE_ATTACHEDandroid:resourcexml/device_filter //activity/application
/manifest 代码
查找设备
通过枚举的方式查找设备
for (UsbDevice device : mUsbManager.getDeviceList().values())
{if( device.getVendorId() 1061 device.getProductId() 33113 ) {}
}
动态申请USB权限 如果没有USB权限需要动态请求
private static final String ACTION_USB_PERMISSION com.example.test.USB_PERMISSION;IntentFilter filter new IntentFilter();
filter.addAction(ACTION_USB_PERMISSION);
registerReceiver(mUsbReceiver, filter);//权限结果处理
private BroadcastReceiver mUsbReceiver new BroadcastReceiver() {public void onReceive(Context context, Intent intent) {String action intent.getAction();if (ACTION_USB_PERMISSION.equals(action)) {synchronized (this) {UsbDevice device (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);if(intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED,false)){//用户授予权限...}else{//用户拒绝了...}}} }
};//请求权限
if(!mUsbManager.hasPermission(device))
{Intent intent new Intent(ACTION_USB_PERMISSION);PendingIntent mPermissionIntent PendingIntent.getBroadcast(this, 0, intent, 0);mUsbManager.requestPermission(device, mPermissionIntent);
} 接收USB插、拔的通知
如果需要接收USB插、拔的通知在清单配置完成后添加监听。
IntentFilter filter new IntentFilter();
...
//添加插拔的监听
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
registerReceiver(mUsbReceiver, filter);//处理
private BroadcastReceiver mUsbReceiver new BroadcastReceiver() {public void onReceive(Context context, Intent intent) {String action intent.getAction();if (ACTION_USB_PERMISSION.equals(action)) {...}else if(UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)){//插入...}else if(UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)){//拔出...} }
};