USB设备的Android,C#Xamarin

我最近开始在Xamarin上编写代码,并且在编写代码来查看连接到主机的设备时遇到了一些问题。

我已经阅读了SDK文档,所有的文档都是用java编写的。 我试图改变成C#的Java,我编码这find附加的设备:

UsbManager manager = (UsbManager)GetSystemService (Context.UsbService); display.Text += " /n inizializzo il manager"; display.Text += "numero dispositivi: "; display.Text += manager.DeviceList.Count; 

与“USBpipe理器”的应用程序,我可以看到所有的USB附加,有3个。但与此代码,它似乎是0的USB附加。

我不明白为什么。

Solutions Collecting From Web of "USB设备的Android,C#Xamarin"

那么它看起来像你已经解决了这个问题,但我可能会有一些额外的技巧。 首先就像你已经发现USB主机只支持Android 3.1及更高版本。 其次,你需要添加“使用function”的Android清单。

 <uses-feature android:name="android.hardware.usb.host" android:required="false" /> 

请确保包含required =“false”,以确保您的应用程序可以在不支持USB主机的设备上安装和启动(如果您的应用程序的USB主机是可选的)。

第三,现在的移动设备还不支持主机模式,第四,USB端口需要为连接的USB设备提供足够的电源。 第五点也是最后一点:Android并不适合高速“实时”USB通信。 Android有一个令人讨厌的习惯,在“解锁”前继续整个系统并收集垃圾,继续前进。 如果你想以恒定的速率通过usb发送大量数据,这可能会导致当Android暂停和GC时填充缓冲区,并且在下一次读取缓冲区时,可能会发现数据已损坏。 因此,在构build包含USB通信的应用程序时,请务必留意您的内存pipe理! 我发现将Xamarin GC桥configuration为“Tarjan”模式有助于减less由GC引起的暂停,这可能是特定于我的应用程序。

也许不太适合作为你的问题的答案,但我感觉很健谈;)。 祝你好运!

  • 编辑:没有注意到OP没有指定他是否要使用USB配件或USB主机设备。 对于配件,请使用Mike Stonis的提示!

这听起来像你的清单中没有适当的设置。 在Android USB附件帮助页面查看提供的设置。

至less,您需要将以下行添加到您的AndroidManifest.xml文件中。

 <uses-feature android:name="android.hardware.usb.accessory" /> 

提示: AndroidManifest.xml位于Xamarin项目的“属性”部分下。