2012-10-05 15 views
5

Pracuję nad aplikacją na Androida, w której muszę podłączyć się do urządzenia USB.Zapisywanie sterownika USB dla Androida

Opracowałem podobną aplikację na windows i mam sterownik napisany w c.

Chcę opracować sterownik USB dla mojej aplikacji na Androida. Chcę wiedzieć, jakie rzeczy są potrzebne do opracowania sterownika USB dla Androida.

lub

można ponownie wykorzystać kod napisany w C za pomocą NDK.

Dzięki,

Odpowiedz

6

pierwsze, Android jest właściwie tylko Linux, więc jeśli mówimy o „pisanie sterownika USB dla mojego Android aplikacji” należy raczej powiedzieć „pisanie Linux Driver USB dla konkretnego urządzenia.”

Następnie musisz w jakiś sposób uzyskać dostęp do urządzenia. To, co otrzymasz po napisaniu sterownika USB dla Linux-a, to prawdopodobnie jakiś węzeł plików w/dev /. Zgaduję, że chcesz stworzyć sterownik dla niestandardowego urządzenia USB (takiego jak mysz/joystick/pamięć masowa), dla którego Android nie zapewnia dobrego interfejsu API JAVA? W takim przypadku będziesz musiał napisać natywną bibliotekę (prawdopodobnie w oparciu o kod c, który już masz) i skompilować ją z NDK. Plik .so, który się z niego wydostanie, może być spakowany w twojej aplikacji Android, która może następnie użyć jej do rozmowy z twoim urządzeniem USB.

Więc Podsumowując: sterownik

USB -> utworzyć moduł jądra lub osadzić sterownik w jądrze Linux: to jest linux usb programowanie sterownika rzeczy, dla których powinieneś być w stanie znaleźć wystarczająco dużo przewodników w Internecie. Powinieneś być w stanie ponownie użyć części twojego kodu c, jeśli naprawdę stworzyłeś sterownik USB systemu Windows.

natywna biblioteka otoki, aby uzyskać dostęp do urządzenia (plik .so lub .dll, jeśli używasz terminologii Windows) -> utwórz projekt NDK, który otwiera odpowiedni węzeł urządzenia i poprawnie odczytuje/zapisuje na twoim urządzeniu.

Aplikacja na Androida -> dołącz plik .so i uzyskaj dostęp do jego natywnych (c) metod przez jni. Możesz użyć narzędzi takich jak javah lub swig do wygenerowania kodu jni z plików nagłówkowych biblioteki.

3

Poprzednia odpowiedź zakłada, że ​​masz uprawnienia roota do urządzenia i nie nadaje się do masowego wdrażania. Od wersji api 12 android dostarczył interfejs usb, który pozwala na interakcję z niektórymi urządzeniami za pomocą kanałów kontroli niskiego poziomu i buforów żądań usb.

Istnieją dwa rodzaje urządzeń obsługiwanych urządzeń Host USB urządzeń USB (android) Accessory

gospodarz tryb jest zwykle obsługują tylko dobrze na tabletkach, telefony mogą i wspierać to jednak ich ablity do podtrzymania w trybie host mniej i bardzo zależy od wymagań napięcia w deviec w pytaniach

tryb akcesorium jest dziwne, gdyż rozszerza standardy uSB, aby dodać dodatkową wymianę identyfikujący akcesorium jako „android” akcesorium

jeśli powyższe tryby Ponowne użycie jest dla ciebie lepszym rozwiązaniem, jeśli nie masz pełnej kontroli nad wszystkimi urządzeniami, na których zostanie zainstalowany.

Są to zarówno java apis, jak i można je znaleźć na stronie dokumentacji androidowej androida, pod adresem usb.

+0

Czy aplikacje NDK wymagają uprawnień administratora? –

+1

Nie, nie. Kod macierzysty można zbudować opracowany i wdrożony bez uprawnień administratora, ale dostęp do zasobów należących do systemu, takich jak urządzenia, będzie wymagał uprawnień administratora. Przykładem innym niż USB byłoby użycie standardowego sshd linuksa, takiego jak dropbear, jest to prawdopodobne, że możesz je znaleźć w sklepie Play, jednak aby działać na standardowych portach, muszą być uruchamiane jako root. – Neil

Powiązane problemy