跟附件一起工作
當使用者把USB附件串連到Android裝置時,Android系統能夠判斷你的應用程式是否對接入的附件感興趣。如果感興趣,你能夠跟期望的附件建立通訊。以下是你的應用程式要做的事情:
1. 通過使用過濾附件裝置接入事件的Intent過濾器或列舉已經接入的附件裝置來發現對應的附件裝置;
2. 如果不是已知的附件裝置,就要詢問使用者是否允許跟該附件裝置通訊;
3. 通過讀寫對應介面端點上的資料來跟附件裝置通訊。
發現附件裝置
你的應用程式既可以通過使用者接入附件裝置時的Intent通知,也可以通過列舉已經接入的附件裝置來發現你想要的附件裝置。如果你想要你的應用能夠自動檢測到期望的附件裝置,那麼使用Intent過濾器是有用的。如果你想要擷取所有已串連的附件裝置列表,或者你的應用程式並不過濾特定的Intent,那麼使用列舉的方法是有用的。
使用Intent過濾器
你可以指定一個android.hardware.usb.action.USB_ACCESSORY_ATTACHED類型的Intent過濾器,以便你的應用程式能夠發現特殊的USB附件裝置。跟這個Intent過濾器一起,你還需要指定一個包含USB附件裝置屬性的資源檔,這些屬性包括:製造商、模式、版本。
下例顯示了如何聲明一個Intent過濾器:
<activity ...>
...
<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>
下例是對應的資源檔的聲明:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-accessory manufacturer="Google, Inc." model="DemoKit" version="1.0" />
</resources>
在你的Activity中,你能夠從Intent對象中獲得代表接入的附件裝置的UsbAccessory對象.
使用add-on類庫的情況:
UsbAccessory accessory =UsbManager.getAccessory(intent);
使用平台API的情況:
UsbAccessory accessory =(UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
列舉附件裝置
在應用程式運行時,你能夠讓你的應用程式列舉出已經識別出的所有附件裝置。
使用getAccessoryList()方法來擷取所有已串連的USB附件裝置:
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
UsbAccessory[] accessoryList = manager.getAcccessoryList();
注意:當前,一次只支援串連一個附件裝置,但是在未來,該API被設計成要支援多個附件裝置。