ANDROID Προγραμματισμός Εφαρμογών Παναγιώτης Κρητιώτης ΑΜ 1607
Περιεχόμενα Εισαγωγή Βασικά Στοιχεία Χαρακτηριστικά Αρχιτεκτονική Εργαλεία Προγραμματισμού Eclipse IDE Android SDK - ADT Plugin Προσομοιωτής - Χαρακτηριστικά Δομή Android Project Βασικά Δομικά Στοιχεία Δημιουργία Απλής Εφαρμογής Γραφική Διεπαφή XML - Layouts Activities Intends 2
Εισαγωγή Χαρακτηριστικά-Δυνατότητες-Αρχιτεκτονική 3
Εισαγωγή Το Android είναι λειτουργικό σύστημα για συσκευές κινητής τηλεφωνίας 1η Παρουσίαση: 5 Νοεμβρίου 2007 Νοέμβριος Google Τρέχει 2011 : 200,000,000 ενεργοποιήσεις - Open Handset Alliance στον πυρήνα του Linux Ελέυθερο Ανοικτό Λογισμικό 4
Προγραμματισμός στο Android Android SDK : Απαραίτητα εργαλεία και APIS για την δημιουργία εφαρμογών Γλώσσα προγραμματισμού Java και χρήση έτοιμων βιβλιοθηκών από την Google Γραφική Εύκολη Διεπαφή - Γλώσσα XML επαναχρησιμοποίηση κώδικα πακέτων Υποστήριξη μεγάλου μέρος κλάσεων της Java Όχι όλων! Έργαλεία Δημιουργίας Εφαρμογών Eclipse IDE + Android SDK +ADT Plugin for Eclipse 5
Χαρακτηριστικά - Δυνατότητες Ενσωματωμένος Βιβλιοθήκες SQLite WebBrowser 2D Γραφικών- 3D Γραφικά σε OpenGL 1.0 για αποθήκευση δεδομένων Υποστήριξη όλων των σύγχρονων μορφών Ήχου Εικόνας Τηλεφωνία GSM Bluetooth, EDGE, 3G, and WiFi Video Camera, GPS 6
Αρχιτεκτονική Android 7
Απαιτούμενα Εργαλεία Eclipse- Android SDK- ADT 8
Eclipse Ολοκληρωμένο Περιβάλλον Προγραμματισμού σε Java Ελεύθερο Λογισμικό Προτεινόμενο Περιβάλλον Εργασίας από Google Developers Απαιτεί Πολύ το Java JDK απλή εγκατάσταση σε Linux και Windows eclipse.org/downloads Google ADT Android Plugin 9
Android SDK Κύριο Πακέτο για την Έναρξη Δημιουργιας Εφαρμογών Αποτελείται από APIS Υποστήριξη διαφορετικών εκδόσεων του Android Παροχή σε Επιπλέον Υπηρεσίες (Google Apis : maps, websearch...) Για ειδικές συσκευές /εταιρείες(edk Sony Ericksson,Galaxy Tab) Απλή εγκατάσταση σε Windows και Linux Σύνδεση στο Eclipse 10
Android Development Tools (ADT) Plugin από την Google για το Eclipse IDE Πολύ Ισχυρό Εργαλείο Προγραμματισμού για το Android απαραίτητο για μεγάλης κλίμακας λογισμικό Γρήγορη εγκατάσταση Android Project για άμεση έναρξη προγραμματισμού Ευκολία χρήσης επιμέρους δυνατοτήτων και υπηρεσιών Παρέχει απλό αυτοματοποιημένο εργαλείο κατασκευής γραφικής διεπαφής σε XML 11
Προσομοιωτής Παρέχεται από το ADT plugin στο Eclipse Προσομοίωση κινητού Android σε όποια έκδοση θέλει ο προγραμματιστής Μερικές λειτουργίες(smsgps-wifi) δεν μπορούν να ελεγχθούν 12
Android Project Δομή Project - Λειτουργίες 13
Δημιουργία Project Αφού έχουμε εγκαταστήσει όλα τα απαραίτητα προγράμματα μπορούμε να δημιουργήσουμε το Project για τη δημιουργία της εφαρμογής. Επιλέγοντας File->new-> Android Project και αφού επιλέξουμε το όνομα εμφανίζεται αυτό: ---Επιλογή Έκδοσης Λογισμικού που περιέχει τις λειτουργίες που θα χρησιμοποιήσουμε ---Επιλογή Ονόματος κύριας κλάσης και ονόματος πακέτου και επιλογή ελάχιστης επιθυμητής έκδοσης λειτουργήσει η συσκευή 14
Δομή Project (1/3) Αφού δημιουργηθεί το Project στα αριστερά εμφανίζεται η δομή αρχείων που βλέπετε Src: Σε αυτό το φάκελο βρίσκονται όλα τα αρχεία στα οποία εκτελούμε κώδικα σε Java. Αυτά μπορεί να είναι απλές δηλωμένες κλάσεις ή ολόκληρες λειτουργίες Gen: Αυτό περιέχει το αρχείο R.* το οποίο καταγράφεται αυτοματοποιημένα και περιέχει τα αντικείμενα XML που χρησιμοποιούνται και τα activities 15
Δομή Project (2/3) Res:Σ'αυτό το φάκελο περιέχονται όλα τα αρχεία που αφορούν εικόνα και ήχο και ότι έχει να κάνει με τη γραφική διεπαφή Drawables: Εικόνες Ανάλογα με την ποιότητα/μέγεθός τους Layout: Οι γραφικές διεπαφές που έχουμε φτιάξει για κάθε περίπτωση που θέλουμε Values: Μεταβλητές που χρησιμοποιούνται στα αρχεία xml. 16
Δομή Project (3/3) AndroidManifest.xml: Από τα πιο σημαντικά αρχεία όλου του Project. Είναι το αρχείο το οποίο ζητά από τη συσκευή κάποιες άδειες(permissions) για ορισμένες βασικές λειτουργίες της εφαρμογής και τις ενέργειες (activities) της εφαρμογής μας. Όταν δημιουργούμε μια νέα ενέργεια ή εκτελούμε κάποια λειτουργία πρέπει να την καθορίζουμε σ'αυτό το αρχείο.πχ άδεια χρήσης διαδικτύου,άδεια χρήσης GPS. Άλλα: Ο χρήστης μπορεί να εισάγει και άλλες εξωτερικές βιβλιοθήκες οι οποίες προστίθενται στη συγκεκριμένη δομή. πχ.sftponly 17
Παράδειγμα Aνταλλαγή μηνυμάτων με επεξεργασία απομακρυσμένου αρχείου σε ftp server 18
Σκοπός Θα υλοποιήσουμε μία πολύ απλή εφαρμογή η οποία θα περιέχει 3 πλήκτρα ΑΠΟΣΤΟΛΗ, ΛΗΨΗ, ΕΞΟΔΟΣ και θα αποστέλνει μηνύματα και θα λαμβάνει το μήνυμα που έστειλε ανάλογα με την επιλογή του. Η υλοποίηση θα γίνει ως εξής: Γραφική Διεπαφή Δήλωση Μεταβλητών Κατασκευή Γραφικής διεπαφής Υλοποίηση Εφαρμογής Σύνδεση Διεπαφής με κώδικα Υλοποίηση Λειτουργιών 19
Γραφική Διεπαφή 20
Γραφική Διεπαφή Δήλωση Μεταβλητών Για την γραφική διεπαφή θα χρειαστούμε κάποιες μεταβλητές οι οποίες θα περιέχουν τις συμβολοσειρές για τα ονόματα στα πλήκτρα, τα χρώματα και ότι άλλο χρεαστούμε. Η δήλωσή τους γίνεται στο αρχείο res->values->strings.xml. Η δήλωση γίνεται όπως φαίνεται πιο κάτω. Τύποι: string,color,drawble,dimension,integer,array 21
Γραφική Διεπαφή Δημιουργία αντικειμένων Για τη δημιουργία γραφικής διεπαφής υπάρχουν 2 τρόποι Gui Builder.Δεν είναι αρκετά αναπτυγμένος ακόμη ώστε να προσφέρει WYGIWYW αλλά είναι πολύ χρήσιμο εργαλείο. Προγραμματισμός σε XML Για την υλοποίηση λοιπόν της αρχικής μας οθόνης θα πρέπει να επεξεργαστούμε το αρχείο res->layouts->main.xml το οποίο όπως θα δούμε αργότερα καλείται κατά την δημιουργία της κύριας κλάσης μας. 22
Γραφική Διεπαφή Αρχική Οθόνη 23
Γραφική Διεπαφή Αρχική Οθόνη 24
Receive.xml 25
Send.xml 26
Προσομοίωση 27
Υλοποίηση Δημιουργία activities,intents,λειτουργιών 28
Κύρια Κλάση Αυτή είναι η κύρια κλάση μας όπως έχει δημιουργηθεί αυτόματα και οποία περιέχει τη συνάρτηση oncreate().η συνάρτηση αυτή όπως φαίνεται καλείται με την δημιουργία της κλάσης και αφού αυτή αποτελεί την αρχική μας κλάση καλείται στην αρχή του προγράμματος. Όπως βλέπετε καλεί τη setcontentview() για να εμφανίσει τη διεπαφή που σχεδιάσαμε στο main.xml Γενικά στο Android ο προγραμματιστής δεν έχει έλεγχο της κατάστασης του συστήματος και του activity που εκτελείται. Η κατάσταση ελέγχεται από το σύστημα. Γιαυτό το λόγο όταν γίνεται αλλαγή κατάστασης καλούνται κάποιες συναρτήσεις οι οποίες πρέπει να υπερφορτωθούν αν θέλουμε να εκτελεστεί κάτι διαφορετικό. 29
Κύκλος Ζωής Activity Κάθε ενέργεια αποτελεί μια οθόνη στον χρήστη. Οι εφαρμογές μπορούν να ελέγξουν τις διαφορετικές φάσεις που βρίσκονται στο πρόγραμμα 30
Κύρια κλάση Views Click Listeners Για το χειρισμό κάθε πλήκτρου θα χρειαστούμε αντικείμενα της κλάσης View στα οποία μπορεί να κληθεί η συνάρτηση setonclicklistener() η οποία ανάλογα με το id του αντικειμένου περνάει ως παράμετρο στην onclick() το id για την αναγνώρισή του. 31
Κύρια κλάση onclick()- Intents Τώρα λοιπόν λαμβάνουμε τα κλικς των αντικειμένων και μένει να τα υλοποιήσουμε. Υλοποιούμε την onclick() η οποία καλείται όταν πατήσει κλικ ο χρήστης. Για κάθε κλικ παίρνουμε το View του με βάση το id και ανάλογα με αυτό εκτελούμε τι θέλουμε να κάνουμε 32
Κύρια κλάση Intents Για κάθε ένα πλήκτρο που έχει επιλεγεί δημιουργούμε ένα αντικείμενο τύπου Intent που το αρχικοποιούμε στην κλάση που θέλουμε να το προωθήσουμε και ξεκινάμε τη νέα ενέργεια που θέλουμε με την startactivity(); Intents: Είναι μηχανισμοί που περιγράφουν συγκεκριμένη ενέργεια. Γενικά στο προγραμματισμό με Android χρησιμοποιούνται πολύ συχνά. Όποτε χρειάζεται μια νέα λειτουργία χρησιμοποιύμε intent και μπορούμε να υπερφορτώσουμε κάποια ήδη υπάρχοντα όπως και στα activities 33
Κύρια κλάση 34
Κλάση Receive 35
Υλοποίηση κλάσης Receive Συνάρτηση FileUploadDownload.getData() 36
Κλάση Send 37
Κλάση Send Yλοποίηση simpleuploadtoftp.up() 38
AndroidManifest.xml 39
Προσομοίωση Send 40
Προσομοίωση Send 41
Προσομοίωση Receive 42
ΤΕΛΟΣ 43