在 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 配件(謹慎使用) | 可選 |
注意事項:
-
兼容性:確保設備支持 USB Host/配件模式(Android 3.1+)。
-
權限請求:首次連接需動態申請權限(使用?
UsbManager.requestPermission()
)。 -
多配件支持:在 XML 中添加多個?
<usb-accessory>
?節點可匹配多個配件。 -
協議要求:配件需實現?Android 配件協議。
完成配置后,當匹配的 USB 配件接入時,系統會提示用戶啟動你的應用,并傳遞配件對象進行通信。