2013-04-30 4 views
8

Я пытаюсь установить связь с устройством USB с Android-смартфона через OTG. Мне удалось связаться с моим устройством с помощью Android Host Host API. Проблема решения USB Host API - это производительность (единый массовый перенос, ограниченный 16384 байтами).Использование libusb на Android без укорачивания

libusb может выполнять большие запросы, и теперь я пытаюсь интегрировать его с помощью Android NDK. Мне удалось собрать источники libusb для Android и даже initUSB(), но libusb_open(dev, &dev_handle) возвращает -3 (Access denied).

Как я могу передать дескриптор файла

int fd = connection.getFileDescriptor() 

к libusb после получения USB_PERMISSION под Android USB хост API и получить доступ к устройствам USB под libusb?

+0

попробуйте эту версию libusb https://github.com/martinmarinov/rtl_tcp_andro-/tree/master/jni/libusb-andro. он имеет функцию open2 (, int fd) для этого голосования – 4ntoine

+0

, чтобы получить хорошее объяснение от команды android: https://code.google.com/p/android/issues/detail?id=56450 – 4ntoine

ответ

5

Это то, что вы ищете.
https://github.com/kuldeepdhaka/libusb/tree/android-open2
просто скомпилируйте его и опустите. :)
см. Раздел «Как для Android» для полного использования.

Я сделал все необходимые изменения для libusb (и im также использовал его).
У него есть исправление SELinux для «Android 5.0» +.

+1

Это звучит многообещающе, я посмотрел на ваш проект github, но я все еще не уверен, как его использовать. Вы используете jni для вызова libusb из java-кода? – dweebo

+0

@dweebo Да, Java -> JNI -> libusb –

+0

Спасибо! Вы можете поделиться этим кодом? – dweebo