Java 是否可以通过编程识别USB通信模式?
有没有办法通过编程识别当前的USB工作模式Java 是否可以通过编程识别USB通信模式?,java,android,usb,Java,Android,Usb,有没有办法通过编程识别当前的USB工作模式 我的意思是,如果设备处于主机、设备或附件模式,某些功能将返回。不是最佳答案,但一旦您有了UsbManager,您可能就能找到答案。通常,我相信这个UsbManager是使用上下文创建的,但它看起来像是在切换模式,所以希望可以得到一个UsbManager实例,m,在这种情况下: UsbManager m=createmanager部分方式 对于附件模式,只有一个回调。如果返回一个,则您知道它是附件 m.getAccessoryList() 所以我在想,像
我的意思是,如果设备处于
主机
、设备
或附件
模式,某些功能将返回。不是最佳答案,但一旦您有了UsbManager,您可能就能找到答案。通常,我相信这个UsbManager是使用上下文创建的,但它看起来像是在切换模式,所以希望可以得到一个UsbManager实例,m
,在这种情况下:
UsbManager m=createmanager部分方式
对于附件模式,只有一个回调。如果返回一个,则您知道它是附件
m.getAccessoryList()
所以我在想,像这样的事情可能会奏效:
if(m.getAccessoryList().size() > 0)
accessoryMode = true;
对于主机,如果您有一个USB设备设备
,或者字符串设备名
,您可以使用相同的UsbManagerm
功能查看它是否包含该设备
if(m.getDeviceList().containsValue(device))
hostMode = true;
或
我不知道什么是设备
,但是如果上面没有一个是真的,那么你就知道它只是一个设备。您实际上不需要下面的布尔变量,因为还有另外两个。它只是通过状态逻辑来帮助我解释
if(!hostMode && !accessoryMode)
deviceMode = true
希望这有帮助。查看UsbManager了解更多文档,只需在页面中搜索主机和附件即可
注意:当你在评论中说你切换了模式时,我有点困惑。它与我上面所做的附件调用冲突,可能无法工作,但我会做什么(如果您不需要
deviceMode
),然后检查usb设备是否为主机模式,如果不需要,您知道它处于应用模式…您是指设备的usb工作模式吗?@Aify,是的。我有一个情况,Android可以改变USB工作模式,我需要确定它。
if(!hostMode && !accessoryMode)
deviceMode = true