Я пытаюсь использовать возможности USB-хоста на планшете Samsung Galaxy. Я купил адаптер вложения от samsung (http://www.samsung.com/us/mobile/galaxy-tab-accessories/EPL-1PL0BEGSTA). Когда я впервые подключил USB-устройство через этот ключ, у меня возникла ошибка с высоким энергопотреблением от Galaxy Tablet - к вашему сведению используется USB-концентратор с внешним питанием, и вы можете подключить его.
Теперь, когда само устройство распознает наличие USB-периферии, когда я подключаю его, я попытался использовать Android android.hardware.usb.UsbDevice;
импорт android.hardware.usb.UsbManager; библиотека. Я видел, что есть два метода для распознавания устройства USB, регистрация приемника вещания для прослушивания намерений через
IntentFilter usbIntentFilter = new IntentFilter();
usbIntentFilter.addAction("android.hardware.usb.action.USB_DEVICE_ATTACHED");
usbIntentFilter.addAction("android.hardware.usb.action.USB_DEVICE_DETACHED");
registerReceiver(mUsbReceiver,usbIntentFilter);
Это не вызывает никаких намерений, когда я подключаю какие-либо устройства, странно ... хорошо. Поэтому я попробовал следующий метод: явный запрос списка устройств через UsbManager - это было выполнено следующим образом:
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
int count = deviceList.size();
Iterator<UsbDevice> iterator = deviceList.values().iterator();
if(iterator.hasNext()){
UsbDevice deviceVal = iterator.next();
testTxtView1.setText("set device " + deviceVal);
}
Предполагается, что это будет одно (в настоящее время только одно USB-устройство поддерживается в документации Google) USB-устройство, которое в данный момент подключено. Чтобы проверить это, я бы вызвал приведенный выше код при нажатии кнопки и отобразил результаты устройства. По какой-то причине я получаю устройство из списка устройств каждый раз, подключен ли USB-ключ или нет. Кроме того, устройство всегда одинаково независимо от USB-ключа (или его отсутствия). Вывод выглядит следующим образом:
устройство usbDevice [mName = / dev / bus / usb / 001/002, mVendorId = 1256, mProductId = 27033, mClass = 0, mSubClass = 0, mProtocol = 0, mInterfaces = [Landroid.os.Parcelable; @ 406ff4d8 ]
^^ значение @ 406ff4d8 меняется каждый раз, когда я запрашиваю этот код (я просто добавляю один его экземпляр)
Я искал везде и не смог найти каких-либо подобных проблем или решений, которые могут относиться к моей ситуации. Я попытался реализовать примеры USB-устройств от Google (а это именно то, что у меня есть, я их разорвал) и столкнулся с этими проблемами.
Я должен также упомянуть состав моего манифеста:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="edu.mit.ll.drm4000"
android:versionCode="1"
android:versionName="1.0">
<uses-feature android:name="android.hardware.usb.host" />
<uses-sdk android:minSdkVersion="12" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".DRM4000Activity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</activity>
</application>
и фильтр устройства:
(Я удалил критерии на фильтре устройства, но также попытался вставить определенную информацию об устройстве, которое я ищу ... оба безрезультатно.)
Любая помощь по этой проблеме будет принята с благодарностью!
Еще одно обновление: устройство, на которое я жаловался, всегда перечисляется в списке устройств
устройство usbDevice [mName = / dev / bus / usb / 001/002, mVendorId = 1256, mProductId = 27033, mClass = 0, mSubClass = 0, mProtocol = 0, mInterfaces = [Landroid.os.Parcelable; @ 406ff4d8 ]
должен быть USB-порт на стороне Android или что-то в этом роде ... потому что я начал подключать к своему коду кучу разных устройств и обнаружил, что (похоже на эту ссылку:
USB_DEVICE_ATTACHED Намерение не запускать ) HID-устройства, устройства Arduino ... и, к сожалению ... мое USB-устройство, похоже, не выполняет намерение или не перечисляется концентратором USB. Я попытался с флеш-накопителем USB, и он ДЕЙСТВИТЕЛЬНО перечислил его и работал ... однако он отображается как ВТОРОЕ устройство в списке, первым из которых является вездесущий usbDevice, перечисленный выше. Тем не менее, намерения ведут огонь по нему.
Кто-нибудь знает обходной путь к запуску намерений с HID-устройствами и другими USB-устройствами, за исключением того, что, похоже, сейчас делает несколько избранных android?