Π Τ Υ Χ Ι Α Κ Η / Ι Π Λ Ω Μ ΑΤ Ι Κ Η Ε Ρ ΓΑ Σ Ι Α



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

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

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

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

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

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

Πτυχιακή Εργασία. Σχολή Τεχνολογικών Εφαρµογών Τµήµα Εφαρµοσµένης Πληροφορικής και Πολυµέσων

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

Διαχειριστής αγροκτήματος από συσκευές με λειτουργικό σύστημα Android

Ανάπτυξη εφαρμογής ηλεκτρονικού πίνακα ανακοινώσεων για φορητή συσκευή

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

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

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

ΑΛΕΞΑΝΔΡΕΙΟ Τ.Ε.Ι. ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. Πτυχιακή Εργασία

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

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

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

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

Οδηγίες Χρήσης Υπηρεσίας Τηλεδιασκέψεων

ΗΜΟΚΡΙΤΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΡΑΚΗΣ ΥΠΕΥΘΥΝΟΣ ΈΡΓΟΥ AΝ.KΑΘ.Χ. ΚΟΥΚΟΥΡΛΗΣ ΤΗΛ: , FAX :

Κατανεμημένα Συστήματα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ANDROID ΓΙΑ ΤΗΝ ΔΙΑΧΕΙΡΗΣΗ ΑΥΤΟΚΙΝΗΤΟΥ

Περίληψη ιπλωµατικής Εργασίας

Lino it. Ιατροπούλου Ράνια, Νηπιαγωγός. Το Lino πραγµατοποιεί ετικέτες στο διαδίκτυο (Online Stickies)

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

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

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Ταξιδιωτικός οδηγός της Θεσσαλονίκης για Android

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

Linux Terminal Server Project

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

Εισαγωγή. Τεχνολογία Πολυµέσων 01-1

Εφαρµογές πλοήγησης για φορητές συσκευές µε τη χρήση Web Services

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

Διαφορές single-processor αρχιτεκτονικών και SoCs

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο

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

Ανάπτυξη Εφαρμογής Ταξίμετρου σε Android

Α ΤΑΞΗ. 1 η ΕΝΟΤΗΤΑ: Γνωρίζω τον υπολογιστή. Θα παρουσιαστεί µε τρόπο απλό και κατανοητό,

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

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

Internet 1. Ρυθµίσεις ικτύου Η MID διαθέτει ενσωµατωµένο Wi-Fi module. Κάντε κλικ στο, στο µενού ρυθµίσεων θα εµφανιστεί στο MID.

Η νέα Πύλη etwinning. Εργαλεία για την κοινωνική δικτύωση και την επικοινωνία των εκπαιδευτικών. Εργαλεία διαχείρισης ενός έργου etwinning

Ξεκινώντας NSZ-GS7. Network Media Player. Οι εικόνες επί της οθόνης, οι λειτουργίες και οι προδιαγραφές μπορεί να αλλάξουν χωρίς προειδοποίηση.

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

Οδηγός χρήστη. Xperia SmartTags NT1/NT2

Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου

Δημιουργία μιας εφαρμογής Java με το NetBeans

Εγχειρίδιο της εφαρμογής αναπαραγωγής CD V2.6 i. Εγχειρίδιο της εφαρμογής αναπαραγωγής CD V2.6

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δυναμική προσωποποιημένη ενημέρωση προσφορών Super Markets στη Θεσσαλονίκη

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT)

Ενηµερώσεις λογισµικού Οδηγός χρήσης

Radio R 4.0 IntelliLink Συχνές Ερωτήσεις (FAQ)

Atlantis - Νέο user interface

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

Εγχειρίδιο Χρήσης για Διαχειριστές. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο

Greek Android Community

Το γεγονός ότι αποτελεί λογισµικό ανοικτού κώδικα το καθιστά αρκετά ευέλικτο σε συνεχείς αλλαγές και βελτιώσεις. Υπάρχει µια πληθώρα χρηστών που το χρ

ΠΜΣ 513 ΤΕΧΝΟΛΟΓΙΑ ΗΛΕΚΤΡΟΝ ΙΚΟΥ ΕΜΠΟΡΙΟΥ ΥΠΟΧΡΕΩΤΙΚΗ ΕΡΓΑΣΙΑ 2015

Σύστημα Αναθέσεων. Σχεδιασμός Υποσυστημάτων

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

H CISCO ανακοινώνει νέα τεχνολογία για τις Εταιρείες Λιανικής

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

Εγχειρίδιο Χρήσης Slide Recorder

ΑΡΧΙΜΗ ΗΣ - ΕΝΙΣΧΥΣΗ ΕΡΕΥΝΗΤΙΚΩΝ ΟΜΑ ΩΝ ΣΤΑ ΤΕΙ. Υποέργο: «Ανάκτηση και προστασία πνευµατικών δικαιωµάτων σε δεδοµένα

Λύσεις διαχείρισης υπολογιστών-πελατών και λύσεις εκτύπωσης Universal Printing Solutions

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

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

Σχολ.έτος Κεφάλαιο 5 ο Γνωριμία με το Λογισμικό του Υπολογιστή.

ΕΡΓΑΣΙΑ. (στο µάθηµα: Τεχνολογίες Εφαρµογών ιαδικτύου του Η εξαµήνου σπουδών του Τµήµατος Πληροφορικής & Τηλ/νιών)

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

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

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

SharePoint Online. Δημιουργήστε μια τοποθεσία ή μια δημοσίευση ειδήσεων. Αναζήτηση Βρείτε Τοποθεσίες, Άτομα ή Αρχεία.

ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή

ΚΟΙΝΩΝΙΚΗ ΔΙΚΤΥΩΣΗ ΜΕΣΩ ΚΙΝΗΤΩΝ ΣΥΣΚΕΥΩΝ: ΧΡΗΣΗ ΔΕΚΤΗ GPS ΓΙΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΚΟΙΝΩΝΙΚΗΣ ΔΙΚΤΥΩΣΗΣ ΣΕ ΚΙΝΗΤΗ ΣΥΣΚΕΥΗ

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

Προσοµοίωση λειτουργίας επικοινωνίας δεδοµένων (µόντεµ)

"Έλεγχος Συμπτωμάτων Υγείας μέσω Κινητών Android - "App edoctor""

Ανάπτυξη Plugins για το AgentSheets

11/4/2014 ΤΕΙ Ιονίων Νήσων Πλατφόρµα Ασύγχρονησ Τηλεκπαίδευσησ eclass s ηµιο ι υρ υ γ ρ ία ί Μ αθήµατο τ σ 1

1. Εγκατάσταση του NetMeeting

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Smartphones και πολυμέσα

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

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

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

Χρήση του Office 365 σε τηλέφωνο Android

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

Σχεδιασµός βασισµένος σε συνιστώσες

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

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

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο

ηµοτικό ιαδικτυακό Ραδιόφωνο και Τηλεόραση

αντίστοιχο γεγονός. Όταν όντως το κουμπί

Transcript:

Α Ρ Ι Σ Τ Ο Τ Ε Λ Ε Ι Ο Π Α Ν Ε Π Ι Σ Τ Η Μ Ι Ο Θ Ε Σ Σ Α Λ Ο Ν Ι Κ Η Σ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Π Τ Υ Χ Ι Α Κ Η / Ι Π Λ Ω Μ ΑΤ Ι Κ Η Ε Ρ ΓΑ Σ Ι Α «ΠΡΟΣΟΜΟΙΩΤΗΣ ΠΙΑΝΟΥ ΜΕ ΛΕΙΤΟΥΡΓΙΑ ΠΟΛΛΑΠΛΗΣ ΑΦΗΣ ΓΙΑ ΤΗΝ ΠΛΑΤΦΟΡΜΑ ANDROID» (ANDROID PIANO SIMULATOR WITH MULTITOUCH FUNCTIONALITY) ΑΡΒΑΝΙΤΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΠΟΛΙΤΗΣ ΙΟΝΥΣΙΟΣ, ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ ΘΕΣΣΑΛΟΝΙΚΗ 2012

ΠΕΡΙΛΗΨΗ Π Ε Ρ Ι Λ Η Ψ Η Η παρούσα διπλωµατική εργασία έχει ως κύριο στόχο την ανάπτυξη µίας ηλεκτρονικής εφαρµογής σε περιβάλλον Android. Η εφαρµογή δίνει τη δυνατότητα στον κάτοχο κινητού τηλεφώνου µε το λειτουργικό σύστηµα Android να παίξει πιάνο στη συσκευή του καθώς και να βλέπει ποιες νότες και συγχορδίες ακούγονται σε κάθε του πάτηµα. Αν θελήσουµε να συνοψίσουµε τα βασικά στοιχεία αυτής της διπλωµατικής εργασίας, αυτά επικεντρώνονται σε δύο βασικούς άξονες. Ο πρώτος περιστρέφεται γύρω από την αισθητική παρουσίαση της εφαρµογής, και οριοθετεί την πιστή προσοµοίωση ενός πιάνου, µέσω του interface ενός "έξυπνου κινητού τηλεφώνου" (smartphone). Ο δεύτερος αφορά τις λειτουργικές παραµέτρους της εφαρµογής και περιστρέφεται γύρω από την ευχρηστία και τη µετάδοση πληροφοριών. Συµπερασµατικά, λοιπόν, πρόκειται για µία εφαρµογή σε περιβάλλον Android, η οποία προσοµειώνει ρεαλιστικά την εµφάνιση και τις λειτουργίες ενός πιάνου. Επίσης παρουσιάζεται η πορεία και τα βασικά συστατικά του λειτουργικού για κινητά τηλέφωνα Android. III

ABSTRACT A B S T R A C T The main goal of this Diploma Thesis is the development of an application within the Android environment. The developed application allows the owner of a mobile smart-phone, equipped with the Android operating system, to play piano using his device as well as see which notes and chords sound at every touch. In order to summarize the key elements of this Diploma Thesis, they focus on two main aspects. The first one has to do with the the aesthetic presentation of the application, and defines its true simulation of a piano through the interface of a smart-phone. The second one concerns the operational parameters of the application and revovles around its usability and information transmission. As a result, the herein described application simulates realistically the appearance and the functions of a piano developed within the Android environment. In addition, it is presented the progress and key components for mobile phones operating system Android. IV

ΕΥΧΑΡΙΣΤΙΕΣ Ε Υ Χ Α Ρ Ι Σ Τ Ι Ε Σ Πριν την παρουσίαση των αποτελεσµάτων της παρούσας εργασίας, αισθάνοµαι την υποχρέωση να ευχαριστήσω ορισµένους από τους ανθρώπους που γνώρισα, συνεργάστηκα µαζί τους και έπαιξαν πολύ σηµαντικό ρόλο στην πραγµατοποίησή της. Θα ήθελα, λοιπόν, να ευχαριστήσω τον κ. ιονύσιο Πολίτη, για την εµπιστοσύνη που µου έδειξε αναθέτοντάς µου την εκπόνηση της συγκεκριµένης εργασίας και για την άψογη συνεργασία και πολύτιµη καθοδήγησή του κατά τη διάρκεια της εκπόνησής της. Σεπτέµβριος 2012 Κωνσταντίνος Αρβανίτης 5

Π Ε Ρ Ι Ε Χ Ο Μ Ε Ν Α ΠΕΡΙΛΗΨΗ... III EXECUTIVE SUMMARY... IV ΕΥΧΑΡΙΣΤΙΕΣ...5 ΠΕΡΙΕΧΟΜΕΝΑ...6 ΚΕΦΑΛΑΙΟ 1: ΕΙΣΑΓΩΓΗ...8 ΚΕΦΑΛΑΙΟ 2: ΙΣΤΟΡΙΑ ΤΟΥ ANDROID...10 2.1 ΠΡΟΪΣΤΟΡΙΑ...11 2.2 ΑΝΟΙΧΤΗ ΣΥΜΜΑΧΙΑ ΜΙΚΡΟΤΗΛΕΦΩΝΩΝ (OPEN HANDSET ALLIANCE)...12 2.3 Η ΠΟΡΕΙΑ ΤΟΥ ANDROID...14 ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID...17 3.1 ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΓΝΩΡΙΣΜΑΤΑ ΤΟΥ ANDROID SDK...18 3.2 ΤΟ ΠΛΑΙΣΙΟ ΑΝΑΠΤΥΞΗΣ ΤΟΥ ANDROID...20 3.2.1 ΤΙ ΠΕΡΙΕΧΕΤΑΙ ΣΤΟ ΠΑΚΕΤΟ (BOX)...20 3.2.2 ΣΥΛΛΟΓΗ ΛΟΓΙΣΜΙΚΟΥ ΤΟΥ ANDROID (SOFTWARE STACK)...22 3.2.3 Η ΕΙΚΟΝΙΚΗ ΜΗΧΑΝΗ DALVIK...25 3.2.4 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΩΝ ΕΦΑΡΜΟΓΩΝ ANDROID...26 3.2.5 ΒΙΒΛΙΟΘΗΚΕΣ ANDROID...27 3.2.6 ΠΡΟΗΓΜΕΝΕΣ ΒΙΒΛΙΟΘΗΚΕΣ ANDROID...30 3.3 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ANDROID...32 3.3.1 ΒΑΣΙΚΑ ΣΥΣΤΑΤΙΚΑ...33 3.3.2 ANDROIDMANIFEST.XML...40 3.3.3 ΟΙ ΠΟΡΟΙ (RESOURCES)...48 3.3.4 ΙΕΠΑΦΗ ΧΡΗΣΤΗ (USER INTERFACE)...54 3.3.5 Ο ΚΥΚΛΟΣ ΖΩΗΣ ΜΙΑΣ ΕΦΑΡΜΟΓΗΣ...59 3.3.6 ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΤΩΝ ΕΦΑΡΜΟΓΩΝ ΚΑΙ ΚΑΤΑΣΤΑΣΕΙΣ ΤΩΝ ΙΑ ΙΚΑΣΙΩΝ...60 6

ΚΕΦΑΛΑΙΟ 4: ΠΕΡΙΓΡΑΦΗ ΚΑΙ ΤΕΚΜΗΡΙΩΣΗ ΕΦΑΡΜΟΓΗΣ...63 4.1 ΕΡΓΑΛΕΙΑ...64 4.2 ΙΕΠΑΦΗ ΧΡΗΣΤΗ (USER INTERFACE)...64 4.3 ΛΕΙΤΟΥΡΓΙΕΣ ΤΟΥ ΠΙΑΝΟΥ...68 4.3.1 ΛΕΙΤΟΥΡΓΙΑ ΠΛΗΚΤΡΩΝ...68 4.3.2 ΤΑΥΤΟΧΡΟΝΟ ΠΑΤΗΜΑ ΠΟΛΛΑΠΛΩΝ ΠΛΗΚΤΡΩΝ (MULTITOUCH)...69 4.3.3 ΕΜΦΑΝΙΣΗ ΝΟΤΑΣ Ή ΣΥΓΧΟΡ ΙΑΣ...70 ΚΕΦΑΛΑΙΟ 5: ΣΥΜΠΕΡΑΣΜΑΤΑ...72 ΠΑΡΑΡΤΗΜΑ I: ΑΝΑΦΟΡΕΣ...75 7

8 Κ Ε Φ Α Λ Α Ι Ο 1 : Ε Ι Σ Α Γ Ω Γ Η

ΕΙΣΑΓΩΓΗ Η διπλωµατική αυτή εργασία αναλύεται συνολικά σε 5 κεφάλαια. Συγκεκριµένα, έχουµε: Στο Κεφάλαιο 2 ασχολούµαστε µε την ιστορία του λειτουργικού συστήµατος Android. Παρουσιάζεται η προϊστορία καθώς και πορεία του από τη µέρα που δηµιουργήθηκε. Το Κεφάλαιο 3 περιγράφει το λειτουργικό σύστηµα Android και εισάγει τον αναγνώστη στον προγραµµατισµό στο περιβάλλον αυτό. Εξηγούνται τα προγραµµατιστικά εργαλεία που χρειάζονται και αναλύονται τα βασικά βήµατα που απαιτούνται για την ανάπτυξη µίας εφαρµογής που θα εκτελείται σε λειτουργικό σύστηµα Android. Στο Κεφάλαιο 4 παρουσιάζεται αναλυτικά η εφαρµογή που υλοποιήθηκε στο πλαίσιο της διπλωµατικής αυτής εργασίας. Αρχικά περιγράφεται η διεπαφή χρήστη και στη συνέχεια αναφέρονται οι διάφορες λειτουργίες και δυνατότητες της εφαρµογής. Στο Κεφάλαιο 5 περιγράφονται τα συµπεράσµατα που προκύπτουν από την εκπόνηση της διπλωµατικής εργασίας. Στο Παράρτηµα της εργασίας αυτής παρουσιάζονται η βιβλιογραφία και οι δικτυακοί τόποι που αναφέρονται στην εργασία, και παρατίθεται αναλυτικά ο κώδικας της εφαρµογής που αναπτύχθηκε. 9

10 Κ Ε Φ Α Λ Α Ι Ο 2 : Ι Σ Τ Ο Ρ Ι Α Τ Ο Υ A N D R O I D

ΙΣΤΟΡΙΑ ΤΟΥ ANDROID 2.1 ΠΡΟΪΣΤΟΡΙΑ Τον Ιούλιο του 2005, η Google απόκτησε την Android Inc. µια µικρή νεοσύστατη εταιρεία που έδρευε στο Πάλο Άλτο, της Καλιφόρνια, στις ΗΠΑ. Οι συνιδρυτές της Android που πήγαν να εργαστούν στη Google ήταν οι Andy Rubin (συνιδρυτής του Danger), Rich Miner (συνιδρυτής της Wildfire Communications Inc.), Nick Sears (VP στη Τ-Mobile ), και ο Chris White (επικεφαλής ανάπτυξης σχεδίου και διεπαφών σε WebTV). Τότε, λίγα ήταν γνωστά για τις λειτουργίες της Android Inc. εκτός του ότι κατασκεύαζαν λογισµικό για κινητά τηλέφωνα. Αυτό δηµιούργησε φήµες ότι η Google σκόπευε να µπει στην αγορά κινητής τηλεφωνίας, αν και ήταν ασαφές ποια λειτουργία να εκτελέσει σ αυτό τον τοµέα. Στη Google, η οµάδα, µε επικεφαλή τον Rubin,ανέπτυξε µια πλατφόρµα κινητών συσκευών που τροφοδοτήθηκε από το λειτουργικό σύστηµα Linux και την εµπορευόταν σε κατασκευαστές και διανοµείς κινητών τηλεφώνων µε την υπόσχεση παροχής ενός εύκαµπτου, βελτιώσιµου συστήµατος. Περισσότερες υποψίες ότι η Google θα έµπαινε στην αγορά κινητών τηλεφώνων ήρθε το εκέµβριο του 2006. Το BBC και η Wall Street Journal ανέφεραν ότι η Google θέλει την µηχανή αναζήτησης της και τις εφαρµογές της µέσα στα κινητά τηλέφωνα και δούλευε σκληρά για να το επιτύχει. Σύντοµα πολλά ειδησεογραφικά µέσα ανέφεραν φήµες ότι Google ανέπτυσσε ένα κινητό τηλέφωνο µε την επωνυµία της Google. Ακόµη περισσότερες υποψίες ακολούθησαν αφού αναφέρθηκε ότι καθώς η Google καθόριζε τις τεχνικές προδιαγραφές, παρουσίαζε πρωτότυπα σε τηλεφωνικούς 11

κατασκευαστές και σε φορείς δικτύων. Τουλάχιστον 30 πρωτότυπα τηλέφωνα αναφέρθηκαν ότι τρέχουν σε δοκιµαστικό λειτουργικό σύστηµα. Το Σεπτέµβριο του 2007, η Information Week κάλυψε µια µελέτη Evalue Serve αναφέροντας ότι η Google είχε καταθέσει πολλές εφαρµογές στον τοµέα της κινητής τηλεφωνίας. 2.2 ΑΝΟΙΧΤΗ ΣΥΜΜΑΧΙΑ ΜΙΚΡΟΤΗΛΕΦΩΝΩΝ (OPEN HANDSET ALLIANCE) Στις 5 Νοεµβρίου 2007, η Open Handset Alliance, µια κοινοπραξία διάφορων επιχειρήσεων που περιλαµβάνουν τις Broadcom Corporation, Google, HTC, Intel, LG, Marvell Technology Group, Motorola, NVIDIA, Qualcomm, Samsung Electronics, Sprint Nextel, Τ-Mobile, και Texas Instruments, παρουσιάστηκε µε το στόχο να αναπτύξει ανοιχτά πρότυπα (open standards) για τις κινητές συσκευές. Μαζί µε το σχηµατισµό της η OHA παρουσίασε επίσης το πρώτο προϊόν τους, το Android, µια πλατφόρµα κινητών συσκευών που στηρίχτηκε στο πυρήνα Linux 2.6. Στις 9 εκεµβρίου 2008, αναγγέλθηκε ότι ακόµα 14 νέα µέλη θα συµµετείχαν στο πρόγραµµα του Android συµπεριλαµβανοµένου: ARM Holdings Plc, Atheros Communications, Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp και Vodafone. Κατά τα λεγόµενα τους, όπως αναφέρεται και στο επίσηµο site, η OHA αντιπροσωπεύει: «Μια δέσµευση για την ειλικρίνεια, ένα κοινό όραµα για το µέλλον, και συγκεκριµένα 12

σχέδια για να κάνει το όραµα µια πραγµατικότητα. Για να επιταχύνει την καινοτοµία στο κινητό και να προσφέρει στους καταναλωτές µια πλουσιότερη, λιγότερο ακριβή και καλύτερη εµπειρία κινητών τηλεφώνων.» http://www.openhandsetalliance.com/oha_faq.html Η OHA ελπίζει να παραδώσει µια καλύτερη εµπειρία λογισµικού κινητού για τους καταναλωτές παρέχοντας µια πλατφόρµα για την ανάπτυξη καινοτόµων κινητών εφαρµογών γρηγορότερα και µε υψηλότερη ποιότητα χωρίς τέλη αδείας για τους προγραµµατιστές λογισµικού ή τους κατασκευαστές κινητών τηλεφώνων. Η επιτυχία του Android ως πλατφόρµα κινητών τηλεφώνων θα εξαρτηθεί κατά ένα µεγάλο µέρος από την επιτυχία των συνεργατών της OHA στην κυκλοφορία επιθυµητών κινητών τηλεφώνων και κινητών υπηρεσιών που θα ενθαρρύνουν τη υιοθέτηση των Android τηλεφώνων. Οι προγραµµατιστές έχουν την ευκαιρία να δηµιουργήσουν καινοτόµες νέες εφαρµογές κινητών για Android ώστε να ενθαρρυνθούν περισσότερες επιχειρήσεις κινητής τεχνολογίας να γίνουν µέλη της OHA. 13

2.3 Η ΠΟΡΕΙΑ ΤΟΥ ANDROID Στις 12 Νοεµβρίου 2007 κυκλοφόρησε το πρώτο δοκιµαστικό SDK. Οι προγραµµατιστές έχουν την δυνατότητα να παρέχουν σχόλια και εντυπώσεις (feedback) και έτσι να διαµορφώσουν την ανάπτυξη του SDK. Στις 17 Απριλίου 2008 ξεκινάει το πρώτος διαγωνισµός κατασκευής εφαρµογών Android (Android Developer Challenge). Παραλαµβάνονται 1.788 υποβολές αυτήν την ηµεροµηνία από τις οποίες επιλέγονται 20 νικητές οι οποίοι και αναγγέλλονται στις 28 Αυγούστου 2008. Συνολικά $5 εκατοµµύρια απονέµονται σε προγραµµατιστές για σηµαντικές εφαρµογές Android. Στις 28 Αυγούστου 2008 αναγγέλλεται επίσης η δηµιουργία του Android Market. Το Android Market είναι ένα Ανοικτό σύστηµα διανοµής εφαρµογών Android που συνδέει χρήστες και κατασκευαστές. Το Android Market έγινε στην ουσία διαθέσιµο στους χρήστες στις 22 Οκτωβρίου 2008. και υποστηρίζει δωρεάν εφαρµογές και εφαρµογές επί πληρωµή. Η πώληση εφαρµογών από προγραµµατιστές των Η.Π.Α. και του Η.Β. έγινε δυνατή τον Φεβρουάριο του 2009 ενώ για κατασκευαστές από Γερµανία, Γαλλία, Ισπανία, Ολλανδία και Αυστρία τον Μάιο του 2009. Για τους χρήστες του Η.Β. η αγορά εφαρµογών επί πληρωµή έγινε δυνατή στις 13 Μαρτίου 2009 ενώ η υποστήριξη δωρεάν εφαρµογών στις Σουηδία, ανία, Νορβηγία, Βέλγιο, Ελλάδα, Ταϊβάν και Ιαπωνία πραγµατοποιήθηκε τον Μάιο του 2009. Μια ανεπίσηµη έρευνα έφερε στο φως λεπτοµέρειες για την "ζωή" στο Android Market. Η έρευνα αυτή κάνει λόγο για την ύπαρξη πάνω από 10.000 εφαρµογών το Σεπτέµβρη του 2009 από 5.000 που ήταν τον Μάιο. Εντυπωσιακή αύξηση της τάξεως του 100% σε λιγότερο από 4 µήνες. Υπολογίζεται έτσι ότι µέχρι το τέλος του χρόνου θα υπάρχουν πάνω από 20.000 εφαρµογές. 14

Στις 23 Σεπτεµβρίου 2008 κυκλοφορεί το Τ-Mobile G1, το πρώτο κινητό τηλέφωνο Android καθώς και η πρώτη επίσηµη έκδοση 1.0 Android SDK. Στις 21 Οκτωβρίου 2008 ο πηγαίος κώδικας του Android ανοίγει, γίνεται δηλαδή open source και την επόµενη µέρα γίνεται διαθέσιµο στους καταναλωτές. Στις 8 εκεµβρίου 2008 κυκλοφορεί η δεύτερη έκδοση του 1.0 Android SDK η οποία λύνει έναν αριθµό από προβλήµατα ενώ τον Φεβρουάριο του 2009 κυκλοφορεί η πρώτη έκδοση του Android 1.1 SDK. Αρκετούς µήνες από την έκδοση του Android, κάποια πράγµατα όπως το εικονικό πληκτρολόγιο, η δυνατότητα εγγραφής βίντεο και stereo Bluetooth κ.α. έλειπαν. Για το λόγο αυτό δηµιουργήθηκε µια αναβάθµιση, που θα είχε τη δυνατότητα προσθήκης πάρα πολλών χρήσιµων δυνατοτήτων, µε κωδική ονοµασία "cupcake". Έτσι στις 27 Απριλίου 2009 κυκλοφόρησε η αναβάθµιση Cupcake και το SDK 1.5 του Android. Η έκδοση 1.5 εισάγει καινούργιες δυνατότητες όπως soft keyboards, home screen widgets, live folders, και αναγνώριση φωνής. Επίσης έχουν γίνει αλλαγές στα εργαλεία και στη δοµή του ίδιου του SDK. Ένα πλεονέκτηµα αυτής της αλλαγής είναι ότι οι προγραµµατιστές µπορούν να χρησιµοποιήσουν διαφορετικές εκδόσεις της πλατφόρµας µέσα από µία και µόνη εγκατάσταση του SDK. Τον Σεπτέµβριο του 2009 αναβαθµίστηκε το SDK σε 1.6. Με τις καινούργιες προσθήκες και αναβαθµίσεις το Android έχει τη δυνατότητα να λειτουργεί σε µεγαλύτερο εύρος συσκευών και δικτύων. Το πιο εντυπωσιακό χαρακτηριστικό είναι η προσθήκη του Quick Search Box το οποίο είναι µηχανή αναζήτησης η οποία έχει τη δυνατότητα να πραγµατοποιεί αναζήτηση και στο διαδίκτυο αλλά και στα δεδοµένα του τηλεφώνου, πράγµα που µπορεί να ρυθµιστεί. Τον Νοέµβριο του 2009 κυκλοφορήσε το Android SDK 2.0 το οποίο παρέχει 15

καινούρια APIs όσο αφορά στη διαχείριση και συγχρονισµό λογαριασµών και επαφών, Bluetooth και διεπαφές χρήστη. Η πιο επαναστατική εφαρµογή που λειτουργεί µόνο στην έκδοση 2.0 είναι το Google Maps Navigation η οποία µετατρέπει το Android κινητό σε σύστηµα Navigation. Στις 22 Φεβρουαρίου 2011 κυκλοφόρησε το Android 3.0 µε την ονοµασία Honeycomb το οποίο όµως είναι διαθέσιµο µόνο για tablets. Τον Οκτώβριο του 2011 βγήκε στην κυκλοφορία η 4.0 έκδοση του Android µε κωδική ονοµασία Ice Cream Sandwich η οποία και αποτέλεσε ως τώρα την πιο µεγάλη αναβάθµιση του Android καθως εκτός του ότι άλλαξαν πολλά πράγµατα, όπως για παράδειγµα οι εφαρµογές της Google για το Android, υπάρχει πλέον επιτάχυνση του υλικού της συσκευής σε ολόκληρο το λειτουργικό σύστηµα (Hardware Acceleration). Η τελευταία έκδοση του Android είναι η 4.1 Jelly Bean η οποία κυκλοφόρησε στις 10 Ιουλίου 2012. 16

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID Κ Ε Φ Α Λ Α Ι Ο 3 : Ο Ρ Ι Σ Μ Ο Σ Τ Ο Υ A N D R O I D 17

ΟΡΙΣΜΟΣ ΤΟΥ ANDROID Το Android είναι µια ενότητα λογισµικού ανοιχτού κώδικα που περιλαµβάνει το λειτουργικό σύστηµα, το υλικό λογισµικό, και τις βασικές εφαρµογές µαζί µε ένα σύνολο βιβλιοθηκών API για τη κατασκευή κινητών εφαρµογών που µπορούν να διαµορφώσουν την όψη, την αίσθηση και τη λειτουργία των κινητών τηλεφώνων. ίνει τη δυνατότητα στους κατασκευαστές να γράψoυν κώδικα στη Java, ελέγχοντας τη συσκευή µέσω των βιβλιοθηκών της Java κατασκευασµένες από την Google. 3.1 ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΓΝΩΡΙΣΜΑΤΑ ΤΟΥ ANDROID SDK Το πραγµατικό πρόσωπο του Android σαν ένα περιβάλλον ανάπτυξης βρίσκεται στα APIs που παρέχει. Σαν µια ουδέτερη όσον αφορά τις εφαρµογές πλατφόρµα, το Android δίνει την ευκαιρία να δηµιουργηθούν εφαρµογές που είναι τόσο µέρος του τηλεφώνου όσο και εκτός του πακέτου. Παρακάτω σηµειώνονται µερικά από τα πιο αξιοσηµείωτα χαρακτηριστικά γνωρίσµατα του Android: Καµία οικονοµική επιβάρυνση όσον άφορα τη χορήγηση αδειών, τη διανοµή, ή την αµοιβή ανάπτυξης του λογισµικού. WI-FI Πρόσβαση υλικού. GSM, EDGE, και 3G δίκτυα για τηλεφωνία ή µεταφορά δεδοµένων, που επιτρέπει σε κάποιον να πραγµατοποιήσει ή να λάβει κλήσεις ή µηνύµατα sms, ή να στείλει και να ανακτήσει δεδοµένα µέσω των δίκτυων κινητής τηλεφωνίας. Εύκολα και κατανοητά APIs τοποκεντρικών (location-based) υπηρεσιών όπως το 18

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID GPS. Πλήρης έλεγχος του υλικού πολυµέσων συµπεριλαµβανοµένου της αναπαραγωγής ήχου και εγγραφής, χρησιµοποιώντας τη φωτογραφική µηχανή και το µικρόφωνο. APIs για υλικό επιταχυµέτρων (accelerometer) και πυξίδων (compass). Ανάγνωση µηνυµάτων ipc. ιαµοιραζόµενες βάσεις δεδοµένων. Έναν ενσωµατωµένο ανοικτoύ κώδικα βασισµένο σε webkit φυλλοµετρητή. Πλήρης υποστήριξη εφαρµογών που ενσωµατώνουν χειρισµό χαρτών ως µέρος της διεπαφής χρήστη. Υποστήριξη Peer-to-peer(P2P) χρησιµοποιώντας το Google Talk. Βελτιστοποιηµένα γραφικά που περιλαµβάνουν path-based 2D βιβλιοθήκη γραφικών και υποστήριξη για τα 3D γραφικά χρησιµοποιώντας OpenGL ES. Πολυµεσικές Βιβλιοθήκες για αναπαραγωγή και για εγγραφή εικόνων και video σε ποικίλες µορφές. Ένα πλαίσιο εφαρµογών που ενθαρρύνει την επαναχρησιµοποίηση τµηµάτων εφαρµογών και αντικατάσταση των εγγενών εφαρµογών. 19

3.2 ΤΟ ΠΛΑΙΣΙΟ ΑΝΑΠΤΥΞΗΣ ΤΟΥ ANDROID Οι εφαρµογές Android γράφονται χρησιµοποιώντας την Java ως γλώσσα προγραµµατισµού αλλά εκτελούνται χρησιµοποιώντας την εικονική µηχανή (virtual machine) Dalvik και όχι µια παραδοσιακή Java VM. Κάθε εφαρµογή Android τρέχει σε µια ξεχωριστή διαδικασία µέσα στο δικό της στιγµιότυπο της Dalvik VM, εγκαταλείποντας όλη την ευθύνη για µνήµη και διαχείριση διαδικασιών στο χρόνο εκτέλεσης, ο οποίος σταµατά και τερµατίζει τις διαδικασίες για να κάνει καλύτερη διαχείριση των πόρων του. Η Dalvik VM και ο χρόνος εκτέλεσης του Android βρίσκονται πάνω από έναν πυρήνα Linux που χειρίζεται τη χαµηλού επιπέδου αλληλεπίδραση υλικού συµπεριλαµβανοµένων των οδηγών (drivers) και της διαχείρισης µνήµης, ενώ ένα σύνολο APIs παρέχει πρόσβαση σε όλες τις υπηρεσίες, στα χαρακτηριστικά γνωρίσµατα του κινητού, και στο υλικό. 3.2.1 Τι περιέχεται στο πακέτο (box) Το Πακέτο Ανάπτυξης Λογισµικού (software development kit SDK) του Android περιλαµβάνει όλα αυτά που χρειάζεται κανείς για να δηµιουργήσει, να ελέγξει και να διορθώσει µια εφαρµογή Android. Στο SDK περιλαµβάνονται: Τα Android APIs. - Ο πυρήνας του SDK είναι οι Android API βιβλιοθήκες που δίνουν στους κατασκευαστές τη δυνατότητα να έχουν πρόσβαση στη συλλογή λογισµικού του Android (Android stack). Αυτές είναι οι ίδιες βιβλιοθήκες που χρησιµοποιούνται από τη Google για να δηµιουργήσουν τις εγγενείς εφαρµογές του 20

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID Android. Τα εργαλεία ανάπτυξης (Development Tools). - Για τη µετατροπή του πηγαίου κώδικα σε εκτελέσιµες εφαρµογές Android, το SDK περιλαµβάνει διάφορα εργαλεία ανάπτυξης που δίνουν τη δυνατότητα να συνταχτούν και να διορθωθούν οι εφαρµογές. Τον εξοµοιωτή του Android (Android Emulator). - Ο εξοµοιωτής του Android είναι ένας πλήρως διαδραστικός εξοµοιωτής συσκευών Android που περιέχει διάφορες εναλλακτικές προσόψεις (skins). Μέσω του εξοµοιωτή, φαίνεται η όψη και η συµπεριφορά µιας εφαρµογής έτσι όπως θα φαινόταν σε µια πραγµατική συσκευή Android. Όλες οι εφαρµογές Android µπορούν να λειτουργήσουν µέσα στη Dalvik VM για το λόγο αυτό ο εξοµοιωτής λογισµικού είναι ένα άριστο περιβάλλον - είναι ουδέτερο όσο άφορα την αναπαράσταση κάποιας συσκευής, έτσι παρέχει ένα καλύτερο ανεξάρτητο περιβάλλον δοκιµής από οποιαδήποτε άλλο υλικό δοκιµών εφαρµογών. Πλήρης τεκµηρίωση. - Το SDK περιλαµβάνει εκτενείς και λεπτοµερείς πληροφορίες για το τι ακριβώς περιλαµβάνεται σε κάθε πακέτο και κλάση και πώς να χρησιµοποιηθεί. Επίσης έκτός από την τεκµηρίωση του κώδικα, δίνονται οδηγίες για το πως µπορεί να ξεκινήσει να δηµιουργεί κανείς µια εφαρµογή καθώς επίσης και λεπτοµερείς εξηγήσεις των βασικών αρχών πίσω από την ανάπτυξη εφαρµογών Android. είγµατα κώδικα (Sample Code). - Το SDK του Android περιλαµβάνει έναν αριθµό εφαρµογών που επιδεικνύουν µερικές από τη δυνατότητες που γίνονται 21

διαθέσιµες χρησιµοποιώντας το Android, καθώς επίσης και απλών προγραµµάτων που δίνουν έµφαση στο πώς χρησιµοποιούνται µεµονωµένα χαρακτηριστικά γνωρίσµατα του API. Online υποστήριξη. - Αν και σχετικά νέο, το Android έχει δηµιουργήσει αναπτυσσόµενη και ενεργή κοινότητα κατασκευαστών λογισµικού. Οι οµάδες του Google στο http://developer.android.com/index.html είναι ενεργό φόρουµ κατασκευαστών Android µέσα στους οποίους ανήκουν και µέλη της οµάδας ανάπτυξης Android της Google. 3.2.2 Συλλογή Λογισµικού του Android (Software Stack) Η συλλογή λογισµικού του Android φαίνεται στην Εικόνα 1. Ένας πυρήνας Linux και µια συλλογή βιβλιοθηκών C/C++ µέσω ενός πλαισίου εφαρµογών παρέχει υπηρεσίες για το χρόνο εκτέλεσης και τις εφαρµογές καθώς και για τρόπους διαχείρισης τους. 22

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID Εικόνα 1: Συλλογή Λογισµικού (Software Stack) Πυρήνας Linux (Linux Kernel) - Yπηρεσίες πυρήνων (συµπεριλαµβανοµένων των οδηγών υλικού, διαχείριση διαδικασιών, µνήµης, ασφάλειας, δίκτυου, και ενέργειας) χειρίζονται από ένα 2.6 πυρήνα Linux. Ο πυρήνας παρέχει επίσης ένα (abstraction layer) αφαιρετικό στρώµα µεταξύ του υλικού και του υπολοίπου σωρού. Βιβλιοθήκες (Libraries) Λειτουργούν πάνω από τον πυρήνα. Το Android περιλαµβάνει διάφορες βιβλιοθήκες πυρήνων C/C++ όπως την libc και την SSL, καθώς επίσης και: Μια βιβλιοθήκη πολυµέσων για την αναπαραγωγή πολυµέσων. Ένα διαχειριστή Eπιφάνειας (Surface manager ) που διαχειρίζεται τον τρόπο µε τον οποίο φαίνονται τα διάφορα στοιχεία. 23

Βιβλιοθήκες γραφικών που περιλαµβάνουν SGL και OpenGL για τα 2D και 3D γραφικά. SQLite για την εγγενή υποστήριξη βάσεων δεδοµένων. SSL και WebKit για την µηχανή αναζήτησης Ιστού και για την ασφάλεια ιαδικτύου. Ο Χρόνος Εκτέλεσης του Android (Android Runtime) - Αυτό που κάνει ένα Android τηλέφωνο στην ουσία ένα «Android τηλέφωνο» και όχι µια διεπαφή Linux κινητών είναι ο χρόνος εκτέλεσης. Συµπεριλαµβανοµένων των βιβλιοθηκών πυρήνα και της Dalvik VM, χρόνος εκτέλεσης του Android είναι η κινητήρια δύναµη των εφαρµογών και, µαζί µε τις βιβλιοθήκες, αποτελούν τη βάση για το πλαίσιο εφαρµογών. Βιβλιοθήκες πυρήνα (Core Libriries). - Αν και η ανάπτυξη Android εφαρµογών γίνεται σε Java, η Dalvik VM δεν είναι µια Java VM. Οι βιβλιοθήκες πυρήνα παρέχουν µεγαλύτερη χρησιµότητα από βιβλιοθήκες πυρήνα της Java καθώς επίσης και από άλλες βιβλιοθήκες του Android (Android-specific libraries). Η εικονική µηχανή Dalvik (Dalvik Virtual Machine) - H Dalvik είναι µια εικονική µηχανή βασισµένη σε µητρώα (register-based) που έχει βελτιστοποιηθεί για να εξασφαλίσει ότι µια συσκευή µπορεί να τρέξει πολλαπλά στιγµιότυπα αποδοτικά. Στηρίζεται στον πυρήνα Linux για να κάνει νηµατισµό (threading) και να διαχειριστεί χαµηλά επίπεδα µνήµης. 24

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID Το Πλαίσιο Εφαρµογών (Application Framework) - Το πλαίσιο εφαρµογών παρέχει τις κλάσεις που χρησιµοποιούνται για να δηµιουργηθούν εφαρµογές Android. Παρέχει επίσης µια γενική αφαιρετικότητα (abstraction) για την πρόσβαση υλικού και διαχειρίζεται τους πόρους της διεπαφής χρήστη (user interface) και των εφαρµογών. Το στρώµα εφαρµογών (Application Layer) - Όλες οι εφαρµογές, και οι εγγενείς και αυτές τρίτων, έχουν χτιστεί πάνω στο στρώµα εφαρµογών χρησιµοποιώντας τις ίδιες βιβλιοθήκες API. Το στρώµα εφαρµογών λειτουργεί µέσα στο Android σε χρόνο εκτέλεσης χρησιµοποιώντας τις κλάσεις και τις υπηρεσίες που παρέχονται από το πλαίσιο εφαρµογών. 3.2.3 Η εικονική µηχανή Dalvik Ένα από τα στοιχεία κλειδί του Android είναι η εικονική µηχανή Dalvik. Το Android χρησιµοποιεί την δικιά του εικονική µηχανή, και όχι µια παραδοσιακή µε σκοπό να εξασφαλίσει ότι πολλαπλά στιγµιότυπα τρέχουν αποτελεσµατικά σε µια ενιαία συσκευή. Η Dalvik VM χρησιµοποιεί τον πυρήνα Linux της συσκευής για να χειριστεί τις χαµηλού επιπέδου λειτουργίες συµπεριλαµβανοµένου ασφάλειας, πολυνηµατισµού, και διαχείρισης διαδικασιών και µνήµης. Είναι επίσης δυνατό να γραφτούν εφαρµογές C/C++ που τρέχουν άµεσα στο εσωτερικό του λειτουργικού Linux. Αν και µπορεί γίνει αυτό, στις περισσότερες περιπτώσεις δεν υπάρχει κανένας λόγος. Μέσω της Dalvik VM επιτυγχάνεται η ρύθµιση της πρόσβασης στο υλικό και στις υπηρεσίες του συστήµατος. Με τη χρησιµοποίηση αυτής της εικονικής µηχανής στην εκτέλεση εφαρµογής, η οποία προσφέρει ένα αφαιρετικό στρώµα, οι 25

κατασκευαστές δεν χρειάζεται να ανησυχήσουν για κάποια υλοποίηση υλικού (hardware implementaion). H Dalvik VM εκτελεί τα Dalvik εκτελέσιµα αρχεία, ένα format βελτιστοποιηµένο έτσι ώστε να καταλαµβάνει την ελάχιστη µνήµη. Τα.dex εκτελέσιµα αρχεία δηµιουργούνται µετασχηµατίζοντας κλάσεις που έχουν µεταγλωττιστεί από Java χρησιµοποιώντας εργαλεία που παρέχονται µέσα στο SDK. Μια απλή Java VM είναι µια εικονική µηχανή βασισµένη σε στοίβα (stackbased). Η Dalvik VM από την άλλη είναι µια εικονική µηχανή βασισµένη σε µητρώα (register-based), έτσι αυξάνεται η αποδοτικότητα του επεξεργαστή του κινητού. Επίσης οι εικονικές µηχανές που είναι βασισµένες σε µητρώα επιτρέπουν ταχύτερους χρόνους εκτέλεσης των µεγάλων προγραµµάτων. 3.2.4 Αρχιτεκτονική των Εφαρµογών Android Η αρχιτεκτονική του Android ενθαρρύνει την έννοια επαναχρησιµοποίησης κώδικα, που επιτρέπει να δηµοσιευτούν και να µοιραστούν δραστηριότητες, υπηρεσίες και δεδοµένα µε άλλες εφαρµογές µε πρόσβαση που ελέγχεται από τους περιορισµούς ασφάλειας που έχουν τεθεί. Έτσι γίνεται δυνατή η επέκταση και βελτιοποίηση υπαρχόντων εφαρµογών ή δηµιουργίας καινούργιων χρησιµοποιώντας κώδικα από αυτές. Οι ακόλουθες υπηρεσίες εφαρµογών είναι οι ακρογωνιαίοι λίθοι της αρχιτεκτονικής όλων των εφαρµογών Android, παρέχοντας το πλαίσιο που θα χρησιµοποιηθεί για τη δηµιουργία του λογισµικού : 26

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID ιαχειριστής ραστηριοτήτων (Activity Manager) - Eλέγχει τον κύκλο ζωής των δραστηριοτήτων, συµπεριλαµβανοµένης της διαχείρισης του σωρού δραστηριoτήτων. Όψεις (Views) - Χρησιµοποιούνται για να κατασκευάσουν διεπαφές χρήστη (user interface) για τις δραστηριότητες (activities). ιαχειριστής Ειδοποιήσεων (Notification Manager) - Παρέχει ένα συνεπή και αποτελεσµατικό µηχανισµό για να προειδοποιεί τον χρήστη. Παροχέας Περιεχοµένου (Content Providers) - Επιτρέπουν στις εφαρµογές να µοιραστούν δεδοµένα µεταξύ τους. ιαχειριστής Πόρων (Resource Manager) - Υποστηρίζει πόρους εκτός κώδικα όπως συµβολοσειρές και γραφικά. 3.2.5 Βιβλιοθήκες Android Το Android προσφέρει διάφορα APIs για την ανάπτυξη εφαρµογών. Ο ακόλουθος κατάλογος APIs πυρήνα δίνει µια ιδέα για το τι είναι διαθέσιµο, όλες οι συσκευές Android υποστηρίζουν το λιγότερο αυτά τα APIs : android.util - Το πακέτο βοηθήµατος (utility) πυρήνων περιέχει χαµηλού επιπέδου κλάσεις όπως τα εξειδικευµένα containers, µορφοποιητές (formatters) συµβολοσειρών, και βοηθήµατα για parsing XML αρχείων. android.os - To πακέτο λειτουργικού συστήµατος παρέχει την πρόσβαση στις βασικές υπηρεσίες του λειτουργικού συστήµατος όπως τη διαβίβαση µηνυµάτων, τη επικοινωνία µεταξύ των επικοινωνιών, τις λειτουργίες ρολογιών, και την 27

απασφαλµάτωση (debugging). android.graphics - Το API γραφικών παρέχει τις χαµηλού επιπέδου κλάσεις γραφικών που υποστηρίζουν τους καµβάδες (canvases), τα χρώµατα, και τα βασικά στοιχεία ζωγραφικής, και δίνεται η δυνατότητα να ζωγραφίσει κανείς πάνω σε καµβά (canvas). android.text - Τα εργαλεία επεξεργασίας κειµένων για αναπαράσταση και ανάλυση κειµένου. android.database - Παρέχει τις χαµηλού επιπέδου κλάσεις που απαιτούνται για το χειρισµό των δροµέων (cursors) κατά τη λειτουργία τους µε τις βάσεις δεδοµένων. android.content - Το API περιεχοµένου (content) χρησιµοποιείται για να διαχειριστεί την πρόσβαση στα δεδοµένα και την έκδοση τους παρέχοντας υπηρεσίες για την διαχείριση των πόρων, των Παρόχων Περιεχοµένου (Content Provider), και των πακέτων. android.view Οι Όψεις (Views) είναι οι κλάσεις πυρήνα διεπαφών χρήστη. Όλες οι διεπαφές χρήστη κατασκευάζονται χρησιµοποιώντας µια σειρά από Όψεις που παρέχουν τα συστατικά της αλληλεπίδρασης χρηστών. android.widget - Τοποθετηµένες στο πακέτο View, οι κλάσεις widget είναι τα στοιχεία της διεπαφής χρήστη (user-interface) που χρησιµοποιούνται στις εφαρµογές. Περιλαµβάνουν τις λίστες, τα κουµπιά, και τις διατάξεις (layouts). com.google.android.maps - Ένα υψηλού επιπέδου API που παρέχει πρόσβαση στις εγγενείς λειτουργίες χαρτών που µπορούν να χρησιµοποιηθούν µέσα σε εφαρµογές. 28

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID Περιλαµβάνει τη λειτουργία MapView καθώς επίσης και τις κλάσεις Overlay και MapController που χρησιµοποιούνται για να διαχειριστούν και να ελέγξουν τους ενσωµατωµένους χάρτες. android.app - Ένα πακέτο υψηλού επιπέδου που παρέχει πρόσβαση στο µοντέλο εφαρµογών. Το πακέτο εφαρµογών περιλαµβάνει τα Activity και Service APIs που αποτελούν τη βάση για όλες τις Android εφαρµογές. android.provider - Για να διευκολύνει την πρόσβαση των προγραµµατιστών σε ορισµένους τυποποιηµένους Παρόχους Περιεχοµένου (Content Providers) (όπως η βάση δεδοµένων επαφών), προσφέρονται κλάσεις που παρέχουν πρόσβαση σε τυποποιηµένες βάσεις δεδοµένων που περιλαµβάνονται σε όλες τις εκδόσεις Android. android.telephony - Τα APIs τηλεφωνίας επιτρέπουν την άµεση αλληλεπίδραση µε το τηλεφωνικό σωρό (phone stack) της συσκευής, δίνοντας τη δυνατότητα, να γίνει λήψη, και έλεγχος των τηλεφωνηµάτων, της κατάστασης του τηλεφώνου, και των µηνυµάτων SMS. android.webkit - Το πακέτο WebKit περιλαµβάνει APIs για την εργασία µε περιεχόµενο βασισµένο στο διαδίκτυο, συµπεριλαµβανοµένου της λειτουργίας wampee για την ενσωµάτωση µηχανών αναζήτησης και ενός διαχειριστή για cookie. Εκτός από τα Android APIs, ο σωρός του Android περιλαµβάνει ένα σύνολο βιβλιοθηκών C/C++. Αυτές οι βιβλιοθήκες περιλαµβάνουν: 29

OpenGL - Βιβλιοθήκη που χρησιµοποιείται για να υποστηρίξει 3D γραφικά βασισµένη στο Open GL ES 1.0 API. FreeType - Υποστήριξη για τη bitmap και τη vector απόδοση γραµµατοσειράς. SGL - Bιβλιοθήκη πυρήνων που χρησιµοποιείται για να παρέχει µια µηχανή 2D γραφικών. libc - Τυποποιηµένη βιβλιοθήκη C που βελτιστοποιείται για συσκευές βασισµένες σε Linux. SQLite - Ελαφριά µηχανή σχεσιακών βάσεων δεδοµένων που χρησιµοποιείται για να αποθηκεύσει δεδοµένα εφαρµογών. SSL - Υποστήριξη για χρήση των Secure Sockets Layer του κρυπτογραφικού πρωτοκόλλου για ασφαλείς επικοινωνίες µέσω ιαδικτύου. 3.2.6 Προηγµένες βιβλιοθήκες Android Οι βιβλιοθήκες πυρήνα παρέχουν όλες τις λειτουργίες που είναι απαραίτητες για να ξεκινήσει η δηµιουργία µιας εφαρµογής για Android, αλλά οι προηγµένες βιβλιοθήκες APIs προσφέρουν πραγµατικά συναρπαστικές λειτουργίες. Επειδή το Android στοχεύει να χρησιµοποιείται από ένα ευρύ φάσµα κινητών, η καταλληλότητα και η εφαρµογή των ακόλουθων APIs θα ποικίλουν ανάλογα µε τη συσκευή επάνω στην οποία εφαρµόζονται. android.location - Το τοποκεντρικό API (location-based) δίνει πρόσβαση των 30

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID εφαρµογών σε πληροφορίες για τη τρέχουσα φυσική θέση της συσκευής. Οι υπηρεσίες βασισµένες στη τοποθεσία παρέχουν πρόσβαση σε πληροφορίες τοποθεσίας χρησιµοποιώντας οποιοδήποτε υλικό ή τεχνολογία είναι διαθέσιµη στη συσκευή και βοηθάει στον προσδιορισµό θέσης. android.media - Τα APIs πολυµέσων παρέχουν υποστήριξη για την αναπαραγωγή και εγγραφή αρχείων ήχου και βίντεο, συµπεριλαµβανοµένου πολυµέσα ροής (streamed). android.opengl - To Android προσφέρει µια ισχυρή αποδοτική 3D µηχανή που χρησιµοποιεί το OpenGL ES API µε το οποίο δηµιουργούνται 3D διεπαφές χρήστη για τις εφαρµογές. android.hardware - Όπου είναι διαθέσιµο, το API υλικού εκθέτει υλικό αισθητήρων συµπεριλαµβανοµένης της φωτογραφικής µηχανής, του επιταχυµέτρου (accelerometer), και αισθητήρων πυξίδας. android.bluetooth, android.net.wifi, και android.telephony - Το Android επίσης παρέχει χαµηλού επιπέδου πρόσβαση στην πλατφόρµα υλικού, συµπεριλαµβανοµένου του Bluetooth, του WI-FI, και του υλικού τηλεφωνίας. 31

3.3 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ANDROID Το SDK του Android περιλαµβάνει διάφορα εργαλεία και βοηθήµατα για τη δηµιουργία, τον έλεγχο, και τη διόρθωση των προγραµµάτων. Το ADT plug-in προσθέτει τα περισσότερα από αυτά τα εργαλεία στο Eclipse IDE,στα οποία υπάρχει η δυνατότητα πρόσβασης µέσω της DDMS κατάστασης. Ο εξοµοιωτής του Android (The Android Emulator) - Μια εφαρµογή της εικoνικής µηχανής του Android σχεδιασµένη να τρέξει στον υπολογιστή. Μπορεί να χρησιµοποιηθεί ο εξοµοιωτής για να εξεταστούν και να διορθωθούν οι Android εφαρµογές. Η Dalvik Υπηρεσία Παρακολούθησης Απασφαλµάτωσης (Dalvik Debug Monitoring Service (DDMS) - Η DDMS κατάσταση χρησιµοποιείται για τη παρακολούθηση και τον χειρισµό των Dalvik εικονικών µηχανών στις οποίες γίνεται η απασφαλάτωση των εφαρµογών. Android Asset Packaging Tool (AAPT) - Κατασκευάζει το εκτελέσιµο πακέτο αρχείων µε κατάληξη.apk. Android Debug Bridge (ADB) - Το ADB είναι µια εφαρµογή πελάτη-εξυπηρέτη (client - server) που παρέχει µια σύνδεση µε έναν τρέχοντα εξοµοιωτή. ίνει την δυνατότητα να αντιγράφούν αρχεία, να εγκατασταθούν πακέτα εφαρµογών µε κατάληξη.apk, και να εκτελεστούν εντολές πυρήνα. 32

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID Τα ακόλουθα πρόσθετα εργαλεία είναι επίσης διαθέσιµα: SQLite3 - Εργαλείο βάσεων δεδοµένων που χρησιµοποιείται για να υπάρχει πρόσβαση στα δεδοµένα της βάσεως δεδοµένων SQLite που δηµιουργείται και που χρησιµοποιείται από το Android. Traceview - Εργαλείο ανάλυσης γραφικών για την εµφάνιση των trace logs των Android εφαρµογών. MkSDCar - ηµιουργεί µια εικόνα (image) δίσκων SDCard που µπορεί να χρησιµοποιηθεί από τον εξοµοιωτή για να εξοµοιώσει µια εξωτερική κάρτα αποθήκευσης. dx - Μετατρέπει το.class bytecode της Java σε.dex bytecode του Android. activitycreator - Κοµµάτι κώδικα που χτίζει αρχεία Ant, τα οποία µπορούν να χρησιµοποιηθούν για να µεταφράσουν εφαρµογές Android χωρίς το ADT plug-in. 3.3.1 Βασικά Συστατικά Οι εφαρµογές Android αποτελούνται από κάποια συστατικά, συνδεδεµένα χρησιµοποιώντας ένα XML αρχείο το AndroidManifest.xml του κάθε project που περιγράφει κάθε συστατικό και πώς αλληλεπιδρά µε τα άλλα. Υπάρχουν έξι συστατικά που παρέχουν τις δοµικές µονάδες για τις εφαρµογές: ραστηριότητα (Activity) Είναι το επίπεδο παρουσίασης (presentation layer) της εφαρµογής. Μια δραστηριότητα είναι µια απλή οθόνη της εφαρµογής. Κάθε 33

δραστηριότητα υλοποιείται σαν µια κλάση που επεκτείνει (extends) την βασική κλάση ραστηριότητα (Activity base class). Η συγκεκριµένη κλάση προβάλει µια διεπαφή χρήστη (user interface) αποτελούµενη από Όψεις (Views) και ανταποκρίνεται σε Συµβάντα (Events). Ένα Activity είναι ισοδύναµo µε µια Φόρµα (Form) στην ανάπτυξη desktop εφαρµογών. Υπηρεσία (Service) - Μια Υπηρεσία είναι κώδικας που τρέχει για µεγάλο χρονικό διάστηµα και χωρίς διεπαφή χρήστη (UI), ενηµερώνοντας τις πηγές δεδοµένων και τις ορατές ραστηριότητες (Activities) ενεργοποιώντας Ειδοποιήσεις (Notifications). Τρέχουν και επεξεργάζονται δεδοµένα ακόµα και όταν οι ραστηριότητες της εφαρµογής δεν είναι ενεργές ή ορατές. Ένα καλό παράδειγµα είναι µια εφαρµογή που αναπαράγει µουσική από µια λίστα µουσικών κοµµατιών (media player). Σε µια τέτοια εφαρµογή, θα υπήρχαν κατά πάσα πιθανότητα µία ή και παραπάνω ραστηριότητες που επιτρέπουν στον χρήστη να επιλέξει τραγούδια και να τα αναπαράξει. Ωστόσο, η αναπαραγωγή από µόνη της δεν θα έπρεπε να διαχειρίζεται από την ραστηριότητα γιατί ο χρήστης θα περίµενε την µουσική να συνεχίζει να παίζει ακόµη και µετά την πλοήγησή του σε µια νέα οθόνη. Σε αυτή τη περίπτωση, η ραστηριότητα της αναπαραγωγής µουσικής θα ξεκινούσε µια Υπηρεσία (Service) για να τρέξει στο παρασκήνιο και να συνεχίσει η µουσική να παίζει. Το σύστηµα τότε θα κρατά την Υπηρεσία αναπαραγωγής ενεργή µέχρι να τελειώσει το κοµµάτι. Όταν πραγµατοποιηθεί σύνδεση σε µια Υπηρεσία, µπορεί να υπάρξει επικοινωνία µε αυτή µέσω µιας διεπαφής που προσφέρεται από την Υπηρεσία. Για την Υπηρεσία µουσικής, αυτό θα επέτρεπε τη παύση, ή την επιστροφή πίσω στο κοµµάτι (rewind) κλπ.. 34

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID Παροχέας Περιεχοµένου (Content Provider) - Οι εφαρµογές µπορούν να σώζουν τα δεδοµένα τους σε αρχεία, σε µια βάση δεδοµένων SLQLite ή µε οποιοδήποτε άλλο µηχανισµό µπορούν. Ένας Παροχέας Περιεχοµένου, ωστόσο, είναι χρήσιµος ώστε τα δεδοµένα µιας εφαρµογής να είναι διαθέσιµα και σε άλλες εφαρµογές. Ένας Παροχέας Περιεχοµένου είναι µια κλάση που υλοποιεί µια συγκεκριµένη οµάδα µεθόδων που επιτρέπουν σε άλλες εφαρµογές να αποθηκεύουν και να επανακτούν δεδοµένα του τύπου που διαχειρίζεται ο Παροχέας Περιεχοµένου. Οι συσκευές Android περιλαµβάνουν διάφορους εγγενείς Παροχείς Περιεχοµένου (Content Providers) που εκθέτουν τις χρήσιµες βάσεις δεδοµένων όπως για παράδειγµα των στοιχείων των επαφών του χρήστη. Πρoθέσεις (Intents) - Το Android χρησιµοποιεί µια ειδική κλάση που λέγεται Πρόθεση (Intent) για να κινείται από οθόνη σε οθόνη. Η Πρόθεση περιγράφει τι θέλει η εφαρµογή να γίνει στη συνέχεια. Τα δυο πιο σηµαντικά µέρη της δοµής δεδοµένων της Πρόθεσης είναι η ράση (Action) και τα δεδοµένα βάσει των οποίων αυτή θα εκτελεστεί. Τυπικές τιµές για µια δράση είναι η MAIN (η κεντρική είσοδος της εφαρµογής), VIEW, PICK, EDIT κλπ. Τα δεδοµένα εκφράζονται ως URI (Uniform Resource Indicator). Για παράδειγµα, για να εµφανιστεί µια ιστοσελίδα στον φυλλοµετρητή, δηµιουργείται µια Πρόθεση µε ράση VIEW και τα δεδοµένα ως ένα URL. New Intent(android.content.Intent.VIEW_ACTION; ContentURI.create( http://addev.org )); 35

Υπάρχει µια σχετική κλάση που λέγεται Φίλτρο Πρόθεσης (IntentFilter). Ενώ µια Πρόθεση είναι στην ουσία ένα αίτηµα για να γίνει κάτι, το Φίλτρο Πρόθεσης είναι µια περιγραφή του τι είναι δυνατόν να διαχειριστεί ένας έκτης Πρόθεσης (Ιntent Ρeceiver). Μια ραστηριότητα που είναι σε θέση να προβάλει πληροφορίες επικοινωνίας για ένα άτοµο θα ανακοίνωνε µε ένα Φίλτρο Πρόθεσης (IntentFilter) ότι γνωρίζει πως να διαχειριστεί την VIEW_ACTION όταν τα δεδοµένα αντιπροσωπεύουν ένα άτοµο. Οι ραστηριότητες ανακοινώνουν τα Φίλτρα Πρόθεσης (IntentFilters) στο AndroidManifest.xml αρχείο. Η πλοήγηση από οθόνη σε οθόνη πετυχαίνεται µε Προθέσεις. Για να πλοηγηθεί κανείς προς τα µπρος, µια ραστηριότητα καλεί την startactivity(myintent). Το σύστηµα τότε κοιτά στα Φίλτρα Προθέσεων (Intent Filters) για όλες τις εγκατεστηµένες εφαρµογές και διαλέγει την ραστηριότητα που τα Φίλτρα Πρόθεσης ταιριάζουν καλύτερα µε την MyIntent παράµετρο της κλήσης. Η νέα ραστηριότητα ενηµερώνεται για την Πρόθεση και ξεκινά. Η διαδικασία της υλοποίησης των Προθέσεων συµβαίνει κατά τον χρόνο εκτέλεσης της εφαρµογής όταν καλείται η startactivity, πράγµα που προσφέρει 2 πλεονεκτήµατα κλειδιά: Οι ραστηριότητες µπορούν να επαναχρησιµοποιούν κάποια λειτουργικότητα από άλλα τµήµατα του κώδικα απλά κάνοντας ένα αίτηµα υπό την µορφή µιας Πρόθεσης. Οι ραστηριότητες µπορούν να αντικατασταθούν οποιαδήποτε στιγµή από µια νέα ραστηριότητα µε ένα αντίστοιχο Φίλτρο Πρόθεσης. 36

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID έκτες Πρόθεσης (Intent Receiver) - Χρησιµοποιείται για να εκτελεστεί µια εφαρµογή σε απάντηση ενός εξωτερικού συµβάντος (external event), για παράδειγµα, όταν το τηλέφωνο χτυπά, ή όταν το δίκτυο είναι διαθέσιµο, ή όταν είναι µεσάνυχτα. Οι έκτες Πρόθεσης δεν προβάλουν µια διεπαφή χρήστη (UI), ωστόσο µπορούν να προβάλουν Ειδοποιήσεις (Notifications) για να ειδοποιήσουν τον χρήστη για κάτι σηµαντικό που συνέβη. Οι έκτες Πρόθεσης είναι επίσης καταχωρηµένοι στο AndroidManifest.xml, αλλά µπορούν επίσης καταχωρηθούν από τον κώδικα χρησιµοποιώντας την Context.registerReceiver(). Η εφαρµογή δεν χρειάζεται να τρέχει για να κληθούν οι έκτες Πρόθεσης που έχει. Το σύστηµα θα κινήσει την εφαρµογή, αν χρειαστεί, όταν ένας έκτης Πρόθεσης ενεργοποιηθεί. Οι εφαρµογές µπορούν επίσης να στέλνουν τις δικές τους Ανακοινώσεις Πρόθεσης (Intent Broadcasts) σε άλλους µε την Context.broadcastIntent(). έκτες Μετάδοσης (Broadcast Receivers) - Βασική Κλάση για τον κώδικα που θα λαµβάνει τις Προθέσεις (Intents) που στέλνονται από το sendbroadcast (). Μπορεί είτε δυναµικά να καταχωρηθεί µια περίπτωση αυτής της κατηγορίας µε Context.registerReceiver () είτε να καταχωρηθεί ένα στιγµιότυπο αυτής της κλάσης σε µια εφαρµογή µέσω της ετικέτας <receiver> στο AndroidManifest.xml. Οι έκτες Μετάδοσης αρχίζουν αυτόµατα την εφαρµογή αποκρινόµενοι σε µια εισερχόµενη Πρόθεση, που στην ουσία κάνει την εφαρµογή µια εφαρµογή οδηγούµενη από τα γεγονότα. 37

Υπάρχουν δύο σηµαντικές κατηγορίες Μεταδόσεων (Broadcasts) που µπορούν να παραληφθούν: Οι Κανονικές Μεταδόσεις Normal broadcasts (που στέλνονται µε Context.sendBroadcast) είναι απολύτως ασύγχρονες. Όλοι οι έκτες της Μετάδοσης οργανώνονται σε µια απροσδιόριστη διαταγή, συχνά συγχρόνως. Αυτό είναι αποδοτικότερο, αλλά σηµαίνει ότι οι έκτες δεν µπορούν να χρησιµοποιήσουν το αποτέλεσµα ή να αποβάλουν APIs που συµπεριλαµβάνονται εδώ. Οι Μεταδόσεις ιαταγής Ordered broadcasts (που στέλνονται µε Context.sendOrderedBroadcast) παραδίδονται σε έναν έκτη τη φορά. εδοµένου ότι κάθε έκτης εκτελείται στη συνέχεια, µπορεί να διαδώσει ένα αποτέλεσµα στον επόµενο έκτη, ή µπορεί να αποβάλει τη Μετάδοση έτσι ώστε να µη περάσει σε άλλους δέκτες. Ο χειρισµός της εκτέλεσης των εκτών διαταγής µπορεί να γίνει µε την ιδιότητα του Φίλτρου Προθέσεων Ταιριάσµατος (Matching Intent-Filter). Οι έκτες µε την ίδια προτεραιότητα τρέχουν µε τυχαία σειρά. Ειδοποιήσεις( Notifications) - Είναι ένα πλαίσιο ειδοποιήσεων χρήστη. Oι Ειδοποιήσεις δίνουν την δυνατότητα ειδοποίησης του χρήστη χωρίς να υπάρξει παρεµβολή στη τρέχουσα ραστηριότητα (Activity) και του παρέχουν τις εξής δυνατότητες : Να δηµιουργήσει ένα νέο εικονίδιο status bar. 38

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID Να επιδείξει τις πρόσθετες πληροφορίες (και να προωθήσουν µια πρόθεση) στο εκτεταµένο παράθυρο status bar. Να ενεργοποιήσει τα φώτα/leds. Να δονηθεί το τηλέφωνο. Να ενεργοποιήσει διάφορους ήχους (ringtones, ήχοι του τηλεφώνου κ.τ.λ.). Οι Ειδοποιήσεις είναι ο προτιµότερος τρόπος για τα αόρατα τµήµατα της εφαρµογής ( έκτες µετάδοσης, Υπηρεσίες, και ανενεργές ραστηριότητες) να προειδοποιήσουν τους χρήστες ότι κάποια γεγονότα που έχουν εµφανιστεί απαιτούν την προσοχή του χρήστη. Παραδείγµατος χάριν, όταν λαµβάνει µια συσκευή ένα µήνυµα κειµένου ή µια εισερχόµενη κλήση, προειδοποιεί µε τη λάµψη των φώτων, την παραγωγή ήχων, την επίδειξη εικονιδίων, ή µε την εµφάνιση µηνυµάτων διαλόγου. Ο Χειριστής Ειδοποιήσεων (Notification Manager) είναι µια Υπηρεσία συστήµατος που χρησιµοποιείται για να χειριστεί τις ειδοποιήσεις. Καλείται µέσω της µεθόδου getsystemservice, όπως φαίνεται παρακάτω: String svcname = Context.NOTIFICATION_SERVICE; NotificationManager notificationmanager; notificationmanager = (NotificationManager)getSystemService(svcName); Χρησιµοποιώντας το Χειριστή Ειδοποιήσεων, µπορούν να ενεργοποιηθούν νέες ειδοποιήσεις, να τροποποιηθούν οι υπάρχουσες, ή να αφαιρεθούν εκείνες που δεν είναι απαραίτητες ή επιθυµητές. 39

3.3.2 AndroidManifest.xml To AndroidManifest.xml είναι ένα αρχείο που απαιτείται για κάθε εφαρµογή Android. Βρίσκεται στον root φάκελο της εφαρµογής, και περιγράφει τις καθολικές (global) µεταβλητές για το πακέτο, συµπεριλαµβανοµένων των στοιχείων της εφαρµογής (δραστηριότητες, υπηρεσίες, κ.λπ.) που το πακέτο εκθέτει στον «εξωτερικό κόσµο», τo είδος δεδοµένων που καθεµία από τις δραστηριότητες κ.α. µπορεί να χειριστεί, και πώς µπορούν να ενεργοποιηθούν. Ένα σηµαντικό πράγµα που πρέπει να αναφερθεί για αυτό το αρχείο είναι τα λεγόµενα Φίλτρα Προθέσεων (IntentFilters). Τα φίλτρα αυτά περιγράφουν το που και το πότε µπορεί να ξεκινήσει µια ραστηριότητα. Όταν µια ραστηριότητα (ή το λειτουργικό σύστηµα) θέλει να εκτελέσει µια ενέργεια, όπως το άνοιγµα µιας ιστοσελίδας ή το άνοιγµα µιας οθόνης επιλογής επαφής, δηµιουργεί ένα αντικείµενο Προθέσης (Intent). Αυτό το αντικείµενο µπορεί να κρατήσει αρκετές πληροφορίες που περιγράφουν τι θέλει ο προγραµµατιστής να κάνει, τα δεδοµένα που απαιτούνται για να επιτευχθεί αυτό και άλλα κοµµάτια των πληροφοριών. Το Android συγκρίνει πληροφορίες ενός αντικειµένου Πρόθεσης µε το Φίλτρο Πρόθεσης που εκτίθενται από κάθε εφαρµογή και βρίσκει τη ραστηριότητα που είναι καταλληλότερη να χειριστεί τα δεδοµένα ή τις ενέργειες που καθορίζονται από τον καλούντα. Αν υπάρχουν περισσότερες από µία εφαρµογές ικανές να χειριστούν αυτή τη Πρόθεση, ο χρήστης έχει τη δυνατότητα να επιλέξει ποια εφαρµογή θα προτιµούσε για τη διεκπεραίωση της. Εκτός από τη δήλωση των ραστηριοτήτων (Activities), των Παροχέων Περιεχοµένου (Content Providers), των Υπηρεσιών (Services) και των εκτών 40

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID Προθέσεων(Intent Receivers), µπορεί επίσης να καθοριστούν δικαιώµατα (permissions) στo AndroidManifest.xml. Γενικά Ένα πολύ απλό AndroidManifest.xml µοιάζει µε το εξής : <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.anddev.android.hello_android"> <application android:icon="@drawable/icon"> <activity android:name=".hello_android" 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> </manifest> 41

Σχεδόν κάθε αρχείο AndroidManifest.xml (όπως και πολλά άλλα XML αρχεία Android) περιλαµβάνει τη δήλωση ονοµάτων (xmlns:android= http://schemas.android.com/apk/ res/android ) στο πρώτο στοιχείο του. Αυτό κάνει µια σειρά τυποποιηµένων χαρακτηριστικών του Android διαθέσιµα στο αρχείο, το οποίο θα χρησιµοποιηθεί για την παροχή περισσότερων από τα δεδοµένα για τα στοιχεία του φακέλου. Σχεδόν κάθε αρχείο AndroidManifest.xml περιλαµβάνει µια µοναδική ετικέτα <application>, η οποία περιλαµβάνει πολλές ετικέτες που περιγράφουν Εφαρµογές, έκτες Προθέσεων (Intent Recievers), κτλ που είναι διαθέσιµες σε αυτή την εφαρµογή. Το AndroidManifest.xml αρχείο περιέχει τις ακόλουθες ετικέτες <manifest> Αυτός είναι ο κόµβος, ρίζα του κάθε αρχείου AndroidManifest.xml και περιέχει µια ιδιότητα πακέτου που δείχνει το πακέτο της εφαρµογής, Συνήθως περιλαµβάνει την ιδιότητα xmlns:android που παρέχει αρκετά χαρακτηριστικά του συστήµατος που χρησιµοποιούνται µέσα στο αρχείο. Ένας χαρακτηριστικός κόµβος manifest φαίνεται παρακάτω : <manifest Xmlns:android="http://schemas.android.com/apk/res/android" package="org.anddev.android.smstretcher"> [ manifest nodes.] </manifest > 42

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID H ετικέτα manifest περιλαµβάνει κόµβους που ορίζουν τα συστατικά µιας εφαρµογή, τις ρυθµίσεις ασφαλείας, και τις κλάσεις δοκιµής (test classes) που απαρτίζουν την εφαρµογή. Περιλαµβάνει τις ακόλουθες ετικέτες : application Ένα αρχείο manifest µπορεί να περιέχει µόνο ένα κόµβο application. Χρησιµοποιεί ιδιότητες για να καθορίσει τα µετα-δεδοµένα της εφαρµογής (συµπεριλαµβανοµένου του τίτλου, του εικονιδίου της, και του θέµατος). Επίσης, λειτουργεί ως ένα δοχείο (container) που περιλαµβάνει ετικέτες ραστηριοτήτων, Υπηρεσιών, των Παρόχων Περιεχοµένου, και εκτών Μετάδοσης που χρησιµοποιούνται για τον καθορισµό των συστατικών της εφαρµογής. <application android:icon= @drawable/icon android:theme= @style/my_theme > [... application nodes... ] </application> activity (δραστηριότητα) - Μια ετικέτα activity απαιτείται για κάθε ραστηριότητα που εµφανίζεται στην εφαρµογή, χρησιµοποιώντας την ιδιότητα android:name για να καθοριστεί το όνοµα της κλάσης. Αυτή πρέπει να περιλαµβάνει τη κύρια εναρκτήρια ραστηριότητα (launce Activity) και κάθε άλλη οθόνη ή παράθυρα διαλόγου που µπορεί να εµφανιστούν. Προσπαθώντας να ξεκινήσει µια ραστηριότητα που δεν είναι ορισµένη στο manifest θα δηµιουργηθεί σφάλµα χρόνου εκτέλεσης (runtime 43

ecxeption). Κάθε Κόµβος ραστηριότητας υποστηρίζει ετικέτες παιδιά intent-filter (φίλτρα προθέσεων) που προσδιορίζουν ποιες Προθέσεις (Intents) ενεργοποιούν τη ραστηριότητα. <activity android:name=.myactivity android:label= @string/app_name > <intent-filter> <action android:name= android.intent.action.main /> <category android:name= android.intent.category.launcher /> </intent-filter> </activity> service (υπηρεσία) - Όπως και η ετικέτα activity, δηµιουργεί µια νέα ετικέτα service για κάθε κλάση Υπηρεσίας (Service) που χρησιµοποιείται στην εφαρµογή έτσι και η ετικέτα αυτή υποστηρίζει επίσης ετικέτες παιδιά intent-filter (late runtime binding). <service android:enabled= true android:name=.myservice ></service> provider Ετικέτες φορέων παροχής χρησιµοποιούνται για κάθε Παροχέα Περιεχοµένου (Content Provider) εφαρµογής. Οι Παροχείς Περιεχοµένου 44

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID χρησιµοποιούνται για τη διαχείριση της πρόσβασης βάσεων δεδοµένων και ανταλλαγής δεδοµένων εντός και µεταξύ εφαρµογών. <provider android:permission= com.paad.my_permission android:name=.mycontentprovider android:enabled= true android:authorities= com.paad.myapp.mycontentprovider > </provider> receiver - Με την προσθήκη ετικέτας receiver, είναι δυνατός ο ορισµός ενός έκτη Μετάδοσης (Broadcast Receiver) χωρίς να είναι απαραίτητη η έναρξη της εφαρµογής. Οι έκτες Μετάδοσης είναι σαν καθολικοί ακροατές που, µιας και οριστούν, θα εκτελεστούν κάθε φορά που ταιριάζει µε µια Πρόθεση (Intent) που µεταδίδεται από µια εφαρµογή. Με τον ορισµό εκτών Προθέσεων στο manifest, αυτή η διαδικασία γίνεται εντελώς αυτόνοµη. Εάν µια Πρόθεση που ταιριάζει µεταδοθεί, η εφαρµογή θα ξεκινήσει αυτόµατα και ο έκτης Πρόθεσης θα ενεργοποιηθεί. <receiver android:enabled= true android:label= My Broadcast Receiver android:name=.mybroadcastreceiver > </receiver> 45

uses-permission - Ως µέρος του µοντέλου ασφαλείας, οι ετικέτες uses-permission δηλώνουν τα δικαιώµατα που πρέπει να έχει µια εφαρµογή για να λειτουργήσει σωστά. Τα δικαιώµατα που περιλαµβάνονται θα παρουσιαστούν στο χρήστη, για τη έγκριση ή την απόρριψη, κατά την εγκατάσταση της. Τα δικαιώµατα (permissions) είναι απαραίτητα για πολλές από τις εγγενείς υπηρεσίες του Android, ιδίως εκείνες οι οποίες έχουν επιπτώσεις στο κόστος ή την ασφάλεια (όπως κλήση, λήψη SMS, είτε χρησιµοποιώντας υπηρεσίες βασισµένες στην τοποθεσία). Όπως φαίνεται παρακάτω, εφαρµογές τρίτων (όχι εγγενείς), µπορούν επίσης να καθορίσουν δικαιώµατα πριν από την παροχή πρόσβασης σε κοινόχρηστα στοιχεία της εφαρµογής. <uses-permission android:name= android.permission.access_location > </uses-permission> permission - Πριν πραγµατοποιηθεί οποιοσδήποτε περιορισµός για την πρόσβαση σε ένα στοιχείο της εφαρµογής, θα πρέπει να οριστούν τα δικαιώµατα (permissions) στο manifest το οποίο πραγµατοποιείται µε τον ορισµό της ετικέτας permission. Τα στοιχεία της εφαρµογής µπορούν να τα απαιτήσουν µε την προσθήκη της ιδιότητας android:permission. Άλλες εφαρµογές θα πρέπει στη συνέχεια να προσθέσουν µια ετικέτα uses-permission στα manifest τους (και να έχουν χορηγηθεί), πριν να µπορούν να χρησιµοποιούν αυτά τα προστατευόµενα στοιχεία. Εντός της ετικέτας permission, µπορεί να καθοριστεί το επίπεδο της πρόσβασης που επιτρέπεται από το συγκεκριµένο δικαίωµα (permission) (κανονικό (normal), επικίνδυνο (dangerous), υπογραφής (signature), signatureorsystem), µια ετικέτα, και µια εξωτερική πηγή που 46

ΚΕΦΑΛΑΙΟ 3: ΟΡΙΣΜΟΣ ΤΟΥ ANDROID περιλαµβάνει την περιγραφή που εξηγεί τους κινδύνους της χορήγησης αυτού του δικαιώµατος. <permission android:name= com.paad.detonate_device android:protectionlevel= dangerous android:label= Self Destruct android:description= @string/detonate_description > </permission> instrumentation - Oι κλάσεις Instrumentation παρέχουν ένα πλαίσιο για την εκτέλεση δοκιµών στις ραστηριότητες (Activities) και τις Υπηρεσίες (Services) κατά το χρόνο εκτέλεσης. Παρέχουν αγκίστρια (hooks) για την παρακολούθηση της εφαρµογής και της αλληλεπίδρασης της µε τους πόρους του συστήµατος. <instrumentation android:label= My Test android:name=.mytestclass android:targetpackage= com.paad.apackage > </instrumentation> 47

3.3.3 Οι Πόροι (Resources) Οι πόροι είναι εξωτερικά αρχεία (αρχεία εκτός κώδικα) (Εικόνα 2) που χρησιµοποιούνται από τον κώδικα της εφαρµογής και µεταφράζονται σε χρόνο build. To Android υποστηρίζει µια σειρά από διαφορετικά είδη αρχείων πόρων, συµπεριλαµβανοµένων των XML, PNG, και JPEG. Τα αρχεία XML έχουν πολύ διαφορετικές µορφές, ανάλογα µε αυτό που περιγράφουν. Εικόνα 2 : Πόροι Οι πόροι είναι εκτός πηγαίου κώδικα, και τα XML αρχεία, µεταφράζονται σε µια δυαδική, γρήγορη όσον αφορά τη φόρτωση για λόγους αποτελεσµατικότητας. Οι συµβολοσειρές είναι συµπιεσµένες σε µια πιο αποτελεσµατική µορφή αποθήκευσης. Κατάλογος πόρων Τύποι πόρων και που τοποθετούνται: Αρχεία διάταξης (layout) "/ res / layout /" Εικόνες "/ res / drawable /" Animations "/ res / anim /" 48