ΗΛΕΚΤΡΟΝΙΚΟ ΒΙΒΛΙΑΡΙΟ ΚΑΤΟΙΚΙΔΙΩΝ

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

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

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

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

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

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

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

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

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

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

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

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 7η ΕΝΟΤΗΤΑ: ΟΡΓΑΝΩΣΗ ΧΡΟΝΟΥ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

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

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

Δημιουργία ιστοσελίδας με. Wordpress - Βασικές λειτουργίες

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

Ολοκληρωμένο σύστημα διαχείρισης παρουσιών στο Τ.Ε.Ι. Σερρών

Atlantis - Νέο user interface

GoDigital.CMS Content Management System. Πλήρης διαχείριση περιεχομένου ιστοσελίδας

ΕΓΧΕΙΡΙΔΙΟ ATLANET II ΚΛΑΔΟΣ ΖΩΗΣ

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

Δημιουργία ιστοσελίδας με Wordpress - Βασικές λειτουργίες

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

Οδηγίες Χρήσης Εφαρμογής

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

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

Περιεχόμενα. Περιβάλλον ηλεκτρονικού υπολογιστή...9 Επιφάνεια εργασίας...12 Διαχείριση αρχείων...15 Ιοί Η/Υ...21 Διαχείριση εκτυπώσεων...

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

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

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

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

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

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

Samsung PC Studio 3.0 Οδηγός χρήστη

Εγχειρίδιο Φοιτητή. Course Management Platform. Εισαγωγή. for Universities Ομάδα Ασύγχρονης Τηλεκπαίδευσης Παν. Μακεδονίας Σεπτέμβριος 2004

Blog στο Wordpress. Επιμέλεια: Δέγγλερη Σοφία

Εφαρμογή Διαχείρισης Στόλου Οχημάτων «RouteΤracker»

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25

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

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

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

Σύντομη περιγραφή 5. Για να ξεκινήσετε 6. Οι οθόνες του προγράμματος 8. Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7

Το συγκεκριμένο εγχειρίδιο δημιουργήθηκε για να βοηθήσει την κατανόηση της διαδικασίας Office Management (Ημερολόγιο Λογιστή). Παρακάτω προτείνεται

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

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

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

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

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

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

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

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

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

Εγχειρίδιο Χρήσης Εφαρμογής Συστήματος Διαχείρισης Λογισμικού

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

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

BlackBerry Desktop Software. Έκδοση: 7.1. Οδηγός χρήσης

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

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

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

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

Δημιουργία. Ιστολογίου (blog) 7/5/2015. Χρυσάνθη Γιομέλου ΚΔΒΜ ΝΙΚΑΙΑΣ

Visual Flowchart Γενικά

Copyright 2017 HP Development Company, L.P.

Περιεχόμενα. Αντί προλόγου Πώς να χρησιμοποιήσετε το βιβλίο Κεφάλαιο 1: Πώς δημιουργώ το Προφίλ μου στο Facebook;...

Σενάριο Χρήσης Moodle

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

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

Γεωργάκης Αριστείδης ΠΕ20

Χρήσιμες Λειτουργίες των. Windows 7

ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ Microsoft WINDOWS (95-98-NT-2000-XP)

Open eclass Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης

Copyright 2016 HP Development Company, L.P.

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

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

Σύστημα υποβολής αιτήσεων υποψήφιων συνεργατών ΕΚΤ

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

Atlantis Orders on android

Οδηγίες χρήσης εφαρμογής Ε.Ο.Π.Υ.Υ - Σύστημα Ηλεκτρονικής Προέγκρισης Φαρμάκων για Θεράποντες Ιατρούς

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

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

Vodafone Business Connect

ΒΟΗΘΕΙΑ για τη χρήση του ιδρυματικού αποθετηρίου ΥΠΑΤΙΑ ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

Οδηγίες χρήσης για την εφαρµογή Spot4U

Υγιεινή και Ασφάλεια

Χρήση του Office 365 σε iphone ή ipad

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

POWERPOINT Είναι το δημοφιλέστερο πρόγραμμα παρουσιάσεων.

MANUAL PRESTASHOP 1.6

Εισαγωγή στο περιβάλλον Code::Blocks

ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΥΠΗΡΕΣΙΑΣ [ΥΠΗΡΕΣΊΑ 6. YΠΗΡΕΣΙΑ ΖΩΝΤΑΝΗΣ

ιαχείριση Τηλεφωνικών Κλήσεων

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

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

Atlantis - Νέο user interface

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27

GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα

Εγχειρίδιο Χρήσης. Σημαντικό!

Transcript:

Τ.Ε.Ι. ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΗΛΕΚΤΡΟΝΙΚΟ ΒΙΒΛΙΑΡΙΟ ΚΑΤΟΙΚΙΔΙΩΝ Αθανασία Έλληνα ΦΕΒΡΟΥΑΡΙΟΣ 2014 ΕΠΟΠΤΗΣ ΚΑΘΗΓΗΤΗΣ Ιωάννης Καζανίδης

Ευχαριστήρια Η συντάκτρια της παρούσας εργασίας επιθυμεί πριν από την παράθεση του επιστημονικού πονήματος, να ευχαριστήσει όλους εκείνους που κατά τη γνώμη του συνέβαλαν, στο να βρίσκεται στο σημείο της ολοκλήρωσης των βασικών ακαδημαϊκών του σπουδών. Θα ήθελα πρώτα, να ευχαριστήσω τον επιβλέποντα καθηγητή μου κ. Ιωάννη Καζανίδη, για την αμέριστη στήριξη που μου παρείχε όλο αυτό το χρονικό διάστημα, καθώς και για τις κατευθυντήριες οδηγίες που στάθηκαν πολύτιμες για την ολοκλήρωση της εργασίας. Επίσης θα ήθελα να ευχαριστήσω την οικογένειά μου και κυρίως τη μητέρα μου, που μου παρείχε κάθε υλική και ηθική υποστήριξη, να συνεχίσω το έργο μου όλα αυτά τα χρόνια.

Περίληψη Το λειτουργικό Android αποτελεί τη νέα γενιά λογισμικού στα κινητά τηλέφωνα, αλλά ταυτόχρονα και την πλατφόρμα ανάπτυξης η οποία προσφέρει χρήσιμα εργαλεία για την εύκολη και γρήγορη ανάπτυξη εφαρμογών. Περιέχει έτοιμες βιβλιοθήκες οι οποίες μπορούν να χρησιμοποιηθούν για τη δημιουργία πανίσχυρων εφαρμογών, όπως εφαρμογές καταγραφής δεδομένων, όπως στην περίπτωση της υλοποίησης ενός ηλεκτρονικού βιβλιαρίου κατοικίδιων.

Πίνακας Περιεχομένων Κεφάλαιο 1- Λειτουργικό Android... 9 1.1. Ιστορική Αναδρομή... 9 1.2. Εκδόσεις... 10 1.2.1. Android 1.0... 12 1.2.2. Android 1.1... 12 1.2.3. Android 1.5 Cupcake... 13 1.2.4. Android 1.6 Donut... 13 1.2.5. Android 2.0/2.1 Eclair... 14 1.2.6. Android 2.2.x Froyo... 14 1.2.7. Android 2.3.x Gingerbread... 15 1.2.8. Android 3.x Honeycomb... 15 1.2.9. Android 4.0.x Ice Cream Sandwich... 16 1.2.10. Android 4.1.x, 4.2.x, 4.3 Jelly Bean... 17 1.3. Αρχιτεκτονική... 17 1.3.1. Εφαρμογές... 19 1.3.2. Πλαίσιο εφαρμογών... 19 1.3.3. Βιβλιοθήκες Android runtime... 24 1.3.4. Πυρήνας Linux... 25 Κεφάλαιο 2- Ανάλυση απαιτήσεων... 26 2.1. Αντίστοιχες Εφαρμογές... 26 2.1.1. PetMasterPro... 26 2.1.2. Vet Mobile... 27 2.1.3. My Pet Record... 27 2.1.4. Pet Health Book... 28

2.2. Συνέντευξη... 29 2.3. Δομή Βάσης... 34 Κεφάλαιο 3- Υλοποίηση εφαρμογής... 38 3.1. Απαιτήσεις συστήματος... 38 3.1.1. Android SDK... 38 3.1.2. Java Development Kit (JDK)... 39 3.1.3. Eclipse IDE... 39 3.2. Δημιουργία των αρχείων της εφαρμογής... 39 3.3. Γραφική διεπιφάνεια... 40 3.4. Μενού επιλογών... 45 3.5. Βάση δεδομένων... 48 3.6. Δραστηριότες... 50 Κεφάλαιο 4- Παρουσίαση εφαρμογής... 59 4.1. Αρχική οθόνη... 59 4.1.1. Λεπτομέρειες κατοικίδιου... 60 4.1.2. Καταγραφή βάρους... 61 4.1.3. Ιστορικό εργασιών... 62 4.2. Φόρμα προσθήκης κατοικίδιου.... 62 4.3. Εμφάνιση και προσθήκη εργασιών.... 63 Κεφάλαιο 5- Αξιολόγηση εφαρμογής και μελλοντικές επεκτάσεις... 66 Συμπεράσματα... 72 Πίνακας εικόνων Εικόνα 1-1 Αρχιτεκτονική android... 18 Εικόνα 1-2 Κύκλος ζωής δραστηριότητας... 20 Εικόνα 1-3 Κοινό σχέδιο εμφάνισης σε διαφορετικές συσκευές... 22 Εικόνα 1-4 Διαφορετικό σχέδιο εμφάνισης ανά συσκευή... 22

Εικόνα 1-5 Ροή εντοπισμού θέσης... 23 Εικόνα 2-1 PetMasterPro... 26 Εικόνα 2-2 VetMobile... 27 Εικόνα 2-3 MyPetRecord... 28 Εικόνα 2-4 PetHealthBook... 29 Εικόνα 2-7 Διάγραμμα Use Case... 33 Εικόνα 2-5 Διάγραμμα οντοτήτων... 36 Εικόνα 2-6 Σχεσιακό βάσης... 37 Εικόνα 3-1 Android SDK Manager... 39 Εικόνα 3-2 Δημιουργία εφαρμογής... 40 Εικόνα 3-3 Δημιουργία νέας οθόνης... 41 Εικόνα 3-4 Αρχική «άδεια» οθόνη... 42 Εικόνα 3-5 Προσθήκη textview... 42 Εικόνα 3-6 Προσθήκη edittext... 43 Εικόνα 3-7 Προσθήκη υπόλοιπων συστατικών... 43 Εικόνα 3-8 Προσθήκη buttons... 44 Εικόνα 3-9 Προσθήκη νέου μενού... 45 Εικόνα 3-10 Προσθήκη νέου στοιχείου μενού... 46 Εικόνα 3-11 Χαρακτηριστικά στοιχείου μενού... 46 Εικόνα 3-12 Υπόλοιπα στοιχεία μενού... 47 Εικόνα 3-13 Άνοιγμα Android Manifest... 51 Εικόνα 3-14 Προσθήκη δραστηριότητας 1/2... 51 Εικόνα 3-15 Προσθήκη δραστηριότητας 2/2... 52 Εικόνα 3-16 Στοιχεία δραστηριότητας... 52 Εικόνα 3-17 Όνομα και χαρακτηριστικά δραστηριότητας... 53 Εικόνα 3-18 Παραγόμενος κώδικας... 53 Εικόνα 4-1 Αρχική Οθόνη... 59

Εικόνα 4-2 Επιλογή menu στην αρχική οθόνη... 60 Εικόνα 4-3 Καρτέλα TODOS... 60 Εικόνα 4-4 Εμφάνιση στοιχείων κατοικίδιου... 61 Εικόνα 4-5 Εισαγωγή μέτρησης βάρους... 62 Εικόνα 4-6 Ιστορικό εργασιών... 62 Εικόνα 4-7 Φόρμα εισαγωγής κατοικίδιου... 63 Εικόνα 4-8 Εμφάνιση προγραμματισμένης εργασίας... 64 Εικόνα 4-9 Δημιουργία εργασίας... 65 Πίνακες Πίνακας 1-1 Εκδόσεις Android... 11

ΕΙΣΑΓΩΓΗ Η παρούσα εργασία θα εστιάσει σε δύο τεχνολογικά ζητήματα. Στο πρώτο μέρος θα παρουσιαστεί το λειτουργικό Android, ενώ στο δεύτερο μέρος θα πραγματοποιηθεί και θα εξεταστεί η υλοποίηση εφαρμογής στη συγκεκριμένη πλατφόρμα μέσω Eclipse. Στο πρώτο κεφάλαιο θα αναφερθούμε στο λειτουργικό Android, και θα προσεγγίσουμε την ιστορική του εξέλιξη. Θα εστιάσουμε στα χαρακτηριστικά των εκδόσεων που έχουν κυκλοφορήσει. Θα περιγράψουμε επίσης την αρχιτεκτονική του λειτουργικού και θα εμβαθύνουμε στα κυριότερα χαρακτηριστικά της. Το δεύτερο κεφάλαιο περιλαμβάνει, την ανάλυση απαιτήσεων για την δημιουργία της εφαρμογής. Το τρίτο κεφάλαιο αποτελεί την υλοποίηση της εφαρμογής και παρουσίαση των εργαλείων που χρησιμοποιήθηκαν αλλά και του αντίστοιχου κώδικα, ενώ στο τέταρτο κεφάλαιο γίνει η παρουσίαση. Στο πέμπτο και τελευταίο κεφάλαιο, θα γίνει αξιολόγηση της εφαρμογής, καθώς και αναφορά σε μελλοντικές αναβαθμίσεις.

Κεφάλαιο 1- Λειτουργικό Android 1.1. Ιστορική Αναδρομή Τα κινητά τηλέφωνα χρησιμοποιούσαν μια ποικιλία λειτουργικών συστημάτων όπως Symbian OS, Microsoft s Windows Mobile, Mobile Linux, iphone OS. Η υποστήριξη προτύπων και ανοιχτών API θα μπορούσε να ενθαρρύνει την ανάπτυξη χαμηλού κόστους εφαρμογών, αλλά κανένα από αυτά τα λειτουργικά δεν υποστήριζε αυτή την πολιτική. Η Google εισήλθε στην αγορά με την πλατφόρμα Android, προσφέροντας ανοιχτού κώδικα λογισμικό και υψηλής επιπέδου πλατφόρμα ανάπτυξης. Η Google ξεκίνησε την ανάπτυξη αυτής της πλατφόρμας με την εταιρία Android Inc, το 2005. Στα τέλη τους 2007, μία ομάδα από ηγέτες της βιομηχανίας συνεργάστηκαν για την πλατφόρμα Android, αποτελώντας την Open Handset Alliance. Μερικά εξέχοντα μέλη της ομάδας αυτής περιλάμβαναν: T-Mobile Sprint Nextel Motorola Samsung Sony Ericsson Toshiba Vodafone Google Intel Texas Instruments Ένας από τους στόχους της συμμαχίας ήταν η καινοτομία, βασισμένη στις ανάγκες των καταναλωτών. Το πρώτο βασικό αποτέλεσμα αυτής της προσπάθειας ήταν ο σχεδιασμός της πλατφόρμας android, με τέτοιο τρόπο ώστε να εξυπηρετεί τις ανάγκες της κινητής τηλεφωνίας, τους κατασκευαστές κινητών τηλεφώνων αλλά και τους προγραμματιστές εφαρμογών. Το πρώτο SDK εκδόθηκε σαν early look τον Νοέμβριο του 2007. Τον Σεπτέμβριο του 2008, η T-Mobile ανακοίνωσε τη διαθεσιμότητα του T-Mobile Σελίδα 9 από 73

1 Λειτουργικό Android G1, του πρώτου έξυπνου τηλεφώνου, βασισμένο στην πλατφόρμα Android. Μερικές μέρες αργότερα ανακοινώθηκε από τη Google η SDK έκδοση Candidate 1.0. Τον Οκτώβριο του 2008, η Google ανακοίνωσε ότι ο πηγαίος κώδικας της πλατφόρμας είναι διαθέσιμος, σύμφωνα με τους όρους της άδειας Apache License 2.0 1. Όταν το Android κυκλοφόρησε, μία από τις δυνατότητες που πήγαζαν από την αρχιτεκτονική του ήταν η δυνατότητα αλληλεπίδρασης ανάμεσα στις εφαρμογές και η χρήση κοινών συστατικών μεταξύ τους. Η επανεξέταση της JVM (Java Virtual Machine), είχε σαν αποτέλεσμα τη δημιουργία της εικονικής μηχανής Dalvik για την εκτέλεση των εφαρμογών σε Android με αποδοτικότερο τρόπο. Στα τέλη τους 2008 η Google κυκλοφόρησε μια συσκευή παλάμης η οποία μπορούσε να εκτελέσει εφαρμογές χωρίς να χρειάζεται ο χρήστης να είναι συνδρομητής σε κάποια εταιρία κινητής τηλεφωνίας. Παράλληλα κυκλοφόρησε την έκδοση 1.1. Τον Απρίλιο τους 2009 διατέθηκε η έκδοση 1.5. Από το 2009 προστέθηκαν αρκετές δυνατότητες και κυκλοφόρησαν αρκετές εκδόσεις έως και σήμερα με τελευταία επίσημη την Android 4.1.x Jelly Bean και API Level 16 (Hashimi & Komatineni, 2009). 1.2. Εκδόσεις Το ιστορικό των εκδόσεων του λειτουργικού Android, ξεκίνησε με την Beta έκδοση του Νοεμβρίου 2007. Οι ενημερώσεις κυκλοφόρησαν για την διόρθωση λαθών, αλλά και για να προσθέσουν καινούργιες δυνατότητες. Πολλές φορές κυκλοφόρησαν πολλές υπό εκδόσεις, κυρίως για να συμβαδίσουν με τις τεχνολογικές εξελίξεις, αλλά και να διορθώσουν προβλήματα που υπήρχαν με συγκεκριμένες συσκευές. Μία τέτοια έκδοση για παράδειγμα ήταν η Android 2.2.2 Froyo για να διορθώσει προβλήματα που 1 Σύμφωνα με την άδεια, επιτρέπεται στους χρήστες του λογισμικού η χρήση για οποιοδήποτε σκοπό, η διανομή, η αλλαγή και η διανομή της τροποποίησης κάτω από τους όρους χρήσης της άδειας Σελίδα 10 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα είχαν προκύψει με τη συσκευή Nexus One και την αποστολή SMS μηνυμάτων. Στο πίνακα που ακολουθεί παρουσιάζονται οι εκδόσεις Android. Πίνακας 1-1 Εκδόσεις Android Πλατφόρμα Ονομασία Επίπεδο API Android 1.0 Base 1 Android 1.1 Base 1.1 2 Android 1.5 Cupcake 3 Android 1.6 Donut 4 Android 2.0-2.1 Eclair 7 Android 2.2 2.2.3 Froyo 8 Android 2.3 2.3.2 9 Gingerbread Android 2.3.3 2.3.7 10 Android 3.1 12 Honeycomb Android 3.2 13 Android 4.0 4.0.2 14 Ice Cream Android 4.0.3 4.0.4 15 Android 4.1 16 Android 4.2 Jelly Bean 17 Android 4.3 18 Σελίδα 11 από 73

1 Λειτουργικό Android Android 4.4 Kit Kat (έχει ανακοινωθεί) 19 1.2.1. Android 1.0 To Android 1.0 ήταν η πρώτη εμπορική έκδοση, η οποία κυκλοφόρησε τον Σεπτέμβριο του 2008. Οι δυνατότητες που προσέφερε ήταν: Εφαρμογή Android Market για λήψη εφαρμογών. Πλοηγό με δυνατότητες μεγέθυνσης των σελίδων. Υποστήριζε επίσης και καρτέλες. Υποστήριξη για κάμερα. Κατηγοριοποίηση εφαρμογών ανά φάκελο. Πρόσβαση σε εξυπηρετητές ηλεκτρονικής αλληλογραφίας. Συγχρονισμό και υποστήριξη με υπηρεσίες της Google όπως Gmail, Contacts, Calendar, Maps, Search, Talk Υπηρεσίες μηνυμάτων κειμένου και MMS Εφαρμογή πολυμέσων χωρίς όμως υποστήριξη βίντεο. Ειδοποιήσεις στην περιοχή κατάστασης. YouTube εφαρμογή Άλλες εφαρμογές όπως: Ξυπνητήρι, Αριθμομηχανή, Dialer, Διαχείριση Εικόνων και Ρυθμίσεις. Υποστήριξη WiFi και Bluetooth 1.2.2. Android 1.1 Κυκλοφόρησε τον Φεβρουάριο του 2009, αρχικά για το κινητό HTC Dream. Ενδοεταιρικά ήταν γνωστό με το όνομα Petit Four, τελικά όμως δεν χρησιμοποιήθηκε επίσημα. Απoτέλεσε ενημέρωση της 1.0 έκδοσης επιλύοντας προβλήματα και παρέχοντας πρόσθετες δυνατότητες όπως: Συμπληρωματικές δυνατότητες εύρεσης στοιχείων στους χάρτες Google. Προσθήκη επισυναπτόμενων αρχείων στα μηνύματα. Δυνατότητα κύλισης στην διεπιφάνεια. Σελίδα 12 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα 1.2.3. Android 1.5 Cupcake Τον Απρίλιο του 2009, κυκλοφόρησε η έκδοση 1.5, που στηρίχθηκε στον πυρήνα Linux 2.6.27. Ήταν η πρώτη έκδοση που ονομάστηκε επίσημα, ξεκινώντας μια πολιτική που ήθελε οι επόμενες εκδόσεις να δανείζονται ονόματα ορεκτικών. Εκτός από τις νέες δυνατότητες υπήρξαν και ανανεώσεις στη διεπιφάνεια: Υποστήριξη εικονικών πληκτρολογίων τρίτων κατασκευαστών, με δυνατότητα αυτό συμπλήρωσης. Υποστήριξη για widgets, δηλαδή για εφαρμογές οι οποίες ενσωματώνονται σε άλλες και λαμβάνουν περιοδικές ανανεώσεις, όπως για παράδειγμα το widget καιρού το οποίο ενσωματώθηκε στην αρχική οθόνη. Καταγραφή και αναπαραγωγή βίντεο MPEG-4 και 3GP. Αυτόματο ζευγάρωμα συσκευών Bluetooth και υποστήριξη στερεοφωνικού ήχου. Δυνατότητες αποκοπής και επικόλλησης στον πλοηγό. Φωτογραφίες επαφών. Αναλυτική καταγραφή χρόνου κλήσεων. Εφέ μεταβάσεων μεταξύ των οθονών. Αυτόματη περιστροφή οθόνης Δυνατότητα μεταφόρτωσης αρχείων βίντεο στο YouTube ή φωτογραφιών στο Picasa. 1.2.4. Android 1.6 Donut Η συγκεκριμένη έκδοση βασίστηκε στον πυρήνα Linux 2.6.29, αποτελούμενη από τα εξής πρόσθετα χαρακτηριστικά: Βελτίωση της αναζήτησης, για την συμπερίληψη του ιστορικού πλοήγησης και του διαδικτύου. Δυνατότητα στους κατασκευαστές να μπορούν να συμπεριλάβουν το περιεχόμενό τους, στα αποτελέσματα αναζήτησης. Μηχανή σύνθεσης ομιλίας για την εκφώνηση ενός αλφαριθμητικού ή κειμένου. Καλύτερη υποστήριξη πολυμέσων. Σελίδα 13 από 73

1 Λειτουργικό Android Δυνατότητα επιλογής πολλών αρχείων για μαζική διαγραφή. Υποστήριξη για WVGA οθόνες. 1.2.5. Android 2.0/2.1 Eclair Κυκλοφόρησε τον Οκτώβριο του 2009 και βασίστηκε στον πυρήνα Linux 2.6.29. Η έκδοση 2.1 διόρθωσε κάποια λάθη ενώ η 2.0 πρόσθεσε αρκετά νέα χαρακτηριστικά όπως: Δυνατότητα προσθήκης πολλαπλών λογαριασμών ηλεκτρονικής αλληλογραφίας. Δυνατότητα κλήσης πατώντας την φωτογραφία μιας επαφής. Αποθήκευση των μηνυμάτων. Υποστήριξη φλας, ψηφιακού ζουμ και επιλογής εφφε για την κάμερα. Βελτιωμένη διαχείριση πληκτρολογίου. Υποστήριξη HTML5 από τον πλοηγό. Προσθήκη ενισχυμένης ατζέντας με δυνατότητα πρόσκλησης επαφών σε συμβάντα. Μεγαλύτερη υποστήριξη σε οθόνες και καλύτερος λόγος κοντράστ. Επέκταση της κλάσης MotionEvent για πολλαπλής αφής συμβάντα. Υποστήριξη ταπετσαριών παρασκηνίου με δυνατότητα κίνησης. 1.2.6. Android 2.2.x Froyo Βασίστηκε στον πυρήνα Linux 2.6.32. και κυκλοφόρησε τον Μάιο του 2010. Οι υπό εκδόσεις 2.2.1 έως 2.2.3 έλυσαν κυρίως προβλήματα λαθών και ασφάλειας. Η έκδοση 2.2. πρόσθεσε δυνατότητες: Βελτιώσεις ταχύτητας και διαχείρισης μνήμης. Ενσωμάτωση της μηχανής JavaScript του Chrome στον πλοηγό. Ενεργοποίηση των ειδοποιήσεων push. Βελτιωμένη υποστήριξη για εξυπηρετητές mail, που υποστηρίζονται από τον Microsoft Exchange. Βελτιωμένη έκδοση του εκκίνητη εφαρμογών με συντομεύσεις για το τηλέφωνο και τον πλοηγό. Σελίδα 14 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα Επιλογή για απενεργοποίηση της ανταλλαγής δεδομένων μέσω του κινητού δικτύου. Αυτόματων ενημερώσεων των εφαρμογών. Βελτιωμένες δυνατότητες Bluetooth. Εγκατάστασης εφαρμογών στην πρόσθετη μνήμη. 1.2.7. Android 2.3.x Gingerbread Η συγκεκριμένη έκδοση αποτελεί τη πιο δημοφιλή έκδοση αυτή τη στιγμή σύμφωνα με τα στοιχεία της Google και βασίζονται στον αριθμό των συσκευών που προσπελαύνουν την υπηρεσία Google Play σε μια περίοδο 14 ημερών. Συγκεκριμένα αποτελεί το 55,5% των συσκευών Android με δεύτερη την Ice Cream Sandwich με ποσοστό 23,7% 2. Κυκλοφόρησε τον Δεκέμβριο του 2010 με βελτιώσεις όπως: Ανανεωμένο περιβάλλον χρήστη. Υποστήριξη για μεγαλύτερες οθόνες και υψηλότερες αναλύσεις. Μεγαλύτερη ακρίβεια κατά την πληκτρολόγηση καθώς και φωνητική υπαγόρευση. Περισσότερα ηχητικά εφέ και γενικότερα μεγαλύτερες δυνατότητες στα πολυμέσα. Καλύτερη διαχείριση ενέργειας και εφαρμογών. Αλλαγή στο σύστημα αρχείων σε ext4 από YAFFS. Βελτιωμένες βιβλιοθήκες διαχείρισης ήχου και γραφικών για τους κατασκευαστές παιχνιδιών. Εκτεταμένη υποστήριξη αισθητήρων όπως γυροσκόπια, βαρόμετρα, επιταχυνσιόμετρα κλπ. Υποστήριξη βίντεο στις συνομιλίες μέσω Google Talk. Καλύτερη διαχείριση της μπαταρίας για μεγαλύτερη αποτελεσματικότητα. 1.2.8. Android 3.x Honeycomb 2 Για ενημερωμένες πληροφορίες μπορεί κάποιος να ανατρέξει στη διεύθυνση http://developer.android.com/about/dashboards/index.html Σελίδα 15 από 73

1 Λειτουργικό Android Στις 22 Φεβρουαρίου του 2011 κυκλοφόρησε η έκδοση Honeycomb, βασισμένη στον πυρήνα Linux 2.6.36. Δύο ημέρες αργότερα κυκλοφόρησε η ταμπλέτα Motorola Xoom με Android. Συνεπώς αυτή η έκδοση προσανατολίστηκε περισσότερο σε αλλαγές στη διεπιφάνεια, αλλά και υποστήριξης υλικού όπως: Νέο ολογραφικό περιβάλλον για ταμπλέτες. Προσθήκη μπάρας συστήματος, για γρήγορη απεικόνιση των ειδοποιήσεων. Απλοποιημένη πολύ-επεξεργασία. Επανασχεδιασμός πληκτρολογίου για μεγαλύτερες οθόνες. Γρήγορη πρόσβαση σε υπηρεσίες πολυμέσων. Επιτάχυνση υλικού. Υποστήριξη για πολλαπλού πυρήνα επεξεργαστές. Κρυπτογράφηση δεδομένων. Λειτουργία συμβατότητας για εφαρμογές που είχαν σχεδιαστεί για κινητά να μπορούν να απεικονίζονται σε ταμπλέτες. 1.2.9. Android 4.0.x Ice Cream Sandwich Όπως αναφέρθηκε η έκδοση αυτή αποτελεί την δεύτερη δημοφιλέστερη έκδοση έως σήμερα. Βασίστηκε στον πυρήνα Linux 3.0.1, και κυκλοφόρησε τον Οκτώβριο του 2011. Διατήρησε τη συμβατότητα με παλαιότερες εκδόσεις ενώ παρουσίασε νέες δυνατότητες όπως: Δημιουργία φακέλων με drag-n-drop. Δυνατότητα μεγέθυνσης ημερολογίου. Δυνατότητα σύλληψης στιγμιότυπων της οθόνης. Αυτόματη ορθογραφική διόρθωση κατά την πληκτρολόγηση. Αυτόματος συγχρονισμός σελιδοδεικτών. Ενσωματωμένη επεξεργασία εικόνων. Υποστήριξη βίντεο 1080p (υψηλής ανάλυσης). Ομαλότερη περιστροφή οθόνης. Απ ευθείας σύνδεση συσκευών μέσω WiFi. Δυνατότητες δημιουργίας VPN δικτύων. Σελίδα 16 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα 1.2.10. Android 4.1.x, 4.2.x, 4.3 Jelly Bean Αποτελούν τις τελευταίες εκδόσεις, έως σήμερα και ανακοινώθηκε στο συνέδριο της I/O της Google τον Ιούνιο του 2012. Βασίζεται στον πυρήνα Linux 3.0.31 και αφορούν κυρίως βελτιώσεις στη λειτουργικότητα και στην απόδοση της γραφικής διεπιφάνειας. Η βελτίωση στην απόδοση, περιλαμβάνει το Project Butter, που χρησιμοποιεί αναμονή αφής, τριπλό buffering, εκτεταμένο κάθετο χρονισμό vsync και ρυθμό ανανέωσης 60 fps για τη δημιουργία ομαλής butter διεπιφάνειας. Επιπροσθέτως περιλαμβάνει: Μεγαλύτερη πολυγλωσσική υποστήριξη και αμφίδρομο κείμενο. Εκτεταμένες ειδοποιήσεις. Δυνατότητα απενεργοποίησης ειδοποιήσεων συγκεκριμένων εφαρμογών. Μεταφορά δεδομένων μέσω Bluetooth. Καινούργια διεπιφάνεια για τις ταμπλέτες. Βελτιωμένη φωνητική αναζήτηση. Βελτιωμένη εφαρμογή κάμερας. Υψηλής ανάλυσης φωτογραφίες επαφών. Πολύ-κάναλο ήχο Αντικατάσταση του πλοηγού με την κινητή έκδοση του Google Chrome. Δυνατότητα περιστροφής αρχικής οθόνης. Εφαρμογή αναζήτησης Google Now. Δυνατότητα αναπαραγωγής μουσικής μέσω USB. Δυνατότητα αυτόματης οργάνωσης εικονιδίων καθώς και αυξομείωσης του μεγέθους, ώστε να χωράνε στην αρχική οθόνη. 1.3. Αρχιτεκτονική Η Google περιγράφει το Android ως: Η πρώτη πραγματικά ανοικτή και ολοκληρωμένη πλατφόρμα για κινητές συσκευές, που επιτρέπει την δημιουργία λογισμικού χωρίς περιορισμούς ιδιοκτησίας, που τίθενται από τα δικαιώματα χρήσης, ευνοώντας έτσι τη καινοτομική εξέλιξη. Σελίδα 17 από 73

1 Λειτουργικό Android ΕΦΑΡΜΟΓΕΣ Φυσικές Εφαρμογές Εφαρμογές Τρίτων ΠΛΑΙΣΙΟ ΕΦΑΡΜΟΓΩΝ (APPLICATION FRAMEWORK) Διαχειριστής δραστηριοτήτων Διαχειριστής παραθύρων Διαχειριστής περιεχομένου Διαχειριστής συστήματος Διαχειριστής ειδοποιήσεων Διαχειριστής πακέτων Διαχειριστής τηλεφώνου Διαχειριστής πόρων Διαχειριστής τοποθεσίας Διαχειριστής αισθητήρων Διαχειριστής επιφάνειας Πολυμέσα ΒΙΒΛΙΟΘΗΚΕΣ SQLite ANDROID RUNTIME Βιβλιοθήκες πυρήνα OpenGL/ES FreeType WebKit Εικονική μηχανή Dalvik SGL SSL libc ΠΥΡΗΝΑΣ LINUX Οδηγός εμφάνισης Οδηγός κάμερας Οδηγός Bluetooth Οδηγός μνήμης Flash Οδηγός IPC Οδηγός USB Οδηγός πληκτρολογίου Οδηγός ασύρματου Οδηγός ήχου Διαχειριστής ενέργειας Εικόνα 1-1 Αρχιτεκτονική android Το Android αποτελείται από ένα σχέδιο αναφοράς υλικού, που περιγράφει τις ικανότητες που απαιτούνται από μια φορητή συσκευή, ώστε να υποστηρίξει τη στοίβα λογισμικού (software stack). Οι συνιστώσες αυτής της στοίβας είναι: Προ-εγκατεστημένες εφαρμογές που αποτελούν μέρος του λειτουργικού. Ένα πλαίσιο εφαρμογών (application framework), που επιτρέπει τη διαχείριση υπηρεσιών του συστήματος από το επίπεδο εφαρμογής (application layer). Βιβλιοθήκες ανοικτού κώδικα για την ανάπτυξη εφαρμογών. Ένα περιβάλλον λειτουργιών που χρησιμοποιείται για την φιλοξενία και εκτέλεση εφαρμογών android, συμπεριλαμβανομένης της εικονικής μηχανής Dalvik. Σελίδα 18 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα Έναν πυρήνα λειτουργικού συστήματος Linux, που παρέχει χαμηλού επιπέδου διεπαφή με το υλικό, τη μνήμη, τη διαχείριση, τον έλεγχο και τις διαδικασίες. 1.3.1. Εφαρμογές Το επίπεδο αυτό, αφορά εφαρμογές οι οποίες έχουν αναπτυχθεί και συμπεριληφθεί στη εκάστοτε έκδοση Android. Αφορούν κυρίως βοηθητικές εφαρμογές και έχουν αναπτυχθεί κυρίως σε Java μέσω του Android SDK, αλλά και σε άλλες πλατφόρμες, όπως το Native Development Kit που υποστηρίζουν την γλώσσα C ή C++. Οι εφαρμογές αυτές χρησιμοποιούνται από τους τελικούς χρήστες των κινητών τηλεφώνων και δεν μπορεί κάποιος να τις αφαιρέσει καθώς αποτελούν μέρος του λειτουργικού. Επιπρόσθετες εφαρμογές όμως μπορούν να εγκατασταθούν μέσω πακέτων APK, τα οποία υπάρχουν στο Google Play ή σε τρίτες σελίδες κατασκευαστών. Ενδεικτικά κάποιες από αυτές τις εφαρμογές είναι: Πλοηγός για το διαδίκτυο Διαχειριστής επαφών Διαχειριστής μηνυμάτων Εφαρμογή πρόβλεψης καιρού Αριθμομηχανή Χάρτες Google 1.3.2. Πλαίσιο εφαρμογών Το πλαίσιο εφαρμογών (Application Framework), είναι ένα σύνολο API s, που επιτρέπουν στους κατασκευαστές τη γρήγορη και εύκολη συγγραφή εφαρμογών για τα τηλέφωνα android. Αποτελούνται από εργαλεία σχεδιασμού διεπιφάνειας όπως κουμπιά, πεδία κειμένου, εργαλεία συστήματος, εργαλεία ελέγχου κλπ. Τα σημαντικότερα μέρη του πλαισίου, που χρησιμοποιούνται από τους κατασκευαστές εφαρμογών είναι: Διαχειριστής δραστηριοτήτων (Activity Manager) Διαχειριστή πόρων (Resource Manager) Σελίδα 19 από 73

1 Λειτουργικό Android Διαχειριστής τοποθεσίας (Location Manager) Διαχειριστής ειδοποιήσεων (Notification Manager) 1.3.2.1. Διαχειριστής δραστηριοτήτων Μια δραστηριότητα συνήθως, αποτελείται από μία οθόνη που εμφανίζεται στο χρήση, σε μια δεδομένη στιγμή της εφαρμογής. Μια εφαρμογή τυπικά αποτελείται από πολλές δραστηριότητες, που αλληλεπιδρούν με το χρήστη. Εκκίνηση oncreate() onstart() onresume() oncreate() onstart() onresume() Η δραστηριότητα εκτελείται.. onpause() Τερματισμός onstop() Τερματισμός ondestroy() Καταστροφή Εικόνα 1-2 Κύκλος ζωής δραστηριότητας Συνεπώς, οι δραστηριότητες αποτελούν το οπτικό μέρος της εφαρμογής. Η εκτέλεση μιας δραστηριότητας συνεπάγεται κόστος σε πόρους. Μπορεί να περιλαμβάνει μια καινούργια διαδικασία του πυρήνα, ανάθεση μνήμης για όλα τα αντικείμενα, εξαγωγή των δεδομένων από τα xml αρχεία και αρχικοποίηση όλων των μεταβλητών. Εφόσον λοιπόν απαιτείται τόσος κόπος για μια δραστηριότητα θα ήταν εξαιρετικά δαπανηρό, να την δημιουργούμε συνέχεια. Για αυτό το λόγο ο κύκλος ζωής της δραστηριότητας, ελέγχεται από τον διαχειριστή Σελίδα 20 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα δραστηριοτήτων. Αυτός ο κύκλος δραστηριότητας παρουσιάζεται στο σχήμα που ακολουθεί. Όταν η δραστηριότητα δεν υπάρχει στη μνήμη, μπαίνει σε διαδικασία εκκίνησης, η οποία είναι και η πιο δαπανηρή από άποψη πόρων, όπως αναφέραμε ήδη. Η δραστηριότητα είναι σε φάση εκτέλεσης, όταν είναι ενεργή η αντίστοιχη οθόνη και ο χρήστης αλληλεπιδρά με αυτή. Συνεπώς κάθε φορά έχουμε μόνο μια δραστηριότητα η οποία εκτελείται και αυτό συμβαίνει για να δοθεί η μέγιστη προτεραιότητα στη χρήση πόρων, για να ανταποκριθεί στις απαιτήσεις του χρήστη. Στη κατάσταση παύσης, η δραστηριότητα εμφανίζεται στην οθόνη, αλλά δεν υπάρχει καμία αλληλεπίδραση. Στη συνέχεια μπαίνει σε κατάσταση τερματισμού, όταν μια άλλη δραστηριότητα γίνει ενεργή. Στη κατάσταση τερματισμού η δραστηριότητα δεν είναι ορατή στην οθόνη αλλά παραμένει στη μνήμη, για την περίπτωση που ο χρήστης αποφασίσει να τη ξανακαλέσει στο προσκήνιο. Οι σταματημένες δραστηριότητες, μπορούν ανά πάσα στιγμή να απομακρυνθούν από τη μνήμη. Ουσιαστικά αυτή η διαδικασία αποτελεί την ολοκλήρωση του κύκλου ζωής της δραστηριότητας, δηλαδή τη καταστροφή της, απελευθερώνοντας πόρους συστήματος. 1.3.2.2. Διαχειριστής πόρων Δουλειά του διαχειριστή είναι η τακτοποίηση όλων των εξωτερικών πόρων που χρησιμοποιεί μια εφαρμογή Android όπως οι εικόνες, τα αλφαριθμητικά. Μπορεί να υπάρχουν διαφορετικά αρχεία για κάθε πόρο συστήματος, εξασφαλίζοντας έτσι την επεκτασιμότητα της εφαρμογής. Για παράδειγμα μπορεί να υπάρχουν δύο αρχεία πόρων για μια εικόνα, με το κάθε ένα να αντιστοιχεί σε άλλη ανάλυση οθόνης. Παρόμοια μπορούν να υπάρχουν περισσότερα αρχεία με αλφαριθμητικά, ένα για κάθε γλώσσα η οποία υποστηρίζεται από την εφαρμογή. Σελίδα 21 από 73

1 Λειτουργικό Android Εικόνα 1-3 Κοινό σχέδιο εμφάνισης σε διαφορετικές συσκευές Εικόνα 1-4 Διαφορετικό σχέδιο εμφάνισης ανά συσκευή Τα σχέδια εμφάνισης χωρίζονται σε κοινά και εναλλακτικά. Τα πρώτα περιέχουν τα κοινά σχέδια εμφάνισης για όλες τις συσκευές [εικόνα 1-4], ενώ τα εναλλακτικά περιέχουν διαφορετικά σχέδια εμφάνισης ανά συσκευή. Στη περίπτωση εναλλακτικών σχεδίων εμφάνισης ο διαχειριστής πόρων αποφασίζει κατά τη διάρκεια εκτέλεσης ποιο σχέδιο θα επιλέξει, βάσει ενός αναγνωριστικού πόρων. Οι τύποι των πόρων που μπορεί να υποστηρίξει ο διαχειριστής είναι: Κινούμενης εικόνας. Χρωματική κατάσταση λίστας. Εικόνες. Μορφές διεπιφάνειας. Μενού επιλογών. Αλφαριθμητικά. Στυλ εμφάνισης. 1.3.2.3. Διαχειριστής τοποθεσίας Σελίδα 22 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα Ο διαχειριστής τοποθεσίας προσφέρει πρόσβαση στις υπηρεσίες εντοπισμού. Αυτές οι υπηρεσίες επιτρέπουν στις εφαρμογές να παρέχουν περιοδικές ενημερώσεις εύρεσης της γεωγραφικής τοποθεσίας, εφόσον η συσκευή Android έχει το ανάλογο υλικό GPS. Αν ο συγκεκριμένος διαχειριστής έχει ενεργοποιηθεί, μπορεί να παρέχει τις εξής πληροφορίες: Λίστα όλων των τελευταίων γνωστών τοποθεσιών. Αυτόματη ή χειροκίνητη ενεργοποίηση για περιοδικές ενημερώσεις. Αυτόματη η χειροκίνητη ενεργοποίηση της υπηρεσίας όταν καλείται από εφαρμογές. Για την υποστήριξη εύρεσης του γεωγραφικού στίγματος σε χάρτες, η Google παρέχει την εξωτερική βιβλιοθήκη com.google.android.maps που παρέχει αυτή τη δυνατότητα καθώς και μια σειρά επιλογών και ελέγχων. Εικόνα 1-5 Ροή εντοπισμού θέσης Μια τυπική ροή των διαδικασιών που συμβαίνουν για τον εντοπισμό θέσης παρουσιάζεται στην εικόνα του σχήματος 1-5. Η ροή αυτή ακολουθεί τα εξής βήματα: Εκκίνηση εφαρμογής Αν υπάρχει πρόσφατη αποθηκευμένη τοποθεσία εμφανίζεται αλλιώς αγνοείται. Αν έχει ρυθμιστεί, αναζητάτε η τοποθεσία μέσω των κυψελών της κινητής τηλεφωνίας. Μόλις το GPS λάβει το γεωγραφικό στίγμα αγνοείται η εκτίμηση του βήματος 3 και λαμβάνεται αυτή. Σελίδα 23 από 73

1 Λειτουργικό Android 1.3.2.4. Διαχειριστής ειδοποιήσεων Χρησιμοποιείται για την διαχείριση των ειδοποιήσεων, γεγονότων που συμβαίνουν στο παρασκήνιο. Οι ειδοποιήσεις μπορούν να λάβουν διαφορετικές μορφές όπως: Ένα μόνιμο εικονίδιο, που εμφανίζεται στην μπάρα κατάστασης. Περιοδικό σβήσιμο και άναμμα του LED κατάστασης. Ενεργοποίηση ήχου ή δόνησης. 1.3.3. Βιβλιοθήκες Android runtime Οι βιβλιοθήκες βρίσκονται στο αμέσως επόμενο επίπεδο, από το πλαίσιο εφαρμογών. Πρόκειται για βιβλιοθήκες γραμμένες σε C/C++ κώδικα και συνοπτικά περιλαμβάνουν: Βιβλιοθήκη πολυμέσων. Έναν διαχειριστή επιφανείας για την διαχείριση της οθόνης. Βιβλιοθήκες SGL, OpenGl για 2D και 3D γραφικών. SQLite για υποστήριξη βάσεων δεδομένων. SSL για ασφάλεια και WebKit για την παροχή ενσωματωμένων υπηρεσιών πλοήγησης. Η ομαλή εκτέλεση των προγραμμάτων σε διαφορετικές συσκευές, οφείλεται στο Android run time, που αποτελείται από τις βιβλιοθήκες πυρήνα και την εικονική μηχανή Dalvik. Η μηχανή Dalvik χρησιμοποιείται αντί της παραδοσιακή εικονικής μηχανής Java. Η εικονική μηχανή Dalvik χρησιμοποιεί τον υποκείμενο πυρήνα Linux, για να χειριστεί χαμηλού επιπέδου λειτουργίες όπως, νήματα, διαχείριση της μνήμης και εφαρμογές οι οποίες τρέχουν απ ευθείας στο λειτουργικό σύστημα Linux. (Meier, 2009) Οι κύριοι λόγοι που δημιουργήθηκε η μηχανή Dalvik, και δε χρησιμοποιήθηκε η JVM ήταν λόγοι απόδοσης. Οι κινητές συσκευές έχουν σαφώς λιγότερη επεξεργαστική ισχύ και πόρους από τους προσωπικούς υπολογιστές. Ο επανασχεδιασμός της JVM παρήγαγε λιγότερο κώδικα που χρειάζεται μικρότερο χώρο αποθήκευσης. Επίσης η Dalvik VM λαμβάνει τον παραγόμενο κώδικα Java και τον συνδυάζει σε ένα η περισσότερα εκτελέσιμα Σελίδα 24 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα Dalvik (.dex αρχεία). Απαλείφει διπλή πληροφορία από πολλαπλές κλάσεις, μειώνοντας τον απαιτούμενο αποθηκευτικό χώρο. Για παράδειγμα ένα.dex αρχείο της εφαρμογής του πλοηγού στο Android είναι περίπου 200Κ, ενώ το ασυμπίεστο.jar αρχείο είναι περίπου 500K. Ο συλλέκτης σκουπιδιών (garbage collector) επανασχεδιάστηκε και αναπτύχθηκε σε C και C++ για καλύτερη απόδοση. Συμπληρωματικά η Dalvik VM χρησιμοποιεί ένα διαφορετικό είδος παραγωγής κώδικα μηχανής, κατά τον οποίο χρησιμοποιούνται καταχωρητές σαν πρωταρχικές μονάδες αντί σωρού. Η Google ισχυρίζεται ότι με αυτό τον τρόπο παράγονται 30% λιγότερες οδηγίες χαμηλού επιπέδου (Hashimi & Komatineni, 2009). 1.3.4. Πυρήνας Linux Το Android βασίζεται στο Linux, αλλά δεν χρησιμοποιεί έναν τυποποιημένο πυρήνα Linux. Χρησιμοποιεί βέβαια τις εκάστοτε εκδόσεις πυρήνα, αλλά με τις κατάλληλες τροποποιήσεις και προσθήκες. Αυτές οι προσθήκες περιλαμβάνουν (Maker & Chan, 2009): alarm driver: Παρέχει τη δυνατότητα επαγρύπνησης της συσκευής από κατάσταση ύπνου. ashmem (Android shared memory driver): Επιτρέπει στις εφαρμογές τον διαμοιρασμό μνήμης σε επίπεδο πυρήνα. binder driver: Διευκολύνει την επικοινωνία ανάμεσα σε διεργασίες. Οι εφαρμογές μπορούν να μοιράζονται δεδομένα μέσω της κοινής χρήσης μνήμης. Κάθε διεργασία καταχωρείται ως ξεχωριστή υπηρεσία και ο binder μεριμνά για το συγχρονισμό τους. power manager: Ακολουθεί μια πιο επιθετική πολιτική σε σχέση με το πρότυπο διαχείρισης εξοικονόμησης ενέργειας του παραδοσιακού πυρήνα Linux. kernel debugger: Απασφαλματωτής για τον έλεγχο και την ανίχνευση προβληματικού κώδικα, αλλά και υλικού. Logger: Ημερολόγιο συμβάντων. Σελίδα 25 από 73

Κεφάλαιο 2- Ανάλυση απαιτήσεων Για την ανάπτυξη της εφαρμογής μας, απαραίτητο στάδιο ήταν η ανάλυση απαιτήσεων, με την οποία διερευνήσαμε τις απαιτήσεις του χρήστη και καθορίσαμε τις αντίστοιχες προδιαγραφές. Επίσης θα επιχειρηθεί, η αναζήτηση αντίστοιχων εφαρμογών. 2.1. Αντίστοιχες Εφαρμογές Η αναζήτηση αντίστοιχων εφαρμογών, έγινε αποκλειστικά στην ιστοσελίδα http://play.google.com, καθώς είναι ο αποκλειστικός δικτυακός τόπος για την διανομή εφαρμογών σε android. Η αναζήτηση έγινε με συγκεκριμένες λέξεις κλειδιά, όπως: veterinary, pet records, pet diary κλπ. 2.1.1. PetMasterPro Περιγράφεται ως μία εφαρμογής, καταγραφής των λεπτομερειών ενός ζώου. Υποστηρίζει τις εξής λειτουργίες: Ιατρικό προγραμματισμό Πρόγραμμα επισκέψεων στον κτηνίατρο Πρόγραμμα εμβολιασμού. Ιατρικό ιστορικό, ιστορικό επισκέψεων Καταγραφή ημερήσιας δραστηριότητας. Δυνατότητα προσθήκης ενός η περισσότερων κατοικίδιων. Εικόνα 2-1 PetMasterPro Σελίδα 26 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα 2.1.2. Vet Mobile Πρόκειται για ιταλική εφαρμογή η οποία αποτελεί κυρίως λογισμικό συμβουλευτικού χαρακτήρα για γάτες και σκύλους. Περιλαμβάνει πληροφορίες και συμβουλές για: Ασθένειες, Τρόφιμα που πρέπει να αποφεύγονται. Εμβολιασμοί που πρέπει να γίνουν. Στην παρούσα έκδοση υποστηρίζει μόνο την Ιταλική γλώσσα. 2.1.3. My Pet Record Εικόνα 2-2 VetMobile Βοηθάει στην καταγραφή των δεδομένων της υγείας ενός κατοικίδιου όπως: Τύπο αίματος Φαρμακευτική αγωγή Αλλεργίες Παρακολούθηση ραντεβού στον κτηνίατρο Υπενθύμιση λήψης φαρμάκων. Δυνατότητα ενός η περισσοτέρων κατοικίδων Δυνατότητα εύρεσης κτηνίατρου για αντιμετώπιση έκτακτου περιστατικού. Σελίδα 27 από 73

2 Ανάλυση απαιτήσεων Εικόνα 2-3 MyPetRecord 2.1.4. Pet Health Book Η συγκεκριμένη εφαρμογή, ταυτίζεται αρκετά με την φιλοσοφία της εφαρμογής που θέλουμε να σχεδιάσουμε και αποτελεί την πληρέστερη εφαρμογή που βρήκαμε στον δικτυακό τόπο Google Play, σχετικά με την τήρηση ηλεκτρονικού βιβλιαρίου. Αποτελείται από πληθώρα χαρακτηριστικών και δυνατοτήτων όπως: Δημιουργία και διαχείριση προφίλ, ενός η περισσότερων κατοικίδιων. Καταχώριση προφίλ κτηνιάτρου ανά κατοικίδιο. Καταγραφή φαρμακευτικής αγωγής. Καταγραφή συμπτωμάτων. Υπενθυμίσεις για φάρμακα, ελέγχους, επισκέψεις σε κτηνίατρο. Καταγραφή ιστορικών (επισκέψεις, αγωγή, συμπτώματα). Καταγραφή και στατιστικά, σχετικά με το κόστος υγείας ανά κατοικίδιο. Ημερολόγια και αναφορές για την υγεία του ζώου (logs, reports). Σελίδα 28 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα Εικόνα 2-4 PetHealthBook 2.2. Συνέντευξη Η συνέντευξη, είναι ένας καθοριστικός παράγοντας για την διερεύνηση των χαρακτηριστικών που θα πρέπει να έχει η εφαρμογή, καθώς και καθορισμού των απαιτήσεων. 1. Πόσο συχνά συναντάται να υπάρχει κατοικίδιο σε μία οικογένεια? AΠ: Τα τελευταία χρόνια, η φιλοζωία έχει φτάσει επιτέλους και στην χώρα μας. Στην περιοχή μας, χωρίς να γνωρίζω σαφώς ακριβή στατιστικά στοιχεία, εικάζω πως 4/10 οικογένειες διαθέτουν κατοικίδιο. 2. Συνήθως πόσα κατοικίδια? AΠ: Συνήθως, έχουν 1-2 κατοικίδια. 3. Ποια είδη κατοικίδιων? AΠ: Κατά σειρά συχνότητας, σκύλοι - γάτες - κουνέλια - ωδικά πτηνά ερπετά/τρωκτικά 4. Πόσο συχνή είναι η επίσκεψη σε ένα κτηνιατρείο? ΑΠ: Οι «καλοί» ιδιοκτήτες επισκέπτονται τον κτηνίατρο συνήθως 2-3 φορές τον χρόνο με το ζώο τους είτε για εμβολιασμό είτε για προληπτικές εξετάσεις και χωρίς το ζώο τους έρχονται σχεδόν σε μηνιαία βάση για αγορά αποπαρασιτικών φαρμάκων. Υπάρχει βέβαια και η άλλη κατηγορία που στην καλύτερη των περιπτώσεων, θυμούνται τον ετήσιο εμβολιασμό του ζώου και μόνο. Σελίδα 29 από 73

2 Ανάλυση απαιτήσεων 5. Τι χρειάζεται συνήθως ένα κατοικίδιο? (εμβόλια, αμπούλες κτλ)? ΑΠ: Ένα κατοικίδιο χρειάζεται ετήσιο εμβολιασμό, εξωτερική αποπαρασίτωση ( κολάρο, αμπούλες ), εσωτερική αποπαρασίτωση ( χάπια για σκουλήκια εντέρου και πρόληψη κατά της διροφιλαρίασης ), προληπτικός αιματολογικός έλεγχος και έλεγχος για λοιμώδη νοσήματα ( π.χ. λεϊσμανίωση) 1-2 φορές τον χρόνο, στείρωση. 6. Σε τι συχνότητα το καθένα? (π.χ. εμβόλιο κάθε χρόνο, αμπούλα κάθε τρεις μήνες). ΑΠ: Εμβολιασμός μία φορά τον χρόνο, αμπούλα για εξωπαράσιτα κάθε μήνα ειδικά κατά τους θερινούς μήνες, κολάρο για εξωπαράσιτα κάθε 4 μήνες, χάπια για σκουλήκια εντέρου κάθε 3 μήνες, χάπια κατά της διροφιλαρίασης κάθε μήνα ( ή εναλλακτικά ένα χάπι/μήνα καθ όλη την διάρκεια του χρόνου που καλύπτει τόσο τα σκουλήκια εντέρου όσο και το «σκουλήκι της καρδιάς» - διροφιλαρίαση) 7. Εάν αντιμετωπίζει πρόβλημα υγείας, τι είδος θεραπείας και σε τι συχνότητα? (π.χ. συνήθως αμπούλες κάθε 15 μέρες, χάπι κάθε μέρα κ.τ.λ.) ΑΠ: Είναι πολύ γενική αυτή η ερώτηση. Υπάρχουν προβλήματα υγείας που μπορούν να θεραπευτούν σχετικά εύκολα με την χορήγηση χαπιών καθημερινά ή την εφαρμογή κάποιων spot-on και κάποια άλλα που χρειάζεται θεραπεία πολλών μηνών ή ακόμη και εφόρου ζωής (π.χ. επιληψία, υποθυρεοειδισμός, κτλ.) 8. Είναι σημαντικό το βιβλιάριο για το κατοικίδιο? AΠ: Είναι σημαντικό για να μπορεί τόσο ο ιδιοκτήτης να θυμάται τις ανάγκες του ζώου αλλά και ο κτηνίατρος να ελέγχει εάν και πότε δόθηκαν στο ζώο θεραπείες, προληπτικά χάπια, εάν έχουν γίνει κατά το παρελθόν τυχόν χειρουργικές επεμβάσεις που δεν γνωρίζει, εάν είναι εμβολιασμένο, εάν εχει microchip, κ.α. Σελίδα 30 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα 9. Ποια είναι τα πιο σημαντικά στοιχεία για ένα κατοικίδιο? (π.χ. φύλο, στειρωμένο ή όχι, ράτσα, όνομα κ.τ.λ.) AΠ: Για μένα το πιο σημαντικό σε ένα κατοικίδιο είναι να περνάει καλά, να το αγαπούν και να είναι καλυμμένο ως προς τις ανάγκες του, δηλ. διατροφή, κτηνιατρική περίθαλψη, συνθήκες διαβίωσης. Το φύλο και το όνομα είναι προσωπική επιλογή του κάθε ενδιαφερόμενου ιδιοκτήτη, το να είναι στειρωμένο είναι μια αντίληψη που πρέπει να μπει στο μυαλό όλων των ιδιοκτητών καθώς είναι μεγάλοι σε αριθμό και σε σοβαρότητα οι κίνδυνοι από τους οποίους προστατεύουμε το ζώο μας εάν στειρωθεί έγκαιρα ( καρκίνος σε ωοθήκες/μήτρα/μαστούς, πυομήτρα, καρκίνος όρχεων/προστάτη, καλοήθη υπερτροφία/υπερπλασία προστάτη, κλπ.). Η ράτσα επίσης είναι ένα μεγάλο κεφάλαιο. Κάποιοι γνωρίζουν και αγαπούν ορισμένες ράτσες. Δεκτό. Κάποιοι όμως απλά ακολουθούν την μόδα ή επιζητούν την κοινωνική επιβεβαίωση και αγοράζουν συγκεκριμένες ράτσες. ΑΠΑΡΑΔΕΚΤΟ. Ειδικά όταν υπάρχουν τόσα αδέσποτα. 10. Είναι σημαντική η χρήση microchip? και γιατί? ΑΠ: Το microchip είναι υποχρεωτικό (αν και δεν το γνωρίζουν πολλοί) βάσει νόμου. Είναι σημαντικό το ζώο να είναι καταγεγραμμένο για λόγους ασφαλείας κυρίως σε περίπτωση που χαθεί ή κλαπεί, καθώς επίσης και για τον έλεγχο εξάπλωσης λοιμωδών νοσημάτων. 11. Είναι σημαντικό το βάρος? και γιατί? ΑΠ: Είναι πολύ σημαντικό ο έλεγχος του βάρους του ζώου, γιατί με αυτόν τον τρόπο προλαμβάνονται πολλές σοβαρές παθήσεις όπως οστεοαρθρίτιδα, λιπώδης εκφύλιση του ήπατος σε γάτες, επιβάρυνση του καρδιαγγειακού συστήματος, ορμονικές διαταραχές ( η παχυσαρκία αποτελεί προδιαθέτοντα παράγοντα) κτλ. 12. Αν κατά τη διάρκεια μίας θεραπείας, υπάρξει υπερδοσολογία, η' αν υπάρξει παράλειψη κάποιων δόσεων μπορεί να προκαλέσει βλάβη στο κατοικίδιο? AΠ: Συνήθως, οι δόσεις που είναι τοξικές για τα ζώα είναι υπερβολικά μεγάλες σύμφωνα με τις οδηγίες των εταιρειών (για λόγους ασφαλείας) Σελίδα 31 από 73

2 Ανάλυση απαιτήσεων παρ' όλ' αυτά κάθε επιβάρυνση του οργανισμού με μεγαλύτερη ποσότητα φαρμάκου από αυτή που χρειάζεται σίγουρα δεν είναι επιθυμητή. Πρέπει οπωσδήποτε να ενημερώνεται ο κτηνίατρος. Η παράλειψη κάποιων δόσεων σίγουρα δεν είναι ότι καλύτερο για την αποτελεσματική θεραπεία. Καλό θα είναι εάν συμβεί κάτι τέτοιο, να ενημερώνεται και σε αυτή την περίπτωση ο κτηνίατρος για τυχόν τροποποίηση της δόσης ή παράταση της διάρκειας θεραπείας. 13. Θεωρείτε σημαντικό να υπάρχει μία εφαρμογή η οποία θα καταχωρεί τα στοιχεία του κατοικίδιου, θα αποθηκεύει το ιστορικό του, και θα ειδοποιεί τον ιδιοκτήτη για τις ανάγκες του κατοικίδιου (εμβόλιο, χάπι κ.τ.λ.) ΑΠ: Φυσικά! Η τεχνολογία είναι πλέον αναπόσπαστο κομμάτι της ζωής μας οπότε θα ήταν πολύ καλό να υπάρχει ένας τρόπος που να μας υπενθυμίζει τις υποχρεώσεις μας απέναντι στον τετράποδο φίλο μας. 14. Οι θεραπείες πραγματοποιούνται αποκλειστικά από τον κτηνίατρο η' κ από τον ιδιοκτήτη? ΑΠ: Το μυστικό για να επιτύχει μια θεραπεία είναι να υπάρχει καλή συνεργασία και επικοινωνία ανάμεσα στον ιδιοκτήτη και τον κτηνίατρο. Αυτό και μόνο! Συνεπώς, καταλαβαίνεις ότι τόσο ο κτηνίατρος πραγματοποιεί θεραπείες στον χώρο του ιατρείου του, ειδικά όταν το ζώο νοσηλεύεται, αλλά και ο ιδιοκτήτης αφού αποχωρήσει από το κτηνιατρείο έχει αυτομάτως την ευθύνη της θεραπείας που ο κτηνίατρος έχει συστήσει. Συνήθως, ο κτηνίατρος δίνει την πρώτη δόση της θεραπείας στον χώρο του ιατρείου και μετά ο ιδιοκτήτης την συνεχίζει κατ 'οίκον για το υπόλοιπο χρονικό διάστημα. Να γίνεται θεραπεία σε άρρωστο ζώο χωρίς την συμβουλή και την διάγνωση κτηνιάτρου είναι πέρα για πέρα λάθος για πολλούς και διάφορους λόγους αλλά και το να αδιαφορεί ο κτηνίατρος αφού το ζώο φύγει από το ιατρείο και το πρόβλημα παραμένει, είναι ΑΠΑΡΑΔΕΚΤΟ. Επομένως, ιδιοκτήτης και κτηνίατρος ΠΡΕΠΕΙ να έχουν μια άψογη συνεργασία κατά την διάρκεια μιας θεραπείας για να έχουμε το καλύτερο αποτέλεσμα. Σελίδα 32 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα Είναι σαφές ότι από την συνέντευξη προκύπτουν αρκετές λεπτομέρειες, οι οποίες θα μας οδηγήσουν στο σωστό σχεδιασμό. Οι ερωτήσεις 1,2 είναι περισσότερο στατιστικού χαρακτήρα, ενώ στην ερώτηση 3 αναδεικνύεται η ανάγκη χρήσης πεδίου για τον τύπο του ζώου καθώς ένας ιδιοκτήτης μπορεί να έχει παραπάνω από ένα. Οι απαντήσεις στις ερωτήσεις 4 έως 7 δείχνουν ότι υπάρχει μία ανάγκη καταγραφής του ιστορικού των επισκέψεων και δημιουργία μίας λίστας εργασιών για την καλύτερη οργάνωση του ιατρείου. Συγκεκριμένα μία λίστα που θα καταχωρούνται οι προγραμματισμένες θεραπείες, ή οι εξετάσεις και μέσω αυτής θα μπορεί να ενημερώνονται οι ιδιοκτήτες που αμελούν κυρίως ή ξεχνούν να ακολουθήσουν το πρόγραμμα. Η ανάγκη καταγραφής έρχεται να επικυρωθεί από την 8 η απάντηση που καθιστά σαφές την ανάγκη χρήσης ενός βιβλιαρίου από τον γιατρό, ενώ η 13 η απάντηση αναδεικνύει την θετική πλευρά της χρήσης μιας ηλεκτρονικής εφαρμογής, για αυτό το σκοπό. Ο χρήστης από την κεντρική οθόνη θα μπορεί να βλέπει λίστες με τα κατοικίδια, αλλά και τις εργασίες. Από τις αντίστοιχες οθόνες θα μπορεί να προσθέτει νέες εγγραφές. Το τυπικό σενάριο χρήση παρουσιάζεται στο ακόλουθο διάγραμμα. «extends» Λεπτομέρειες Κατοικίδια «extends» «extends» Ιστορικό Εργασιών Καταγραφή Βάρους Ιδιοκτήτης Εργασίες «extends» Λεπτομέρειες Εικόνα 2-5 Διάγραμμα Use Case Σελίδα 33 από 73

2 Ανάλυση απαιτήσεων 2.3. Δομή Βάσης Η βάση δεδομένων που θα χρησιμοποιηθεί είναι η SQLite και για την τήρηση των δεδομένων θα απαιτηθούν τέσσερις οντότητες (πίνακες): Pets, Weight, History, ToDo. Ο πίνακας Pets, θα περιέχει τα στοιχεία του κατοικίδιου και θα έχει τα εξής γνωρίσματα: ID: Είναι το μοναδικό αναγνωριστικό του κατοικίδου στην βάση NAME: Το όνομα του κατοικίδου. NOTE: Σημειώσεις ή παρατηρήσεις VETERINARIAN: Το ονοματεπώνυμο του κτηνιάτρου PETTYPE: Το είδος του κατοικίδιου BREED: Η ράτσα του κατοικίδιου GENDER: Το φύλλο, το οποίο θα είναι πεδίο επιλογής από λίστα. ALTERED: BIRTH: Η ημερομηνία γέννησης. CHIPNO: Ο αριθμός του microchip. IMAGE: Φωτογραφία του κατοικίδιου. CREATE_DATE: Ημερομηνία δημιουργίας της εγγραφής. MODIFY_DATE: Ημερομηνία μεταβολής της εγγραφής. Ο πίνακας Weight, περιλαμβάνει το ιστορικό μεταβολών στο βάρος τους κατοικίδιου και αποτελεί σχέση ένα προς πολλά, από τον κύριο πίνακα Pets. Τα πεδία του πίνακα είναι: ID: Το αναγνωριστικό του κατοικίδιου, σύμφωνα με τον πίνακα Pets WEIGHT: Το βάρος του κατοικίδιου. CREATE_DATE: Η ημερομηνία καταγραφής του βάρους. Ο πίνακας History, αποτελεί το κύριο ιστορικό επισκέψεων στο κτηνίατρο με σχέση ένα προς πολλά, από τον κύριο πίνακα Pets και περιλαμβάνει: ID: Το αναγνωριστικού του κατοικίδιου. TASK: Την εργασία που πρέπει να γίνει. CREATE_DATE: Ημερομηνία της εργασίας. Σελίδα 34 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα WHOM: Τον υπεύθυνο εκτέλεσης της εργασίας, επιλογής από λίστα με τιμές (ιδιοκτήτης, κτηνίατρος, άλλος) TYPE: Τον τύπο της εργασίας, επιλογής από λίστα με τιμές: Λήψη χαπιού, εμβόλιο, άλλο. NOTES: Παρατηρήσεις. Ο πίνακας Todo, περιλαμβάνει τις προγραμματισμένες μελλοντικές εργασίες και περιλαμβάνει: ID: Το αναγνωριστικού του κατοικίδιου TASK: Την εργασία που πρέπει να γίνει CREATE_DATE: Ημερομηνία εργασίας WHOM: Τον υπεύθυνο εκτέλεσης της εργασίας, επιλογής από λίστα με τιμές (ιδιοκτήτης, κτηνίατρος, άλλος) TYPE: Τον τύπο της εργασίας, επιλογής από λίστα με τιμές (λήψη χαπιού, εμβόλιο, άλλο). NOTES: Παρατηρήσεις PERIOD_TYPE: Ο τύπος της περιόδου εκτέλεσης της εργασίας, επιλογής από λίστα (ωριαία, ημερήσια, εβδομαδιαία, μηνιαία, ετήσια) PERIOD_NUM: Το πλήθος των επαναλήψεων, σύμφωνα με τον τύπο περιόδου. REMINDEBEFORETYPE: Ο τύπος της περιόδου υπενθύμισης για την συγκεκριμένη εργασία (λεπτό, ώρα, ημέρα, εβδομάδα). REMINDEBEFORENUM: Το πλήθος επανάληψης της υπενθύμισης. Αντίστοιχα το διάγραμμα οντοτήτων και σχεσιακό παρουσιάζονται στην συνέχεια. Σελίδα 35 από 73

2 Ανάλυση απαιτήσεων ID ID NAME NOTE Pets 1 N has Weight WEIGHT VETERINARIAN CREATE_DATE PETTYPE BREED GENDER ALTERED BIRTH CHIPNO IMAGE 1 N has History ID TASK CREATE_DATE WHOM TYPE NOTES CREATE_DATE ID MODIF_DATE TASK CREATE_DATE WHOM 1 N has ToDo s TYPE NOTES PERIODTYPE PERIODNUM REMINDBEFTYPE REMINDBEFNUM Εικόνα 2-6 Διάγραμμα οντοτήτων Σελίδα 36 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα PETS ID NAME NOTE VETERINARIAN... MODIF_DATE HISTORY ID TASK PET_ID CREATE_DATE WHOM TYPE NOTES TODO ID TASK PET_ID CREATE_DATE WHOM REMINDBEFNUM Εικόνα 2-7 Σχεσιακό βάσης Σελίδα 37 από 73

Κεφάλαιο 3- Υλοποίηση εφαρμογής Η υλοποίησης της εφαρμογής PetMgr, περιλαμβάνει την δημιουργία της εφαρμογής, τη συγγραφή κώδικα την επιτυχή μεταγλώττιση, καθώς και την δοκιμαστική λειτουργία της. 3.1. Απαιτήσεις συστήματος Επειδή οι εφαρμογές που αναπτύσσονται με το android, όπως είδαμε χρησιμοποιούν την εικονική μηχανή Dalvik, μπορούμε να δημιουργήσουμε ένα πρόγραμμα χωρίς να μας νοιάζει ιδιαίτερα το περιβάλλον ανάπτυξης. Αυτό σημαίνει ότι μπορούμε να προγραμματίσουμε σε περιβάλλον Windows, Linux ακόμα και Mac Os. Για την ανάπτυξη της εφαρμογής απαιτούνται οι λήψεις και η εγκατάσταση των πακέτων: Android SDK Java Development KIT (JDK) 5 ή μεταγενέστερο IDE Editor ή κάποιον επεξεργαστή κειμένου όπως το Notepad++ 3.1.1. Android SDK Το Android SDK αποτελείται από ένα σύνολο εργαλείων ανάπτυξης. Σε αυτά περιλαμβάνονται ένας debugger, βιβλιοθήκες, εξομοιωτής, τεκμηρίωση και παραδείγματα κώδικα. Σελίδα 38 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα Εικόνα 3-1 Android SDK Manager Η εγκατάσταση του SDK είναι αρκετά απλή και γίνεται μέσω ενός οδηγού. Κατά τη διάρκεια ελέγχεται αν υπάρχει το αντίστοιχο JDK και αν όχι δίνεται η επιλογή για λήψη. Μετά την εγκατάσταση καλούμαστε να επιλέξουμε τα πακέτα που θέλουμε για την ανάπτυξη μέσω του Android SDK Manager [εικόνα 2-1]. Εφόσον η δοκιμαστική εφαρμογή δεν έχει ιδιαίτερα χαρακτηριστικά, μπορούμε να προχωρήσουμε με τα προτεινόμενα πακέτα. 3.1.2. Java Development Kit (JDK) To JDK είναι ένα προϊόν της Oracle και προσφέρει ένα εκτεταμένο υποσύνολο στο Android SDK. Το σύνολο αυτό περιέχει επιπλέον λογισμικό, όπως διακομιστές εφαρμογών, προγράμματα εντοπισμού σφαλμάτων και τεκμηρίωση. 3.1.3. Eclipse IDE Ο Eclipse είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης λογισμικού. Υποστηρίζει αρκετές γλώσσες επεκτείνοντας τις δυνατότητές του με το σύστημα προσθέτων που διαθέτει. Αποτελείται από κώδικα, κυρίως σε Java και κατά ένα μεγάλο ποσοστό χρησιμοποιείται για την συγγραφή προγραμμάτων σε Java. 3.2. Δημιουργία των αρχείων της εφαρμογής Η δημιουργία της εφαρμογής, γίνεται μέσω της επιλογής New του Eclipse. Στο παράθυρο δηλώνουμε τα στοιχεία της εφαρμογής που είναι: Application Name: Αυτό το όνομα που θα εμφανίζεται στους χρήστες της εφαρμογής, στην περίπτωσή μας PetMgr. Project Name: Είναι το όνομα του φακέλου που περιέχει τα αρχεία πηγαίου κώδικα. Package Name: Είναι ο χώρος ονομάτων για την εφαρμογή και πρέπει να είναι μοναδικός ανάμεσα σε όλα τα πακέτα του συστήματος Android. Minimum Required SDK: Είναι η μικρότερη έκδοση του Android που θα υποστηρίζει η εφαρμογή μας. Σελίδα 39 από 73

3 Υλοποίηση εφαρμογής Target SDK: Η μεγαλύτερη έκδοση του Android, με την οποία θα δοκιμαστεί η εφαρμογή. Compile SDK: Η έκδοση με την οποία θα μεταγλωττιστεί η εφαρμογή. Συνήθως είναι η μεγαλύτερη που υποστηρίζει (target sdk). Εικόνα 3-2 Δημιουργία εφαρμογής Κατά την δημιουργία μιας νέας εφαρμογής το Android δημιουργεί καταλόγους και τα αντίστοιχα αρχεία πηγαίου κώδικα: AndroidManifest.xml: Χρησιμοποιείται για την περιγραφή βασικών χαρακτηριστικών της εφαρμογής και καθορίζει τα συστατικά της. src: Στον κατάλογο αυτό θα τοποθετηθούν όλα τα αρχεία πηγαίου κώδικα της εφαρμογής μας. res: Περιλαμβάνει αρκετούς υποκαταλόγους και αφορά τους πόρους της εφαρμογής όπως αντικείμενα bitmap, σχέδια για διαφορετικές αναλύσεις, τη διεπιφάνεια, ρυθμίσεις χρώματος αλλά και πόρους όπως αλφαριθμητικά. 3.3. Γραφική διεπιφάνεια Η γραφική διεπιφάνεια της εφαρμογής μας έχει δημιουργηθεί χρησιμοποιώντας αντικείμενα τύπου View, ViewGroup όπως κουμπιά, πεδία κειμένου, λίστες. Η περιγραφή των αντικειμένων ορίζεται μέσω της σύνταξης Σελίδα 40 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα XML ιεραρχικά (/res/layout). Ο πιο εύκολος και παραγωγικός τρόπος για το σχεδιασμό μιας οθόνης είναι η χρήση του γραφικού εργαλείου σχεδίου του Eclipse. Ουσιαστικά πρόκειται για έναν γραφικό επεξεργαστή WYSIWYG, στον οποίο οι εικόνες (views), μπορούν να το τοποθετηθούν σε ένα καμβά και να τροποποιηθούν ανάλογα. Κάτω από την γραφική διεπιφάνεια υπάρχει το αντίστοιχο xml αρχείο που περιέχει τους ορισμούς της διεπιφάνειας που σχεδιάζεται. Για τη δημιουργία μιας οθόνης απαιτήθηκαν τα παρακάτω βήματα: 1. Δημιουργία νέου XML αρχείου (File->New->Android XML File). 2. Επιλογή scroll view, επειδή τα στοιχεία θα μπουν σε οριζόντια στοίχιση. Σε αυτό το βήμα, δίνουμε επίσης το όνομα του αρχείου XML. Εικόνα 3-3 Δημιουργία νέας οθόνης 3. Στην οθόνη που εμφανίζεται, παίρνουμε μια άδεια οθόνη (καμβάς), όπου θα τοποθετηθούν τα διάφορα συστατικά. Στα δεξιά της οθόνης, εμφανίζονται τα συστατικά που προσθέτουμε και επιλέγοντας κάποιο από αυτά μπορούμε να προσπελάσουμε τις ιδιότητες του. Στα αριστερά υπάρχει η παλέτα, από την οποία επιλέγουμε το κατάλληλο συστατικό ανάλογα με την περίπτωση. Σελίδα 41 από 73

3 Υλοποίηση εφαρμογής Εικόνα 3-4 Αρχική «άδεια» οθόνη 4. Προσθήκη textview από την παλέτα. Εικόνα 3-5 Προσθήκη textview Σελίδα 42 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα 5. Προσθήκη edittext για την προσπέλαση του πεδίου whom για το ιστορικό του κατοικίδιου. Εικόνα 3-6 Προσθήκη edittext 6. Κατά τον ίδιο τρόπο, προσθέτουμε και τα υπόλοιπα textview και edittext. Εικόνα 3-7 Προσθήκη υπόλοιπων συστατικών 7. Προσθήκη button τα οποία επιλέγουμε και αυτά από τη παλέτα. Το ένα από τα δύο button ορίζεται ως κουμπί επιλογής ημερομηνίας και για αυτό τον λόγο ορίζουμε την ιδιότητά του onclick. Στη onclick θα καλείται η μέθοδος getchangeddate με την οποία θα επιλέγουμε ημερομηνία. Αντίστοιχα στο button save θα καλείται η onclickok για την αποθήκευση της εγγραφής. Σελίδα 43 από 73

3 Υλοποίηση εφαρμογής Εικόνα 3-8 Προσθήκη buttons Οι οθόνες που δημιουργήθηκαν είναι: hist_editor.xml: Επεξεργασία του ιστορικού του κατοικίδιου. pet_editor.xml: Εισαγωγή νέου κατοικίδιου. pet_view_all.xml: Εμφάνιση λίστας με όλα τα κατοικίδια που έχουν καταχωρηθεί. pet_view_details.xml: Εμφάνιση των λεπτομερειών για το επιλεγμένο κατοικίδιο. pet_view_history.xml: Εμφάνιση του συνόλου του ιστορικού για το κατοικίδιο. pet_view_todo.xml: Εμφάνιση λίστας με τις εργασίες που πρέπει να πραγματοποιηθούν. pettodoslist_item.xml: Λίστα με τις εργασίες. todo_editor: Εισαγωγή εργασίας για το κατοικίδιο todo_view: Εμφάνιση συγκεκριμένης εργασίας για το κατοικίδιο Σελίδα 44 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα weight_editor: Παράθυρο εισαγωγής του βάρους για το επιλεγμένο κατοικίδιο. petmgr_main: Εμφάνιση αρχικής οθόνης όπου εμφανίζονται οι πληροφορίες του προγράμματος, όλα τα κατοικίδια και το αρχικό μενού. 3.4. Μενού επιλογών Αντίστοιχα με τον σχεδιασμό των οθονών δημιουργήθηκαν και τα μενού επιλογών (/res/menu). Τα στοιχεία των μενού της εφαρμογής, προστέθηκαν μέσω του αντίστοιχου συστήματος διαχείρισης του Eclipse. Για τη δημιουργία ενός μενού απαιτήθηκαν τα εξής βήματα: 1. Δημιουργία νέου xml αρχείου (File->New->Other->Android XML File) 2. Στο παράθυρο διαλόγου σαν resource type επιλέγουμε menu και δίνουμε όνομα αρχείου. Εικόνα 3-9 Προσθήκη νέου μενού 3. Στη συνέχεια επιλέγοντας το μενού θα πρέπει να προσθέσουμε τα στοιχεία του (items). Για κάθε ένα από τα στοιχεία μπορούμε να ορίσουμε και μια σειρά χαρακτηριστικών όπως συντόμευση, τίτλο κλπ. Σελίδα 45 από 73

3 Υλοποίηση εφαρμογής Για την δημιουργία ενός στοιχείου επιλέγουμε Add. Στο παράθυρο μπορούμε να ορίσουμε ένα πρωτεύων στοιχείο μενού ή μία υπό επιλογή που θα βρίσκεται ιεραρχικά κάτω από ένα πρωτεύων στοιχείο. Εικόνα 3-10 Προσθήκη νέου στοιχείου μενού 4. Στο επόμενο βήμα ορίζουμε τα χαρακτηριστικά του στοιχείου. Εικόνα 3-11 Χαρακτηριστικά στοιχείου μενού Σελίδα 46 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα 5. Ομοίως δημιουργούμε και τις άλλες επιλογές. Εικόνα 3-12 Υπόλοιπα στοιχεία μενού Τα μενού που δημιουργήθηκαν με τις αντίστοιχες επιλογές είναι: editor_options_menu.xml: Στις οθόνες εισαγωγής στοιχειών για την αποθήκευση, αναίρεση ή διαγραφή της εγγραφής. hist_context_menu.xml: Για την διαγραφή του ιστορικού. list_context_menu.xml: Στις λίστες εμφάνισης όταν επιλεχθεί ένα στοιχείο, για το άνοιγμα, αντιγραφή ή διαγραφή του στοιχείου. list_options_menu.xml: Στην εμφάνιση των λιστών, για την προσθήκη, επικόλληση και την παροχή πληροφοριών. pet_view_details.xml: Στην οθόνη εμφάνισης λεπτομερειών για την επεξεργασία ή διαγραφή της εγγραφής. pet_view_history.xml: Για την προσθήκη ιστορικού. pet_view_todo.xml: Για την προσθήκη εργασίας. Σελίδα 47 από 73

3 Υλοποίηση εφαρμογής pet_view_weight.xml: Για την προσθήκη βάρους κατοικίδιου, όταν εμφανίζονται τα στοιχεία του. todo_context_menu.xml: Για την επεξεργασία ή διαγραφής της εργασίας. weight_context_menu.xml: Για την διαγραφή του βάρους. 3.5. Βάση δεδομένων Το σύστημα της βάσης δεδομένων που χρησιμοποιείται από το Android, είναι η sqlite όπως έχει ήδη αναφερθεί. Στο αρχείο PetMgrProvider.java περιγράφεται η κλάση PetMgrProvider με την οποία παρέχεται πρόσβαση στην βάση δεδομένων. Στην αρχή ορίζονται τα στοιχεία της βάσης μας: private static final String DATABASE_NAME = "petmgr.db"; private static final int DATABASE_VERSION = 7; Στη συνέχεια ορίζονται χάρτες προβολής (projection maps), για την επιλογή των πεδίων των πινάκων. private static HashMap<String, String> spetsprojectionmap; private static HashMap<String, String> spetweightsprojectionmap; private static HashMap<String, String> spethistsprojectionmap; private static HashMap<String, String> spettodosprojectionmap; Αντίστοιχα ορίζεται η καθορισμένη προβολή για το κατοικίδιο. private static final String[] READ_PET_PROJECTION = new String[] { PetMgr.Pets._ID, PetMgr.Pets.COLUMN_NAME_NOTE, PetMgr.Pets.COLUMN_NAME_NAME,. } private static final int READ_PET_NOTE_INDEX = 1; private static final int READ_PET_NAME_INDEX = 2;. Σελίδα 48 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα Στη συνέχεια ορίζονται οι σταθερές, οι οποίες χρησιμοποιούνται από τον ταιριαστή URI για να επιλέξει μία ενέργεια ανάλογα με το σχέδιο της εισερχόμενης URI 3. private static final int PETS = 1; private static final int PET_ID = 2;.. Η σημαντικότερη κλάση είναι η DatabaseHelper, η οποία περιλαμβάνει όλες εκείνες τις μεθόδους για τις λειτουργίες της βάσης, με τις σημαντικότερες να είναι: σύνδεση, κλείσιμο σύνδεσης, δημιουργία, εισαγωγή, ενημέρωση, ανάγνωση, διαγραφή. Η μέθοδος oncreate δημιουργεί αρχικά τη βάση μέσω της κλάσης petmgr που θα εξετάσουμε στη συνέχεια. public void oncreate(sqlitedatabase db) { } db.execsql("create TABLE " + PetMgr.Pets.TABLE_NAME + " (" + PetMgr.Pets._ID + " INTEGER PRIMARY KEY," + PetMgr.Pets.COLUMN_NAME_NAME + " TEXT," + PetMgr.Pets.COLUMN_NAME_NOTE + " TEXT,".. db.execsql("create TABLE " + PetMgr.PetWeights.TABLE_NAME + " (". Οι κυριότερες μέθοδοι που υπάρχουν στο αρχείο κώδικα και έχουν να κάνουν σχέση με την αλληλεπίδραση του χρήστη με τη βάση είναι: Insert: Εισάγει μια εγγραφή στη βάση Delete: Διαγράφει μια εγγραφή από τη βάση. Update: Ενημερώνει μια εγγραφή στη βάση 3 URI: Είναι ένα αναγνωριστικό, συνήθως αλφαριθμητικό που χρησιμοποιείται για τον προσδιορισμό του ονόματος ενός πόρου Web. Σελίδα 49 από 73

3 Υλοποίηση εφαρμογής Οι παραπάνω μέθοδοι, χρησιμοποιούν όπως ήδη έχουμε πει το URI, για να ταιριάξουν τον πίνακα στον οποίο θα γίνει η αντίστοιχη ενέργεια. Έτσι, για παράδειγμα στον κώδικα που ακολουθεί, χρησιμοποιείται ένα case statement για να καθορίσει σε ποιο πίνακα θα γίνει διαγραφή. case PETS: count = db.delete( PetMgr.Pets.TABLE_NAME, // The database table name where, names whereargs ); break;. case PETWEIGHTS: count = db.delete( name... PetMgr.PetWeights.TABLE_NAME, // The incoming where clause column // The incoming where clause values // The database table 3.6. Δραστηριότες Πίσω από κάθε παράθυρο ή φόρμα σε μία εφαρμογή Android υπάρχει μία δραστηριότητα. Για την ανάπτυξη μιας εφαρμογής με πολλαπλά παράθυρα θα πρέπει να δημιουργηθεί για κάθε οθόνη μια νέα κλάση που επεκτείνει. Υπάρχουν δύο τρόποι να δημιουργηθεί μια δραστηριότητα: ο πρώτος μέσω του WYSIWYG επεξεργαστή του Eclipse ενώ ο δεύτερος προγραμματιστικά. Για την δημιουργία της δραστηριότητας, επιλέξαμε τον πρώτο τρόπο ακλουθώντας τα εξής βήματα: 1. Άνοιγμα του αρχείου δηλώσεων της εφαρμογής (AndroidManifest.xml) μέσα από τον Eclipse. Σελίδα 50 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα Εικόνα 3-13 Άνοιγμα Android Manifest 2. Επιλέγουμε την καρτέλα Application και επιλέγουμε Add. Εικόνα 3-14 Προσθήκη δραστηριότητας 1/2 Σελίδα 51 από 73

3 Υλοποίηση εφαρμογής 3. Στο παράθυρο διαλόγου επιλέγουμε Activity. Εικόνα 3-15 Προσθήκη δραστηριότητας 2/2 4. Στη συνέχεια στο δεξί μέρος της οθόνης επιλέγουμε τις ιδιότητες για την νέα δραστηριότητα. Εικόνα 3-16 Στοιχεία δραστηριότητας Σελίδα 52 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα 5. Επιλέγουμε την ιδιότητα Name και ορίζουμε τα χαρακτηριστικά της νέας κλάσης. Εικόνα 3-17 Όνομα και χαρακτηριστικά δραστηριότητας 6. Τέλος δημιουργείται ο κώδικας της κλάσης. Εικόνα 3-18 Παραγόμενος κώδικας Η διαχείριση της εφαρμογής γίνεται από τις οθόνες που σχεδιάστηκαν, για αυτό τον σκοπό. Ο ορισμός της καθορισμένης δραστηριότητας κατά την εκκίνηση της εφαρμογής καθορίστηκε στο AndroidManifest.xml με την ετικέτα Σελίδα 53 από 73

3 Υλοποίηση εφαρμογής <intent-filter>. Η δραστηριότητα αυτή είναι η PetMgr_Main και το αντίστοιχο αρχείο πηγαίου κώδικα το PetMgr_Main.java. <activity> </activity> android:name="com.nansi.android.petmgr.petmgr_main" android:label="@string/title_pets_list" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> Κατά την εκτέλεση της εφαρμογής καλείται η oncreate() της PetMgr_Main για τη δημιουργία ενός στιγμιότυπου της δραστηριότητας. Έτσι αρχικοποιείται η διεπιφάνεια, η οποία έχει οριστεί στο αντίστοιχο xml. Αντίστοιχα η μέθοδος checktodos, χρησιμοποιείται για να επιστρέψεις τις εργασίες για το ή τα κατοικίδια. protected void oncreate(bundle savedinstancestate) { } TabSpec tspets = tabhost.newtabspec("pets"); // setting Title and Icon for the Tab tspets.setindicator("pets");//, getresources().getdrawable(r.drawable.) Intent intdetails = new Intent(Intent.ACTION_VIEW, Pets.CONTENT_URI, this, PetsList.class); tspets.setcontent(intdetails); // Tab for History TabSpec tstodos = tabhost.newtabspec("todos"); Σελίδα 54 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα Η σύνταξη του κώδικα για τις δραστηριότητες στις παραπάνω οθόνες, έγινε από τα αντίστοιχα αρχεία πηγαίου κώδικα. NameEditor.java: Η κλάση αυτή χρησιμοποιεί τις μεθόδους oncreate(), onresume(), onpause και onclickok. Το χαρακτηριστικό PROJECTION χρησιμοποιείται για την δημιουργία της προβολής των στοιχείων του κατοικίδιου. private static final String[] PROJECTION = new String[] { PetMgr.Pets._ID, // 0 PetMgr.Pets.COLUMN_NAME_NAME, // 1 }; Η oncreate() αυτής της κλάσης, λαμβάνει το uri του κατοικίδιου, στη συνέχεια εκτελεί το ερώτημα για την ανάκτηση της εγγραφής βάσει της προβολής. mcursor = managedquery( muri, PROJECTION, null, null, null); Η onresume() καλείται όταν η δραστηριότητα επανέρχεται στο προσκήνιο. Με την επαναφορά πιστοποιεί ότι το ερώτημα που έχει δημιουργηθεί με την oncreate() δουλεύει, αλλιώς τοποθετεί το δείκτη να δείχνει στη πρώτη εγγραφή. Η onpause() καλείται όταν η δραστηριότητα περνάει στο παρασκήνιο. Οι τρεις αυτές μέθοδοι, είναι κοινές σε όλες τις δραστηριότητες συνεπώς δεν θα αναφερθούμε ξανά σε αυτές. PetEditor.java: Η PetEditor, χειρίζεται τρεις καταστάσεις ανάλογα με το τύπο της δράσης. Έτσι δημιουργεί ένα κατοικίδιο (ACTION_INSERT) ή επεξεργάζεται τα στοιχεία του (ACTION_EDIT) ή δημιουργεί ένα κατοικίδια αντιγράφοντας τα στοιχεία του (ACTION_PASTE). Η μέθοδος LineEditText, σχεδιάζει μια γραμμή ανάμεσα στις γραμμές κειμένου. Σελίδα 55 από 73

3 Υλοποίηση εφαρμογής Οι άλλες κυριότερες μέθοδοι, που είναι μέλη της κλάσης είναι: oncreateoptionsmenu(menu): Καλείται όταν κάποιος χρήστης πατάει το κουμπί μενού της συσκευής, εμφανίζοντας το αντίστοιχο μενού για εισαγωγή ή προσθήκη εγγραφής. onoptionsitemselected(menuitem item): Καλείται όταν επιλέγεται το στοιχείο ενός μενού με παράμετρο το στοιχείο. Ανάλογα με αυτό επιτελείται και η κατάλληλη ενέργεια, δηλαδή αποθήκευση, διαγραφή ή επαναφορά. pickbirthdate(view): Καλεί τη στατική μέθοδο DoPickDateAndSetIt με την οποία δημιουργείται ένα στιγμιότυπο τύπου ημερολογίου, για την επιλογή ημερομηνίας. Στη συνέχεια επιστρέφεται αυτή η ημερομηνία ως τιμή του πεδίου mbirth που αφορά την ημερομηνία γέννησης του κατοικίδιου. public void pickbirthdate(view view) { DoPickDateAndSetIt(this, mbirth, " pickbirthdate exception "); } pickpetimage(view): Δημιουργείται ένας νέος σκοπός (intent) για την επιλογή εικόνας από τον κατάλογο image της κάρτας αποθήκευσης της συσκευής. public void pickpetimage(view view) { Intent photopickerintent = new Intent(Intent.ACTION_PICK); photopickerintent.settype("image/*"); startactivityforresult(photopickerintent, SELECT_PHOTO); } clickpickvet(view): Δημιουργεί ένα σκοπό για την επιλογή μίας επαφής από τη συσκευή ως αρμόδιο κτηνίατρο για το κατοικίδιο. public void clickpickvet(view view) { Intent contactpickerintent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startactivityforresult(contactpickerintent, CONTACT_PICKER_RESULT); } Σελίδα 56 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα Η κλάση NameEditor περιέχει και άλλα μέλη βοηθητικού κυρίως χαρακτήρα, όπως μεθόδους μετατροπής και μορφοποίησης ημερομηνιών. HistEditor.java: Η HistEditor, χρησιμοποιείται για την επεξεργασία του ιστορικού των εργασιών. Η δομή της είναι παρόμοια με τις προηγούμενες κλάσεις και υποστηρίζεις τις ίδιες μεθόδους. Στην oncreate(), ανάλογα με το εισερχόμενο URI, προσδιορίζεται το κατοικίδιο για το οποίο θα γίνει επεξεργασία του ιστορικού. PetsList.java, ToDosList.java: Ομοίως με τις άλλες κλάσεις, δημιουργείται μια προβολή με το μέλος PROJECTION και στην oncreate() εκτελείται το ερώτημα στη βάση για την εμφάνιση μιας λίστας με τα καταχωρημένα κατοικίδια. Η μόνη διαφορά είναι στην μέθοδο onlistitemclick(), με την οποία δημιουργείται μία νέα URI, με το id του κατοικιδίου και λαμβάνεται επίσης ο σκοπός. Αν αυτός είναι ACTION_PICK ή ACTION_GET_CONTENT, τότε εμφανίζονται τα στοιχεία του κατοικίδιου, αλλιώς καλείται η PetEdit για επεξεργασία των στοιχειών. protected void onlistitemclick(listview l, View v, int position, long id) { Uri uri = ContentUris.withAppendedId(getIntent().getData(), id); String action = getintent().getaction(); if (Intent.ACTION_PICK.equals(action) Intent.ACTION_GET_CONTENT.equals(action)) { Ιntent returnintent = new Intent().setData(uri); setresult(result_ok, returnintent); returnintent.setflags(returnintent.flag_activity_clear_t OP); this.finish(); } else { startactivity(new Intent(Intent.ACTION_VIEW, uri)); } } PetViewDetails.java, PebViewHist.java, PetViewWeight.java, TodoView.java: Εμφανίζουν τις αντίστοιχες λεπτομέρειες. Με την oncreate() πραγματοποιείται το ερώτημα στη βάσης και εμφανίζονται τα στοιχεία. Η oncreateoptionsmenu() και η onoptionsitemselected() είναι υπεύθυνες για Σελίδα 57 από 73

3 Υλοποίηση εφαρμογής την επεξεργασία αυτών των στοιχείων, αν επιλεχθεί το αντίστοιχο στοιχείο του μενού. Σελίδα 58 από 73

Κεφάλαιο 4- Παρουσίαση εφαρμογής Η εφαρμογή PetMgr, όπως έχει ήδη αναφερθεί έχει ως σκοπό την δημιουργία ενός ηλεκτρονικού βιβλιαρίου κατοικίδιων ζώων. Ο χρήστης της εφαρμογής θα έχει τη δυνατότητα να καταγράφει όλες τις λεπτομέρειες που αφορούν το κατοικίδιο, καθώς και να προγραμματίζει εργασίες που αφορούν αυτό. 4.1. Αρχική οθόνη Κατά την εκτέλεση της εφαρμογής, ο χρήστης λαμβάνει πληροφορίες σχετικά με την εφαρμογή και έχει τη δυνατότητα να επιλέξει ανάμεσα σε δύο καρτέλες (Εικόνα 5-1). Εικόνα 4-1 Αρχική Οθόνη Στη καρτέλα PETS, μπορεί να δει τα καταχωρημένα κατοικίδια, ενώ με αν επιλέξει Menu, μπορεί να δημιουργήσει νέα εγγραφή, να λάβει οδηγίες σχετικά με την εφαρμογή ή να δει τις εργασίες που είναι καταχωρημένες (Εικόνα 5-2). Σελίδα 59 από 73

4 Παρουσίαση εφαρμογής Εικόνα 4-2 Επιλογή menu στην αρχική οθόνη Αντίστοιχα στην καρτέλα TODOS, μπορεί να δει τις καταχωρημένες εργασίες (Εικόνα 5.3), ενώ πατώντας menu, μπορεί να καταχωρίσει μια νέα εργασία. Εικόνα 4-3 Καρτέλα TODOS 4.1.1. Λεπτομέρειες κατοικίδιου Η επιλογή εμφάνισης μιας εγγραφής μας οδηγεί σε μία οθόνη, όπου εμφανίζονται οι λεπτομέρειες για το συγκεκριμένο κατοικίδιο (Εικόνα 5-4). Σελίδα 60 από 73

Πτυχιακή εργασία της Αθανασίας Έλληνα Εικόνα 4-4 Εμφάνιση στοιχείων κατοικίδιου 4.1.2. Καταγραφή βάρους Η καρτέλα WEIGHT, εμφανίζει τις καταγραφές βάρους που έχουν γίνει σε μορφή λίστας. Επίσης υπάρχει η δυνατότητα προσθήκης μέτρησης μέσω ενός textbox. Στο πεδίο καταχωρείτε η ένδειξη βάρους, ενώ η ημερομηνία λαμβάνεται αυτόματα από το σύστημα. Σελίδα 61 από 73

4 Παρουσίαση εφαρμογής Εικόνα 4-5 Εισαγωγή μέτρησης βάρους 4.1.3. Ιστορικό εργασιών Στη συγκεκριμένη καρτέλα εμφανίζει το ιστορικό των εργασιών που έχουν γίνει. Εικόνα 4-6 Ιστορικό εργασιών 4.2. Φόρμα προσθήκης κατοικίδιου. Η φόρμα προσθήκης, περιλαμβάνει τα πεδία της βάσης, που αντιστοιχούν στην οντότητα PETS, όπως αυτή περιγράφηκε στην ανάλυση απαιτήσεων. Η καταχώριση στα πεδία γίνεται μέσω textboxes, ενώ για τα πεδία που υποστηρίζουν ένα πεπερασμένο σύνολο τιμών μέσω dropboxes. Επίσης υπάρχει η δυνατότητα εισαγωγής εικόνας, μέσω της συλλογής που υπάρχει στη συσκευή. Σελίδα 62 από 73