Skocz do zawartości
Itachi

Programowanie sprzętowe pod Androidem

    Rekomendowane odpowiedzi

    Itachi

    Witam,

    Dopiero będę zaczynał przygodę z Androidem, ale już teraz chciałbym dowiedzieć się paru kwestii. Przypuśćmy, że mam sobie jakiegoś chińskiego tableta. Czy poprzez oficjalną bibliotekę dla Androida (Java) istnieje możliwość dostania się do hardware'u i przypuśćmy kontrolowania linii GPIO czy PWM'u ? Jeżeli nie, to można byłoby prosić o nakreślenie problemu, jak napisać samemu odpowiednią bibliotekę do takich rzeczy ? Jak mi wiadomo, jądrem Androida jest po prostu Linux. Czy struktura systemu plików w Androidzie jest podobna do klasycznej z dystrybucji linux'owskich ? Jeżeli tak, to czy istnieje dostęp, poprzez znów API Androida, do wszystkich typowych plików z katalogów /dev, /sys czy /proc ? Wiem, że istnieje NDK, które prędzej do tego by się nadawało, ale niestety strasznie kuleje dokumentacja. Ze względu na to, że już trochę na rynku funkcjouje Android i developerzy aplikacji głównie piszą programy w Javie, więc pomyślałem, że do tego typu kwestii istnieją już biblioteki. Z góry dziękuję za odpowiedź. Pozdrawiam.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    gzajac
    Przypuśćmy, że mam sobie jakiegoś chińskiego tableta. Czy poprzez oficjalną bibliotekę dla Androida (Java) istnieje możliwość dostania się do hardware'u i przypuśćmy kontrolowania linii GPIO czy PWM'u ?

    Nie sądzę żeybś był w stanie dostać się do tych linii w tablecie czy w telefonie. Ale możesz zamiast tabletu kupić sobie np coś podobnego:

    1) tańsze - LS6410 SAMSUNG ARM11 S3C6410 board kit 4.3 TFT LCD (Android)

    2) full wypas - i.MX51 Evaluation Kit Product Summary Page

    Poprzez API Android'a (Java) nie ma możliwości kontrolowania sprzętu w ten sposób.

    Jeżeli nie, to można byłoby prosić o nakreślenie problemu, jak napisać samemu odpowiednią bibliotekę do takich rzeczy ? Jak mi wiadomo, jądrem Androida jest po prostu Linux. Czy struktura systemu plików w Androidzie jest podobna do klasycznej z dystrybucji linux'owskich ?

    Tego w samej Javie nie napiszesz. C/C++. Struktura i system plików są Linuxowe - poczytaj w dokumentacji jest o tym napisane.

    Jeżeli tak, to czy istnieje dostęp, poprzez znów API Androida, do wszystkich typowych plików z katalogów /dev, /sys czy /proc ?

    Jeśli urządzenie jest "zrootowane" to masz dostęp do każdego folderu, także za pomocą Javy.

    Wiem, że istnieje NDK, które prędzej do tego by się nadawało, ale niestety strasznie kuleje dokumentacja.

    Są na szczęście jeszcze tutoriale i inne materiały poza oficjalną dokumentacją.

    Ze względu na to, że już trochę na rynku funkcjouje Android i developerzy aplikacji głównie piszą programy w Javie, więc pomyślałem, że do tego typu kwestii istnieją już biblioteki.

    Przypuszczam że 99,9% developerów pisze aplikacje na telefony/tablety, bez zagłębiania się w kontrolowanie sprzętu na niskim poziomie.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Itachi

    Witam,

    Dziękuję za rzetelną i wyczerpującą odpowiedź. Jednak zapytam jeszcze, jeżeli po "zrootowaniu" mam dostęp do typowych katalogów systemu plików linux, to rozumię, że za pomocą odpowiednich plików katalogu /sys, będę wstanie ręcznie kontrolować takie rzeczy, jak GPIO itp. ? Przepraszam, że pytam może o trywialne rzeczy, które znalazłbym może w dokumentacji, ale chwilowo nie dysponuje czasem, a informacje potrzebne mi są od zaraz. Także jeszcze dopytam, czy coś podobnego do terminala bash'a istnieje default'owo w androidzie z typowymi komendami linuksa ? Jeszcze raz dziękuję. Pozdrawiam

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piotrpo

    Na zrootowanym telefonie masz dostęp do wszystkich "plików". API pozwala na wykonywanie komend linuksowych. Dostępna jest również konsola systemu (może nie bash, ale to szczegół). Konsola istnieje domyślnie w każdym urządzeniu, ale działa z uprawnieniami aplikacji (każda aplikacja to inny użytkownik)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Itachi

    Super, coraz bardziej mi się to podoba. Zapytam jeszcze, ponieważ napotkałem się w sieci na prywatną bibliotekę Javy - jControl, która dedykowana jest na urządzenia wbudowane, co oznacza, że obsługuje wszystkie linie sprzętowe. Czy można taką bibliotekę dołączyć do projektu Androida i za pomocą niej kontrolować odpowiednie linie(biblioteka dostarcza właśnie API do nich) ? Ogólnie jeszcze sformułuje to pytanie, czy mogę korzystać z zewnętrznych bibliotek dla Javy w projektach na Androida ? Jeszcze raz dziękuję za pomoc. Pozdrawiam

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piotrpo

    Wątpię, żeby ta biblioteka działała. Generalnie, jeżeli mówimy o root na telefonie z androidem, to zakładam, że wiesz, że nie będzie to aplikacja produkcyjna. Warto sobie spojrzeć na ten diagram What is Android? | Android Developers - które warstwy mogą się ze sobą komunikować. W normalnej sytuacji API całkowicie izoluje aplikację od niskopoziomowych funkcji systemu. Zewnętrznych bibliotek można używać, jeśli nie wykorzystują one czegoś, co w Androidzie jest niedostępne.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Itachi

    Może teraz się ośmiesze z tym pytaniem, ale niestety jeszcze nie przebrnąłem przez dokumentacje Androida, a również nie interesowałem się szczególnie Androidem wcześniej, ale pytanie nasunęło się w związku z ilustracją, do której piotrpo podał link. Czy Android(kernel linuksa) uruchamiany jest na wirtualnej maszynie(Dalvik), czy odwrotnie, że wirtualna maszyna jest uruchamiana na działającym(wystartowanym) Androidzie(kernel linuksa) ? Jeszcze raz dzię kuję za pomoc. Pozdrawiam

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piotrpo

    Odpowiedź b) DVM jest procesem systemu operacyjnego.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x