2015-05-20 52 views
6

有沒有辦法以的編程方式確定當前的USB工作模式?是否有可能以編程方式識別USB通信模式?

我的意思是,一些功能,如果設備在HostDeviceAccessory模式將返回。

+0

你的意思是設備的USB工作模式? – Aify

+0

@Aify,是的。我有一種情況,Android可以改變USB工作模式,我需要識別它。 – Machado

回答

1

不是最好的答案,但是一旦你有了一個UsbManager,你也許能夠弄明白。通常這UsbManager使用語境,我相信創造,但它看起來像你切換模式,所以你希望能夠在這種情況下獲得一個UsbManager實例,m

UsbManager m = createManagerSomehow

對於輔助模式,這隻有一個回電話。如果這返回一個,那麼你知道它是配件。

m.getAccessoryList()

這樣所以我想服用點可能的工作:

if(m.getAccessoryList().size() > 0) 
    accessoryMode = true; 

而對於主機,如果你有一個UsbDevice device,或字符串deviceName你可以使用相同的UsbManager m功能看看它是否包含該設備。

if(m.getDeviceList().containsValue(device)) 
    hostMode = true; 

if(m.getDeviceList().containsKey(deviceName)) 
    hostMode = true; 

,我不知道什麼是Device,但如果沒有上述爲真,那麼你知道它只是一個設備。你不需要下面這個布爾變量,因爲你有另外兩個布爾變量。它只是在這裏幫助我通過狀態邏輯進行解釋。

if(!hostMode && !accessoryMode) 
    deviceMode = true 

希望這會有所幫助。查看UsbManager以獲取更多文檔,並只搜索主機和附件的頁面。

http://developer.android.com/reference/android/hardware/usb/UsbManager.html

注:我有點困惑,當你說你切換模式,在您的評論。它與上面所做的附件調用衝突,可能無法正常工作,但我會做什麼(如果您不需要​​),那麼只需檢查USB設備是否爲HOST模式,如果不是,則知道它處於應用模式...

相關問題