当前位置: 首页 > wzjs >正文

手机做简单的网站百度输入法免费下载

手机做简单的网站,百度输入法免费下载,哈尔滨网络推广优化,wordpress外链产品在 Android 上枚举 USB 设备除了使用 UsbManager.getDeviceList() 方法外,还有以下几种常见的方式: 1. 使用 USB 设备过滤器(XML 配置) 通过在 AndroidManifest.xml 中配置 USB 设备过滤器,可以让系统自动检测并通知…

在 Android 上枚举 USB 设备除了使用 UsbManager.getDeviceList() 方法外,还有以下几种常见的方式:

1. 使用 USB 设备过滤器(XML 配置)

通过在 AndroidManifest.xml 中配置 USB 设备过滤器,可以让系统自动检测并通知应用匹配的 USB 设备。

步骤:

  1. 创建 USB 设备过滤器 XML 文件(例如 res/xml/usb_device_filter.xml):
  1. <?xml version="1.0" encoding="utf-8"?>
    <resources><usb-device vendor-id="1234" product-id="5678" /> <!-- 指定具体 VID/PID --><!-- 或使用通配符匹配所有设备 --><!-- <usb-device /> -->
    </resources>
    
  2. 在 AndroidManifest.xml 中声明过滤器
  1. <activity android:name=".UsbDeviceActivity"><intent-filter><action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /></intent-filter><meta-dataandroid:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"android:resource="@xml/usb_device_filter" />
    </activity>
    
  2. 在 Activity 中处理 USB 设备连接
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Intent intent = getIntent();String action = intent.getAction();if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);if (device != null) {// 处理连接的 USB 设备}}
}

2. 使用广播接收器监听 USB 设备插拔事件

通过注册广播接收器,可以实时监听 USB 设备的插入和拔出事件。

示例代码:

// 注册广播接收器
private final BroadcastReceiver usbReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);if (device != null) {// 处理新连接的 USB 设备}} else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);if (device != null) {// 处理断开连接的 USB 设备}}}
};// 注册广播接收器
IntentFilter filter = new IntentFilter();
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
registerReceiver(usbReceiver, filter);// 记得在 Activity 销毁时取消注册
@Override
protected void onDestroy() {super.onDestroy();unregisterReceiver(usbReceiver);
}

3. 使用 Android USB Host API(API 级别 12+)

通过 USB Host API,可以主动枚举和管理连接的 USB 设备。

示例代码:

UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();// 遍历设备列表
for (UsbDevice device : deviceList.values()) {Log.d(TAG, "Device: " + device.getProductId() + ", VID: " + device.getVendorId());// 请求设备权限PendingIntent permissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), PendingIntent.FLAG_IMMUTABLE);usbManager.requestPermission(device, permissionIntent);
}

4. 使用 USB 设备类过滤

可以根据设备类(如 HID、CDC、MIDI 等)来过滤和枚举特定类型的 USB 设备。

示例代码:

for (UsbDevice device : deviceList.values()) {// 获取设备类int deviceClass = device.getDeviceClass();// 根据设备类过滤(例如,查找 HID 设备)if (deviceClass == UsbConstants.USB_CLASS_HID) {// 处理 HID 设备}
}

5. 使用 USB 设备接口过滤

通过检查设备的接口(Interface)和端点(Endpoint),可以进一步筛选出符合条件的 USB 设备。

示例代码:

for (UsbDevice device : deviceList.values()) {// 遍历设备的所有接口for (int i = 0; i < device.getInterfaceCount(); i++) {UsbInterface usbInterface = device.getInterface(i);// 根据接口类过滤(例如,查找串口设备)if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_CDC_DATA) {// 处理 CDC 数据接口}}
}

6. 使用 USB 设备权限管理

在访问 USB 设备前,需要获取用户权限:

private static final String ACTION_USB_PERMISSION = "com.example.USB_PERMISSION";// 请求权限
PendingIntent permissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), PendingIntent.FLAG_IMMUTABLE);
usbManager.requestPermission(device, permissionIntent);// 处理权限回调
private final BroadcastReceiver permissionReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (ACTION_USB_PERMISSION.equals(action)) {synchronized (this) {UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {if (device != null) {// 权限已授予,可以访问设备}} else {Log.e(TAG, "USB 权限被拒绝");}}}}
};

总结

以上方法各有适用场景:

  • XML 过滤器:适合静态匹配特定 VID/PID 的设备。
  • 广播接收器:适合实时监听设备插拔事件。
  • USB Host API:适合主动枚举和管理设备。
  • 设备类 / 接口过滤:适合筛选特定类型的 USB 设备。

实际开发中,通常需要结合多种方法来实现完整的 USB 设备管理功能。

http://www.dtcms.com/wzjs/539187.html

相关文章:

  • 网页设计网站模板素材建设网站书籍pdf下载
  • 怎样创造网站做网站要几天
  • 我做网站wordpress python采集器
  • 怎样建设网站网站一站式做网站平台
  • 青岛网站建设维护物流官方网站建设方案
  • 白品网站建设字母logo设计生成器
  • 茶具网站模板餐厅网站开发背景
  • 什么是seo站内优化阿里巴巴客户管理系统
  • 营销型网站建设的特色wordpress密码保护
  • dede电影网站模版微信文章 图片 wordpress
  • 旅游网站建设成本核算公司部门
  • 普陀酒店网站建设仿西部数码网站
  • 天津网站建设制作品牌公司先网站开发后软件开发
  • 建网站做站长怎么赚钱电脑做app的步骤如下
  • 1元购类似网站架设药多少钱知乎营销推广
  • 手机网页设计网站建设临沂天元建设集团
  • 万网买网站百度极速版
  • 民勤县建设局网站知道源代码如何做网站
  • 长春专业企业网站建设工作室来宾网站建设公司
  • 做网站送邮箱互联网彩票网站开发
  • 外贸如何推广公司网站咨询网站源码
  • 可以打开所有网站的浏览器好的做网站的
  • 公司网站开发费用计入哪个科目网站外链优化方法
  • 铁路建设单位网站广东建科建设监理有限公司网站
  • 关于做网站的外语文献书名做音乐相册的网站
  • 首次做淘宝客网站要安装程序吗佛山住建
  • 做外包的网站wordpress首页显示内容设置
  • 潍坊做外贸网站wordpress团购插件
  • 怎么将网站设置为首页广州百度推广代理公司
  • 手册设计网站网站建设费用皆选网络