2015-05-20 6 views
6

programatik olarak programlanmasının şu anda USB çalışma modunu tanımlamak için bir yolu var mı?USB iletişim modunu programlı olarak tanımlamak mümkün mü?

Aygıtın Host, Device veya Accessory modlarında olması durumunda dönecek bazı işlevler.

+0

Cihazın USB çalışma modunu mu kastediyorsunuz? – Aify

+0

@Aify, yes. Android'in USB çalışma modunu değiştirebileceği bir durum var ve bunu tanımlamam gerekiyor. – Machado

cevap

1

En iyi cevap değil, ancak bir UsbManager'ınız olduğunda bunu anlayabilirsiniz. Genellikle bu UsbManager inanıyorum bir Bağlamını kullanılarak oluşturulur, ancak umarım bu durumda bir UsbManager örneği, m alabilmeniz için modları arasında geçiş gibi görünüyor: aksesuar modu için

UsbManager m = createManagerSomehow

, bu sadece birine sahiptir geri aramak. Bu bir tane döndürürse, o zaman onun Aksesuar olduğunu bilirsiniz. Böyle

m.getAccessoryList()

Yani düşünüyorum somehting işe yarayabilecek:

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

Ve Host için

, bir UsbDevice device veya Dize deviceName varsa aynı UsbManager m fonksiyonunu kullanabilirsiniz Bu cihazı içerip içermediğine bakın.

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

veya

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

ve Device ne yukarıdakilerden hiçbiri doğruysa, ama o zaman bu sadece bir aygıt olduğunu biliyoruz hakkında bilmiyorum. Aşağıdaki bu boole değişkenine ihtiyacınız yok çünkü diğer ikisine sahipsin. Bu, benim açıklamalarımın devlet mantığıyla yardımcı olması için burada.

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

Bu yardımcı olur umarım. Daha fazla dokümantasyon için UsbManager'a bakın ve sadece Host ve Aksesuar için sayfayı arayın.

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

NOT: Eğer yorumunuzda modlar arasında geçiş derken biraz karıştı. Yukarıda yaptığım Aksesuar çağrısı ile çakışıyor ve işe yaramayabilir, ancak ne yapardım (eğer deviceMode'a ihtiyacınız yoksa), eğer usb cihazının bir HOST modu olup olmadığını kontrol edip, uygulama modunda olduğunu bilmiyorsanız ...