Γεωργίου Εμμανουήλ Καλλέργη

Σχετικά έγγραφα
Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών

ANDROID Προγραμματισμός Εφαρμογών

Διπλωματική Εργασία. Μουσικές Εφαρμογές σε Περιβάλλον Κινητών Συσκευών Android με Χαρακτηριστικά Εξατομίκευσης

Ανάπτυξη διαδικτυακής εφαρμογής σε περιβάλλον κινητών συσκευών με λειτουργικό σύστημα Android

Python και Android. Νίκος Νοδαράκης. 17 Μαΐου 2010

Ενότητα 1η. Εισαγωγή στην Πληροφορική

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Digital Academy. Εισαγωγή στην ανάπτυξη Android Εφαρμογών

Ο Οδηγός γρήγορης εκκίνησης

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Μάθημα 4ο. Προγράμματα

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΙΣΤΟΣΕΛΙΔΩΝ ΜΕΛΩΝ ΔΕΠ, ΤΜΗΜΑΤΟΣ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΑΤΡΩΝ ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΠΛΟΗΓΗΣΗΣ ΚΑΙ ΧΡΗΣΗΣ

Η Πράξη συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (ΕΤΠΑ) κατά 80% και από εθνικούς πόρους της Ελλάδας και της Κύπρου κατά 20% Μ Ε Λ Ε Τ Η

1. Κατάλογος συσκευασίας

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης

Απαντήστε στις παρακάτω ερωτήσεις πολλαπλής επιλογής (μόνο μία ερώτηση είναι σωστή):

Εισαγωγή στην Πληροφορική

Βιωματικό εργαστήριο ηλεκτρονικών υπολογιστών. Οργάνωση εκπαιδευτικού υλικού με Η/Υ από δραστηριότητες στο Δημοτικό και στο Νηπιαγωγείο.

Εισαγωγή 6. Δημιουργία λογαριασμού 13. Εγκατάσταση και λειτουργία του Skype 28. Βασικές λειτουργίες 32. Επιλογές συνομιλίας 48

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Εισαγωγή Επαφών από την κάρτα SIM

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα

Η εφαρμογή είναι βελτιστοποιημένη για όλες τις συσκευές ios και Android, με ios 9.x ή νεότερη έκδοση και Android 4.4 ή νεότερη έκδοση.

QEMS TUTORIAL CRM. Οδηγίες για το νέο πρωτοποριακό πρόγραμμα της QEMS.

1. Κατάλογος συσκευασίας

1. ΕΙΣΑΓΩΓΗ 2. ΠΕΡΙΓΡΑΦΗ

ΠΛΑΤΦΟΡΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΝΤΕΟΔΙΑΛΕΞΕΩΝ ΔΗΛΟΣ delos.uoa.gr. Εγχειρίδιο Χρήσης Μελών ΔΕΠ

ΠΡΟΛΟΓΟΣ. Σε ποιους απευθύνεται αυτό το βιβλίο... vi Διάρθρωση του βιβλίου... vi

Επιμέλεια: Μαργαρίτα Ρουγγέρη Επιβλέπων: Γεώργιος Στυλιαράς Πληροφορική Πολυμέσα ΓΤΠ61 4 η Εργασία 2011

Κατασκευή Ιστολόγιου

Αναζήτηση στον Ιστό. Πληκτρολόγηση του URL: στο πλαίσιο αναζήτησης του Mozilla Firefox. Enter ή κλικ στο Αναζήτηση

Atlantis - Νέο user interface

Ολοκληρωμένες Δράσεις προβολής δημοσιότητας για το Δήμο Αρχανών Αστερουσίων Εγχειρίδιο Χρήσης - Παρουσίαση

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Οδηγίες Προγραμματισμού- Λειτουργίας για το Ολοκληρωμένο WiFi Σύστημα Συναγερμού YL- WΜ2FX

Οδηγός γρήγορης εκκίνησης

Επικοινωνία Ανθρώπου- Υπολογιστή Σχεδίαση Αλληλεπίδρασης Ενότητα: 8 η

Cloud Computing with Google and Microsoft. Despoina Trikomitou Andreas Diavastos Class: EPL425

ΠΑΡΑΡΤΗΜΑ ΓΡΕΒΕΝΩΝ ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΣΙΑΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Θεσσαλονίκη Alert - Αναλυτική παρουσίαση εφαρμογής

Κατασκευή δικτυακής εφαρμογής στην αρχιτεκτονική ios iphone που υλοποιεί ένα παιχνίδι ερωτοαπαντήσεων

Κεφάλαιο 2.3: Ρυθμίσεις των Windows

ΚΕΦΑΛΑΙΟ 10. Υπηρεσίες και εφαρμογές Διαδικτύου. ΚΕΦΑΛΑΙΟ 10 Υπηρεσίες και εφαρμογές Διαδικτύου. Α Γενικού Λυκείου

Νεογεωγραφία και Χαρτογραφική Διαδικτυακή Απεικόνιση. Η χρήση Ελεύθερων Γεωγραφικών Δεδομένων και Λογισμικού Ανοιχτού Κώδικα σε Φορητές Συσκευές.

Σχεδιασμός και Υλοποίηση ενός πληροφοριακού συστήματος για τους τεχνικούς του φυσικού αερίου

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

H διασύνδεση του αυτοκινήτου με τον έξω κόσμο είναι ο πιο γρήγορα αναπτυσσόμενος τομέας στη σύγχρονη αυτοκινητοβιομηχανία. Με το Sensus η Volvo παρείχ

Κουμπί επαναφοράς (RESET BUTTON) Οπές εγκατάστασης συσκευής στην επιτοίχια βάση

Κεφάλαιο 1 Συναντώντας τις Τεχνολογίες του Σήμερα. Ενισχυμένη Έκδοση 2017

Επίλεξε το Πρόγραμμα που θες. 2play. 2play. 2play. 2play. 2play. 2play. 2play. 2play. 3play

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σχεδιαστικά Προγράμματα Επίπλου

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Π.Σ. ΦΟΙΤΗΤΟΛΟΓΙΟΥ- ΓΙΑ ΤΟ ΔΙΔΑΣΚΟΝΤΑ (ClassWeb)

ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE)

ΔΗΜΙΟΥΡΓΙΑ ΚΑΙ ΠΑΡΑΓΩΓΗ ΔΙΑΦΗΜΙΣΗΣ

Gmail: Η προσέγγιση της Google στο ηλεκτρονικό ταχυδρομείο

Αντικειμενοστρεφής Προγραμματισμός

Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ , Ελλάδα, Τηλ Φαξ

ΟΔΗΓΟΣ ΓΡΗΓΟΡΗΣ ΕΝΑΡΞΗΣ

Εγχειρίδιο Διαχειριστή. (Υπηρεσία Ενημέρωσης για Εκπαιδευτικές και Πολιτισμικές Δράσεις)

Οδηγός Γρήγορης Εκκίνησης YOOSEE & YYP2P

EdoorLock Programmer. EdoorLock Programmer_App.doc

Εγχειρίδιο Διαχειριστή. (Υπηρεσία Αναζήτησης Συνεπιβατών)

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

Κεφάλαιο 3 Λειτουργικά Συστήματα Β ΕΠΑΛ

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ

Αντίγραφα ασφαλείας και επαναφορά Οδηγίες χρήσης

Κωνσταντίνος Παρασκευόπουλος Καθηγητής Πληροφορικής (ΠΕ19 MSc) Ελληνικό Κολλέγιο Θεσσαλονίκης

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Speed-0 WMP: Web and Mobile Platform Software Requirements Specification

ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΠΑΙΧΝΙΔΙ.

Σύντομος οδηγός χρήσης Vodafone Mobile Wi-Fi R209-Z

Οδηγός Εγκατάστασης και Λειτουργίας Έξυπνου Ασύρματου κουδουνιού πόρτας ZV400P. Εμπρόσθια Όψη Κουδουνιού. Ανιχνευτής κίνησης. Υπέρυθρος ανιχνευτής

Σύντομος οδηγός χρήσης Vodafone Mobile Wi-Fi R207

Το λειτουργικό σύστημα. Προγραμματισμός II 1

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ

Παραδείγματα Δεδομένων: Οι τιμές στο κυλικείο, μια λίστα από ονόματα, τα σήματα της τροχαίας.

ΨΗΦΙΑΚΗ ΑΛΛΗΛΕΓΓΥΗ ΟΔΗΓΟΣ

Atlantis - Νέο user interface

Οδηγίες Χρήσης Ασύρματης Φορητής WiFi Κάμερας

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Ανάπτυξη εφαρμογής προμήθειας εισιτηρίων σε κινηματογράφο με χρήση της πλατφόρμας Android


Κεφάλαιο 4. Διδακτικοί Στόχοι. Για την αναγκαιότητα, τον τρόπο συνεργασίας, τις δυνατότητες και τον τρόπο εγκατάστασης των περιφερειακών συσκευών.

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

Δομή. 1 Πλήκτρα αυξομείωσης έντασης ήχου 7 Ηχεία 2 Θύρα Φόρτιση. 8 Πλήκτρο Home 3 Θύρα MicroUSB. 9 Είσοδος Κάρτας SD. 6 Μπροστινή κάμερα

Copyright 2016 HP Development Company, L.P.

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Προγραμματισμός Διαδικτύου

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5

ΟΛΟΚΛΗΡΩΜΕΝΟ ΣΥΣΤΗΜΑ ΤΗΛΕΚΑΤΑΡΤΙΣΗΣ E-AGIOGRAFIA

Οδηγίες Χρήσεως Ψηφιακού Αποθετηρίου Ιστοριών στην Ελληνική Νοηματική Γλώσσα (ΕΝΓ)

Σύστημα Διαχείρισης, Ελέγχου και Παρακολούθησης Ασθενοφόρων και Περιστατικών

Συστήματα πανταχού παρόντος υπολογιστή σε περιβάλλοντα υβριδικών βιβλιοθηκών

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΗΛΕΚΤΡΟΝΙΚΗΣ & ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΕΥΝΗΤΙΚΗ ΟΜΑΔΑ ΑΛΛΓΛΕΠΙΔΡΑΣΗΣ ΑΝΘΡΩΠΟΥ-ΥΠΟΛΟΓΙΣΤΗ Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών Γεωργίου Εμμανουήλ Καλλέργη Αριθμός Μητρώου: 5973 Θέμα «Ανάπτυξη Εφαρμογών σε Περιβάλλον Android» Επιβλέπων Νικόλαος Αβούρης, Καθηγητής Αριθμός Διπλωματικής Εργασίας: Πάτρα, Ιούνιος 2013

ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η Διπλωματική Εργασία με θέμα «Ανάπτυξη Εφαρμογών σε Περιβάλλον Android» Του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Γεωργίου Εμμανουήλ Καλλέργη Αριθμός Μητρώου: 5973 Παρουσιάστηκε δημόσια και εξετάστηκε στο Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις 11/06/2013 Ο Επιβλέπων Ο Διευθυντής του Τομέα

Αριθμός διπλωματικής εργασίας: Θέμα: «Ανάπτυξη Εφαρμογών σε Περιβάλλον Android» Περίληψη Το αντικείμενο της παρούσας διπλωματικής είναι η μελέτη της διαδικασίας ανάπτυξης εφαρμογών για το λειτουργικό σύστημα Android. Το λειτουργικό σύστημα Android αποτελεί μια τεχνολογία η οποία μέρα με την μέρα κερδίζει μεγαλύτερο μερίδιο στην αγορά των έξυπνων τηλεφώνων. Σήμερα, κατέχει την πρώτη θέση με τετρακόσια εκατομμύρια ενεργές συσκευές. Το γεγονός αυτό καθιστά την αγορά των εφαρμογών Android μία πολλά υποσχόμενη περιοχή για ανάπτυξη επιχειρηματικής δραστηριότητας. Η μελέτη ξεκινά με μία γενική επισκόπηση του κόσμου του Android καθώς και των εργαλείων που είναι απαραίτητα για την ανάπτυξη εφαρμογών σε αυτόν. Στην συνέχεια γίνεται μία σύντομη ανάλυση της δομής του λειτουργικού συστήματος και τον τμημάτων που το αποτελούν καθώς και μία παρουσίαση των βασικών αρχών σχεδίασης διεπαφών χρήστη. Τέλος παρουσιάζονται μερικές βασικές προγραμματιστικές δομές που είναι απαραίτητες για την συγγραφή εφαρμογών και παρουσιάζεται η διαδικασία υποβολής μίας εφαρμογής στην Google προς πώληση. Για την καλύτερη εξοικείωση του αναγνώστη γίνεται παρουσίαση τεσσάρων απλών εφαρμογών που χρησιμοποιούν τις προγραμματιστικές δομές που αναλύονται στο κείμενο. Καλωσορίσατε στον κόσμο του ANDROID!

i Πίνακας Περιεχομένων 1. Εισαγωγή 1 1.1. Γιατί Android;.........................................1 1.2. Το υλικό.............................................4 1.3. Η Αρχιτεκτονική....................................... 6 1.3.1. Το επίπεδο του πυρήνα του Linux.......................... 7 1.3.2. Το επίπεδο των βασικών βιβλιοθηκών........................ 8 1.3.3. Το επίπεδο του Android Runtime.......................... 10 1.3.4. Το επίπεδο του Application Framework....................... 13 1.3.5. Το επίπεδο των εφαρμογών............................. 16 1.4. Το Android NDK.......................................17 1.5. Οι εκδόσεις του Android.................................. 19 1.5.1. Android 1.0...................................... 19 1.5.2. Android 1.1...................................... 21 1.5.3. Android 1.5 - Cupcake................................ 21 1.5.4. Android 1.6 - Donut................................. 22 1.5.5. Android 2.0/2.1 - Éclair............................... 23 1.5.6. Android 2.2 - Froyo.................................. 24 1.5.7. Android 2.3 Gingerbread.............................. 26 1.5.8. Android 3.0 Honeycomb.............................. 28 1.5.9. Android 4.0.x Ice Cream Sandwich........................ 30 1.5.10.Android 4.1 Jelly Bean............................... 30 1.6. Εργαλεία Ανάπτυξης.....................................32 1.6.1. Εγκατάσταση του Java Development Kit...................... 32 1.6.2. Εγκατάσταση του Eclipse IDE για Java....................... 41 1.6.3. Εγκατάσταση του Android SDK........................... 41 1.6.4. Εγκατάσταση του ADT (Android Development Tools) Plug-in για το Eclipse.. 46 1.6.5. Η εφαρμογή Hello World.............................. 48 2. Σχεδίαση Διεπαφής Χρήστη 61 2.1. Η σημασία της διεπαφής χρήστη..............................61 2.2. Φιλοσοφία σχεδίασης διεπαφών.............................. 62 2.3. Βασικές σχεδιαστικές οδηγίες............................... 65 2.4. Σχεδιαστικά μοτίβα..................................... 70 2.4.1. Χειρονομίες (Gestures)................................ 70 2.4.2. Δομή Εφαρμογών................................... 72 2.4.3. Πλοήγηση....................................... 76 2.4.4. Μπάρα ενεργειών.................................. 81 2.4.5. Ειδοποιήσεις..................................... 84

ii 3. Προγραμματιστικές Δομές 87 3.1. Αναπτύσσοντας εφαρμογές Android........................... 87 3.2. Οι πόροι των εφαρμογών.................................. 90 3.2.1. Τι είναι οι πόροι των εφαρμογών;.......................... 90 3.2.2. Παροχή πόρων.................................... 91 3.2.3. Ανάκτηση πόρων................................... 98 3.3. Ανάπτυξη διεπαφών χρήστη............................... 102 3.3.1. Java vs. XML.................................... 102 3.3.2. Στοιχεία οργάνωσης διεπαφής........................... 104 3.3.3. Στοιχεία αλληλεπίδρασης διεπαφής........................ 118 3.4. Ανάπτυξη λογικής εφαρμογών.............................. 127 3.4.1. Οι διαθέσιμες οντότητες στις εφαρμογές Android................ 127 3.4.2. Η οντότητα Activity σε βάθος........................... 130 3.4.3. Explicit και Implicit Intents............................ 140 3.4.4. Layout Infalters................................... 142 3.4.5. Async Tasks..................................... 143 3.4.6. Dialog και AlertDialog............................... 146 3.4.7. Toasts........................................ 149 3.4.8. Log.......................................... 150 4. Διανομή και πώληση εφαρμογών Android 151 4.1. Προετοιμασία........................................ 151 4.2. Εξαγωγή τελικού αρχείου και ψηφιακή υπογραφή................... 156 5. Case Studies 161 5.1. Intents............................................ 161 5.1.1. Περιγραφή..................................... 161 5.1.2. Κώδικας διεπαφής................................. 161 5.1.3. Κώδικας λογικής.................................. 162 5.1.4. Επίδειξη χρήσης.................................. 164 5.2. Χρήση των Manager.................................... 164 5.2.1. Περιγραφή..................................... 164 5.2.2. Κώδικας διεπαφής................................. 165 5.2.3. Κώδικας λογικής.................................. 166 5.2.4. Επίδειξη χρήσης.................................. 168 5.3. Web services και JSON.................................. 170 5.3.1. Περιγραφή..................................... 170 5.3.2. Κώδικας διεπαφής................................. 170 5.3.3. Κώδικας λογικής.................................. 171 5.3.4. Επίδειξη χρήσης.................................. 176

6. Επίλογος 179 6.1. Τελευταία λόγια...................................... 179 6.2. Βιβλιογραφία........................................ 180

Γιατί Android; 1 1. Εισαγωγή 1.1. Γιατί Android; Ξεκινώντας το ταξίδι μας στον κόσμο του Android καλό θα ήταν να δούμε γιατί αυτό αποτελεί μία ενδιαφέρουσα (ίσως και κερδοφόρα) επιλογή για κάποιον μηχανικό. Ποια είναι τα χαρακτηριστικά του λειτουργικού αυτού συστήματος που το κάνουν ελκυστικό και ποια είναι τα αρνητικά στοιχεία του που ίσως αποτρέψουν κάποιον από το να αναπτύξει εφαρμογές για αυτό. Προσπαθώντας να μην αποθαρρύνουμε τον αναγνώστη, θα ξεκινήσουμε με τα θετικά στοιχεία που καθιστούν το Android μια ελκυστική πλατφόρμα ανάπτυξης. Το Android αποτελεί ένα λειτουργικό σύστημα που συναντάται κυρίως σε ενσωματωμένα συστήματα όπως είναι τα κινητά τηλέφωνα, τα tablet αλλά και άλλες κινητές συσκευές. Το γεγονός ότι αυτές οι συσκευές συνήθως τροφοδοτούνται από μια μπαταρία τις κάνει να απαιτούν από το λειτουργικό σύστημα που διαθέτουν να είναι σχεδιασμένο ώστε να μην καταχράται τους πόρους του υλικού καθώς και να μην είναι ενεργοβόρο. Το Android είναι σχεδιασμένο έχοντας λάβει υπόψιν αυτούς ακριβώς τους περιορισμούς. Δεδομένου ότι το λειτουργικό σύστημα λειτουργεί βάση αυτής της φιλοσοφίας το ίδιο πρέπει να κάνουν και οι εφαρμογές που τρέχουν σε αυτό. Έτσι λοιπόν, έχουμε την εισαγωγή ενός νέου τρόπου σκέψης, κατά την διαδικασία ανάπτυξης, που πριν δεν υπήρχε. Ενώ μέχρι τώρα, τα προγράμματα που εκτελούνταν στους προσωπικούς μας υπολογιστές, είχαν στην διάθεσή τους «απεριόριστη» μνήμη και επεξεργαστική ισχύ πλέον αυτό παύει να ισχύει. Ο προγραμματιστής οφείλει να είναι προσεκτικός με τους πόρους που χρησιμοποιούν οι εφαρμογές του καθώς και με την διάρκεια για την οποία τους χρησιμοποιούν. Χάριν αυτού του χαρακτηριστικού ο προγραμματιστής αναπτύσσει έναν περισσότερο συγκροτημένο και προσεκτικό τρόπο σκέψης (ο οποίος κανονικά θα έπρεπε να είναι ο ενδεδειγμένος) για την ανάπτυξη κάθε είδους εφαρμογής ανεξαρτήτως υλικού και λειτουργικού συστήματος. Σαν πλατφόρμα κινητών συσκευών, το Android, ανήκει σε μια κατηγορία συστημάτων που καταλαμβάνουν ολοένα μεγαλύτερο μερίδιο στην πίτα της πρόσβασης στο διαδίκτυο. Κατά την συγγραφή του παρόντος κειμένου έχουν μετρηθεί μέγιστες τιμές πρόσβασης στο διαδίκτυο από κινητές συσκευές, που αγγίζουν το δέκα τοις εκατό του συνολικού αριθμού συσκευών που συνδέονται σε αυτό. Αν αναλογιστεί κανείς τον αριθμό των συσκευών στις οποίες αντιστοιχεί το ποσοστό αυτό σίγουρα θα καταλήξει στο συμπέρασμα ότι οι κινητές συσκευές θα αποτελέσουν στο μέλλον το κύριο μέσο με το οποίο οι χρήστες θα συνδέονται στο διαδίκτυο. Αναπτύσσοντας για το Android έχει κανείς την ευκαιρία να είναι μέρος αυτής της εξέλιξης και γιατί όχι, να την οδηγεί. Ο πυρήνας του Android είναι βασισμένος στον πολύ γνωστό και αρκετά δοκιμασμένο πυρήνα του Linux. Κληρονομώντας όλα τα χαρακτηριστικά ασφαλείας του Linux και όλες τις διαχειριστικές τεχνικές μνήμης και επεξεργαστή που αυτό διαθέτει, το Android, καθίσταται ένα αρκετά αξιόπιστο λειτουργικό σύστημα. Το Android, παρότι νέο σε ηλικία, φέρει μαζί του εμπειρία χρόνων

2 Εισαγωγή από την ανάπτυξη του πυρήνα του Linux. Επιπλέον, λόγω του ότι το Android αλλά και το Linux είναι λογισμικά ανοιχτού κώδικα, ο καθένας που το επιθυμεί, μπορεί να τα προσαρμόσει στις δικές του ανάγκες και στο δικό του υλικό. Αυτό είναι που κάνουν και οι διαφορετικές εταιρίες που παράγουν κινητές συσκευές που τρέχουν Android. Πέρα απ την δυνατότητα προσαρμογής του Android σε διαφορετικό υλικό, δίνεται η δυνατότητα στον προγραμματιστή να επέμβει και στο εσωτερικό των ανώτερων επιπέδων του λειτουργικού συστήματος (βλ. Η Αρχιτεκτονική του λειτουργικού συστήματος Android) αλλά ακόμη και να χτίσει πάνω σε αυτό. Χαρακτηριστικό παράδειγμα είναι οι διεπαφές χρήστη που προσφέρει κάθε εταιρία που παράγει συσκευές Android. Όντας ένα λειτουργικό σύστημα ανοιχτού κώδικα, το Android, δεν θα μπορούσε παρά να διαθέτει και ένα σύνολο εργαλείων ανάπτυξης που επίσης είναι ανοιχτού κώδικα ή διατίθενται δωρεάν. Με μηδενικό κόστος εργαλείων ανάπτυξης δίνεται η δυνατότητα σε οποιονδήποτε να δοκιμάσει την ανάπτυξη εφαρμογών για Android με μοναδικό ρίσκο τον χρόνο που θα επενδύσει για την εξοικείωσή του με το περιβάλλον. Επιπλέον, λόγο της μεγάλης διάδοσης των χρησιμοποιούμενων εργαλείων και τεχνολογιών στον τομέα της ανάπτυξης εφαρμογών γενικότερα, υπάρχει στο διαδίκτυο μια μεγάλη βάση βοήθειας για τα περισσότερα προβλήματα που θα συναντήσει κανείς στα πρώτα, και όχι μόνο, βήματα του με το Android. Όπως αναφέραμε, το Android αποτελεί μια πλατφόρμα που συναντάται σε κινητές συσκευές. Το μερίδιο του Android στην αγορά κινητών συσκευών αγγίζει, όπως φαίνεται στην Εικόνα 1,(κατά την συγγραφή του παρόντος κειμένου) το υψηλότατο ποσοστό του σαρανταοκτώ τοις εκατό έναντι του ios της Apple, του Blackberry και άλλων. Επομένως, με ασφάλεια μπορούμε να πούμε ότι αποτελεί το ποιο δημοφιλές λειτουργικό σύστημα κινητών συσκευών σήμερα. Αξίζει να σημειωθεί ότι καθημερινά ενεργοποιούνται περίπου εννιακόσιες χιλιάδες συσκευές Android παγκοσμίως! Εικόνα 1 Μερίδιο αγοράς του Android (Ιούλιος 2012)

Γιατί Android; 3 Τέλος, για όσους ενδιαφέρονται να βγάλουν κέρδος από την ανάπτυξη εφαρμογών για Android, αρκεί να σημειώσουμε ότι κάθε μήνα οι χρήστες των συσκευών Android εγκαθιστούν στις συσκευές τους ένα δισεκατομμύριο εφαρμογές συνολικά. Το Google Play, είναι ο βασικός πάροχος εφαρμογών για Android και σήμερα φιλοξενεί πάνω από μισό εκατομμύριο εφαρμογές. Το μεγάλο κοινό, ο εύκολος τρόπος δημοσίευσης εφαρμογών, τα εργαλεία διαφήμισης που προσφέρει η Google για τους προγραμματιστές εφαρμογών καθώς και το δελεαστικότατο ποσοστό πληρωμής του 70% (επί της τιμής της εφαρμογής) συνθέτουν ένα πακέτο που δύσκολα ένας έξυπνος και δημιουργικός προγραμματιστής θα του αντισταθεί. Η οικονομική επιτυχία σαφώς δεν είναι εγγυημένη αλλά η προσπάθεια μόνο θετικά αποτελέσματα μπορεί να έχει. Όσον αφορά στα αρνητικά στοιχεία, σαφώς και αυτά είναι υπαρκτά. Για προφανείς λόγους δεν θα επεκταθούμε σε αυτά αλλά θα αναφερθούμε συνοπτικά σε δυο. Το Android, όπως ήδη αναφέρθηκε είναι βασισμένο στον πυρήνα του Linux και αυτό του δίνει την δυνατότητα να τρέχει σε μια πληθώρα διαφορετικών συσκευών. Αυτό αυξάνει τον βαθμό δυσκολίας ανάπτυξης εφαρμογών γιατί πλέον ο προγραμματιστής πρέπει να λάβει υπ όψιν του κατά την σχεδίαση της διεπαφής χρήστη την μεγάλη ποικιλία μεγεθών και αναλύσεων που μπορεί η εφαρμογή του να συναντήσει. Τέλος, το περιβάλλον πώλησης εφαρμογών της Apple είχε πού μεγαλύτερο ποσοστό κέρδους από ότι το αντίστοιχο της Google (ενός δις έναντι εκατό εκατομμυρίων). Αυτό σημαίνει ότι οι χρήστες του ios παρότι λιγότεροι είναι περισσότερο πρόθυμοι να πληρώσουν για να αγοράσουν μια εφαρμογή. Αυτό καθιστά τις εφαρμογές για iphone περισσότερο πιθανές να αποφέρουν κέρδη. Εδώ φυσικά δεν πρέπει να ξεχνάμε ότι τα νούμερα αυτά αλλάζουν μέρα με την μέρα προς όφελος του Android και μόνο ο χρόνος θα δείξει ποιο λειτουργικό σύστημα θα επικρατήσει του άλλου. Προσωπική άποψη του συγγραφέα είναι ότι η μάχη θα συνεχίζεται επ αόριστο με τα δυο λειτουργικά να αναπτύσσονται και να βελτιώνονται συνεχώς.

4 Εισαγωγή 1.2. Το υλικό Όπως κάθε λειτουργικό σύστημα, έτσι και το Android, χρειάζεται κάποιο υλικό το οποίο θα του παράσχει τους απαραίτητους πόρους (μνήμη, επεξεργαστική ισχύ) για να μπορέσει να λειτουργήσει σωστά. Μπορούμε να σκεφτούμε το υλικό σαν το σώμα και το λογισμικό (στην περίπτωσή μας το λειτουργικό σύστημα) σαν το μυαλό του συστήματος. Τις πρώτες ημέρες των κινητών συσκευών οι διαθέσιμοι πόροι ήταν τρομερά περιορισμένοι. Οι πρώτες κινητές συσκευές παρείχαν μόνο την δυνατότητα πραγματοποίησης και λήψης τηλεφωνικών κλήσεων. Το μέγεθος τους ήταν αρκετά μεγαλύτερο απ ότι έχουμε συνηθίσει σήμερα και περιείχαν διακριτά ηλεκτρονικά ειδικά για τον σκοπό των λειτουργιών της ασύρματης τηλεφωνίας (Εικόνα 2). Είναι σαφές σε αυτό το σημείο ότι η έννοια του λειτουργικού συστήματος σε κινητή συσκευή δεν ήταν κάτι το εφικτό με τα τρέχοντα τεχνολογικά δεδομένα. Εικόνα 2 Μια απο τις πρώτες συσκευές κινητής τηλεφωνίας Με την συνεχή ανάπτυξη της μικροηλεκτρονικής και των τεχνικών σχεδίασης και κατασκευής ολοκληρωμένων κυκλωμάτων οι κινητές συσκευές άρχισαν σιγά-σιγά να αποκτούν χαρακτηριστικά που μέχρι τότε μόνο οι προσωπικοί υπολογιστές είχαν. Η εισαγωγή στις κινητές συσκευές μικροεπεξεργαστών και η ανάπτυξη λογισμικού για τον έλεγχο των λειτουργιών της συσκευής αποτέλεσαν την πρώτη μορφή λειτουργικού συστήματος που «έτρεχε» σε κινητή συσκευή. Σήμερα, μετά από αρκετά χρόνια μιας συνεχούς εξελικτικής πορείας της μικροηλεκτρονικής αλλά και των υπολογιστών έχουμε φτάσει σε σημείο να έχουμε επεξεργαστές για κινητές συσκευές που έχουν επιδόσεις που θα ζήλευε ένας προσωπικός υπολογιστής ηλικίας πέντε ετών. Οι τεχνικές σχεδίασης ολοκληρωμένων συστημάτων σε ένα και μόνο ολοκληρωμένο κύκλωμα έχουν δώσει

Το υλικό 5 την δυνατότητα κατασκευής επεξεργαστών που φέρουν περισσότερους του ενός πυρήνες. Συνηθισμένοι είναι πλέον οι τετραπύρηνοι επεξεργαστές αλλά και οι επεξεργαστές που εκτός από τους βασικούς επεξεργαστικούς πυρήνες φέρουν και πολλούς περισσότερους πυρήνες ειδικού σκοπού (επεξεργασία βίντεο, 3D γραφικών κ.λπ) όπως το ολοκληρωμένο σύστημα Tegra 3 της nvidia (Εικόνα 3). Εικόνα 3Το ολοκληρωμένο σύστημα Tegra 3 της nvidia Έχοντας στην διάθεσή μας τόση επεξεργαστική ισχύ, μπορούμε πλέον να υποστηρίξουμε αρκετά πιο πολύπλοκα λειτουργικά συστήματα που παρέχουν λειτουργικότητες πέρα από την απλή λήψη και πραγματοποίηση κλήσεων. Επιπλέον, οι σύγχρονες κινητές συσκευές, φέρουν μια πληθώρα περιφερειακών στοιχείων όπως πυξίδες, επιταχυνσιόμετρα, αισθητήρες προσέγγισης, αισθητήρες φωτός, Wi-Fi, κάμερες, GPS και άλλα τα οποία μπορούν να αξιοποιηθούν από το λειτουργικό σύστημα. Εδώ γίνεται εμφανές ότι η υπηρεσία που μια εφαρμογή θα παρέχει περιορίζεται μόνο από την φαντασία του προγραμματιστή.

6 Εισαγωγή 1.3. Η Αρχιτεκτονική Το Android είναι ένα λειτουργικό σύστημα. Σαν λειτουργικό σύστημα σκοπός του είναι να παρέχει ένα επίπεδο αφαιρετικότητας ανάμεσα στο υλικό και τον χρήστη. Με απλά λόγια ο ρόλος ενός λειτουργικού συστήματος είναι να δίνει την δυνατότητα στον χρήστη να χρησιμοποιεί τους πόρους του συστήματος προς όφελος του με μια διεπαφή περισσότερο κατανοητή προς τον άνθρωπο. Για να το καταφέρει αυτό, το Android, αποτελείτε από μία στοίβα λογισμικών τμημάτων (software stack) με ξεκάθαρους και αυστηρά καθορισμένους ρόλους (Εικόνα 4). Εικόνα 4 Η δομή της αρχιτεκτονικής του λειτουργικού συστήμταος Android Στο κατώτερο επίπεδο βρίσκεται ο πυρήνας του Linux. Ο πυρήνας του Linux είναι γνωστός για την μεγάλη ποικιλία αρχιτεκτονικών επεξεργαστών με τις οποίες είναι συμβατός. Χτίζοντας, λοιπόν, τα υπόλοιπα τμήματα του Android πάνω απ τον πυρήνα του Linux επιτυγχάνουμε την συμβατότητα του με μια ευρεία γκάμα αρχιτεκτονικών και άρα συσκευών που μπορούν να το υποστηρίξουν. Στο επίπεδο ακριβώς πάνω απ τον πυρήνα του Linux βρίσκονται οι βασικές βιβλιοθήκες του συστήματος. Εδώ βρίσκονται οι υλοποιήσεις για βιβλιοθήκες γραφικών, για συστήματα βάσεων δεδομένων, η βασική βιβλιοθήκη της γλώσσας προγραμματισμού C και άλλα. Όλες αυτές οι βιβλιοθήκες τρέχουν στον πυρήνα του Linux. Το επίπεδο αυτό προσφέρει τα απαραίτητα στοιχεία ώστε να είναι δυνατή η υλοποίηση του Android Runtime, του βασικού μηχανισμού, δηλαδή, που απαιτείται για την εκτέλεση των εφαρμογών που αναπτύσσονται για το περιβάλλον του Android.

Η Αρχιτεκτονική 7 Το Android Runtime περιλαμβάνει την εικονική μηχανή (virtual machine) που διερμηνεύει τις εφαρμογές Android καθώς και την υλοποίηση των βασικών βιβλιοθηκών της Java που προσφέρονται στον προγραμματιστή κατά την διαδικασία ανάπτυξης των δικών του εφαρμογών. Βασιζόμενο στο Android Runtime και στις βασικές βιβλιοθήκες του συστήματος, το προτελευταίο επίπεδο είναι το ονομαζόμενο Application Framework. Το επίπεδο αυτό προσφέρει στον προγραμματιστή μια πληθώρα δυνατοτήτων σχετιζόμενων με το λειτουργικό σύστημα και την συσκευή που το φιλοξενεί στο σύνολό τους, όπως πρόσβαση στα διάφορα περιφερικά της συσκευής, πρόσβαση σε λειτουργικότητες του ίδιου του λειτουργικού και άλλα. Τέλος, το ανώτερο επίπεδο της στοίβας είναι το επίπεδο όπου βρίσκονται οι εφαρμογές για το περιβάλλον του Android. Σε αυτό το επίπεδο αναπτύσσονται οι εφαρμογές που περιγράφονται στο παρόν κείμενο και εδώ μπορούν να αξιοποιηθούν όλες οι δυνατότητες που μας προσφέρουν τα δυο προαναφερθέντα επίπεδα. 1.3.1. Το επίπεδο του πυρήνα του Linux Το κατώτερο επίπεδο της λογισμικής στοίβας του Android είναι ο Πυρήνας του Linux. Η Google χρησιμοποίησε μια τροποποιημένη μορφή του πυρήνα του Linux έκδοσης 2.6 για το λειτουργικό σύστημα Android. Η επιλογή της αυτή είχε σαν αποτέλεσμα κάθε καινούρια έκδοση του πυρήνα που κυκλοφορούσε να πρέπει να προσαρμοστεί, αντίστοιχα με την έκδοση 2.6, πριν μπορέσουν οι χρήστες του Android να επωφεληθούν από τα νέα χαρακτηριστικά που τυχόν θα έχουν εισαχθεί. Με την έκδοση 3.3 του πυρήνα του Linux, έχει γίνει η πολυπόθητη από πολλούς συγχώνευση του κώδικα του Android. Πλέον τα νέα χαρακτηριστικά που εισάγονται στον πυρήνα γίνονται άμεσα διαθέσιμα και στο λειτουργικό σύστημα Android. Επιπλέον, ανοίγουν οι πόρτες για την εκτέλεση του Android ακόμη και σε προσωπικούς υπολογιστές. Εικόνα 5 Το επίπεδο του πυρήνα του Linux Ο πυρήνας του Linux (Εικόνα 5) δρα στην περίπτωση του Android ως το επονομαζόμενο επίπεδο αφαίρεσης υλικού (hardware abstraction layer). Χτίζοντας τα υπόλοιπα επίπεδα του Android πάνω απ τον πυρήνα του Linux διασφαλίζεται ένα πολύ σημαντικό χαρακτηριστικό για το λειτουργικό αυτό σύστημα. Πλέον, αν κάποιος κατασκευαστής κινητών συσκευών επιθυμεί να διαθέσει τις συσκευές του με το λειτουργικό σύστημα Android το μόνο που χρειάζεται, θεωρητικά, να κάνει είναι να υλοποιήσει τους οδηγούς που απαιτούνται για τα περιφερικά που διαθέτει κάθε

8 Εισαγωγή συσκευή του. Όλα τα υπόλοιπα επίπεδα της στοίβας μπορούν να μείνουν ως έχουν μιας και αυτά βασίζονται αποκλειστικά στο κατώτατο επίπεδο του πυρήνα του Linux και καθόλου στο υπάρχον υλικό (εξ ου και η ονομασία επίπεδο αφαίρεσης υλικού). Στο επίπεδο αυτό ανήκουν οι οδηγοί για την οθόνη, για τις κάρτες μνήμης που μπορεί να διαθέτει η εκάστοτε συσκευή, για τον ήχο, για το υποσύστημα ασύρματης σύνδεσης στο διαδίκτυο (Wi-Fi), για την κάμερα και για όποιο άλλο περιφερειακό συναντάμε σήμερα στις σύγχρονες κινητές συσκευές. Εκτός από το επίπεδο αφαιρετικότητας που προσφέρει ο πυρήνας, το Android, επωφελείται και από τις μεθόδους διαχείρισης μνήμης, διαχείρισης ενέργειας και διαχείρισης διεργασιών που ακολουθεί το Linux. Οι παραπάνω μέθοδοι έχουν τροποποιηθεί για να χρησιμοποιηθούν στο Android κυρίως γιατί το Android αποτελεί ένα λειτουργικό σύστημα το οποίο καλείτε να τρέξει σε κινητές συσκευές οι οποίες εξ ορισμού έχουν περιορισμένους πόρους. Οι αλλαγές που έχουν γίνει μπορούν να κατηγοριοποιηθούν σε: διορθώσεις σφαλμάτων του πυρήνα, προσθήκες για βελτίωση της αποδοτικότητας στο πεδίο του χρήστη (kernel space), εισαγωγή νέων δομών διαχείρισης και επέκταση της υποστήριξης σε νέες αρχιτεκτονικές (msm7k, msm8k, nvidia Tegra κ.λπ). 1.3.2. Το επίπεδο των βασικών βιβλιοθηκών Οι βασικές βιβλιοθήκες του συστήματος (Εικόνα 6) είναι αυτές που παρέχουν τις βασικές λειτουργικότητες όπως αυτή των γραφικών, του ήχου και άλλες. Οι βιβλιοθήκες που βρίσκονται σε αυτό το επίπεδο είναι ουσιαστικά βιβλιοθήκες υλοποιημένες στην γλώσσα προγραμματισμού C ή C++ και τρέχουν, όπως αναφέραμε, πάνω στον πυρήνα του Linux (Εικόνα 5). Εικόνα 6 Το επίπεδο των βασικών βιβλιοθηκών του συστήματος Μια από τις βιβλιοθήκες του επιπέδου αυτού είναι ο διαχειριστής σχεδιαστικών επιφανειών (surface manager). Ο ρόλος του διαχειριστή αυτού είναι η διαχείριση των σχεδιαστικών επιφανειών (drawable surfaces). Μια σχεδιαστική επιφάνεια μπορεί να είναι η οθόνη μιας συσκευής ή ακόμη και η περιοχή της μνήμης που έχει δεσμευθεί προκειμένου να κρατήσει τα δεδομένα προς

Η Αρχιτεκτονική 9 απεικόνιση πριν αυτά μεταφερθούν στην πραγματική οθόνη για προβολή. Η διαχείριση των σχεδιαστικών επιφανειών έχει να κάνει με την διαχείριση των παραθύρων των εφαρμογών καθώς και με τον τρόπο με τον οποίο αυτές εμφανίζονται στην οθόνη της συσκευής. Ο διαχειριστής σχεδιαστικών επιφανειών σε συνδυασμό με τον διαχειριστή παραθύρων (window manager), που βρίσκεται στο επόμενο επίπεδο της στοίβας, είναι υπεύθυνος για την λεγόμενη σύνθεση των παραθύρων των εφαρμογών ανάλογα με την διάταξη που αυτές έχουν στην οθόνη. Πιο συγκεκριμένα, αποφασίζουν με ποια σειρά θα σχεδιαστούν τα παράθυρα των εφαρμογών προκειμένου να επικαλύπτονται με την σωστή αλληλουχία ανάλογα με τις επιλογές του χρήστη. Επιπλέον, αν κάποια παράθυρα είναι ημιδιαφανή τότε τα παράθυρα που βρίσκονται από πίσω τους πρέπει να είναι μερικώς ορατά και αυτό είναι επίσης δουλειά των διαχειριστών αυτών. Μένοντας στον κομμάτι των γραφικών και συμπεριλαμβάνοντας τον ήχο, στο τρέχον επίπεδο βρίσκεται το ονομαζόμενο Media Framework του Android. Σε όλες τις σύγχρονες συσκευές αυτό αποτελεί την καρδιά του συστήματος από την άποψη ότι είναι υπεύθυνο για την σωστή αναπαραγωγή ήχου και βίντεο σε μια συσκευή, των δυο πιο δημοφιλών τύπων πολυμέσων σήμερα. Στο συγκεκριμένο framework βρίσκονται όλες οι διαθέσιμες ρουτίνες για την κωδικοποίηση (ή αποκωδικοποίηση) του ήχου και του βίντεο σε (ή από) τα διάφορα φορμάτ που αυτά είναι διαθέσιμα. Φορμάτ ήχου όπως AAC, AC-3, AMR, AMR-WB, MP2, MP3, OGG Vorbis, WMA, RealAudio και ALAC αλλά και φορμάτ βίντεο όπως MPEG1, MPEG2, MPEG4, H.264, VC-1, VC-2, VC-3 όλα μπορούν να αναπαραχθούν από το Android. Βασικό μέρος της εργασίας της συγκεκριμένης βιβλιοθήκης είναι και η διαχείριση μνήμης που απαιτείται κατά την διαδικασία κωδικοποίησης ή αποκωδικοποίησης. Επιπλέον, εδώ λαμβάνεται η απόφαση αν θα χρησιμοποιηθεί η πλήρως λογισμική υλοποίηση ενός κωδικοποιητή (ή αποκωδικοποιητή) ή αν η κωδικοποίηση (ή αποκωδικοποίηση) θα υποβοηθηθεί από το υπάρχον υλικό (αν αυτό υποστηρίζει τέτοια δυνατότητα). Δυο πολύ σημαντικές βιβλιοθήκες στο επίπεδο αυτό είναι η υλοποίηση του προτύπου OpenGL ES και του SGL. Οι δυο αυτές βιβλιοθήκες προσφέρουν την δυνατότητα, στα παραπάνω επίπεδα της στοίβας, σχεδίασης τρισδιάστατων και δισδιάστατων γραφικών αντίστοιχα. Τα πρότυπα αυτά είναι αρκετά εξειδικευμένα και γιαυτό δεν θα επεκταθούμε περισσότερο στο πως αυτά λειτουργούν και τι δυνατότητες δίνουν σε κάποιον που αναπτύσσει εφαρμογές για Android. Παρόλα αυτά, αξίζει να σημειωθεί ότι και εδώ, όπως και στην περίπτωση του Media Framework, αν υπάρχει διαθέσιμη υποβοήθηση από το υλικό τότε αυτή χρησιμοποιείται, ειδάλλως γίνεται χρήση της πλήρους λογισμικής υλοποίησης του κάθε προτύπου. Παρότι το Android θα μπορούσε να χρησιμοποιήσει μια απ τις δυο βιβλιοθήκες γραφικών που διαθέτει για να αποτυπώσει γραμματοσειρές στην οθόνη, επέλεξε να συμπεριλάβει στο επίπεδο αυτό, μια βιβλιοθήκη αποκλειστικά για τον σκοπό αυτό. Αυτή είναι η βιβλιοθήκη FreeType και παρέχει την δυνατότητα για αποτύπωση γραμματοσειρών που αναπαρίστανται από απλά bitmaps

10 Εισαγωγή (raster fonts) αλλά και γραμματοσειρών που περιγράφονται μαθηματικά με καμπύλες Bezier (vector fonts). Μια σημαντική διαφορά μεταξύ των δυο τύπων γραμματοσειρών είναι η ικανότητα μεγέθυνσης που η κάθε μια έχει. Στην περίπτωση των bitmap γραμματοσειρών, η αύξηση του μεγέθους ενός γράμματος σημαίνει εκ νέου τοποθέτηση των εικονοστοιχείων που το αποτελούν στο νέο μέγεθος και στην συνέχεια προσέγγιση (interpolation) των εικονοστοιχείων που λείπουν, ενδιάμεσα, με μαθηματικούς υπολογισμούς. Το αποτέλεσμα μετά από αρκετά μεγάλη μεγέθυνση είναι το γνωστό σε όλους πιξέλιασμα των γραμμάτων. Στην αντίθετη περίπτωση των διανυσματικών γραμματοσειρών, η μόνη διαθέσιμη πληροφορία για κάθε γράμμα είναι τα σημεία που ορίζουν τις καμπύλες Bezier που συνθέτουν την τελική εμφάνιση του γράμματος. Όλα τα υπόλοιπα εικονοστοιχεία υπολογίζονται κατά την σχεδίαση του γράμματος. Έτσι η ποιότητα απεικόνισης μιας διανυσματικής γραμματοσειράς δεν μειώνεται καθώς αυξάνουμε το μέγεθός της. Επειδή στις εφαρμογές για Android συνήθως γίνεται επεξεργασία και αποθήκευση μεγάλου όγκου πληροφοριών το λειτουργικό σύστημα παρέχει μια βιβλιοθήκη που μπορεί να χρησιμοποιηθεί σαν ένα σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων. Με τον όρο σχεσιακή βάση δεδομένων εννοείται μία συλλογή δεδομένων οργανωμένη σε συσχετισμένους πίνακες που παρέχει ταυτόχρονα ένα μηχανισμό για ανάγνωση, εγγραφή, τροποποίηση ή και πιο πολύπλοκες διαδικασίες πάνω στα δεδομένα. Στην συγκεκριμένη υλοποίηση έχει επιλεχθεί η γνωστή SQLite η οποία αποτελεί μια από τις πιο διαδεδομένες μηχανές παγκοσμίως και είναι, φυσικά, ανοιχτού κώδικα. Μια άλλη πολύ σημαντική βιβλιοθήκη στο επίπεδο αυτό είναι η μηχανή διάταξης γραφικών (layout engine) WebKit. Ο ρόλος της μηχανής αυτής είναι να δώσει την δυνατότητα σε έναν περιηγητή του διαδικτύου να απεικονίσει τις σελίδες που ο χρήστης επισκέπτεται με γραφικό τρόπο έχοντας στην διάθεσή του τον κώδικα HTML που το παρέχει ο ιστότοπος. Η WebKit είναι μια πολύ γνωστή μηχανή διάταξης γραφικών εδώ και αρκετά χρόνια γιατί είναι η μηχανή που χρησιμοποιεί ο περιηγητής της Apple, ο Safari. Τέλος, η Google υλοποίησε την βασική βιβλιοθήκη της C (libc) με στόχο την μείωση της απαιτούμενης μνήμης από αυτήν και έχει συμπεριλάβει μια βιβλιοθήκη που υλοποιεί το OpenSSL πρότυπο για την διαχείριση πιστοποιητικών κατά την δημιουργία ασφαλών συνδέσεων με απομακρυσμένους εξυπηρετητές. 1.3.3. Το επίπεδο του Android Runtime Οι εφαρμογές του περιβάλλοντος Android καθώς και πολλές από τις βιβλιοθήκες υψηλού επιπέδου (στο επίπεδο του Application Framework) είναι γραμμένες στην γλώσσα προγραμματισμού Java. Ως γνωστόν προγράμματα που είναι γραμμένα σε αυτήν την γλώσσα απαιτούν την ύπαρξη ενός διερμηνευτή Java για την εκτέλεσή τους. Στο Android δεν έχει χρησιμοποιηθεί ο τυπικός Java διερμηνευτής για ενσωματωμένα συστήματα Java ME αλλά υλοποιήθηκε ένας διερ-

Η Αρχιτεκτονική 11 μηνευτής ειδικά για το Android που είναι βελτιστοποιημένος για μικρά ενσωματωμένα συστήματα με περιορισμένους πόρους (απαιτεί ένα ελάχιστο 64MB μνήμης). Το χαρακτηριστικό αυτό του Android το διαφοροποιεί από όλα τα άλλα ανταγωνιστικά λειτουργικά συστήματα κινητών συσκευών που χρησιμοποιούν γλώσσες όπως C, C++ και Objective C. Στο επίπεδο του Android Runtime βρίσκονται και οι βασικές βιβλιοθήκες της Java οι οποίες όμως είναι γραμμένες ειδικά για τον διερμηνευτή του Android (Εικόνα 7). Εικόνα 7 Το επίπεδο του Android Runtime Το όνομα του διερμηνευτή του Android είναι Dalvik (Εικόνα 7) και ονομάστηκε έτσι από τον προγραμματιστή που τον ανέπτυξε. Κάθε εφαρμογή στο Android εκτελείτε σε ένα δικό της στιγμιότυπο του Dalvik απομονώνοντας την από τις υπόλοιπες εφαρμογές διασφαλίζοντας έτσι την ευστάθεια και την ασφάλεια του λειτουργικού συστήματος. Τα αρχεία με τα bytecodes που παράγονται για εκτέλεση από τον Dalvik είναι αρκετά μικρότερα από τα αντίστοιχα Java bytecodes που παράγονται για εκτέλεση στον JVM (Java Virtual Machine) μειώνοντας έτσι σημαντικά τον χώρο που απαιτεί κάθε εφαρμογή για την εγκατάστασή της. Τα αρχεία εγκατάστασης των εφαρμογών έχουν την κατάληξη.apk και περιέχουν τα αρχεία.dex, που περιέχουν τα bytecodes προς εκτέλεση από τον Dalvik, καθώς και διάφορα συνοδευτικά αρχεία που η κάθε εφαρμογή χρειάζεται (εικόνες, ήχους κ.λπ). Προκειμένου τα.dex αρχεία να είναι μικρά τυχόν δεδομένα που εμφανίζονται πολλές φορές στις κλάσεις μιας εφαρμογής αποθηκεύονται μονάχα μία φορά και όπου χρειάζεται δημιουργούνται αναφορές σε αυτά. Κατά την εκτέλεση των εφαρμογών στο Android πρέπει να γίνει επαλήθευση της δομής του.dex αρχείου και να εκτελεστούν κάποιες βελτιστοποιήσεις που αφορούν το μέγεθος του και την πολυπλοκότητα του κώδικά του. Το εργαλείο dexopt είναι αυτό που πραγματοποιεί τις παραπάνω βελτιστοποιήσεις. Η διαδικασία επαλήθευσης ορθότητας της εφαρμογής είναι γενικά χρονοβόρα διαδικασία και απαιτείται να γίνει μόνο μια φορά εκτός και αν τα αρχεία της εφαρμογής αλλάξουν (λόγο αναβάθμισης της εφαρμογής ή επανεγκατάστασης της). Στο Android, ο απαιτούμενος έλεγχος, προτιμάται να γίνεται κατά την εγκατάσταση της εφαρμογής προκειμένου να μειωθεί ο χρόνος της πρώτης εκκίνησης της εφαρμογής από τον χρήστη. Το εργαλείο dexopt για να επαλη-

12 Εισαγωγή θεύσει την ορθότητα της δομής των αρχείων.dex τα φορτώνει σε ένα στιγμιότυπο του διερμηνευτή και ελέγχει όλες τις εντολές, όλων των κλάσεων που αυτό περιέχει προκειμένου να εντοπίσει προβληματικές δηλώσεις πριν αυτές δημιουργήσουν πρόβλημα στην εκτέλεση της εφαρμογής. Στο τέλος της διαδικασίας δημιουργεί ένα άθροισμα ελέγχου (checksum) και το αποθηκεύει στο αρχείο. Έκτος από τον έλεγχο δομικής ορθότητας των αρχείο, το dexopt, πραγματοποιεί και κάποιες βελτιστοποιήσεις που σαν σκοπό έχουν την αύξηση των επιδόσεων της εφαρμογής μέσω της μείωσης του μεγέθους και της πολυπλοκότητας του κώδικα της. Η διαδικασία βελτιστοποίησης είναι άρρηκτα συνδεδεμένη με την εκάστοτε έκδοση του διερμηνευτή και γιαυτό δεν μπορούν να πραγματοποιηθούν αλλού παρά μόνο στην συγκεκριμένη συσκευή που εγκαθίσταται η εφαρμογή. Για την μείωση του μεγέθους του κώδικα τυχόν άδειες μέθοδοι αντικαθίστανται από εντολές μη ενέργειας (nop instaructions) και συχνά χρησιμοποιούμενες μέθοδοι γίνονται inline κερδίζοντας έτσι τον χρόνο που απαιτείται για την διαδικασία κλήσης μιας μεθόδου. Επιπλέον, για να πετύχει καλύτερη εκμετάλλευση της βοηθητικής μνήμης του επεξεργαστή (cache memory), τύποι δεδομένων που έχουν μέγεθος μικρότερο των 32bit συγχωνεύονται σε λέξεις των 32bit. Επιπλέον των βελτιστοποιήσεων και ελέγχων που γίνονται στο αρχείο.dex το Android Runtime περιβάλλον προσπαθεί να χειρίζεται την μνήμη με όσο το δυνατόν καλύτερο τρόπο. Στον Dalvik υπάρχουν τμήματα μνήμης που είναι κοινά και άλλα που ανήκουν μονάχα στην εκάστοτε εφαρμογή. Για την διαχείριση των κοινών τμημάτων μνήμης το Android χρησιμοποιεί το Zygote. Το Zygote είναι μια διεργασία που ξεκινά κατά την εκκίνηση του λειτουργικού συστήματος και είναι γονική διεργασία όλων των στιγμιότυπων του διερμηνευτή που ξεκινούν για εκτέλεση εφαρμογών. Το Zygote φορτώνει και αρχικοποιεί κλάσεις που χρησιμοποιούνται πολύ συχνά από τις εφαρμογές. Για παράδειγμα, τα.dex αρχεία των βιβλιοθηκών του συστήματος που είναι διαθέσιμες στις εφαρμογές. Ένας άλλος μηχανισμός του Android για σωστή διαχείριση μνήμης είναι ο συλλέκτης σκουπιδιών (garbage collector). Κάθε στιγμιότυπο του διερμηνευτή έχει τον δικό του συλλέκτη και άρα η περιοχή μνήμης που έχει στην διάθεσή του καθαρίζεται ανεξάρτητα από τους άλλους διερμηνευτές. Κύριος ρόλος του συλλέκτη είναι να ελευθερώνει περιοχές μνήμης που καταλαμβάνονται από δεδομένα που δεν θα χρειαστούν ξανά κατά την πορεία εκτέλεσης του της εφαρμογής. Τέλος, ένα σημαντικό χαρακτηριστικό του Android Runntime είναι η ύπαρξη του JIT (Just in Time) μεταφραστή. Ο JIT έχει σαν σκοπό την μετάφραση από bytecodes σε κώδικα μηχανής προκειμένου να αυξηθεί η ταχύτητα εκτέλεσης των αντίστοιχων τμημάτων της εφαρμογής. Υπάρχουν δυο ειδών μεταφραστές αυτής της κατηγορίας, οι βασισμένοι σε μεθόδους (method based) και οι βασισμένοι σε ακολουθίες εκτέλεσης (trace based). Οι πρώτοι μεταφράζουν ολόκληρες μεθόδους από τον εκτελούμενο κώδικα σε γλώσσα μηχανής πριν την εκτέλεσή τους ενώ οι δεύτεροι μεταφράζουν ένα σύνολο εντολών που ανήκουν σε ένα κοινό δρόμο εκτέλεσης. Λόγο περιορισμών

Η Αρχιτεκτονική 13 μνήμης στο Android ο JIT μεταφραστής που χρησιμοποιήθηκε είναι βασισμένος σε ακολουθία εκτέλεσης και έχει περιορισμό σε ένα βάθος εκατό εντολών. Ο μεταφραστής και ο διερμηνευτής λειτουργούν αρμονικά σε ένα αυστηρά καθορισμένο περιβάλλον συνεργασίας. Σε περίπτωση εμφάνισης κάποιου σφάλματος στον κώδικα που κατασκεύασε ο μεταφραστής, ο διερμηνευτής αναλαμβάνει να επαναφέρει την εκτέλεση στην κατάσταση που ήταν πριν αναμιχθεί ο μεταφραστής και να εκτελέσει τον κώδικα ξανά χωρίς την βοήθεια του τελευταίου. Ο μηχανισμός αυτός επεκτείνεται και δίνει την δυνατότητα παράλληλης εκτέλεσης (κώδικα JIT και διερμηνευόμενου κώδικα) με σκοπό την επιβεβαίωση της ορθής λειτουργίας του παραγόμενου από τον μεταφραστή κώδικα. Οι πρώτες εκδόσεις του JIT μεταφραστή παρήγαν κώδικα μόνο για την αρχιτεκτονική ARM, καθώς η εξέλιξη του Android προχωράει θα δούμε μεταφραστές αυτού του είδους που θα παράγουν κώδικα για μια μεγαλύτερη γκάμα διαθέσιμων επεξεργαστών. 1.3.4. Το επίπεδο του Application Framework Το Application Framework (Εικόνα 8) είναι το επίπεδο της στοίβας του Android που ενδιαφέρει περισσότερο τον προγραμματιστή εφαρμογών. Το επίπεδο αυτό παρέχει μια πληθώρα από API τα οποία δίνουν την δυνατότητα στον προγραμματιστή να ενσωματώσει στις εφαρμογές του δυνατότητες όπως συνδεσιμότητα στο διαδίκτυο, δημιουργία διεπαφών χρήστη, πρόσβαση στα αποθηκευτικά μέσα της συσκευής και άλλα. Όλες οι βιβλιοθήκες του επιπέδου αυτού είναι γραμμένες στην γλώσσα προγραμματισμού Java και αξιοποιούν τις δυνατότητες που προσφέρει το Android Runtime και οι βασικές βιβλιοθήκες του λειτουργικού συστήματος. Ο τρόπος που είναι οργανωμένα τα API στο επίπεδο αυτό ακολουθεί την λογική του διαχειριστή (manager). Για κάθε υπηρεσία που προσφέρει το επίπεδο αυτό υπάρχουν διαχειριστές που οι εφαρμογές μπορούν να καλέσουν για να τους παρασχεθεί η αντίστοιχη υπηρεσία. Οι εφαρμογές πρέπει να χρησιμοποιούν αυτό το σχήμα επικοινωνίας με τις βιβλιοθήκες του συστήματος και να μην χρησιμοποιούν απευθείας τις βασικές βιβλιοθήκες. Έτσι το Android έχει την δυνατότητα να επιβάλει περιορισμούς στο ποιες λειτουργίες μπορεί κάθε εφαρμογή να εκτελεί. Εικόνα 8 Το επίπεδο Application Framework Από τον μεγάλο αριθμό API που παρέχει το Android στο επίπεδο αυτό, για την ανάπτυξη εφαρμογών, αναφερόμαστε συνοπτικά στα βασικότερα. Η κλάση View στο Android είναι η βασική κλάση τα στιγμιότυπα της οποίας συνθέτουν μια

14 Εισαγωγή διεπαφή χρήστη. Όλα τα ορατά στην οθόνη στοιχεία μιας διεπαφής αποτελούν στιγμιότυπα της κλάσης αυτής. Επιπλέον των ορατών στοιχείων, το Android, προσφέρει και κάποια μη ορατά στοιχεία, που ανήκουν στην κλάση ViewGroup, τα οποία έχουν σαν σκοπό, την χωρική οργάνωση των στοιχείων της διεπαφής στην οθόνη της συσκευής. Για την κάλυψη της ανάγκης αλληλεπίδρασης του χρήστη με την διεπαφή, η κλάση View, παρέχει ένα σύνολο μεθόδων που εκτελούνται όταν ανιχνευθεί κάποιο συμβάν από τον χρήστη (πάτημα κουμπιού, παρατεταμένο πάτημα κουμπιού κ.λπ). Οι μέθοδοι αυτοί, φυσικά, μπορούν να επικαλυφθούν από τον προγραμματιστή προκειμένου η εφαρμογή να ανταποκρίνεται με τον επιθυμητό τρόπο στα διάφορα συμβάντα της διεπαφής. Παράλληλα με τον έλεγχο της απόκρισης της εφαρμογής στα διάφορα συμβάντα, ο προγραμματιστής, έχει στα χέρια του ένα σύνολο κλάσεων (υποκλάσεις της Dialog) οι οποίες του επιτρέπουν να εμφανίζει στον χρήστη παράθυρα με σύντομα μηνύματα και να λαμβάνει κάποια απόκριση σε αυτά. Για την ενημέρωση του χρήστη, εκτός από τα παράθυρα διαλόγου, υπάρχουν και λιγότερο παρεμβατικοί τρόποι ενημέρωσης. Αυτοί είναι τα λεγόμενα Toast μηνύματα και οι ενημερώσεις στην μπάρα κατάστασης. Τα Toast μηνύματα είναι μικρά μηνύματα που εμφανίζονται στο κάτω μέρος της οθόνης σε ένα μικρό πλαίσιο και εξαφανίζονται μετά από κάποια δευτερόλεπτα. Σε αντίθεση με ένα πλαίσιο διαλόγου τα Toast μηνύματα δεν επικαλύπτουν την τρέχουσα εφαρμογή στο σύνολό της. Τα μηνύματα στην μπάρα κατάστασης είναι τα λιγότερο επεμβατικά μιας και δεν επηρεάζουν την εμφάνιση της τρέχουσας εφαρμογής στο ελάχιστο. Το μόνο που ένα μήνυμα της μπάρας κατάστασης κάνει είναι να εμφανίσει ένα εικονίδιο σε αυτήν και ένα σύντομο μήνυμα το οποίο ο χρήστης μπορεί να διαβάσει και να διαγράψει οποτεδήποτε το επιθυμεί. Εκτός από τις δυνατότητες που αφορούν την διεπαφή χρήστη υπάρχουν και API που παρέχουν την δυνατότητα στις εφαρμογές να αναπαράγουν πολυμεσικό περιεχόμενο. Οι κλάσεις που παρέχουν τις δυνατότητες αυτές αξιοποιούν το Media Framework που αναφέραμε προηγούμενα στο επίπεδο με τις βασικές βιβλιοθήκες του Android. Χαρακτηριστικά παραδείγματα τέτοιων κλάσεων είναι οι MediaPlayer και MediaRecorder που, όπως δηλώνουν τα ονόματά τους, χρησιμοποιούνται για την αναπαραγωγή ή καταγραφή πολυμέσων των υποστηριζόμενων τύπων. Δεδομένης της σημασίας που έχει η ικανότητα δικτύωσης των κινητών συσκευών, δεν θα μπορούσαν να λείπουν από το επίπεδο αυτό οι κλάσεις που προσφέρουν τέτοιου είδους δυνατότητες στις εφαρμογές. Χαρακτηριστική κλάση είναι η ConnectivityManager που παρέχει πληροφορίες για τις δυνατές συνδέσεις μιας συσκευής καθώς και για την κατάσταση της κάθε σύνδεσης. Το Android παρέχει ένα σύνολο πακέτων για διαχείριση συνδέσεων και μεταφορά δεδομένων σε διάφορα δίκτυα. Παρακάτω βλέπουμε μερικά από αυτά java.net.* : Οι βιβλιοθήκες της Java για δημιουργία συνδέσεων με sockets ή χρησιμοποιώντας το πρωτόκολλο HTTP android.net.* : Βιβλιοθήκες του Android που επεκτείνουν τις δυνατότητες των πακέτων

Η Αρχιτεκτονική 15 της java.net android.net.http.* : Βιβλιοθήκες του Android για διαχείριση ασφαλών συνδέσεων με πρωτόκολλα HTTPS org.apache.* : Πακέτα του Apache Foundation για HTTP συνδέσεις android.telephony.* : Πακέτα του Android για πρόσβαση σε δίκτυα τηλεφωνίας, όπως GSM και CDMA android.net.wifi : Πακέτα του Android για σύνδεση σε δίκτυα με χρήση WiFi Τέλος, δίνεται η δυνατότητα στις εφαρμογές να χρησιμοποιούν (σε όσες συσκευές είναι διαθέσιμο) το Bluetooth για να συνδέονται με άλλες συσκευές και να ανταλλάσσουν δεδομένα. Σε αυτήν την κατεύθυνση βοηθάει το Bluetooth API του Android που επιτρέπει την αναζήτηση άλλων συσκευών, την σύνδεση με αυτές καθώς και την ανταλλαγή δεδομένων. Όπως και οι εφαρμογές στους προσωπικούς μας υπολογιστές, έτσι και οι εφαρμογές στο Android χρειάζονται πολλές φορές να αποθηκεύουν πληροφορίες σε μια πιο μόνιμη μορφή. Στο Android οι εφαρμογές έχουν τις εξής επιλογές: SharedPreferences: Η κλάση αυτή παρέχει την δυνατότητα αποθήκευσης ζευγών ονόματος-τιμής όπου οι τιμές είναι κάποιου βασικού τύπου (ακέραιοι αριθμοί, αλφαριθμητικά κ.λπ). Τα δεδομένα αυτά είναι διαθέσιμα σε άλλες εφαρμογές για ανάγνωση ή εγγραφή. Internal/External Storage: Αν η εφαρμογή επιθυμεί να μην έχει κανένας άλλος πρόσβαση στα δεδομένα της μπορεί να τα αποθηκεύσει στον εσωτερικό αποθηκευτικό χώρο. Δεδομένα που είναι πιθανό να διαμοιραστούν μεταξύ εφαρμογών μπορούν να αποθηκευθούν στο εξωτερικό αποθηκευτικό χώρο ο οποίος συνήθως είναι οι κάρτες αποθήκευσης που φέρουν οι συσκευές. Database Storage: Όπως αναφέραμε, το Android παρέχει τις απαραίτητες υποδομές για την δημιουργία και διαχείριση βάσεων δεδομένων. Αν λοιπόν, μια εφαρμογή επιθυμεί να έχει μια οργανωμένη βάση δεδομένων μπορεί να αξιοποιήσει αυτές τις δυνατότητες για την αποθήκευση των δεδομένων της. Network Storage: Αν καμία από τις παραπάνω μεθόδους δεν καλύπτει τις ανάγκες μιας εφαρμογής τότε μπορεί να αποθηκεύσει τα δεδομένα της σε κάποιον απομακρυσμένο εξυπηρετητή χρησιμοποιώντας τις δυνατότητες δικτύωσης που παρέχει Android. Όσον αφορά στο θέμα της αποθήκευσης, τέλος, αξίζει να αναφερθεί ότι από την έκδοση του Android 2.2 και έπειτα παρέχεται ένας μηχανισμός στις εφαρμογές να αποθηκεύουν τις ρυθμίσεις τους και άλλα δεδομένα σε κάποιο απομακρυσμένο εξυπηρετητή. Έτσι, σε περίπτωση που γίνει επανεγκατάσταση της εφαρμογής ή αυτή εγκατασταθεί σε άλλη συσκευή του ιδίου ατόμου, τα δεδομένα μπορούν να ανακτηθούν και η εφαρμογή να έλθει σε μια κατάσταση ίδια με αυτή που ήταν πριν την επανεγκατάσταση, εξασφαλίζοντας έτσι καλύτερη εμπειρία χρήσης για τον χρήστη.

16 Εισαγωγή Επιπρόσθετα, το Android παρέχει και API τα οποία δίνουν ένα σύνολο χρήσιμων δυνατοτήτων και βοηθούν τις εφαρμογές να γίνουν περισσότερο ελκυστικές και ανταγωνιστικές. Τέτοια είναι, το Location & Maps API, που δίνει την δυνατότητα στην εφαρμογή να αναγνωρίσει την θέση της συσκευής στον κόσμο, το Search API, που δίνει την δυνατότητα στις εφαρμογές να κάνουν το περιεχόμενό τους διαθέσιμο προς αναζήτηση από τους χρήστες τους, το WebKit API, με το οποίο οι εφαρμογές μπορούν να προσφέρουν υπηρεσίες περιηγητών, το Speech API, το οποίο περιλαμβάνει δυνατότητες αναγνώρισης φωνής και τέλος το C2DM API (Cloud to Device Messaging API) που δίνει την δυνατότητα αποστολής μηνυμάτων στην συσκευή από κάποια απομακρυσμένη τοποθεσία. 1.3.5. Το επίπεδο των εφαρμογών Τελειώνοντας την περιγραφή της στοίβας του Android φτάνουμε στο ανώτερο επίπεδο όπου βρίσκονται οι εφαρμογές του Android (Εικόνα 9). Οι εφαρμογές του Android είναι ο σκοπός της παρούσας εργασίας και οι απαραίτητες δομές για την ανάπτυξη εφαρμογών Android θα παρουσιαστούν αναλυτικότερα παρακάτω. Στο παρόν σημείο αρκεί να αναφέρουμε ότι όλες οι δυνατότητες που έχουμε αναφέρει μέχρι τώρα είναι στην διάθεση των εφαρμογών. Όλα τα API που διαθέτει το Application Framework είναι στα χέρια του προγραμματιστή για να τα συνδυάσει και να δημιουργήσει εφαρμογές για το περιβάλλον του Android. Εικόνα 9 Το επίπεδο των εφαρμογών Android Στο επίπεδο αυτό βρίσκονται και οι προεγκατεστημένες εφαρμογές του Android, όπως η εφαρμογή για την αποστολή SMS, η εφαρμογή για την πραγματοποίηση κλήσεων και άλλες.

Το Android NDK 17 1.4. Το Android NDK Οι εφαρμογές που απαιτούν υψηλότερες επιδόσεις από αυτές που μπορεί να προσφέρει ο διερμηνευτής Dalvik μπορούν αξιοποιήσουν τις δυνατότητες του Android NDK (Native Development Kit). Όταν μια εφαρμογή χρησιμοποιεί το Android NDK, το ένα τμήμα της (κυρίως η διεπαφή χρήστη και κάποια λογική της εφαρμογής) συνεχίζει να διερμηνεύεται από τον Dalvik και το άλλο τμήμα της εκτελείτε απευθείας στον επεξεργαστή που έχει στο υλικό της η συσκευή. Εικόνα 10 Η αρχιτεκτονική του Android NDK Τα τμήματα του κώδικα που εκτελούνται κατευθείαν στον επεξεργαστή μεταφράζονται σε βιβλιοθήκες και καλούνται από τα τμήματα του κώδικα που διερμηνεύονται από τον Dalvik μέσω του JNI (Java Native Interface) (Εικόνα 10). Η βιβλιοθήκη μετά την μετάφρασή της πρέπει να συμπεριληφθεί στο.apk αρχείο της εφαρμογής και να φορτωθεί ρητά πριν χρησιμοποιηθεί. Εδώ αξίζει να παρατηρήσει κανείς ένα πιθανό πρόβλημα ασφάλειας. Ο κώδικας που εκτελείται στον επεξεργαστή δεν περνά από κανέναν από τους περιορισμούς για το ποιες λειτουργικότητες του συστήματος μπορεί να χρησιμοποιήσει. Ο κυριότερος λόγος για να χρησιμοποιήσει κανείς το Android NDK είναι για να επιτύχει καλύτερες επιδόσεις σε εφαρμογές που απαιτούν μεγάλο όγκο υπολογισμών (εξομοιώσεις κ.λπ) ή εφαρμογές που κάνουν βαριά χρήση γραφικών (παιχνίδια κ.λπ). Από δοκιμές που έχουν γίνει χρησιμοποιώντας μια εφαρμογή υπολογισμού των αριθμών της ακολουθίας Fibonacci έχει παρατηρηθεί μείωση του απαιτούμενου χρόνου εκτέλεσης έως και ενενήντα τοις εκατό! Οι μετρήσεις

18 Εισαγωγή έγιναν σε συσκευή χωρίς JIT compiler διαθέσιμο και επειδή η ενσωμάτωση ενός τέτοιου μεταφραστή αυξάνει σημαντικά τις επιδόσεις του Dalvik, σε κάποιες περιπτώσεις πιθανότατα η χρήση του Android NDK να μην είναι απαραίτητη.

Οι εκδόσεις του Android 19 1.5. Οι εκδόσεις του Android Η ιστορία του λειτουργικού συστήματος Android ξεκινά τον Νοέμβριο του 2007 με την πρώτη δοκιμαστική (beta) έκδοσή του. Η πρώτη εμπορική έκδοση του Android κυκλοφόρησε έναν χρόνο και έναν μήνα αργότερα, τον Σεπτέμβριο του 2009. Έκτοτε το Android έχει περάσει από πολλές εκδόσεις οι οποίες έχουν διορθώσει ατέλειές του και έχουν προσθέσει μια πληθώρα νέων χαρακτηριστικών. Στο παρόν κεφάλαιο θα κάνουμε μια σύντομη ανασκόπηση στις διάφορες εμπορικές εκδόσεις του λειτουργικού συστήματος καθώς και των βασικών χαρακτηριστικών που κάθε έκδοση εισήγαγε. Στην Εικόνα 11 βλέπουμε την διάδοση της κάθε έκδοσης συγκριτικά με τις υπόλοιπες. Εικόνα 11 Σύγκριση των διαφόρων εκδόσεων του Android 1.5.1. Android 1.0 Το Android 1.0 ήταν, όπως αναφέραμε, η πρώτη εμπορική έκδοση του λειτουργικού συστήματος και κυκλοφόρησε στις 23 Σεπτεμβρίου του 2008. Η πρώτη συσκευή που κυκλοφόρησε με λειτουργικό σύστημα Android ήταν της HTC το μοντέλο Dream. Τα χαρακτηριστικά που εισήγαγε αυτή η έκδοση συνοψίζονται στον παρακάτω πίνακα. ΧΑΡΑΚΤΗΡΙΣΤΙΚΟ Android Market Android Web Browser ΠΕΡΙΓΡΑΦΗ Εισαγωγή της εφαρμογής του Android Market μέσω της οποίας ήταν δυνατή η αγορά νέων εφαρμογών καθώς και η αναβάθμιση ήδη υπαρχόντων Εισαγωγή ενός web browser που μπορεί να απεικονίσει HTML και XHTML σελίδες

20 Εισαγωγή ΧΑΡΑΚΤΗΡΙΣΤΙΚΟ Κάμερα Φάκελοι Email Google Mail Google Contacts Google Calendar Google Maps Google Sync Google Search Google Talk SMS, MMS Αναπαραγωγή Πολυμέσων Notifications Bar Voice Dialer Wallpapers YouTube ΠΕΡΙΓΡΑΦΗ Υποστήριξη για χρήση κάμερας αλλά έλλειψη επιλογών αλλαγής ανάλυσης, ισορροπίας λευκού κ.λπ Υποστήριξη χρήσης φακέλων για την καλύτερη οργάνωση των εφαρμογών που βρίσκονταν στην επιφάνεια εργασίας Υποστήριξη σύνδεσης σε εξυπηρετητές email με πρωτόκολλα POP3, IMAP4 και SMTF Υποστήριξη συγχρονισμού των email από τον λογαριασμό της Google με χρήση της εφαρμογής Gmail Υποστήριξη συγχρονισμού των επαφών στον λογαριασμό Google με την εφαρμογή People στην κινητή συσκευή Υποστήριξη συγχρονισμού των γεγονότων στον λογαριασμό Google με την εφαρμογή Calendar στην συσκευή Υποστήριξη προβολής χαρτών της υπηρεσίας Google Maps και λήψης πληροφοριών πλοήγησης με χρήση GPS Υποστήριξη συγχρονισμού των email, των επαφών και των γεγονότων από στον λογαριασμό Google στις αντίστοιχες εφαρμογές Υποστήριξη αναζήτησης στην συσκευή για εφαρμογές, επαφές ημερολόγια κ.λπ Υποστήριξη της εφαρμογής Google Talk για ανταλλαγή μηνυμάτων μέσω του διαδικτύου Υποστήριξη αποστολής SMS και MMS Δυνατότητα αναπαραγωγής πολυμεσικoύ περιεχομένου από διάφορες πηγές (αρχεία, διαδίκτυο) αλλά με έλλειψη υποστήριξης αναπαραγωγής βίντεο μέσω Bluetooth Εισαγωγή της μπάρας ενημερώσεων του Android με δυνατότητα ρύθμισης ήχου, δόνησης και του LED ενημέρωσης Εισαγωγή δυνατότητας κλήσης τηλεφώνου χωρίς να είναι αναγκαία η πληκτρολόγηση του αριθμού Δυνατότητα χρήσης οποιασδήποτε φωτογραφίας για φόντο της επιφάνειας εργασίας της συσκευής Εφαρμογή αναπαραγωγής βίντεο από την υπηρεσία YouTube

Οι εκδόσεις του Android 21 ΧΑΡΑΚΤΗΡΙΣΤΙΚΟ Wi-Fi & Bluetooth ΠΕΡΙΓΡΑΦΗ Δυνατότητα σύνδεσης με Wi-Fi και Bluetooth 1.5.2. Android 1.1 Η επόμενη έκδοση του Android ήταν η 1.1 και κυκλοφόρησε τον Φεβρουάριο του 2009, αρχικά μόνο για το HTC Dream. Η νέα αυτή έκδοση διόρθωσε σφάλματα που είχαν βρεθεί στην προηγούμενη έκδοση και εισήγαγε κάποια νέα χαρακτηριστικά. Τα νέα αυτά χαρακτηριστικά φαίνονται στον παρακάτω πίνακα. ΧΑΡΑΚΤΗΡΙΣΤΙΚΟ Google Maps Enhancement In Call Enhancements Mail Enhancements ΠΕΡΙΓΡΑΦΗ Παροχή επιπλέον πληροφοριών καθώς και κριτικών όταν κάποιος αναζητά επιχειρήσεις στην εφαρμογή με του χάρτες Αύξηση του χρόνου σβησίματος της οθόνης όταν γίνεται χρήση του μεγαφώνου και εισαγωγή δυνατότητας εμφάνισης και απόκρυψης του πληκτρολογίου Δυνατότητα αποθήκευσης στα mail αρχείων 1.5.3. Android 1.5 - Cupcake Την κυκλοφορία του Android 1.1 ακολούθησε, τρείς μήνες αργότερα, το Android 1.5 με την κωδική ονομασία Cupcake. Έκτοτε, όλες οι επόμενες εκδόσεις έφεραν σαν κωδικές ονομασίες ονόματα γλυκών. Η κυκλοφορία του Android Cupcake έγινε στις 30 Απριλίου του 2009 και ήταν βασισμένο στον πυρήνα του Linux 2.6.27. Τα νέα χαρακτηριστικά του λειτουργικού συστήματος φαίνονται παρακάτω. ΧΑΡΑΚΤΗΡΙΣΤΙΚΟ Πληκτρολόγιο Widgets Video Codecs Auto-pairing & Stereo over Bluetooth ΠΕΡΙΓΡΑΦΗ Υποστήριξη πληκτρολογίων από άλλους κατασκευαστές με δυνατότητα πρόβλεψης λέξεων κατά την πληκτρολόγηση και δημιουργία λεξικού με λέξεις που ορίζει ο χρήστης Εισαγωγή των Widgets, μικρογραφιών μιας εφαρμογής που μπορούν να ενσωματωθούν στην επιφάνεια εργασίας και να ανανεώνονται σε τακτά χρονικά διαστήματα Δυνατότητα εγγραφής και αναπαραγωγής βίντεο στα φορμά MPEG-4 και 3GP Αυτόματη ανίχνευση και σύνδεση με Bluetooth ακουστικά ή ηχεία και δυνατότητα αναπαραγωγής στέρεο ήχου

22 Εισαγωγή ΧΑΡΑΚΤΗΡΙΣΤΙΚΟ Copy & Paste in Browser Εικόνες στις αγαπημένες επαφές Λίστα Κλήσεων Animated Transitions Auto-Rotation Animation Εκκίνησης Μεταφόρτωση στο YouTube Μεταφόρτωση στο Picasa ΠΕΡΙΓΡΑΦΗ Εισαγωγή δυνατότητας copy και paste στον browser του Android Δυνατότητα επιλογής εικόνων του χρήστη για εμφάνιση στις επαφές που βρίσκονται στα αγαπημένα Αναγραφή ημερομηνίας και ώρας στις καταχωρήσεις της λίστας και δυνατότητα επίσκεψης της επαφής στην οποία αναφέρεται η συγκεκριμένη καταχώρηση Δυνατότητα μετάβασης από την μια οθόνη της εφαρμογής στην άλλη με χρήση εφέ (fade in, fade out κ.λπ) Αυτόματη προσαρμογή της οθόνης ανάλογα με την κλίση της συσκευής Εισαγωγή του animation κατά την εκκίνηση του λειτουργικού Δυνατότητα μεταφόρτωσης βίντεο κατευθείαν στο YouTube Δυνατότητα μεταφόρτωσης εικόνων κατευθείαν στην υπηρεσία Picasa 1.5.4. Android 1.6 - Donut Η επόμενη έκδοση του Android ήταν η 1.6 και είχε κωδική ονομασία Donut. Ήταν βασισμένη στον πυρήνα του Linux 2.6.29 και είχε τα χαρακτηριστικά που φαίνονται παρακάτω. ΧΑΡΑΚΤΗΡΙΣΤΙΚΟ Δυνατότητα Αναζήτησης Περιεχόμενα Αναζήτησης Πολυγλωσσική Σύνθεση Ομιλίας Android Market ΠΕΡΙΓΡΑΦΗ Βελτίωση της φωνητικής και μη αναζήτησης ώστε να περιλαμβάνει το ιστορικό των επισκέψεων στο διαδίκτυο, τις επαφές και το διαδίκτυο (με χρήση του google.com) Παρέχεται πλέον η δυνατότητα στους προγραμματιστές να περιλαμβάνουν το περιεχόμενο των εφαρμογών τους στην δυνατότητα αναζήτησης του Android Δυνατότητα σύνθεσης ομιλίας σε διαφορετικές γλώσσες ώστε κάθε συσκευή Android να μπορεί να διαβάσει μια πρόταση ή ένα κείμενο Ευκολότερη αναζήτηση εφαρμογών στην αγορά της Google και προβολή στιγμιότυπων από την εφαρμογή για καλύτερη επιλογή από τους χρήστες