簡體   English   中英

usb設備android,c#Xamarin

[英]usb devices android, c# Xamarin

我最近開始寫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附加。

我不明白為什么。

好吧,看起來你已經解決了這個,我可能會為你提供一些額外的提示。 首先,您已經發現USB-host僅在Android 3.1及更高版本中受支持。 其次,你需要在android清單中添加“使用功能”。

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

請確保包含required =“false”以確保您的應用程序可以在不支持USB主機的設備上安裝和啟動(如果您的應用程序可選擇usb-host)。

第三,你會驚訝地發現有多少現代移動設備不支持主機模式,第四,USB端口需要為連接的USB設備提供足夠的電量。 第五點也是最后一點:Android並不適合高速“實時”USB通信。 Android有一種討厭的習慣,即在“解鎖”並繼續前進之前暫停整個系統並收集垃圾。 如果你試圖以恆定的速率通過usb發送大量數據,這可能導致緩沖區在Android暫停和GC時填滿,並且在下次讀取緩沖區時你可能會發現數據損壞。 所以在構建包含usb通信的應用程序時一定要注意你的內存管理! 我發現將Xamarin GC橋配置為“Tarjan”模式有助於減少GC引起的暫停,但這可能是我的應用程序特有的。

也許不適合作為你問題的答案,但我感覺很健談;)。 祝好運!

  • 編輯:沒有注意到OP沒有指定他是否想要使用USB配件或USB主機設備。 對於配件,請使用Mike Stonis的提示!

聽起來你的清單中沒有正確的設置。 Android USB附件幫助頁面上查看提供的設置。

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

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

提示: AndroidManifest.xml位於Xamarin項目的Properties部分下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM