280 likes | 399 Views
Android-App/ NerdKalender. Martin Perstorfer Stefan Eckl. Gliederung. Allgemeines über Android Projektbeschreibung Livevorführung Vorbereitungen Projektumsetzung Teil I Projektumsetzung Teil II Veröffentlichung und Tests Fazit. Bildquelle: https://play.google.com/store?hl=de&tab=w8.
E N D
Android-App/NerdKalender Martin Perstorfer Stefan Eckl
Gliederung • Allgemeines über Android • Projektbeschreibung • Livevorführung • Vorbereitungen • Projektumsetzung Teil I • Projektumsetzung Teil II • Veröffentlichung und Tests • Fazit Bildquelle: https://play.google.com/store?hl=de&tab=w8
Allgemeines über Android • wurde von der Open HandsetAlliance gegründet • Oktober 2008: Erstes Gerät mit Android • größter Markanteil unter allen mobilen Betriebssystemen • Google übernimmt mehr und mehr die Überhand
Projektbeschreibung • Projekttitel: NerdKalender • Anzahl der gelebten Tage der gespeicherten Kontakte ermitteln und mit Sortierung darstellen • Einstellungen sollen variierbar sein • Ziel: funktionsfähige Version am PlayStore veröffentlichen
Vorbereitungen • Entwicklungsumgebung: Eclipse mit Android SDK • Programmiersprache: Java • Hardware zum Debuggen: HTC Wildfire, NEXUS 7 • Nachschlagewerk: Android 3 von Thomas Künneth(Buch)
Projektumsetzung I • AndroidManifest.xml • Startseite • Alle Kontakte • Benutzerdefiniertmit Schnittstelle Einstellungen
AndroidManifest.xml • Version • Berechtigungen • Logo • MainActivity • Activity
Startseite Button bnAlleKontakte = (Button)(this.findViewById(R.id.bnAlleKontakte)); bnAlleKontakte.setOnClickListener( newOnClickListener() { publicvoidonClick(View v) { Intentintent = newIntent(Start.this, AlleKontakte.class); StartActivity(intent); } });
Alle Kontakte • Daten • Vector<Kontakte> • Layout • Listenkopf • Listenitems KontaktAdapter adapter = new KontaktAdapter(this, R.layout.listview_item_row, kontakt); lvKontakt = (ListView)findViewById(R.id.lvKontkate); View header = (View)getLayoutInflater().inflate (R.layout.listview_header_row, null); lvKontakt.addHeaderView(header); lvKontakt.setAdapter(adapter);
Alle Kontakte Cursor mainQueryCursor= contentResolver.query( ContactsContract.Contacts.CONTENT_URI, mainQueryProjection, mainQuerySelection, mainQuerySelectionArgs, null); // Trefferliste abarbeiten... while (mainQueryCursor.moveToNext()) { String contactId = mainQueryCursor.getString(0); String displayName = mainQueryCursor.getString(1); Cursor bdc = bd.query(android.provider.ContactsContract.Data.CONTENT_URI, new String[] { Event.DATA }, android.provider.ContactsContract.Data.CONTACT_ID+" = "+contactId+" AND "+Data.MIMETYPE+" = '"+Event.CONTENT_ITEM_TYPE+"' AND "+Event.TYPE+" = "+Event.TYPE_BIRTHDAY, null, android.provider.ContactsContract.Data.DISPLAY_NAME); … // Geburtsdatum ermitteln und in Vector speichern
Kontakte mit Geburtsdatum • gleicher Aufbau wie „Alle Kontakte“ • Sortierung nach:„Wer hat den nächsten Runden“ • greift auf Einstellungen zu
Projektumsetzung II • Einstellungen • Schnittstelle mit Geburtstagsberechnung • About
Start Layout-Designer xml-Code-Datei
Start Start.java • OnClickListener = OnClick-Ereigniss (Java) • ruft die Klasse About auf • Intent = neue Seite
About About.java • erzeugt erst beim onCreate ihr zugehöriges Layout
About Layout-Designer xml-Code-Datei
Start Layout-Designer xml-Code-Datei
Start Start.java • ruft die Klasse Einstellungen auf
Einstellungen • Preference = Einstellungsmenü • anstatt setContentView(Layout) hier addPreference
Einstellungen my_preferences.xml Anzeige
Einstellungen array.xml Anzeige
Start Layout-Designer xml-Code-Datei
Start Start.java • ruft die Klasse Benutzerdefiniert auf
Benutzerdefiniert Benutzerdefiniert.java • Erstellen einer SharedPreference • auslesen des gewählten Auswahl in einen string • weitere Verarbeitung
Veröffentlichung und Tests • Entwickleraccount bei Google Play • App hochladen (als Betatest) • Beschreibung der App • ein Logo im Format 512x512 Pixel • min. 2 Screenshots • eine Kategorie auswählen • und vieles mehr • App veröffentlichen Bildquelle: cdn.crackberry.com/sites/crackberry.com/files/styles/large/public/topic_images/2013/ANDROID.png%3Fitok%3Dxhm7jaxS
Fazit • Herausforderung, da neues Themengebiet • Ziel erreicht App als Testversion am PlayStore • Aktueller Stand: Version 0-9-4 • weitere Ideen für nächstes Schuljahr • kann ich nur weiterempfehlen!