Android, Eclipse, Maven and (Robo)Guice together?

I’m sure that when you trays automated dependency management and application building/deploying you will never want to abandon this kind of comfort that it gives. The same situation is with dependency injection; when you will get it ideas. In “normal” desktop, web, or server side project’s integrating with such tools like maven and guice isn’t that complicated like in Android projects.
Android tooling is very consistent and the ADT plug-in isn’t integrated with maven. This isn’t a problem when application is relatively small, or when you don’t want to use continuous integration tools like Hudson. But when you enter Android world from “enterprise” web application like I do, you surely would like to use CI, DI and lots more of cool stuff that was available before.

In this post I’ll present simple Android application that will have Maven and Guice support.
Continue reading

Linux freak …

W sumie od dawana wiedziałem, że nie jestem normalny. Daaaawno temu pożegnałem się z Windows’em i jako głównego systemu operacyjnego od tamtej pory używam Linuksa. Dziś za to dopadła mnie dość refleksyjna myśl … na co dzień używam 4 urządzeń elektronicznych:

  • macbook’a
  • komputera w pracy
  • telefonu
  • odtwarzacza MP3 (a właściwie to MPC, nie MP3)

Na wszystkich tych urządzeniach nie podzielnie króluje Linux:

  • macbook’a skolonizowało Gentoo
  • komp w pracy też nie ugiął się przed naporem Gentoo
  • telefon jest obsługiwany przez Android’a który bazuje na Linuksie
  • na odtwarzaczu działa RockBox (po to żeby odtwarzać MPC SV8)

Możliwe, że nie jestem zwyczajnym użytkownikiem … ale jak widać żyję i mam się całkiem dobrze 😉

Odpowiadając od razu na wścibskie pytania: nie, nie zamierzam instalować pingwinka na mikrofalówce czy też pralce 😉

Inżynierka v0.2

Kolejna porcja screenshot’ów z “pracy inżynierskiej” 😉

Jak widać doszła obsługa menu, a w niej:

  • My location – automatycznie centruje mapę na naszej pozycji
  • Start scan(/Stop scan) – “włącza/wyłącza” wątek skanujący
  • List AP – wyświetla listę wszystkich Access Point’ów które w czasie działania aplikacji znajdowały się w zasięgu
  • Setting – wyświetla ustawienia aplikacji (ta pozycja wymaga jeszcze implementacji)

Trzy z czterech dostępnych akcji są oprogramowane, zostało mi jeszcze stworzyć odpowiednie menu z ustawieniami aplikacji.

Tak wygląda lista wszystkich “odkrytych” Access Point’ów, z lewej strony widać grafikę/piktogram opisujący jakość sygnału danej sieci (w założeniach jest też, żeby ten sam obrazek opisywał poziom zabezpieczeń danej sieci). Obok jest czytelna nazwa punktu dostępowego (czyli SSID). Punkty dostępowe rozróżniane są po BSSID czyli adresie fizycznym urządzenia, więc w szczególnych przypadkach na liście mogą pojawić się kilka pozycji o tej samej nazwie. W każdy element na liście można “kliknąć” i uzyskać widok szczegółowy.

Muszę się dowiedzieć o status licencyjny grafik dołączonych do Androida … 😐

Ostatni screenshot, pokazuje wspomniany już “widok szczegółowy”. Mamy tutaj szczegółowe dane odnośnie wybranego punktu dostępowego. Jak można zauważyć widok ten wymaga jeszcze dopracowania, gdyż nie wszystkie dane są w pełni widoczne.

To na tyle, więcej za jakiś czas 😉

Inżynierka v0.1

Oto pierwszy screenshot z mojej pracy inżynierskiej 😉

Aplikacja posiada już następujące funkcjonalności:

  • Potrafi sprawdzić stan WiFi oraz w razie potrzeby sama go włączyć (nie pytając użytkownika o zdanie … bo po co ? jeżeli się uruchamia taką aplikację wiadomo, że sieć bezprzewodowa musi być włączona ;))
  • Potrafi sprawdzić status usługi GPS oraz poprosić użytkownika o jej włączenie (ponieważ android może za zgodą użytkownika wysyłać dane lokalizacyjne go Google’a warto żeby użytkownik sam włączył usługę, ewentualnie wyłączył moją aplikację)
  • Wyświetla aktualną pozycję użytkownika (to jest właśnie ta gwiazdka na środku ekranu)
  • Automatycznie co pół sekundy skanuje eter w poszukiwaniu sieci bezprzewodowych.
  • W prawym górnym rogu umieszczona jest licznik aktualnie wykrytych sieci
  • W prawym dolnym rogu umieszczony jest licznik sieci które aplikacja “mniej więcej” zlokalizowała (ew. potrafiła zlokalizować)

Przewidywane funkcjonalności:

  • Automatyczne wycentrowanie mapy na pozycję użytkownika (gwiazdkę)
  • Dodanie możliwości konfiguracji (chociażby możliwość zmiany interwału skanowania)
  • Obsługa przycisku “menu”
  • Zapisywanie wyników aplikacji w “jakimś” formacie
  • Kalibracja aplikacji
  • Algorytm lokalizacji punktów na podstawie sygnału WiFi oraz lokalizacji użytkownika

Teoretycznie powinno już być z górki, gdyż już w miarę zaprzyjaźniłem się z SDK oraz API android’a. Największym wyzwaniem będzie główna część czyli implementacja (raz opracowanie) algorytmu pozwalającego na zlokalizowanie access point’a; jego zarysy już kłębią się mi w głowie z tym, że posiada on jeszcze kilka słabostek.