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 复制代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- 匹配特定制造商和型号的配件 -->
    <usb-accessory
        manufacturer="Acme Inc"
        model="Controller 3000"
        version="1.0" />

    <!-- 匹配所有型号的配件(仅指定制造商) -->
    <usb-accessory
        manufacturer="TechGadgets" />

    <!-- 匹配任意配件(不指定任何属性) -->
    <usb-accessory />
</resources>

3. 在 AndroidManifest.xml 中注册

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

XML 复制代码
<activity android:name=".USBAccessoryActivity">
    <intent-filter>
        <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
    </intent-filter>
    <meta-data
        android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
        android:resource="@xml/accessory_filter" />
</activity>

4. 添加 USB 权限

AndroidManifest.xml 中添加权限:

XML 复制代码
<uses-permission android:name="android.permission.USB_PERMISSION" />
<uses-feature android:name="android.hardware.usb.accessory" />

5. 在代码中处理 USB 配件

在 Activity 中获取 USB 配件对象:

java 复制代码
public class USBAccessoryActivity extends Activity {
    @Override
    protected 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 配件接入时,系统会提示用户启动你的应用,并传递配件对象进行通信。

相关推荐
美狐美颜SDK开放平台24 分钟前
短视频/直播双场景美颜SDK开发方案:接入、功能、架构详解
android·ios·美颜sdk·第三方美颜sdk·视频美颜sdk
LiLiYuan.38 分钟前
【Java 6种线程状态】
java·开发语言
untE EADO38 分钟前
在 MySQL 中使用 `REPLACE` 函数
android·数据库·mysql
iblade1 小时前
Android CLI And Skills 3x faster
android
itzixiao1 小时前
L1-047 装睡 (5分)[java][python]
java·开发语言·python
用户298698530141 小时前
不用无头浏览器,Java 如何将 HTML 转成图片?
java·后端
Chengbei112 小时前
红队专属Bing Dork自动化工具,敏感信息侦察效率拉满、自动生成可视化信息泄露审计报告
java·人工智能·安全·web安全·网络安全·自动化·系统安全
敖正炀2 小时前
集合-Set深入解析
java
下次再写2 小时前
Java互联网大厂面试技术问答实战:涵盖Java SE、Spring Boot、微服务及多场景应用
java·数据库·缓存·面试·springboot·microservices·技术问答
公众号-老炮说Java2 小时前
IDEA 2026.1 + Claude Code = 降维打击
java·ide·intellij-idea