Во-первых, Android на самом деле просто Linux, поэтому, если вы говорите о «написании USB-драйвера для моего приложения Android», вам лучше сказать «написание USB-драйвера Linux для вашего конкретного устройства».
Затем вам нужно будет каким-то образом получить доступ к вашему устройству. То, что вы получите, написав драйвер USB для linux, вероятно, является каким-то файловым узлом в /dev/. Я предполагаю, что вы хотите создать драйвер для нестандартного USB-устройства (например, мыши / джойстика / запоминающего устройства), для которого Android не предоставляет хороший JAVA API? В этом случае вам придется написать нативную библиотеку (вероятно, на основе уже имеющегося у вас кода c) и скомпилировать ее с помощью NDK. Файл .so, который вы получите, может быть упакован в ваше Android-приложение, которое затем может использовать его для связи с вашим USB-устройством.
Итак, подводя итог:
драйвер устройства usb -> создать модуль ядра или встроить драйвер в ядро linux: это материал для программирования драйвера usb для Linux, для которого вы сможете найти достаточно руководств в Интернете. Вы должны иметь возможность повторно использовать части своего кода c, если вы действительно создали драйвер USB для Windows.
родная библиотека-оболочка для доступа к вашему устройству (файл .so или .dll, если вы привыкли к терминологии Windows) -> создайте проект NDK, который открывает правильный узел устройства и правильно читает/записывает на ваше устройство.
Android-приложение -> включить файл .so и получить доступ к его собственным (c) методам через jni. Вы можете использовать такие инструменты, как javah или swig, для генерации кода jni из файлов заголовков вашей библиотеки.
person
baske
schedule
05.10.2012