Я хочу обнаружить устройство MTP/PTP, когда он подключается к устройству Android. Я знаю, что есть один метод с использованием Intent: android.hardware.usb.action.USB_DEVICE_ATTACHED
а затем определение метаданных, которые используют ресурс типа <usb-device class="6" subclass="1" protocol="1">
, но он не работает. Система не отправляет это намерение зарегистрированному приложению.
Таким образом, кто-нибудь знает, как это сделать?
не могли бы вы указать, какое устройство вы используете для тестирования? Весьма вероятно, что ваше устройство не имеет конкретных значений PTP/MTP в классе, подклассе и протоколе для дескриптора устройства USB и/или интерфейса. См. Следующее: http://events.linuxfoundation.org/sites/events/files/slides/Media%20Transfer%20Protocol.pdf Некоторые устройства рекламируют себя как устройства хранения данных или спецификацию поставщиков. Если это так, единственный способ - попробовать сопоставить идентификатор поставщика и идентификатор продукта для устройств, которые вы хотели бы поддержать. Ниже приведен список MTP-устройств с идентификатором и идентификатором поставщика: http://sourceforge.net/p/libmtp/code/ci/HEAD/tree/src/music-players.h.
Надеюсь это поможет.
Установили ли вы устройство как USB-хост, добавив в AndroidManifest.xml:
<uses-feature android:name="android.hardware.usb.host" />