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

Android 开发中配置 USB 配件模式(Accessory Mode) 配件过滤器的配置

在 Android 开发中配置 USB 配件模式(Accessory Mode) 的配件过滤器(accessory_filter.xml),需要以下步骤:


1. 创建配件过滤器文件

在项目的 res/xml/ 目录下创建 accessory_filter.xml 文件(若无 xml 目录请先创建)。

2. 配置 XML 内容

在文件中声明支持的 USB 配件参数,常用属性包括:

  • manufacturer:配件制造商名称

  • model:配件型号

  • version:固件版本号

示例代码:
<?xml version="1.0" encoding="utf-8"?>
<resources><!-- 匹配特定制造商和型号的配件 --><usb-accessorymanufacturer="Acme Inc"model="Controller 3000"version="1.0" /><!-- 匹配所有型号的配件(仅指定制造商) --><usb-accessorymanufacturer="TechGadgets" /><!-- 匹配任意配件(不指定任何属性) --><usb-accessory />
</resources>

3. 在 AndroidManifest.xml 中注册

在需要响应 USB 配件的 Activity 中声明:

<activity android:name=".USBAccessoryActivity"><intent-filter><action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" /></intent-filter><meta-dataandroid:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"android:resource="@xml/accessory_filter" />
</activity>

4. 添加 USB 权限

在 AndroidManifest.xml 中添加权限:

<uses-permission android:name="android.permission.USB_PERMISSION" />
<uses-feature android:name="android.hardware.usb.accessory" />

5. 在代码中处理 USB 配件

在 Activity 中获取 USB 配件对象:

public class USBAccessoryActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Intent intent = getIntent();if (UsbManager.ACTION_USB_ACCESSORY_ATTACHED.equals(intent.getAction())) {UsbAccessory accessory = intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);// 处理配件通信逻辑}}
}

关键配置说明:

属性作用是否必须
manufacturer匹配配件制造商(字符串)可选
model匹配配件型号(字符串)可选
version匹配固件版本(字符串)可选
无属性匹配所有 USB 配件(谨慎使用)可选

注意事项:

  1. 兼容性:确保设备支持 USB Host/配件模式(Android 3.1+)。

  2. 权限请求:首次连接需动态申请权限(使用 UsbManager.requestPermission())。

  3. 多配件支持:在 XML 中添加多个 <usb-accessory> 节点可匹配多个配件。

  4. 协议要求:配件需实现 Android 配件协议。

完成配置后,当匹配的 USB 配件接入时,系统会提示用户启动你的应用,并传递配件对象进行通信。

相关文章:

  • Map相关知识
  • 循环语句之for
  • 【系统架构设计师-2025上半年真题】综合知识-参考答案及部分详解(回忆版)
  • 数据挖掘是什么?数据挖掘技术有哪些?
  • 2025.06.09【读书笔记】|PromptBio:让生信分析更简单的AI平台
  • 一款用于react-native监听app[AppState]前后台的自定义Hooks开源插件
  • python读取SQLite表个并生成pdf文件
  • 芯科科技Tech Talks技术培训重磅回归:赋能物联网创新,共筑智能互联未来
  • 查找日志文件中​​最后一次出现某个关键词的上下 20 行​​
  • 河北对口计算机高考C#笔记(2026高考适用)---持续更新~~~~
  • [KCTF]CORE CrackMe v2.0
  • C# 表达式和运算符(求值顺序)
  • C# winform教程(二)----checkbox
  • Python----大模型(大模型基础)
  • 拉力测试cuda pytorch 把 4070显卡拉满
  • EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势
  • Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合
  • AI 边缘计算网关推动各行业的数字化转型和智能化升级
  • 十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
  • 【OpenCV】相机标定之利用棋盘格信息标定
  • 重庆网站建设搜外/黄页网站推广app咋做广告
  • 网站排名突然掉没了/注册网址
  • 商务网站建设试题/网络营销的常用工具
  • 临潼区做网站的公司/提高工作效率英语
  • 网站分成几种类型/辅导机构
  • 广州网站建设腾虎/百度百家号登录入口