Android, wprowadzenie do SDK Wprowadzenie, konfguracja środowiska, narzędzia, pierwsze aplikacje. prowadzący: Piotr Szymański, student 3 roku informatyki Paweł Rejkowicz, student 1 roku Informatyki 1
Android vs Java ME Podział Javy na platformy : EE SE ME(CDC, CLDC) Android posiada jeden typ maszyny wirtualnej Dalvik. 2
Android vs Java ME Co to takiego Dalvik? Maszyna wirtualna zaprojektowana przez Google w celach optymalizacyjnych Kilka plików wykonawczych *.dex w celu optymalizacji detekcja powtarzających się czynności w plikach wykonywalnych javy Architektura rejestrowa a nie stosowa Ale jakie są zasadnicze różnice między Javą ME a Androidem? 3
Android vs Java ME Android Java ME Jeden model, jedna platforma Wiele platform i konfiguracji Jednolita specyfikacja i platforma Mnogość specyfikacji i modeli tworzenia UI itd. Optymalizacja poprzez Dalvik VM Optymalizacja użytej pamięci Całe środowisko wraz z systemem Jedynie maszyna wirtualna wraz z językiem 4
Android, stos programowy, architektura 5
Android, podstawowe komponenty app Przez swoją naturę, środowisko mobilne android różni się od klasycznych modeli aplikacji okienkowych Android w zamyśle stosuje wzorzec projektowy MVC i nie daje (w zamyśle) użytkownikowi innego wyjścia i całe szczęście :) Podstawowe komponenty to : Intencje (Intent) Aktywności (Activities) Widoki (Views) Dostawca Treści (Content Provider) Usługi (Services) 6
Android, Intent To zamiar wykonania jakiejś pracy, bardzo abstrakcyjny i użyteczny zamysł Wykorzystujemy do : Nadawania komunikatów Uruchamiania usług Rozpoczynania aktywności Wyświetlania strony WWW, listy kontaktów Odbieranie połączenia 7
Android, Intent Czyli zasadniczo o co chodzi? Public static void invokebrowser(activity a){ } Intent i = new Intent(INTENT.ACTION_VIEW); i.setdata(uri.parse( google.com )); a.startactivity(i); Jest to dość abstrakcyjna klasa, trzeba samemu popróbować 8
Android, View Podstawowy element interfejsu, analogicznie do komponentów SWING czy AWT znanych z Javy Przyciski, etykiety, pola tekstowe itp. TextView tv = new TextView(this); tv.settext("koło naukowe ISA^2"); 9
Android, Activity A gdzie okienka? Activity dostarcza nam potrzebnych możliwości. Agreguje widoki, reprezentuje przeważnie jeden ekran użytkownika. Dość złożony cykl życia aktywności i całej aplikacji aktywność szczytowego poziomu to niejako root aplikacji Defniujemy aktywności w pliku manifestu, ale o tym później. 10
Android, Activity 11
Android, Content Provider Skąd brać dane do przetwarzania i jak je magazynować? Wymiana danych pomiędzy aplikacjami, osłona. Dostęp do danych telefonu Dostęp do danych za pośrednictwem identyfkatorów URI i MIME. Zasada analogiczna do działa przeglądarek. Uri : content://com.google.android.wikinotes.db.wikinotes MIME: vnd.android.cursor.item/*dir*//vnd.google.wikinote 12
Android, Content Provider Przykłady MIME text/html text/css application/pdf application/vnd.excel 13
Android, Service A jak odpalić program w tle? Bez interfejsu, powiązana z innymi aktywnościami. Usługi dzielimy na używane tylko przez daną aplikacje usługa lokalna Usługa zdalna UNIXowe pojęcie demona. Telefon SMS receiver sami możemy i sprawdzimy jakie usługi zdalne posiada nasz telefon 14
Android, Service public class ExampleService extends Service { int mstartmode;// indicates how to behave if the service is killed IBinder mbinder;// interface for clients that bind boolean mallowrebind; // indicates whether onrebind should be used public void oncreate() {} public int onstartcommand(intent intent, int flags, int startid) {return mstartmode;} public IBinder onbind(intent intent) {return mbinder;} public boolean onunbind(intent intent) { return mallowrebind;} public void onrebind(intent intent) {} } public void ondestroy() {} 15
Android, AndroidManifest.xml Skoro, aplikacja składa się z wielu aktywności to jak zdefniować zależności między nimi? W manifeście są : Uprawnienia jakie rości sobie aplikacja do zasobów telefonu Struktura hierarchiczna aktywności, intencji, etc. 16
Android, AndroidManifest.xml <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".hellocheckbox" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> 17