2013-03-13 17 views
2

我想通過USB連接一個Android手機到一個配件(在這種情況下是MacBook Pro)並使用getDeviceList()來驗證連接是否被識別並使用下面的代碼通過的toString打印UsbDevice對象的描述到屏幕():android.hardware.usb UsbManager類公共方法getDeviceList和getAccessoryList返回null

//as host 
HashMap<String, UsbDevice> deviceList = manager.getDeviceList(); 
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator(); 
String s = ""; 
while(deviceIterator.hasNext()){ 
    UsbDevice device = deviceIterator.next(); 
    manager.requestPermission(device, mPermissionIntent); 
    Log.d("List Devices", device.toString()); 

    s += device.toString(); 
} 

的代碼示例從Android開發者網站就幾乎直接,但多個手機似乎並沒有被承認任何外設。同樣,我已經嘗試將Android手機作爲配件,但獲得類似的結果。任何幫助表示讚賞。

回答

2

關於附件模式,從Android Developer's Guide

USB附件模式允許用戶連接專門爲Android裝置設計USB主機的硬件。附件必須遵守Android Accessory開發套件文檔中列出的Android附件協議。

因此,只有實現了AOA(Android Open Accessory)協議的設備纔會在手機上顯示爲UsbAccessory

至於主機模式,手機本身必須允許它,否則它不會真的工作。誠然,在大多數Android手機/平板電腦上,開箱即用的主機模式全面支持似乎非常罕見。 This answer演示如何讓手機/平板電腦完全支持主機模式(如果尚未啓用),但請注意,這需要root用戶訪問。