Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以通过编程识别USB通信模式?_Java_Android_Usb - Fatal编程技术网

Java 是否可以通过编程识别USB通信模式?

Java 是否可以通过编程识别USB通信模式?,java,android,usb,Java,Android,Usb,有没有办法通过编程识别当前的USB工作模式 我的意思是,如果设备处于主机、设备或附件模式,某些功能将返回。不是最佳答案,但一旦您有了UsbManager,您可能就能找到答案。通常,我相信这个UsbManager是使用上下文创建的,但它看起来像是在切换模式,所以希望可以得到一个UsbManager实例,m,在这种情况下: UsbManager m=createmanager部分方式 对于附件模式,只有一个回调。如果返回一个,则您知道它是附件 m.getAccessoryList() 所以我在想,像

有没有办法通过编程识别当前的USB工作模式


我的意思是,如果设备处于
主机
设备
附件
模式,某些功能将返回。

不是最佳答案,但一旦您有了UsbManager,您可能就能找到答案。通常,我相信这个UsbManager是使用上下文创建的,但它看起来像是在切换模式,所以希望可以得到一个UsbManager实例,
m
,在这种情况下:

UsbManager m=createmanager部分方式

对于附件模式,只有一个回调。如果返回一个,则您知道它是附件

m.getAccessoryList()

所以我在想,像这样的事情可能会奏效:

if(m.getAccessoryList().size() > 0)
    accessoryMode = true;
对于主机,如果您有一个USB设备
设备
,或者字符串
设备名
,您可以使用相同的UsbManager
m
功能查看它是否包含该设备

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

我不知道什么是
设备
,但是如果上面没有一个是真的,那么你就知道它只是一个设备。您实际上不需要下面的布尔变量,因为还有另外两个。它只是通过状态逻辑来帮助我解释

if(!hostMode && !accessoryMode)
    deviceMode = true
希望这有帮助。查看UsbManager了解更多文档,只需在页面中搜索主机和附件即可


注意:当你在评论中说你切换了模式时,我有点困惑。它与我上面所做的附件调用冲突,可能无法工作,但我会做什么(如果您不需要
deviceMode
),然后检查usb设备是否为主机模式,如果不需要,您知道它处于应用模式…

您是指设备的usb工作模式吗?@Aify,是的。我有一个情况,Android可以改变USB工作模式,我需要确定它。
if(!hostMode && !accessoryMode)
    deviceMode = true