Usb-устройства android, С# Xamarin

Недавно я начал писать на Xamarin, и у меня возникли проблемы с написанием кода, чтобы посмотреть на устройства, подключенные к моему хосту.

Я прочитал документацию SDK, и все документы написаны в java. Я пытаюсь изменить java на С#, и я закодировал это, чтобы найти подключенные устройства:

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. Но с этим кодом он, кажется, подключен к usb.

Я не понимаю, почему.

Ответ 1

Хорошо, похоже, что вы уже решили этот, у меня могут быть дополнительные советы для вас. Прежде всего, как вы узнали, USB-хост поддерживается только в версиях Android 3.1 и более поздних версий. Во-вторых, вам нужно добавить "use-feature" к манифесту android.

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

Обязательно укажите required = "false", чтобы убедиться, что ваше приложение может быть установлено и запущено на устройстве, которое не поддерживает USB-хост (если usb-хост является необязательным для вашего приложения).

В-третьих, вы будете удивлены, сколько современных мобильных устройств не поддерживают режим хоста еще и в-четвертых, USB-порт должен обеспечить достаточную мощность для подключенного USB-устройства. Пятая и последняя точка: Android действительно не подходит для высокоскоростных "в реальном времени" USB-коммуникаций. Android имеет неприятную привычку приостанавливать всю систему и собирать мусор перед "разблокировкой" и двигаться дальше. Если вы пытаетесь отправить много данных через usb с постоянной скоростью, это может привести к заполнению буфера, когда Android приостанавливается и GC, а при следующем считывании в буфер вы можете найти поврежденные данные. Поэтому следите за своим управлением памятью при создании приложения, которое включает в себя usb-коммуникацию! Я обнаружил, что настройка моста Xamarin GC в режим "Tarjan" помогает немного уменьшить сокращение пауз, вызванных GC, однако это может быть специфично для моего приложения.

Возможно, это не очень подходит для ответа на ваш вопрос, но я чувствовал себя болтливым;). Удачи!

  • Изменить: не заметил, что ОП не указал, хочет ли он использовать аксессуар usb или устройство usb-host. Для аксессуара используйте подсказку Майка Стониса!

Ответ 2

Похоже, что у вас нет правильных настроек в вашем манифесте. Просмотрите предоставленные параметры на странице справки Android USB.

Как минимум, вам нужно добавить следующую строку в ваш файл AndroidManifest.xml.

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

Подсказка: AndroidManifest.xml находится в разделе "Свойства" в проекте Xamarin.