【问题标题】:usb devices android, c# Xamarinusb 设备 android, c# Xamarin
【发布时间】:2013-11-04 20:40:12
【问题描述】:

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

我已经阅读了 SDK 文档,所有文档都是用 java 编写的。我正在尝试将 java 更改为 C#,我对此进行了编码以查找附加的设备:

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

使用“usb manager”应用程序,我可以看到所有连接的 USB,有 3 个。但是使用此代码,它似乎连接了 0 个 USB。

我不明白为什么。

【问题讨论】:

  • 该死的..我被这个问题困住了。我什至不能使用 Android.Hardware.Usb 因此其他任何与 USB 相关的东西。事实证明,我正在为 Android 2.2 开发一个项目,并且该版本不支持 USB 主机。在我打开赏金 5 分钟后解决我的问题:D

标签: c# android usb xamarin.android xamarin


【解决方案1】:

看来您已经解决了这个问题,不过我可能会为您提供一些额外的提示。首先,就像您发现 USB-host 仅在 Android 3.1 及更高版本中受支持。其次,您需要将“uses-feature”添加到 android 清单中。

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

确保包含 required="false" 以确保您的应用可以在不支持 USB-host 的设备上安装和启动(如果您的应用可选 USB-host)。

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

也许不太适合回答您的问题,但我觉得很健谈;)。祝你好运!

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

【讨论】:

    【解决方案2】:

    听起来您的清单中没有正确的设置。查看Android USB Accessory Help page 提供的设置。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多