Использование libusb в приложении Android: как разрешить приложению доступ к USB - PullRequest
7 голосов
/ 19 сентября 2011

Я бы хотел использовать libusb в своем приложении для Android (java GUI + нативное (C ++) ядро). Я уже скомпилировал libusb и попытался вызвать его функции, но libusb_open возвращает LIBUSB_ERROR_ACCESS. Я предполагаю, что есть проблема с разрешениями доступа USB, но я не знаю, как решить проблему. Итак, 2 вопроса здесь: 1) Как запустить libusb на рутованном устройстве Android 3.1? 2) Можно ли использовать libusb на некорневом заводском устройстве по умолчанию?

Заранее спасибо.

P. S. Что касается вопроса 1, я пробовал chmod 666 для / dev / bus / usb, но там написано «Отказано в доступе» (обратите внимание, что мое устройство рутировано).

P.P.S. mount usbfs none / proc / bus / usb -o devmode = 0666 даже не выполняется, как будто я что-то написал неправильно (но я этого не сделал).


Я точно знаю, что можно запустить libusb на рутированном устройстве Android с USB-хостом, но мне так и не удалось, поэтому мне пришлось ограничить приложение Android 3.1+ и использовать API-интерфейсы USB.

1 Ответ

0 голосов
/ 15 июля 2014

В Android вы не можете напрямую открыть USB-устройство с помощью libusb (к такому выводу вы пришли:).

почему вы не смогли открыть?

Вам необходимо получить разрешение от системы Android (! = Ядро), чтобы открыть устройство.

Сделайте это на Java:

когда вы запрашиваете, пользователю показывается всплывающее окно, чтобы принять или отклонить. поэтому вам нужно открыть устройство в java, извлечь fd с помощью java и перейти к libusb, чтобы оно могло взаимодействовать с устройством.

Теперь, как libusb создаст дескриптор из fd?

Обновление: я поддерживаю модифицированную для Android версию libusb (с большим количеством исправлений - протестировано / работает на Android 5.1 и ниже). см https://gitlab.com/madresistor/libusb/blob/android/README

СТАРАЯ ССЫЛКА (DEAD LINK) вот решение: https://github.com/martinmarinov/rtl_tcp_andro-/blob/master/jni/libusb-andro/libusb/core.c#L993

...