ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ...

105
Σελίδα | 1 ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Θέμα πτυχιακής εργασίας: Ανάπτυξη εφαρμογής Αndroid για την χρήση και διαχείριση του Συστήματος Διαχείρισης Μάθησης Open eClass. Android application development for the use and administration of Open eClass Learning Management System. Υποβληθείσα στον Καθηγητή Καζανίδη Ιωάννη από τον σπουδαστή: Λόκα Ανδρέα Καβάλα 2012

Transcript of ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ...

Page 1: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 1

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

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

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

Θέμα πτυχιακής εργασίας:

Ανάπτυξη εφαρμογής Αndroid για την χρήση και διαχείριση του Συστήματος Διαχείρισης

Μάθησης Open eClass.

Android application development for the use and administration of Open eClass Learning

Management System.

Υποβληθείσα στον Καθηγητή

Καζανίδη Ιωάννη

από τον

σπουδαστή:

Λόκα Ανδρέα

Καβάλα 2012

Page 2: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 2

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

ΕΙΣΑΓΩΓΗ ΚΑΙ ΠΕΡΙΓΡΑΜΜΑ ΕΡΓΑΣΙΑΣ…………….…………………………………………….………...…………3

ΚΕΦΑΛΑΙΟ 1: Η ΠΛΑΤΦΟΡΜΑ Open eClass……………………..….…..…………………………………………7

1.1. Γενική περιγραφή της πλατφόρμας……………………………………………....................................7

1.2. Στόχοι – Οφέλη……………….……………………………...…….…...……………………………………………….11

1.3. Το πακέτο XAMPP………………………………………………………...……………………………………………..12

1.4. Η βάση δεδομένων……………………………………………….……………………………………………….…….13

ΚΕΦΑΛΑΙΟ 2: ΕΙΣΑΓΩΓΗ ΣΤΟ Android SDK……….......…...….……….........................................16

2.1. To Android Software Development Kit (SDK)..................................................................17

2.2. Απαραίτητα εργαλεία..........................................................................……..………………….17

2.3. Ο Android Emulator……………………………...….….………………………………………………………………19

2.4. Η αρχιτεκτονική του Android SDK…………………………………………………………………………………23

2.4.1. Ο πυρήνας Linux…………………………………………………….......................................24

2.4.2. Τοπικές βιβλιοθήκες………………………………………………....................................25

2.4.3. Επίπεδο χρόνου εκτέλεσης……………………………………………………………………..25

2.4.4. Πλαίσιο εφαρμογών Application Framework….…..…...…………………………25

2.4.5. Εφαρμογές και widgets……………………………………………………………………..26

2.5. Χρόνος ζωής δραστηριότητας (Activity Lifecycle)………………………….………..…………………..27

2.6. Android Application Project………………………………………………………………………………………….30

2.7. Εκτέλεση της Android εφαρμογής………………………………………………………………………………..32

ΚΕΦΑΛΑΙΟ 3: ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PHP.....................................34

3.1. Γενικές πληροφορίες……………………………………………………………………………………………………34

3.2. Συγγραφή και εκτέλεση ενός απλού προγράμματος σε PHP…………....…………………………35

3.3. Η χρήση του συστήματος MySql…………………………………………………………………………………..36

3.3.1. Η εντολή CREATE………………………………………………………………………………………….38

3.3.2. Η εντολή DROP…………………………………………………………………………………………..38

3.3.3. Η εντολή SELECT……………………….…………………………………………………………….39

3.3.4. Η εντολή INSERT……………………………………………………………………………………39

3.3.5. Η εντολή DELETE………………………………………………………………………………..40

3.3.6. Η εντολή UPDATE…………………………………………..……………………………….40

3.4. Η χρήση της MySql από τα PHP scripts…………………………………….....................................40

3.5. Κλήση ενός PHP script από έναν client ..………………………………………………………………………41

3.6. Πέρασμα παραμέτρων σε ένα PHP script μέσω του url………………..……………………………..42

Page 3: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 3

3.7. Ανταλλαγή δεδομένων με κωδικοποίηση JSON………………………………..............................43

ΚΕΦΑΛΑΙΟ 4: ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ………………………………………….45

4.1. Αρχιτεκτονική συστήματος………………………………………………………..………...………...............45

4.2. Βασικές αρχές……………………………………………………..……………………………….………………………46

4.3. Δραστηριότητες της Android εφαρμογής………………….………….………………….…................47

4.4. Παράδειγμα υλοποίησης δραστηριότητας………………………………..…………….………………….51

4.4.1. Ορισμός γραφικού περιεχομένου…………………….…………………………………………..52

4.4.2. Ο κώδικας Java της δραστηριότητας………………………...………………………………….56

4.4.3. Το PHP script “checklogin.php”…………………………………………………………………….59

ΚΕΦΑΛΑΙΟ 5: ΠΑΡΟΥΣΙΑΣΗ ΤΗΣ ΑΝΑΠΤΥΧΘΕΙΣΑΣ ΕΦΑΡΜΟΓΗΣ…………………………………….62

5.1. Application Launch……………………………………………………………...........................................62

5.2. Main Page…………………………………………………………………………………………………………………….64

5.3. Create Account…………………………………………………………………………………………………………….65

5.4. Login…………………………………………………………………………………………………………………………….70

5.5. Main Menu………………………………………………………..………………………………………………………..72

5.6. Check Announcements…………………………………………………………………………………………………73

5.7. Find Lessons…………………………………………………………………………………………………………………75

5.8. My Lessons……………………………………………………………………..............................................78

5.9. Lesson Site……………………………………………………………………………………………………………………80

5.10. Lesson Announcements……………………………………………………..………………………………………81

5.11. Lesson Assignments………………………………………………………...…………………………………………83

5.12. Lesson Files…………………………………………………………………………………………………………………85

5.13 Lesson Agenda…………………………………………………………………………………………………………….88

5.14. Lesson Forum………………………………….………………………………………………………………………….90

5.15. Topics………………………………………………………………………………………………………………………...92

5.16. Posts…………………………………………………………………………………………………………………………..94

5.16. Enter Text ……………………………..……………………………………………..……………………………………98

5.17. Δοκιμή της εφαρμογής………………………………………………………………………………….…………101

ΚΕΦΑΛΑΙΟ 6: ΣΥΜΠΕΡΑΣΜΑΤΑ – ΠΡΟΤΑΣΕΙΣ ΓΙΑ ΠΕΡΑΙΤΕΡΩ ΜΕΛΕΤΗ………………………102

ΒΙΒΛΙΟΓΡΑΦΙΑ…………………………………………………………………………………………………………………105

ΙΣΤΟΣΕΛΙΔΕΣ……………………………………………………………………………………………………………………..105

Page 4: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 4

Εισαγωγή και περίγραμμα εργασίας

Ο κύριος στόχος της παρούσας εργασία ήταν η ανάπτυξη μιας εφαρμογής κινητού

τηλεφώνου νέας γενιάς (smart phone), μέσω της οποίας να δίνεται η δυνατότητα στον

χρήστη να εγγραφεί και να εισέλθει σε έναν λογαριασμό κάποιας πλατφόρμας eClass και να

εκτελέσει τις διάφορες λειτουργίες από το κινητό του τηλέφωνο. Πιο συγκεκριμένα,

αναπτύχθηκε με την χρήση του Android sdk μία εφαρμογή η οποία τρέχει σε κινητά τύπου

Android και συνδέεται σε ένα εικονικό eClass το οποίο δημιουργήθηκε για τις ανάγκες της

εργασίας. Το πρόγραμμα είναι ευέλικτο έτσι ώστε με μικρές τροποποιήσεις να μπορεί να

χρησιμοποιηθεί με οποιοδήποτε eClass.

Η ηλεκτρονική πλατφόρμα Open eClass, αποτελεί ένα ολοκληρωμένο σύστημα

διαχείρισης ηλεκτρονικών μαθημάτων. Στόχος της είναι η υποστήριξη δράσεων

τηλεκπαίδευσης ανεξάρτητα από τους περιοριστικούς παράγοντες του χώρου και του

χρόνου της κλασσικής διδασκαλίας, προσφέροντας στον εκπαιδευτή και τον εκπαιδευόμενο

ένα δυναμικό περιβάλλον αλληλεπίδρασης. Όπως προαναφέρθηκε στα πλαίσια της

εργασίας έγινε εγκατάσταση και χειρισμός της πλατφόρμας eClass, έτσι ώστε να μπορεί να

δοκιμαστεί η mobile εφαρμογή που την χειρίζεται.

Το Android Software Development Kit (SDK) αναπτύχθηκε από την εταιρία Open

Handset Alliance, η οποία αποτελεί ιδιοκτησία της Google. Ο σκοπός ήταν η ανάπτυξη ενός

ανοιχτού (open source) λογισμικού, που θα δίνει τη δυνατότητα σε προγραμματιστές να

δημιουργούν εφαρμογές οι οποίες μπορούν να εκτελεστούν σε κινητές συσκευές τύπου

Android. Η γλώσσα που χρησιμοποιείται είναι βασισμένη στην γλώσσα προγραμματισμού

Java και παρέχεται ένας emulator ώστε να μπορεί να διεξαχθεί πειραματισμός με τις υπό

ανάπτυξη εφαρμογές. Η εφαρμογή που αναπτύχθηκε για τις ανάγκες της εργασίας

χρησιμοποιεί το Android SDK και δοκιμάστηκε τόσο στον Android emulator, όσο και σε

πραγματικές συσκευές.

Για να είναι δυνατή η επικοινωνία της Android εφαρμογής με την πλατφόρμα

eClass, απαιτήθηκε η χρήση μια διαδικτυακής γλώσσας με την οποία δημιουργήθηκαν web

services τα οποία δίνουν τη δυνατότητα σε μια εξωτερική εφαρμογή να έχει πρόσβαση στη

βάση δεδομένων που το eClass δημιουργεί. Η γλώσσα που επιλέχτηκε είναι η php. Η php

είναι μία γενικού σκοπού server-side scripting γλώσσα προγραμματισμού, που δίνει τη

δυνατότητα δημιουργίας web-services αλλά και δυναμικών ιστοσελίδων. Στα πλαίσια της

Page 5: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 5

εργασία χρησιμοποιήθηκε ώστε να παρέχει όλα τα web-services τα οποία η android

εφαρμογή καλεί για να έχει πρόσβαση στη βάση δεδομένων του eClass.

Το να δημιουργήθει μία εφαρμογή κινητού τηλεφώνου που να υλοποιεί όλες τις

λειτουργίες που παρέχει το eClass ήταν κάτι που ξέφευγε από τους σκοπούς της παρούσας

πτυχιακής εργασίας. Σκοπός ήταν να υλοποιηθούν οι πιο βασικές λειτουργίες (login,

δημιουργία λογαριασμού, ατζέντα, κατέβασμα αρχείων κλπ) και να γίνει μια μελέτη για το

αν μια τέτοια προσέγγιση είναι γρήγορη και αξιόπιστη. Η λειτουργίες εστιάστηκαν κυρίως

στους εκπαιδευόμενους, καθώς οι εκπαιδευτές χρειάζονται άλλα δικαιώματα (να τους

δημιουργήσει ο Διαχειριστής κλπ) και επίσης κρίθηκε πιο λογικό ότι μία mobile εφαρμογή

θα απευθύνεται σε πρώτη φάση στους φοιτητές. Η αρχιτεκτονική που χρησιμοποιήθηκε

μπορεί να εφαρμοστεί και για την υλοποίηση περισσοτέρων λειτουργιών ή και σε

διαφορετικού τύπου κινητές συσκευές (Iphone).

Η εργασία αποτελείται από έξι κεφάλαια:

Στο πρώτο κεφάλαιο γίνεται μια εισαγωγή στην πλατφόρμα eClass, την

φιλοσοφία της, την αρχιτεκτονική της καθώς και των λειτουργιών που υλοποιεί.

Στο ίδιο κεφάλαιο παρουσιάζεται συνοπτικά και το εργαλείο Xampp το οποίο

χρησιμοποιήθηκε για την εγκατάσταση του eClass, αλλά και οι βάσεις

δεδομένων τις οποίες το eClass δημιουργεί.

Στο δεύτερο κεφάλαιο επιχειρείται να γίνει μία εισαγωγή στο Android sdk.

Βάρος δίνεται στα στοιχεία και τις βιβλιοθήκες που χρησιμοποιήθηκαν στα

πλαίσια της ανάπτυξης της εφαρμογής.

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

PHP. Συγκεκριμένο βάρος δίνεται στο πως η γλώσσα δίνει τη δυνατότητα

υλοποίησης web-services, αλλά και το πώς συνδυάζεται με τη γλώσσα mySql,

ώστε να χειριστεί μία βάση δεδομένων.

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

που αναπτύχθηκε. Αρχικά εξηγείται η αρχιτεκτονική που χρησιμοποιήθηκε και

έπειτα δίνονται κάποια σημεία του κώδικα ως παράδειγμα.

Στο πέμπτο κεφάλαιο παρουσιάζεται η αναπτυχθείσα εφαρμογή. Γίνεται

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

με τον server και τη βάση δεδομένων του Open eClass. Επίσης δίνονται

screenshots από τον Android emulator τα οποία επιδεικνύουν τη χρήση της

εφαρμογής.

Page 6: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 6

Στο έκτο και τελευταίο κεφάλαιο παρουσιάζονται κάποια συμπεράσματα και

προβληματισμοί και γίνονται προτάσεις για περεταίρω μελέτη αλλά και

επέκταση της εφαρμογής.

..........................................................................................................................................

Η εργασία αυτή αναπτύχθηκε στα πλαίσια της περαίωσης Πτυχιακής εργασίας για το τμήμα

Βιομηχανικής Πληροφορικής του Τεχνολογικού εκπαιδευτικού

ιδρύματος Καβάλας.

Ευχαριστώ εκ βάθους καρδίας τον Καθηγητή μου Ιωάννη Καζανίδη που με στήριξε με τις

γνώσεις του και την καθοδηγησή του!

Τους γονείς μου Θωμά και Γιούλα!

Τους αδερφούς μου Μάριο και Γιώργο για την πολύτιμη βοήθεια τους

και την αγαπημένη μου Μιρέλα που σύντομα θα φέρει στην ζωή μας τον γιο μας!

Λάρισα 12 Σεπτεμβρίου 2012...

Page 7: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 7

ΚΕΦΑΛΑΙΟ 1: Η ΠΛΑΤΦΟΡΜΑ Open eClass

1. Η πλατφόρμα Open eClass

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

πλατφόρμας Open eClass, των λειτουργιών που προσφέρει καθώς και της φιλοσοφίας της.

Βάρος δίνεται στο να γίνουν κατανοητά τα οφέλη που αποκομίζονται από την χρήση της

συγκεκριμένης πλατφόρμας να αναγνωριστούν οι βασικές κατηγορίες χρηστών και να

παρουσιαστούν τα βασικά σενάρια χρήσης που οι διάφορες κατηγορίες χρηστών

υλοποιούν.

Επίσης γίνεται μια περιγραφή του εργαλείου Xampp που χρησιμοποιήθηκε ώστε να

εγκατασταθεί το eClass στον τοπικό server και των βάσεων δεδομένων που το eClass

δημιουργεί.

1.1. Γενική περιγραφή της πλατφόρμας

Η ηλεκτρονική πλατφόρμα Open eClass, αποτελεί ένα ολοκληρωμένο σύστημα

διαχείρισης ηλεκτρονικών μαθημάτων. Στόχος της είναι η υποστήριξη δράσεων

τηλεκπαίδευσης ανεξάρτητα από τους περιοριστικούς παράγοντες του χώρου και του

χρόνου της κλασσικής διδασκαλίας, προσφέροντας στον εκπαιδευτή και τον εκπαιδευόμενο

ένα δυναμικό περιβάλλον αλληλεπίδρασης. Η πλατφόρμα αποτελεί πρόταση του

Ακαδημαϊκού Διαδικτύου (GUnet), το οποίο την υποστηρίζει και τη διανέμει ελεύθερα.

Η πλατφόρμα αποτελεί ένα εργαλείο αλληλεπίδρασης και συνεχούς επικοινωνίας

μεταξύ εκπαιδευτή και εκπαιδευόμενου. Σκοπός δεν είναι να αντικαταστήσει την

παραδοσιακή διδασκαλία, αλλά να την εμπλουτίσει, δημιουργώντας τις προϋποθέσεις ενός

δυναμικού περιβάλλοντος εκπαίδευσης. Οι εκπαιδευτές έχουν τη δυνατότητα να

δημιουργούν εύχρηστα ηλεκτρονικά μαθήματα, στα οποία να παρέχουν πληροφορίες και

εκπαιδευτικό υλικό. Οι εκπαιδευόμενοι μπορούν να έχουν εύκολα και γρήγορα πρόσβαση

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

εργασίας, η ανταλλαγή αρχείων, μηνυμάτων κλπ.

Στην ηλεκτρονική πλατφόρμα eClass υπάρχουν τρεις βασικές κατηγορίες χρηστών

οι οποίες παρουσιάζονται παρακάτω:

Page 8: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 8

1. Ο χρήστης - εκπαιδευτής είναι υπεύθυνος για τη δημιουργία και τη διαχείριση των

ηλεκτρονικών μαθημάτων. Ο λογαριασμός του δημιουργείται από τους

διαχειριστές της πλατφόρμας, κατόπιν αίτησης του ενδιαφερόμενου. Ο

εκπαιδευτής μπορεί να δημιουργήσει όσα μαθήματα επιθυμεί, να επικοινωνεί με

τους εκπαιδευόμενους, να εισάγει το εκπαιδευτικό υλικό του μαθήματος (κείμενα,

εικόνες, παρουσιάσεις, βίντεο, εργασίες, ασκήσεις αυτοαξιολόγησης κλπ), καθώς

επίσης να δημιουργεί ομάδες εργασίας και περιοχές συζητήσεων.

2. Ο χρήστης - εκπαιδευόμενος μπορεί να εγγραφεί σε όσα μαθήματα του

επιτρέπεται, να έχει πρόσβαση στο εκπαιδευτικό υλικό που περιέχουν, και να

συμμετέχει σε ομάδες εργασίας, περιοχές συζητήσεων και ασκήσεις

αυτοαξιολόγησης. Ο λογαριασμός του δημιουργείται είτε αυτόματα με την

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

αίτησης του ενδιαφερόμενου.

3. Ο χρήστης - διαχειριστής είναι αυτός που έχει τη συνολική εποπτεία της

πλατφόρμας.

Με βάση αυτούς τους χρήστες έχουμε ένα γενικό Use Case Diagram που περιγράφει τις

βασικές λειτουργίες του συστήματος και παρατίθεται στο σχήμα 1.1. Πρέπει να τονισθεί ότι

στη διαδικασία της ανάπτυξης ενδέχεται κάποιες από τις απαιτήσεις να τροποποιηθούν. Το

σχήμα δεν αναλύει με λεπτομέρεια όλες τις λειτουργίες του συστήματος, αλλά αποτελεί

μία γενική περιγραφή του. Οι λειτουργίες “διαχείριση μαθήματος” και “παρακολούθηση

μαθήματος” που αποτελούν και τις βασικότερες λειτουργίες του eClass περιγράφονται με

λεπτομέρεια στα σχήματα 1.2 και 1.3 αντίστοιχα.

Page 9: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 9

Σχήμα 1.1: Γενικό Use Case Diagram συστήματος

Αξίζει επιπλέον να σημειωθεί ότι κάποιες από τις διεργασίες στα σχήματα

αποτελούν ομάδα εργασιών που αναφέρονται στο ίδιο θέμα. Για παράδειγμα η εργασία

“διαχείριση ανακοινώσεων” περιλαμβάνει τη δημιουργία, την επεξεργασία αλλά και τη

διαγραφή μιας ανακοίνωσης. Η ανάλυση τον διαδικασιών αυτών με λεπτομέρειες στα

διαγράμματα δεν κρίνεται σκόπιμη στα πλαίσια της παρούσας παρουσίασης.

Page 10: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 10

Σχήμα 1.2: Use Case Diagram - Διαχείριση ηλεκρονικού μαθήματος

Page 11: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 11

Σχήμα 1.3: Use Case Diagram - Παρακολούθηση ηλεκτρονικού μαθήματος

Η υλοποίηση όλων των λειτουργιών που παρουσιάστηκαν παραπάνω ξεπερνάει τα

όρια της παρούσας πτυχιακής εργασίας. Η λειτουργίες που υλοποιήθηκαν εστιάστηκαν

κυρίως στους εκπαιδευόμενους, καθώς οι εκπαιδευτές χρειάζονται άλλα δικαιώματα (να

τους δημιουργήσει ο Διαχειριστής κλπ) και επίσης κρίθηκε πιο λογικό ότι

μία mobile εφαρμογή θα απευθύνεται σε πρώτη φάση στους φοιτητές. Η αρχιτεκτονική

που χρησιμοποιήθηκε μπορεί να εφαρμοστεί και για την υλοποίηση περισσοτέρων

λειτουργιών.

1.2 Στόχοι – Οφέλη

Σύμφωνα με την Οµάδα Ασύγχρονης Τηλεκπαίδευσης GUnet “ Βασική επιδίωξη

της πλατφόρµας αποτελεί η ανάπτυξη υποδοµών εκπαίδευσης και κατάρτισης

ανεξάρτητα από τους περιοριστικούς παράγοντες του χώρου και του χρόνου της

συµβατικής διδασκαλίας”. Η ίδια ομάδα αναγνωρίζει ως βασικούς στόχους που

ικανοποιούνται από το σχεδιασµό και τα οφέλη που αποκοµίζονται από τη χρήση της

πλατφόρµας είναι τα εξής:

1. Ενσωμάτωση των νέων τεχνολογιών της πληροφορίας και των

επικοινωνιών (ΤΠΕ) στην εκπαιδευτική δραστηριότητα για την παροχή

Page 12: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 12

ανταγωνιστικών υπηρεσιών εκπαίδευσης υψηλής ποιότητας μέσα από ένα

σύγχρονο περιβάλλον τεχνολογικής αιχμής

2. Δημιουργία ενός εύχρηστου μέσου αλληλεπίδρασης και συνεχούς

επικοινωνίας εκπαιδευτή – εκπαιδευομένου

3. Αξιοποίηση του πλούσιου εκπαιδευτικού υλικού και της

συσσωρευµένης εκπαιδευτικής εμπειρίας

4. Εποικοδομητική χρήση του διαδικτύου και της άρτιας δικτυακής υποδομής

των εκπαιδευτικών οργανισµών

5. Ευκολία στη χρήση από εκπαιδευτές – εκπαιδευομένους για την

υποστήριξη ατόμων µε διαφορετική τεχνολογική παιδεία και κουλτούρα

αλλά µε τις ίδιες υψηλές απαιτήσεις στην ποιότητα της προσφερόµενης

εκπαίδευσης

6. Παροχή μιας αξιόπιστης χαμηλού κόστους υπηρεσίας τηλεµατικής για

την Ασύγχρονη Τηλεκπαίδευση

7. Προσαρμοστικότητα στις ιδιαίτερες απαιτήσεις και ανάγκες

8. Ευκολία στη διαχείριση, την αναβάθμιση και την επέκταση

9. Ελεύθερη διάθεση και κεντρική υποστήριξη από το Πανελλήνιο

Ακαδημαϊκό ∆ιαδίκτυο GUnet

Περισσότερες πληροφορίες καθώς και εγχειρίδια χρήσης για την πλατφόρμα eClass

μπορούν να βρεθούν στην ιστοσελίδα http://www.openeclass.org/

1.3 Το πακέτο XAMPP

Σύμφωνα με τους Davies και Phillips (2007), το XAMPP αποτελεί ένα πακέτο

προγραμμάτων ελεύθερου λογισμικού λογισμικού ανοικτού κώδικα και ανεξάρτητου

πλατφόρμας το οποίο περιέχει το εξυπηρετητή ιστοσελίδων http Apache, την βάση

ιστοσελίδων MySQL και ένα διερμηνέα για σενάρια γραμμένα σε γλώσσες

προγραμματισμού PHP και Perl. Το όνομα XAMPP είναι ακρωνύμιο και αναφέρεται στα

εξής αρχικά:

X – Αναφέρεται στο "cross-platform" που σημαίνει λογισμικό ανεξάρτητο

πλατφόρμας.

Page 13: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 13

A – Αναφέρεται στον Apache Http Server, ο οποίος είναι ένας εξυπηρετητής του

παγκόσμιου ιστού (web) που χρησιμοποιεί το πρωτόκολλο HTTP

Μ – Αναφέρεται στο σύστημα διαχείρισης βάσεων δεδομένων MySql. Το πακέτο

παρέχει και το εργαλείο PHPmyAdmin με το οποίο μπορεί να γίνει εύκολα ο

χειρισμός της βάσης.

P – Αναφέρεται στη γλώσσα προγραμματισμού PHP. Αναλυτικότερη περιγραφή της

γλώσσας γίνεται στο κεφάλαιο 3.

P – Αναφέρεται στην αντικειμενοστρεφή γλώσσα προγραμματισμού Perl

Το XAMPP αποτελεί ένα ολοκληρωμένο πακέτο που ως σκοπό έχει τη δημιουργία ενός

εύχρηστου περιβάλλοντος το οποίο να βοηθάει τους προγραμματιστές στην χρησιμοποίηση

του Apache Http Server. To XAMPP είναι συμβατό με λειτουργικά Windows, Linux και Unix.

Η ίδια η ομάδα διαχείρισης του eClass προτείνει τη χρήση του XAMPP για την

εύκολη εγκατάσταση και χειρισμό του eClass. Οδηγίες για την εγκατάσταση μπορούν να

βρεθούν στην ιστοσελίδα:

http://www.openeclass.org/downloads/files/docs/2.4/install_info.php.

Με την εγκατάσταση του eClass ο χρήστης δημιουργεί και έναν χρήστη διαχειριστή (admin)

ο οποίος είναι και ο πρώτος χρήστης της πλατφόρμας. Επίσης ο χρήστης δίνει το όνομα για

την κύρια βάση δεδομένων που θα χρησιμοποιεί η πλατφόρμα.

1.4 Η βάση δεδομένων

Όπως προαναφέρθηκε το eClass δημιουργεί μία βάση δεδομένων η οποία περιέχει

όλες τις πληροφορίες που χρησιμοποιεί η πλατφόρμα. Το όνομα της βάσεως δεδομένων

δίνεται από τον ίδιο τον χρήστη κατά την εγκατάσταση. Στην συγκεκριμένη υλοποίηση

χρησιμοποιήθηκε το “neweclass”. Η βάση περιέχει 35 πίνακες, πολλοί από τους οποίους

περιγράφονται εν συντομία παρακάτω.

1. admin [idUser, privilege]- Περιέχει πληροφορίες για τον διαχειριστή της

πλατφόρμας.

2. agenda [id, lesson_event_id, titre, contenu, day, hour, lasting, lesson_code] -

Περιέχει τα συμβάντα τα οποία παρουσιάζονται στην ατζέντα. Μέσω του

lesson_event_id μπορεί να γίνει ταυτοποίηση του μαθήματος στο οποίο ανήκει το

Page 14: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 14

συμβάν ενώ στη στήλη contenu υπάρχει το πριεχόμενο. Γενικά περιεχόμενα

κειμένου, αποθηκεύονται σε μορφή html (με τη χρήση html tags), ώστε να

αποθηκεύεται και η μορφοποίηση.

3. annonces [id, title, contenu, temps, cours_id, ordre, visibility] – Περιέχει τις

ανακοινώσεις των μαθημάτων. Μέσω του cours_id μπορεί να βρεθεί το μάθημα

στο οποίο ανήκει η ανακοίνωση, ενώ η στήλες title και contenu περιέχουν τον τίτλο

και το περιεχόμενο της ανακοίνωσης αντίστοιχα.

4. cours [cours_id, code, languageCourse, intitule, description, course_keywords,

course_addon, visible titulaires, fake_code, departmentUrlName, departmentUrl,

lastVisit, lastEdit] – Περιέχει πληροφορίες για τα μαθήματα. Η στήλη code είναι

ιδιαίτερης σημασίας διότι για κάθε μάθημα που δημιουργείται, το eClass

δημιουργεί μία καινούρια βάση δεδομένων ειδικά για το συγκεκριμένο μάθημα. Το

όνομα αυτής της βάσης είναι το περιεχόμενο της συγκεκριμένης στήλης για τον

πίνακα cours. Οπότε αν κάποιος θέλει να βρει στοιχεία για αυτό το μάθημα πρέπει

να ανακτήσει το περιεχόμενο της στήλης code, ώστε να συνεχιστεί η αναζήτηση

στην σωστή βάση δεδομένων.

5. course_units (id, title, comments, visibility, order, course_id) – περιέχει ενότητες

του συγκεκριμένου μαθήματος.

6. cours_user [cours_id, user_id, statut, team, tutor, editor, reg_date, receive_mail] –

συνδέει τους χρήστες (user_id) με τα μαθήματα στα οποία είναι εγγεγραμμένοι

(cours_id).

7. faculte [id, code, name, number, generator] – Περιέχει γενικές πληροφορίες για τα

τμήματα.

8. unit_resources [id, unit_id, title, comments, res_id, type, visibility, order, date] –

περιέχει πόρους για τις ενότητες (κείμενο κλπ).

9. user [user_id nom, prenom, username, password, email, statut, phone,

department, am, registered_at, expires_at, pers, lang, announce_flag,

doc_flag,forum_flag, description, has_icon, verified_mail, receive_mail,

email_public, phone_public, am_public] – Περιέχει πληροφορίες για όλους τους

χρήστες της πλατφόρμας.

Όπως αναφέρθηκε παραπάνω, όταν δημιουργείται ένα μάθημα, το eClass δημιουργεί

αυτόματα μία βάση δεδομένων για το συγκεκριμένο μάθημα. Το όνομα αυτής της βάσης

είναι ίδιο με το περιεχόμενο της στήλης code στον πίνακα cours της κεντρικής βάσης

Page 15: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 15

δεδομένων για το συγκεκριμένο μάθημα. Στη βάση αυτή δημιουργούνται 38 πίνακες οι πιο

σημαντικοί από τους οποίους περιγράφονται εν συντομία παρακάτω:

1. agenda [id, titre, contenu, day, hour, lasting, visibility] – παρόμοιο περιεχόμενο με

τον ομόνυμο πίνακα της κεντρικής βάσης, με τη διαφορά πότι περιέχει μόνο τα

συμβάντα του συγκεκριμένου μαθήματος.

2. assignments [id, title, description, comments, deadline, submission_date,

active, secret_directory, group_submissions] – περιέχει τις εργασίες οι οποίες

σχετίζονται με το συγκεκριμένο μάθημα.

3. dropbox_file [id, uploaderId, filename, filesize, title, description, author,

uploadDate, lastUploadDate] – περιέχει πληροφορίες για τα αρχεία που

σχετίζονται με το συγκεκριμένο μάθημα. Η στήλη title περιέχει τον τίτλο του

αρχείου όπως το όρισε ο χρήστης που το έκανε upload. Η στήλη filename περιέχει

το όνομα του αρχείου όπως είναι αποθηκευμένο στον Server, ο οποίος δίνει σε

κάθε αρχείο ένα τυχαίο όνομα. Το όνομα αυτό πρέπει να καλέσει ένα php script

ώστε να κατεβάσει το αρχείο.

4. forums [forum_id, forum_name, forum_desc, forum_access, forum_moderator,

forum_topics, forum_posts, forum_last_post_id, cat_id, forum_type] – Περιέχει

τις διαφορετικές συζητήσεις που υπάρχουν στο forum του μαθήματος.

5. posts [post_id topic_id, forum_id, poster_id, post_time, poster_ip, nom, prenom]

– Περιέχει πληροφορίες για ένα συγκεκριμένο post του forum.

6. posts_text [post_id, post_text] – Περιέχει το κείμενο του post. Το κείμενο είναι

αποθηκευμένο σε μορφή html (με τη χρήση html tags) έτσι ώστε να αποθηκεύεται

και η μορφοποίηση.

7. topics [topic_id, topic_title, topic_poster, topic_time, topic_views, topic_replies,

topic_last_post_id forum_id, topic_status, topic_notify, nom, prenom] –

Περιέχει τα διαφορετικά θέματα που υπάρχουν στα διάφορα forums.

Παραπάνω παρουσιάστηκαν συνοπτικά οι κυριότεροι πίνακες που έπρεπε να υποστούν

επεξεργασία για τις ανάγκες της αναπτυχθείσας εφαρμογής. Όπως προαναφέρθηκε το

eClass δημιουργεί ποικίλους άλλους πίνακες όπου αποθηκεύονται όλες οι απαραίτητες για

τη λειτουργία του πληροφορίες. Για την ανάπτυξη μίας εφαρμογής που να υλοποίει της

Page 16: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 16

λειτουργίες του eClass είναι απαραίτητο να υπάρχει πρόσβαση σε αυτή τη βάση και

δυνατότητα ανάγνωσης ή επεξεργασίας στοιχείων.

Page 17: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 17

ΚΕΦΑΛΑΙΟ 2: ΕΙΣΑΓΩΓΗ ΣΤΟ Android SDK

2. Εισαγωγή στο Android SDK

Στόχος της παρούσας εργασίας υπήρξε η ανάπτυξη μίας εφαρμογής Android η

οποίο να υλοποίει τις λειτουργίες του Open eClass σε ένα smart phone τύπου Android. Για

το λόγο αυτό κρίνεται απαραίτητη μία σύντομη παρουσίαση του Android Software

Development Kit (SDK) και του πως αυτό χρησιμοποιείται για την ανάπτυξη εφαρμογών.

Στην βιβλιογραφία υφίσταται πληθώρα βιβλίων και άρθρων που να παρέχουν οδηγίες για

τη χρήση του Android SDK. Σκοπός του παρόντος κεφαλαίου είναι να γίνει μια γενική

παρουσίαση της αρχιτεκτονικής και της φιλοσοφίας της γλώσσας και του πω αυτή

χρησιμοποιήθηκε στην ανάπτυξη της εφαρμογής.

2.1. To Android Software Development Kit (SDK)

Το Android Software Development Kit (SDK) αναπτύχθηκε από την εταιρία Open

Handset Alliance, η οποία αποτελεί ιδιοκτησία της Google. Ο σκοπός ήταν η ανάπτυξη ενός

ανοιχτού (open source) λογισμικού, που θα δίνει τη δυνατότητα σε προγραμματιστές να

δημιουργούν εφαρμογές οι οποίες μπορούν να εκτελεστούν σε κινητές συσκευές τύπου

Android. Η γλώσσα που χρησιμοποιείται είναι βασισμένη στην γλώσσα προγραμματισμού

Java και παρέχεται ένας emulator ώστε να μπορεί να διεξαχθεί πειραματισμός με τις υπό

ανάπτυξη εφαρμογές.

2.2. Απαραίτητα εργαλεία

Για τη χρήση του Android SDK είναι απαραίτητο να εγκατασταθούν σε έναν

υπολογιστή κάποια εργαλεία. Αυτά είναι η γλώσσα προγραμματισμού Java, ένα Integrated

Development Environment (IDE) και το ίδιο το Android SDK

1. Η γλώσσα προγραμματισμού Java – Η Java είναι μία γλώσσα προγραμματισμού η

οποία σχεδιάστηκε για τη χρήση του διανεμημένου περιβάλλοντος του διαδυκτίου.

Σχεδιάστηκε ώστε να έχει τη δομή της γλώσσας C++, αλλά είναι πιο απλή από τη

Page 18: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 18

C++ και επιβάλλει τη χρήση του αντικειμενοστραφούς προγραμματισμού. Η Java

μπορεί να χρησιμοποιηθεί για τη δημιουργία ολοκληρωμένων εφαρμογών που

μπορούν να εκτελούνται σε έναν υπολογιστή ή να είναι διανεμημένες μεταξύ

servers και clients στο διαδύκτιο Το Android SDK χρησιμοποιεί σε επίπεδο

ανάπτυξης την γλώσσα Java. Αυτό σημαίνει ότι χρησιμοποιείται η σύνταξη της Java

όπως και πολλές βιβλιοθήκες που η γλώσσα παρέχει. Για αυτό το λόγο είναι

απαραίτητη η εγκατάσταση μίας έκδοσης της Java στον υπολογιστή. Να σημειωθεί

ότι απαιτείται ολόκληρο το JDK καθώς μία απλή έκδοση ενός runtime environment

(JRE) δεν επαρκεί για την ανάπτυξη εφαρμογών. Για την υλοποίηση Android

εφαρμογών απαιτείται κάποια έκδοση από το JDK 5.0 ή και νεότερη.

2. Integrated Development Environment (IDE) – Ένα IDE είναι ένα προγραμματιστικό

περιβάλλον που αποτελείται από έναν συντάκτη κώδικα, έναν compiler, έναν

debugger και έναν graphical user interface (GUI) builder. Τα σύγχρονα IDE δίνουν

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

εφαρμογών. Για τις ανάγκες της εργασίας χρησιμοποιήθηκε η έκδοση Indigo Service

Release 2 το Eclipse IDE. Το Eclipse IDE χρησιμοποιείται κυρίως για την ανάπτυξη

προγραμμάτων Java αλλά με τη χρήση plug-ins και άλλων γλωσσών

προγραμματισμού όπως Ada, C, C++, COBOL, Haskell, Perl, PHP, Python, R και Ruby.

Με την εγκατάσταση του Android SDK το Eclipse μπορεί να χρησιμοποιηθεί για την

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

χειρισμού του Android Emulator.

3. Android SDK – Όπως προαναφέρθηκε για την ανάπτυξη εφαρμογών Android η

εγκατάσταση του Android SDK είναι απαραίτητη. Οι διάφορες εκδόσεις του Android

SDK είναι διαθέσιμες στο διαδίκτυο στην ιστοσελίδα

http://developer.android.com/sdk/index.html. Η τρέχουσα νεότερη έκδοση είναι η

4.1 (Api 16). Στις εκδόσεις του Android υπάρχει forward compatibility που σημαίνει

ότι μία εφαρμογή που έχει αναπτυχθεί για παράδειγμα στο Android 2.1 (Api 7) θα

μπορεί να εκτελεστεί από το Android 2.2 (Api 8) ή οποιοδήποτε νεότερο, αλλά όχι

από κάποιο παλαιότερο όπως το Android 1.6 (Api 4). Η εφαρμογή που αναπτύχθηκε

στα πλαίσια της εργασίας χρησιμοποίησε την έκδοση Android 2.1 (Api 7), καθώς

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

κυκλοφορούν σήμερα στην αγορά.

Page 19: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 19

Όλα τα παραπάνω εργαλεία διανέμονται δωρεάν και μπορούν με ευκολία να γίνουν

download από το διαδίκτυο.

2.3. Ο Android Emulator

Το Android SDK παρέχει τη δυνατότητα χρήσης ενός emulator ώστε να είναι δυνατή

η δοκιμή των υπό ανάπτυξη προγραμμάτων. Με την χρήση του Eclipse IDE είναι πολύ

εύκολη η δημιουργία και τροποποίηση ενός Android emulator. Το Eclipse παρέχει τον

Android Virtual Device (Avd) Manager (σχήμα 2.1) που δίνει τη δυνατότητα δημιουργίας

νέων emulators.

Σχήμα 2.1: Ο Android Virtual Device (Avd) Manager

Page 20: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 20

Με την επιλογή “New” ο χρήστης οδηγείται σε ένα menu στο οποίο μπορεί να ορίσει έναν

νέο emulator (σχήμα 2.2). Ο χρήστης έχει τη δυνατότητα να ορίσει διάφορες παραμέτρους

όπως όνομα, έκδοση SDK, μέγεθος μνήμης και ανάλυση οθόνης (σχήμα 2.3).

Σχήμα 2.2: Δημιουργία ενός νέου Android emulator

Page 21: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 21

Η ύπαρξη του emulator είναι πολύ χρήσιμη για δύο κυρίως λόγους

Δίνει τη δυνατότητα ανάπτυξης εφαρμογών ακόμη και σε κάποιον που δεν κατέχει

Android συσκευή.

Δίνει τη δυνατότητα δοκιμή μίας εφαρμογής σε εικονικές συσκευές με ποικίλες

αναλύσεις οθόνης και μέγεθος μνήμης. Αυτό είναι πολύ σημαντικό, καθώς στην

ανάπτυξη εφαρμογών κινητών συσκευών η διαχείριση της μνήμης παίζει πάντα

σημαντικό ρόλο.

Παρόλα αυτά, ο emulator δεν πρέπει να θεωρείται πανάκεια και πάντα προτείνεται

εμπορικές εφαρμογές να δοκιμάζονται και σε πραγματικές συσκευές.

Page 22: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 22

Σχήμα 2.3: Παραμετροποίηση του Android emulator

Ο emulator έχει τον σκοπό του να αναπαραστήσει μία πραγματική συσκευή. Μέσω

του Eclipse και του μενού Emulator Control δίνονται διάφορες επιλογές όπως του να γίνει

τηλεφωνική κλήση στον emulator ή να δοθούν εικονικές Gps συντεταγμένες. Με τον τρόπο

αυτό είναι δυνατό να εξομοιωθεί με πιστότητα η λειτουργία της εφαρμογή σε πραγματικές

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

Page 23: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 23

κλήση). Ωστόσο υπάρχουν και περιορισμοί. Για παράδειγμα είναι αδύνατο να γίνει χρήση

της κάμερας της εικονικής συσκευής.

Στο σχήμα 2.4 παρουσιάζεται ο emulator που δημιουργήθηκε με τις επιλογές του

σχήματος 2.3. Η εφαρμογή που αναπτύχθηκε στα πλαίσια της παρούσας εργασίας

δοκιμάστηκε εκτενώς σε emulator αλλά και σε πραγματική συσκευή.

Σχήμα 2.4: Ο Android emulator

2.4. Η αρχιτεκτονική του Android SDK

Στο σχήμα 2.5 παρουσιάζεται γραφικά η αρχιτεκτονική στην οποία βασίζεται το

Android SDK. Όπως γίνεται κατανοητό υπάρχουν 5 διαφορετικά επίπεδα, ξεκινώντας από το

χαμηλότερο που είναι ο πυρήνας του λειτουργικού συστήματος και βασίζεται στο

λειτουργικό Linux και καταλήγοντας στο υψηλότερο που είναι οι εφαρμογές που

χρησιμοποιεί ο χρήστης της συσκευής. Στα παρακάτω υποκεφάλαια θα εξηγηθεί εν

συντομία η σημασία του κάθε επιπέδου.

Page 24: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 24

Σχήμα 2.5: Η αρχιτεκτονική του συστήματος Android (Πηγή: Hello, Android: Introducing

Google's Mobile Development Platform, Ed Burnette, 2008)

2.4.1. Ο πυρήνας Linux

Το λειτουργικό Linux αναπτύχθηκε από τον Linus Torvalds το 1991 όσο αυτός ήταν

φοιτητής στο πανεπιστήμιο του Ελσίνκι. Το Linux βρίσκεται σήμερα σε μια πληθώρα

συσκευών, από ρολόγια χειρός μέχρι και μεγάλος υπολογιστές. Το Linux παρέχει την

αφαιρετικό επίπεδο για το Android, επιτρέποντας το να είναι φορητό σε μία μεγάλη

ποικιλία διαφορετικών πλατφορμών στο μέλλον.

Εσωτερικά το Android χρησιμοποιεί το Linux για τη διαχείριση της μνήμης, τη

διαχείριση των διεργασιών το networking και άλλες υπηρεσίες του λειτουργικού

συστήματος. Ο τελικός χρήστης του Android δε θα δει ποτέ το Linux στη συσκευή του, ούτε

και ο προγραμματιστής μίας εφαρμογής. Για τον προγραμματιστή όμως είναι καλό να

γνωρίζει την ύπαρξη αυτού του επιπέδου. Μερικές διεργασίες, όπως ο χειρισμός του

emulator, μπορούν να γίνουν πολλές φορές ευκολότερα μέσω εντολών Linux.

Page 25: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 25

2.4.2. Τοπικές βιβλιοθήκες

Πάνω από το χαμηλότερο επίπεδο του πυρήνα, βρίσκονται οι τοπικές βιβλιοθήκες

του Android. Αυτές είναι γραμμένες σε γλώσσα προγραμματισμού C ή C++, χρησιμοποιούν

την αρχιτεκτονική του hardware της συγκεκριμένης συσκευής και είναι προεγκατεστημένες

από τον κατασκευαστή της συσκευής. Τέτοιες βιβλιοθήκες είναι η SQL Database που

χειρίζεται την τοπική βάση δεδομένων της συσκευής, 2D and 3D Graphics που χειρίζεται τα

γραφικά και άλλες. Αξίζει να σημειωθεί ότι αυτές οι βιβλιοθήκες δε χρησιμοποιούνται ποτέ

ως ανεξάρτητες εφαρμογές αλλά υφίστανται μόνο για να καλούνται από υψηλότερου

επιπέδου προγράμματα. Στις τελευταίες εκδόσεις το Android ο δίνεται στον

προγραμματιστή η δυνατότητα να γράψει τις δικές του τοπικές βιβλιοθήκες,

χρησιμοποιώντας το Native Development Kit (NDK).

2.4.3. Επίπεδο χρόνου εκτέλεσης

Στο ίδιο επίπεδο με τις τοπικές βιβλιοθήκες, ακριβώς πάνω από τον πυρήνα Linux

βρίσκεται και το επίπεδο χρόνου εκτέλεσης (Android Runtime). Αυτό υλοποιείται μέσω του

Dalvik Virtual Machine (VM). Το Dalvik VM είναι στην ουσία μία υλοποίηση της γλώσσας

προγραμματισμού Java από την Google, η οποία είναι βελτιστοποιημένη για να

χρησιμοποιείται σε φορητές συσκευές. Για την καλύτερη χρήση της περιορισμένης

ενέργειας και μνήμης των κινητών τηλεφώνων, το Dalvik VM χρησιμοποιεί διαφορετικού

τύπου εκτελέσιμα αρχεία και βιβλιοθήκες από τις τυποποιημένες εκδόσεις της Java.

2.4.4. Πλαίσιο εφαρμογών (Application Framework)

Πάνω από τις τοπικές βιβλιοθήκες και το επίπεδο χρόνου εκτέλεσης βρίσκεται το

application framework. Το επίπεδο αυτό αποτελείται από όλα τα υψηλού επιπέδου

στοιχεία τα οποία χρησιμοποιεί ο προγραμματιστής για να αναπτύξει τις δικές του

εφαρμογές. Το πλαίσιο αυτό είναι προεγκατεστημένο στη συσκευή, αλλά μπορεί να

Page 26: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 26

επεκταθεί από τον προγραμματιστή με περισσότερα στοιχεία εάν αυτό είναι αναγκαίο. Τα

πιο σημαντικά τμήματα του πλαισίου είναι τα παρακάτω:

Activity Manager: Χειρίζεται το χρόνο ζωής των εφαρμογών. Με το χρόνο ζωής μίας

Android εφαρμογής θα ασχοληθούμε στην επόμενη παράγραφο.

Content Providers: Ενσωματώνουν πληροφορίες οι οποίες πρέπει να μοιραστούν

μεταξύ διαφορετικών εφαρμογών. Για παράδειγμα μία εφαρμογή Android μπορεί

να χρησιμοποιεί τις επαφές του χρήστη οι οποίες είναι αποθηκευμένες στη

συσκευή.

Resource Manager: Resource (πόρος) είναι ότι χρησιμοποιεί η εφαρμογή πέρα από

τον ίδιο τον κώδικα. Για παράδειγμα μία εφαρμογή μπορεί να χρησιμοποιεί μια

συγκεκριμένη εικόνα ως φόντο.

Location Manager: Μέσω του Gps είναι δυνατό για μία Android συσκευή να

εντοπίσει τη γεωγραφική της θέση.

Notification Manager: Γεγονότα όπως μία εισερχόμενη κλήση, μπορούν να

παρουσιαστούν με έναν “διακριτικό” τρόπο στον χρήστη.

2.4.5. Εφαρμογές και widgets

Το ανώτερο επίπεδο του Android SDK αποτελείται από τις εφαρμογές που

χρησιμοποιεί ο τελικός χρήστης. Οι χρήστες των κινητών Android βλέπουν μόνο αυτές τις

εφαρμογές, χωρίς να ενδιαφέρονται για τις διεργασίες που γίνονται στο φόντο. Οι

εφαρμογές είναι προγράμματα που όταν εκτελούνται καταλαμβάνουν ολόκληρη την οθόνη

και αλληλεπιδρούν με τον χρήστη. Αντίθετα τα widgets μπορεί να είναι ορθογώνια που

καταλαμβάνουν μόνο ένα μικρό μέρος της οθόνης.

Σε κάθε κινητό Android υπάρχουν εγκατεστημένες από τον κατασκευαστή κάποιες

από τις πιο συνήθεις εφαρμογές. Τέτοιες για παράδειγμα είναι:

Phone dialer

Email

Contacts

Web browser

Android Market

Page 27: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 27

Η τελευταία είναι πολύ σημαντική διότι δίνει στον χρήστη τη δυνατότητα να κατεβάσει στη

συσκευή του και άλλες εφαρμογές. Οι εφαρμογές του Android Market μπορεί είτε να

διανέμονται δωρεάν, είτε να απαιτείται ένα ποσό (συνήθως μικρό) για το κατέβασμά του. Η

οποιαδήποτε εταιρία ή προγραμματιστής έχει τη δυνατότητα να ανεβάσει πληρώνοντας

απλά ένα μικρό αντίτιμο την εφαρμογή του στο Android Market, δίνοντας την ευκαιρία σε

εκατομμύρια χρήστες ανά τον κόσμο να την κατεβάσουν.

2.5. Χρόνος ζωής δραστηριότητας (Activity Lifecycle)

Οι εφαρμογές Android λειτουργούν υλοποιώντας διαφορετικές δραστηριότητες

(activities). Αυτό είναι πολύ σημαντικό, καθώς αποτελεί τη μέθοδο που χρησιμοποιεί το

σύστημα ώστε να χειριστεί κατάλληλα την περιορισμένη μπαταρία ενός κινητού

τηλεφώνου. Όταν μία δραστηριότητα ξεκινήσει να εκτελείται τοποθετείται στην κορυφή

μίας λίστας και η προηγούμενη δραστηριότητα παραμένει στην ίδια λίστα κάτω από την

τρέχουσα και δε θα ξαναέρθει στο προσκήνιο μέχρι να υπάρξει έξοδος από την καινούρια.

Στην ουσία μία δραστηριότητα μπορεί να βρίσκεται σε τέσσερεις διαφορετικές

καταστάσεις.

i. Αν η δραστηριότητα είναι στην κορυφή της στοίβας με αποτέλεσμα να είναι ορατή

στην οθόνη, λέμε ότι είναι ενεργεί ή ότι τρέχει.

ii. Αν μια δραστηριότητα παραμείνει ορατή, αλλά χάσει την εστίασή της (αυτό μπορεί

να συμβεί όταν μία άλλη δραστηριότητα που δεν καλύπτει ολόκληρη την οθόνη ή

είναι διάφανη έρθει στο προσκήνιο), τότε λέμε ότι η δραστηριότητα είναι σε

παύση (paused). Όταν μία δραστηριότητα είναι σε παύση είναι πλήρως “ζωντανή”

(διατηρεί την κατάσταση και τις πληροφορίες της και παραμένει ορατή), αλλά

μπορεί να καταστραφεί από το σύστημα σε περίπτωση που υπάρχει ακραία

έλλειψη ελεύθερης μνήμης.

iii. Όταν μία δραστηριότητα είναι εντελώς κρυμμένη από μία άλλη τότε λέμε ότι είναι

σταματημένη (stopped). Μία σταματημένη δραστηριότητα διατηρεί την κατάσταση

και τις πληροφορίες της, αλλά δεν είναι πλέον ορατή στην οθόνη και ενδέχεται να

καταστραφεί από το σύστημα αν η μνήμη που απασχολεί χρειαστεί αλλού.

iv. Αν μία δραστηριότητα είναι σε παύση ή σταματημένη, τότε μπορεί να

αποδεσμευτεί η μνήμη της. Όταν τότε παρουσιαστεί ξανά στον χρήστη πρέπει να

επανεκκινηθεί και να επαναφερθεί στην προηγούμενή της κατάσταση.

Page 28: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 28

Το σχήμα 2.6 αποτελεί ένα διάγραμμα ροής που δείχνει τις βασικές καταστάσεις στις

οποίες μπορεί να βρεθεί μία δραστηριότητα.

Σχήμα 2.6: Ο κύκλος ζωής μίας δραστηριότητας (Πηγή: Online Android Documentation -

http://developer.android.com/reference/android/app/Activity.html)

Page 29: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 29

Τα ορθογώνια του σχήματος 2.6 περιέχουν μεθόδους επανάκλησης τις οποίες ο

προγραμματιστής μπορεί να καλέσει για να εκτελέσει διάφορες λειτουργίες όταν η

δραστηριότητα κινείται μεταξύ των διαφόρων καταστάσεων. Παρακάτω θα αναφερθούμε

στις μεθόδους αυτές ξεχωριστά.

onCreate(): Καλείται όταν η δραστηριότητα δημιουργηθεί πρώτη φορά. Εδώ πρέπει

ο προγραμματιστής πρέπει να φροντίσει να κάνει το αρχικό σετάρισμα. Η μέθοδος

παρέχει επίσης μία δέσμη (Bundle) η οποία περιέχει την προηγούμενη κατάσταση

της δραστηριότητας (αν υπήρχε). Πάντα ακολουθείται από την onStart.

onRestart(): Καλείται αφού η δραστηριότητα έχει σταματήσει και μόλις πριν

αρχίσει ξανά. Πάντα ακολουθείται από την onStart.

onStart(): Καλείται όταν η δραστηριότητα γίνει ορατή στον χρήστη. Ακολουθείται

από την onResume αν η δραστηριότητα έρθει στο προσκήνιο ή από την onStop

όταν γίνει κρυμμένη.

onResume(): Καλείται όταν η δραστηριότητα αρχίσει να αλληλεπιδρά με τον

χρήστη. Σε αυτό το σημείο η δραστηριότητα είναι στην κορυφή της activity stack

και έχει εστίαση. Ακολουθείται πάντα από την onPause().

onPause(): Καλείται όταν το σύστημα είναι έτοιμο να συνεχίσει μία προηγούμενη

δραστηριότητα. Εδώ πρέπει να λαμβάνεται μέριμνα ώστε να αποθηκεύονται τα μη

αποθηκευμένα δεδομένα και να αποδεσμεύονται οι διεργασίες όπως animation

που μπορεί να αταναλώνουν πολύ μνήμη και δεν είναι απαραίτητες όταν η

δραστηριότητα είναι αόρατη. Οι κλήσεις αυτής της μεθόδου πρέπει να είναι πολύ

γρήγορες, γιατί αλλιώς θα αργήσει να εμφανιστεί η νέα δραστηριότητα.

Ακολουθείται είτε από την onResume() αν η δραστηριότητα επιστρέψει στο

προσκήνιο ή από την onStop() αν γίνει αόρατη στον χρήστη.

onStop(): Καλείται όταν η δραστηριότητα δεν είναι πλέον ορατή στον χρήστη γιατί

μία άλλη δραστηριότητα την καλύπτει. Ακολουθείται είτε από την onRestart() αν η

δραστηριότητα γίνει ξανά ενεργή ή από την onDestroy αν καταστραφεί.

onDestroy(): Η τελευταία κλήση πριν η δραστηριότητα καταστραφεί. Αυτό μπορεί

να συμβεί είτε γιατί ο προγραμματιστής την κατάστρεψε μέσω κώδικα ή γιατί το

σύστημα την καταστρέφει προσωρινά για να σώσει χώρο.

Page 30: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 30

Για τη σωστή ανάπτυξη των Android εφαρμογών είναι απαραίτητο να γίνει κατανοητός ο

κύκλος ζωής των διεργασιών. Ένας χρήστης μπορεί να διακόψει την τρέχουσα διεργασία

πατώντας το κουμπί back στη συσκευή του. Στην περίπτωση αυτή η διεργασία σταματάει

και έρχεται στο προσκήνιο η επόμενη που είναι αποθηκευμένη στην στοίβα. Βέβαια ο

προγραμματιστής μπορεί να παρακάμψει αυτή τη λειτουργία εάν επιθυμεί. Για παράδειγμα

μπορεί να γίνει υλοποίηση ώστε όταν ο χρήστης πιέσει το back να παρουσιάζεται ένα

μήνυμα που να ρωτάει τον χρήστη αν θέλει όντως να βγει από την τρέχουσα

δραστηριότητα ή να ακυρώσει.

2.6. Android Application Project

Εφόσον το Android SDK έχει εγκατασταθεί δίνεται στον χρήστη η δυνατότητα να

δημιουργήσει με το Eclipse ένα Android Application Project. Με τη δημιουργία του project

δημιουργείται αυτόματα ένα δέντρο αρχείων όπως αυτό του σχήματος 2.7.

Σχήμα 2.7: Ένα Android Application Project

Όπως βλέπουμε υπάρχει μία πληθώρα φακέλων και αρχείων που απαρτίζουν το project. Τα

κυριότερα από αυτά είναι:

Page 31: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 31

src – Περιέχει όλο τον κώδικα Java που δημιουργεί ο προγραμματιστής. Στην ουσία

ο φάκελος αυτός περιέχει όλες τις δραστηριότητες που απαρτίζουν την εφαρμογή

αλλά και άλλες βοηθητικές Jave κλάσεις που ενδέχεται ο χρήστης να αναπτύξει.

gen – Περιέχει αρχεία Java τα οποία δημιουργεί αυτόματα το σύστημα για τις

ανάγκες της αφαρμογής.

Google APIs – περιέχει κάποιες βασικές βιβλιοθήκες που χρησιμοποιεί η εφαρμογή

bin – Περιέχει, εκτός των άλλων, το εκτελέσιμο αρχείο που δημιουργεί η εφαρμογή.

Τα εκτελέσιμα αρχεία του Android έχουν κατάληξη .apk και ανανεώνονται κάθε

φορά που γίνεται compile.

res – Περιέχει όλους τους πόρους (resources) του project. Όπως έχει

προαναφερθεί, πόρος είναι ότι χρησιμοποιεί η εφαρμογή πέρα από τον ίδιο τον

κώδικα. Αυτός ο φάκελος περιέχει διάφορους υποφακέλους:

o drawable-hdpi, drawable-ldpi, drawable-mdpi – Περιέχουν αρχεία που

μπορεί να χρησιμοποιεί η εφαρμογή, όπως εικόνες, ήχος κλπ.

o layout – Περιέχει κυρίως αρχεία τύπου xml στα οποία ορίζεται το

περιεχόμενο της οθόνης σε κάθε δραστηριότητα. Το γεγονός ότι το γραφικό

interface στο Android ορίζεται σε ξεχωριστά αρχεία κάνει περισσότερο

ευέλικτη την ανάπτυξη, καθώς μπορεί να υλοποιηθούν αλλαγές στο

γραφικό περιεχόμενο, χωρίς να χρειάζεται να αλλάξει ο κυρίως κώδικας.

o values – Το κύριο αρχείο που περιέχει είναι το strings.xml στο οποίο

ορίζονται κάποιοι πόροι που θα χρειαστεί να χρησιμοποιήσει η εφαρμογή

(κείμενα, χρώματα κλπ). Επίσης στον φάκελο αυτό μπορεί να

δημιουργηθούν και άλλα αρχεία που να ορίζουν συγκεκριμένα στυλ

γραφικών που υποστηρίζει η εφαρμογή.

AndroidManifest.xml – Το αρχείο αυτό είναι ιδιαίτερα σημαντικό καθώς ορίζει

κάποια βασικά δεδομένα για το project, όπως το ποια έκδοση του Android SDK

χρησιμοποιεί. Επίσης εδώ πρέπει να δηλωθούν όλες οι διαφορετικές

δραστηριότητες που απαρτίζουν το project και κάποια δικαιώματα που μπορεί να

απαιτούνται, όπως η χρήση του internet, η χρήση του Gps κλπ.

Παραπάνω αναλύθηκαν οι βασικές πτυχές του Android προγραμματισμού, το πώς ο

χρήστης μπορεί να δημιουργήσει ένα project με τη χρήση του Eclipse και τι περιέχει το

project αυτό. Η γνώση αυτή είναι απαραίτητη για τη σωστή ανάπτυξη μίας Android

εφαρμογής. Η βιβλιογραφία προσφέρει πληθώρα βιβλίων και άρθρων που δίνουν οδηγίες

Page 32: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 32

για τον προγραμματισμό σε Android. Επίσης η Google έχει δημιουργήσει ένα εξαίσιο

online-documentation όπου παρουσιάζονται οι διαθέσιμες τάξεις και βιβλιοθήκες

(http://developer.android.com/guide/components/index.html). Τέλος υπάρχουν

πολυάριθμα forums στο διαδύκτιο, όπου ο προγραμματιστής μπορεί να βρει πληροφορίες

για συγκεκριμένα θέματα.

Αξίζει να τονισθεί, ότι το Android SDK δεν είναι κάτι στατικό, αλλά συνεχώς

επεκτείνεται με σκοπό την ενσωμάτωση νέων λειτουργιών, αλλά και την αντιμετώπιση

σφαλμάτων.

2.7. Εκτέλεση της Android εφαρμογής

Αφού δημιουργηθεί μία εφαρμογή ή τμήμα αυτής χωρίς σφάλματα, το Eclipse δίνει

τη δυνατότητα άμεσης εκτέλεσής της είτε στον Emulator είτε σε μία πραγματική συσκευή.

Στην πρώτη περίπτωση αρκεί να υπάρχει ένας emulator που να τρέχει εκείνη τη στιγμή στον

υπολογιστή. Στη δεύτερη πρέπει η συσκευή να είναι συνδεδεμένη στον ηλεκτρονικό

υπολογιστή μέσω usb. Στο σχήμα 2.8 παρουσιάζεται το μενού που δίνει στον χρήστη τη

δυνατότητα να επιλέξει μεταξύ διαθέσιμων emulators και συσκευών.

Page 33: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 33

Σχήμα 2.8: Επιλογές εκτέλεσης εφαρμογής

Όπως έχει ήδη αναφερθεί, το εκτελέσιμο αρχείο του application είναι ένα αρχείο

τύπου .apk το οποίο φέρει το όνομα της εφαρμογής και βρίσκεται στον φάκελο bin του

package tree. Το αρχείο αυτό μπορεί να εγκατασταθεί και να εκτελεστεί ξεχωριστά σε μία

συσκευή, χωρίς να απαιτείται η χρήση του Eclipse ή κάποιου άλλου περιβάλλοντος

ανάπτυξης. Αυτό είναι και το αρχείο που θα ανέβει τελικά και στο Android Market ως

τελική εφαρμογή, δίνοντας δυνατότητα σε χρήστες από όλο τον κόσμο να έχουν πρόσβαση

σε αυτήν.

Page 34: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 34

ΚΕΦΑΛΑΙΟ 3: ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PHP

3. Εισαγωγή στην γλώσσα προγραμματισμού PHP

Η PHP είναι μία γενικού σκοπού server-side γλώσσα προγραμματισμού που

βασίζεται στη δημιουργία scripts και σχεδιάστηκε για τη χρήση της σε διαδυκτιακό

προγραμματισμό και την παραγωγή δυναμικών ιστοσελίδων. Στα πλαίσια της εργασίας η τα

PHP scripts χρησιμοποιήθηκαν ως οι ενδιάμεσοι κρίκοι μεταξύ της Android εφαρμογής και

της βάσης δεδομένων του Open eClass. Για το λόγο αυτό κρίνεται σκόπιμο να γίνει μία

σύντομη περιγραφή της γλώσσας ώστε να είναι κατανοητή η χρήση της στην αναπτυχθείσα

εφαρμογή. Στο παρόν κεφάλαιο δε δίνεται βάρος στην ανάπτυξη ιστοσελίδων μέσω PHP,

καθώς αυτή η λειτουργία δεν χρησιμοποιήθηκε στα πλαίσια της εργασίας. Αντίθετα γίνεται

εστίαση στο πως χρησιμοποιείται η γλώσσα για τη δημιουργία απλών web-services και τον

χειρισμό βάσεων δεδομένων σε συνδυασμό με την MySql.

3.1. Γενικές πληροφορίες

Η PHP αρχικά αναπτύχθηκε από τον Rasmus Lerdorf το 1995. Ο Lerdorf την

ανέπτυξε με σκοπό να ικανοποιήσει την ανάγκη ύπαρξης ενός εύχρηστου τρόπου

επεξεργασίας δεδομένων κατά τη δημιουργία ιστοσελίδων για τον παγκόσμιο ιστό. Αρχικά

PHP σήμαινε Personal Home Page και κυκλοφόρησε ως ένα project ανοικτού λογισμικού.

Με την πάροδο των χρόνων η PHP υπέστη επανεπεξεργασία με σκοπό την ικανοποίηση των

αναγκών των χρηστών και το 1997 μετονομάστηκε στο σημερινό PHP: Hypertext Processor.

H PHP χρησιμοποιείται γενικά ως server-side scripting γλώσσα προγραμματισμού, η

οποία παρέχει τη δυνατότητα υποστήριξης interfaces όπως η MySql για τον χειρισμό

βάσεων δεδομένων. Με τον τρόπο αυτό μπορεί να χρησιμοποιηθεί τόσο για απλές

προσωπικές ιστοσελίδες, όσο και για περίπλοκες εμπορικές εφαρμογές. Μεγάλες και

ιδιαίτερα δημοφιλείς ιστοσελίδες, όπως το Facebook ή η Wikipedia έχουν αναπτυχθεί με τη

συμβολή της PHP.

Επειδή η PHP είναι μίαν server-side γλώσσα προγραμματισμού, απαιτεί την ύπαρξη

ενός server στον ηλεκτρονικό υπολογιστή για να λειτουργήσει. Στα πλαίσια της εργασίας

χρησιμοποιήθηκε το πακέτο XAMPP το οποίο εκτός από την ίδια την PHP και την MySql

Page 35: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 35

περιέχει και τον server apache. Με αυτόν τον τρόπο το XAMPP αποτελεί έναν εύκολο τρόπο

εγκατάστασης όλων των εργαλείων που απαιτούνται ώστε η PHP να είναι λειτουργική. Μία

σύντομη περιγραφή του XAMPP έγινε στο κεφάλαιο 1.

Το Eclipse IDE παρέχει τη δυνατότητα ενσωμάτωσης της PHP. Πάντως PHP scripts

μπορούν να γραφτούν και σε έναν απλό text editor όπως το notepad.

3.2. Συγγραφή και εκτέλεση ενός απλού προγράμματος σε PHP

Εφόσον το XAMPP είναι εγκατεστημένο η χρήση της PHP γίνεται ιδιαίτερα εύκολη.

Το XAMPP δημιουργεί έναν τοπικό Apache web server στο localhost του υπολογιστή. Έτσι

πληκτρολογώντας απλά http://localhost/xampp/ σε οποιονδήποτε web browser ο χρήστης

οδηγείται στην αρχική σελίδα του XAMPP (σχήμα 3.1).

Σχήμα 3.1: Η αρχική σελίδα του XAMPP

Page 36: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 36

Από τη σελίδα αυτή ο χρήστης μπορεί να παραμετροποιήσει τον server, να βρει

online documentation και να επιθεωρήσει τις βάσεις δεδομένων μέσω του εργαλείου

phpMyAdmin.

Για τη συγγραφή ενός προγράμματος σε PHP δεν απαιτείται καμιά ιδιαίτερη

προεργασία. Ο προγραμματιστής μπορεί να γράψει το παρακάτω πρόγραμμα σε

οποιονδήποτε text editor (πχ notepad).

Για να μπορεί να εκτελεστεί το παραπάνω πολύ απλό PHP πρόγραμμα απαιτείται να

πληρούνται μόνο δύο προϋποθέσεις:

Να αποθηκευτεί ως αρχείο PHP, δηλαδή με την κατάληξη .php. Στη συγκεκριμένη

περίπτωση αποθηκεύτηκε ως simple.txt

Να αποθηκευτεί στον υποφάκελο htdocs του κυρίως φακέλου xampp. O φάκελος

xampp δημιουργείται κατά την εγκατάσταση του XAMPP σε κάποια τοποθεσία που

θα επιλέξει ο χρήστης

Εφόσον ικανοποιούνται οι παραπάνω κανόνες ο προγραμματιστής μπορεί απλά να ανοίξει

τον web browser της επιλογής (πχ internet explorer ή Google chrome) του και να

πληκτρολογήσει τη διεύθυνση http://localhost/simple.php. To αποτέλεσμα παρουσιάζεται

στο σχήμα 3.2

Σχήμα 3.2: Εκτέλεση του simple.php

<?php

Echo "This is a simple PHP script!";

?>

Page 37: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 37

Ο web-browser αναγνωρίζει από την κατάληξη .php ότι πρέπει να εκτελέσει κώδικα

php, ενώ από τη διεύθυνση url αναγνωρίζει ποιο αρχείο πρέπει να φορτώσει και σε ποιον

φάκελο θα το βρει.

Το παραπάνω PHP script είναι εξαιρετικά απλό. Αρχική η ετικέτα “<?php” ορίζει ότι

ακολουθεί κώδικας γραμμένος σε PHP. Η εντολή “Echo” απλώς εκτυπώνει την φράση που

ακολουθεί και το κλείσιμο της ετικέτας με τους χαρακτήρες “?>” ορίζει ότι το PHP

πρόγραμμα τελείωσε.

Όπως βλέπουμε με την προϋπόθεση ότι το XAMPP είναι εγκατεστημένο η

συγγραφή και εκτέλεση ενός PHP script είναι εξαιρετικά απλή και δεν απαιτεί την

εγκατάσταση επιπλέον προγραμμάτων. Παρόλα αυτά συνίσταται η χρήση της PHP με έναν

editor περισσότερο εξελιγμένο και εξειδικευμένο ώστε να είναι ευκολότερη η

αποσφαλμάτωση και η ανάπτυξη πολύπλοκων προγραμμάτων. Το Eclipse IDE σε

συνδυασμό με την εγκατάσταση των κατάλληλων plug-ins, δίνει τη δυνατότητα συγγραφής

προγραμμάτων PHP σε ένα ιδιαίτερα εύχρηστο περιβάλλον.

3.3. Η χρήση του συστήματος MySql

Όπως περιγράφηκε στο κεφάλαιο 1, το Open eClass αποθηκεύει όλα τα απαραίτητα

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

λειτουργία που διενεργείται στην πλατφόρμα αλληλεπιδρά με τις βάσεις αυτές. Οπότε για

την ανάπτυξη μία mobile εφαρμογής που να υλοποιεί λειτουργίες του eClass, είναι

απαραίτητη η δυνατότητα χειρισμού των συγκεκριμένων βάσεων δεδομένων.

Ο χειρισμός των βάσεων δεδομένων από την PHP μπορεί να γίνει μέσω του

συστήματος διαχείρισης βάσεων δεδομένων MySQL. Το MySQL είναι ένα ανοιχτού

λογισμικού σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων. Βασίζεται στην γλώσσα

προγραμματισμού SQL, η οποία χρησιμοποιείται για την εισαγωγή, διαγραφή και

μετατροπή δεδομένων στη βάση. Η γλώσσα SQL χρησιμοποιεί μερικές απλές εντολές οι

οποίες επιτρέπουν την αλληλεπίδραση με τη βάση. Οι πιο σημαντικές από αυτές θα

εξεταστούν παρακάτω.

Page 38: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 38

3.3.1. Η εντολή CREATE

Η εντολή CREATE χρησιμοποιείται για τη δημιουργία ενός πίνακα στη βάση

δεδομένων. Για παράδειγμα η παρακάτω εντολή δημιουργεί έναν πίνακα με τρεις στήλες:

"CREATE TABLE myTable(

id INT NOT NULL AUTO_INCREMENT,

PRIMARY KEY(id),

name VARCHAR(30),

age INT)"

Ο πίνακας myTable αποτελείται από τις στήλες “id”, “name” και “age”. Μαζί με το όνομα

κάθε στήλης δηλώνεται και ο τύπος των δεδομένων που περιέχει. Η στήλη “id” αποτελεί

πρωτεύον κλειδί, που σημαίνει ότι δεν γίνεται δύο γραμμές του πίνακα να έχουν το ίδιο

“id”. Γενικά θεωρείται απαραίτητο στη θεωρία των βάσεων δεδομένων να έχει κάθε

πίνακας ένα πρωτεύον κλειδί, ώστε να είναι δυνατός ο διαχωρισμός των δεδομένων.

Η εντολή CREATE δε χρησιμοποιήθηκε στην εφαρμογή, καθώς η βάση που

δημιουργεί αυτόματα το Open eClass περιέχει όλους τους απαραίτητους πίνακες.

3.3.2. Η εντολή DROP

Η εντολή DROP χρησιμοποιείται για να σβήσει έναν πίνακα από τη βάση. Για

παράδειγμα ο πίνακας myTable που δημιουργήθηκε με τον κώδικα του προηγουμένου

παραδείγματος μπορεί να σβηστεί με την παρακάτω εντολή:

DROP TABLE myTable

Η παραπάνω εντολή θα σβήσει τον πίνακα και όλα τα περιεχόμενά του. Η εντολή DROP δε

χρησιμοποιήθηκε στην αναπτυχθείσα εφαρμογή καθώς δεν ήταν αναγκαίο το σβήσιμο

κάποιου από τους πίνακες που δημιουργεί το Open eClass.

Page 39: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 39

3.3.3. Η εντολή SELECT

Η εντολή SELECT χρησιμοποιείται για την επιλογή δεδομένων από τη βάση. Για

παράδειγμα η παρακάτω εντολή:

SELECT * FROM myTable

επιστρέφει όλες τις γραμμές του πίνακα. Επίσης είναι δυνατό να επιλεχθούν συγκεκριμένες

στήλες και υπό συγκεκριμένες συνθήκες με τη χρήση της εντολής WHERE. Για παράδειγμα

η:

SELECT name FROM myTable WHERE age>18

θα επιλέξει μόνο το περιεχόμενο της στήλης “name” και μόνο για τις γραμμές όπου η ηλικία

είναι μεγαλύτερη του 18. Η εντολή SELECT χρησιμοποιήθηκε σε όλες τις περιπτώσεις όπου

χρειαζόταν να διαβαστούν τα στοιχεία ενός πίνακα. Για παράδειγμα στο Login απαιτείται να

ελεγχθεί αν το ζεύγος username και κωδικού που δόθηκε υπάρχει στον πίνακα “user”

3.3.4. Η εντολή INSERT

Η εντολή INSERT χρησιμοποιείται για την εισαγωγή νέων δεδομένων σε έναν

πίνακα της βάσης. Για παράδειγμα η εντολή:

INSERT INTO myTable

(name, age) VALUES(‘Andreas’, ‘30’ )

εισάγει μία νέα γραμμή στον πίνακα όπου οι στήλες “name” και “age” παίρνουν τις τιμές

“Andreas” και 30 αντίστοιχα. Να σημειωθεί ότι δεν είναι δυνατό να εισαχθεί μέσω της

Page 40: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 40

εντολής INSERT τιμή στην στήλη “id”, καθώς αυτή αποτελεί πρωτεύον κλειδί και

συμπληρώνεται αυτόματα από το σύστημα.

Η εντολή INSERT χρησιμοποιήθηκε σε όλες της περιπτώσεις που απαιτούνταν η

εγγραφή δεδομένων στη βάση, όπως για παράδειγμα στη δημιουργία ενός νέου χρήστη.

3.3.5. Η εντολή DELETE

Η εντολή DELETE χρησιμοποιείται για τη διαγραφή δεδομένων από έναν πίνακα. Για

παράδειγμα η εντολή:

DELETE FROM myTable WHERE name='Andreas'

θα σβήσει το στοιχείο που εισήχθη στο προηγούμενο παράδειγμα. Η εντολή DELETE

χρησιμοποιήθηκε σε όλες τις περιπτώσεις όπου απαιτήθηκε διαγραφή στοιχείων, όπως για

παράδειγμα στην απεγγραφή του χρήστη από κάποιο μάθημα.

3.3.6. Η εντολή UPDATE

H εντολή UPDATE χρησιμοποιείται για την αλλαγή της τιμής ενός στοιχείου του

πίνακα. Για παραδειγμα η εντολή:

UPDATE example SET age='18' WHERE id='1'

Θα θέση την τιμή της στήλης “age” στην γραμμή όπου το “id” είναι ίσο με ένα, ίση με 18. Η

παλιά τιμή που υπήρχε στο συγκεκριμένο σημείο θα σβηστεί. Η εντολή UPDATE

χρησιμοποιήθηκε σε περιπτώσεις που απαιτούνταν αλλαγές στα στοιχεία της βάσης.

3.4. Η χρήση της MySql από τα PHP scripts

Page 41: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 41

Παραπάνω είδαμε μερικές από τις βασικές SQL εντολές που χρησιμοποιεί το

σύστημα διαχείρισης MySql ώστε να αλληλεπιδράσει με μία βάση δεδομένων. Η PHP

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

παραπάνω εντολές σε ένα script. Οι πιο σημαντικές παρουσιάζονται παρακάτω.

mysql_connect – Ανοίγει μία MySql σύνδεση. Δέχεται ως παραμέτρους το url του

server (“localhost” αν πρόκειται για τοπικό server), το username του διαχειριστή της

βάσης δεδομένων στο εργαλείο phpmyadmin του XAMPP και το password του

διαχειριστή.

mysql_select_db – Επιλέγει τη βάση δεδομένων την οποία θέλουμε να

επεξεργαστούμε. Δέχεται ως όρισμα το όνομα της βάσεως δεδομένων.

mysql_query – Εκτελεί ένα ερώτημα SQL. Δέχεται ως παράμετρο το ερώτημα SQL,

που είναι μία από τις εντολές που εξεταστήκαν στην προηγούμενη παράγραφο.

mysql_fetch_array – Επιστρέφει τις γραμμές που επιστράφηκαν από την εκτέλεση

μίας εντολής INSERT. Δέχεται ως όρισμα το αποτέλεσμα της mysql_query.

mysql_num_rows - Επιστρέφει των αριθμό των γραμμών που επιστράφηκαν από

την εκτέλεση μίας εντολής INSERT. Δέχεται ως όρισμα το αποτέλεσμα της

mysql_query.

mysql_free_result – Αποδεσμεύει τη μνήμη του αποτελέσματος της εκτέλεσης της

SQL εντολής. Δέχεται ως όρισμα το αποτέλεσμα της mysql_query.

mysql_close – Κλείνει την MySql σύνδεση. Δέχεται ως όρισμα το αποτέλεσμα της

mysql_connect.

3.5. Κλήση ενός PHP script από έναν client

Με βάση τα παραπάνω στα πλαίσια της υπό ανάπτυξη εφαρμογής αναπτύχθηκαν

PHP scripts τα οποία είχαν ως λειτουργία την αλληλεπίδραση με τις βάσεις δεδομένων του

eClass, με την παροχή ή την επεξεργασία στοιχείων. Αυτά τα script τοποθετούνται στον

server και μπορούν να κληθούν από όποιον client τα χρειαστεί. Στην περίπτωσή μας ο client

ήταν η Android εφαρμογή η οποία υλοποιεί τις λειτουργίες του eClass.

Η κλήση ενός script γίνεται απευθείας μέσω του url. Όπως αναφέραμε στην

παράγραφο 3.2 η κλήση του simple.php μπορεί να γίνει με την πληκτρολόγηση στον

browser της διεύθυνσης url http://localhost/simple.php. H κλήση μέσω του Android

Page 42: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 42

προγράμματος είναι παρόμοια, αλλά διαφέρει στο ότι το Android SDK δεν μπορεί να

χρησιμοποιήσει τη λέξη “localhost”, η οποία πρέπει να αντικατασταθεί από την IP

διεύθυνση του Android VM, που είναι 10.0.0.2. Οπότε μέσα από τον κώδικα Android η

κλήση θα είναι της μορφής http://10.0.2.2/simple.php. Προφανώς αν ο server ήταν κάπου

ανεβασμένος στο interntet θα απαιτούνταν η url διεύθυνσή του.

3.6. Πέρασμα παραμέτρων σε ένα PHP script μέσω του url

Σε πολλές περιπτώσεις είναι επιθυμητό να κληθεί ένα script δίνοντας κατά την

κλήση συγκεκριμένες τιμές σε παραμέτρους. Ως ευέλικτη γλώσσα η PHP παρέχει πολλές

μεθόδους για το πέρασμα τιμών σε ένα PHP script. Μια από τις πιο συνηθισμένες και αυτή

που χρησιμοποιήθηκε στην αναπτυχθείσα εφαρμογή, είναι ο καθορισμός των τιμών μέσω

του url.

Έστω ότι για παράδειγμα έχουμε ένα το αρχείο login.php το οποίο δέχεται ένα

username και ένα password και τα χειρίζεται μετά ώστε να διαπιστώσει αν υπάρχουν στη

βάση δεδομένων (με μία εντολή SELECT). Ας θεωρήσουμε για χάριν απλότητας ότι ο

κωδικός δεν είναι κρυπτογραφημένος. Η διεύθυνση url γράφεται κανονικά με το όνομα του

αρχείου ακολουθούμενο από την κατάληξη .php. Έπειτα προστίθεται το “?” το οποίο

γνωστοποιεί στον server ότι ακολουθούν παράμετροι. Σε κάθε παράμετρο γράφεται το

όνομά της, το οποίο πρέπει να είναι το ίδιο όπως η μεταβλητή είναι δηλωμένη στο script το

σύμβολο της ισότητας “=” και η τιμή που θέλουμε να δώσουμε. Οι διαφορετικές

μεταβλητές χωρίζονται με το σύμβολο “&”.

Έτσι αν στο παράδειγμά μας το php script περιμένει δύο τιμές για τις μεταβλητές

“username” και “password” η παρακάτω διεύθυνση θα το εκτελέσει δίνοντας τις τιμές

“Andreas” και “abc123” αντίστοιχα.

http://localhost/login.php?username=Andreas&password=abc123

Για να γίνει κλήση στον localhost από την Android εφαρμογή, απαιτείται απλά να

αντικατασταθεί η λέξη “localhost” από το “10.0.0.2”. Η PHP παρέχει τη βιβλιοθήκη GET με

την οποία μπορούν να διαβαστούν οι τιμές που ορίστηκαν και να αποδοθούν στις

μεταβλητές του script. Με αυτή τη μέθοδο δίνεται η δυνατότητα ορισμού πολλών

μεταβλητών οποιουδήποτε τύπου.

Page 43: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 43

3.7. Ανταλλαγή δεδομένων με κωδικοποίηση JSON

Στην προηγούμενη παράγραφο εξετάσαμε το πώς δίνονται τιμές σε ένα PHP script

κατά την κλήση του. Όμως είναι πολύ σημαντικό και το να μπορεί ο client να διαβάσει την

απάντηση του server. Γενικά σε μία server-client επικοινωνία χρησιμοποιούνται δύο

μέθοδοι κωδικοποίησης των δεδομένων, η XML και η JSON. Και οι δύο θεωρούνται

αποτελεσματικές και βρίσκουν χρήση σε πληθώρα εφαρμογών. Όμως στις εφαρμογές

κινητής τηλεφωνίες, η κωδικοποίηση JSON προτιμάται καθώς έχει μεγαλύτερη

αποδοτικότητα στην οικονομία της μνήμης, χαρακτηριστικό που είναι σημαντικό για τις

κινητές συσκευές όπου υπάρχουν περιορισμοί.

Η λέξη JSON προέρχεται από τα αρχικά του JavaScript Object Notation και ένα

ανοιχτό text-based πρότυπο, το οποίο σχεδιάστηκε για ανταλλαγή δεδομένων με τρόπο

που τόσο ο άνθρωπος όσο και οι υπολογιστές να μπορούν να αναγνώσουν. Η

κωδικοποίηση JSON ορίστικε αρχικά από τον Douglas Crockford και περιγράφεται στο RFC

4627. Προήλθε από τη γλώσσα προγραμματισμού JavaScript με σκοπό την αναπαράσταση

απλών δομών δεδομένων και συνειρμικών πινάκων. Παρά την καταγωγή της από την

JavaScript, είναι πλέον ανεξάρτητη της γλώσσας προγραμματισμού και πάρα πολλές

γλώσσες παρέχουν μεθόδους για τον χειρισμό JSON δεδομένων.

Το JSON δημιουργεί αντικείμενα (JSON objects) που περιέχουν πληροφορίες. Σε

κάθε δεδομένο αντιστοιχεί μία ετικέτα και η ίδια η τιμή. Το όνομα της ετικέτας βρίσκεται

μέσα σε εισαγωγικά και χωρίζεται από την τιμή με το σύμβολο “:”. Τα διαφορετικά

δεδομένα χωρίζονται με κόμμα, ενώ όλο το αντικείμενο περικλείεται από αγκύλες (“{}”). Για

παράδειγμα έστω ότι έχουμε ένα JSON αντικείμενο που περιέχει ένα όνομα και μία ηλικία.

Αυτό μπορεί να είναι της μορφής:

{“name” : “Andreas” , “age” : 30}

Βλέπουμε ότι τα δεδομένα μπορεί να είναι οποιουδήποτε τύπου. Εκτός από απλά

αντικείμενα το JSON μπορεί α χειρίζεται και πίνακες αντικειμένων (JSON Arrays). Ένας

πίνακας αντικειμένων JSON μπορεί να περιέχει πολλά αντικείμενα όπως αυτό παραπάνω τα

οποία χωρίζονται με κόμμα. Όλος ο πίνακας περικλείεται από αγκύλες (“[]”). Για

Page 44: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 44

παράδειγμα παρακάτω έχουμε έναν πίνακα από τρία αντικείμενα του προηγουμένου

παραδείγματος.

[{“name” : “Andreas” , “age” : 30}, {“name” : “John” , “age” : 28}, {“name” : “Maria” , “age” :

29}]

H PHP παρέχει τη βιβλιοθήκη json_encode, η οποία δέχεται ως όρισμα έναν πίνακα και τον

κωδικοποιεί ως αντικείμενο JSON. Το Android SDK παρέχει μέσω των βιβλιοθηκών

org.json.JSONObject και org.json.JSONArray πολλές μεθόδους για τον χειρισμό JSON

αντικειμένων και πινάκων αντίστοιχα.

Η κωδικοποίηση JSON χρησιμοποιήθηκε στην αναπτυχθείσα εφαρμογή,

οποτεδήποτε απαιτούνταν λήψη στοιχείων από τη βάση δεδομένων του eClass. Ένα PHP

script ανακτά τα δεδομένα από τη βάση και τα επιστρέφει σε μορφή JSON. Επίσης

χρησιμοποιήθηκε για την ανταλλαγή απλών μηνυμάτων που συνηθίζεται να

χρησιμοποιούνται στο networking (για παράδειγμα “success” ή “failure”).

Page 45: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 45

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

4. Σχεδίαση και υλοποίηση της εφαρμογής

4.1. Αρχιτεκτονική συστήματος

Κάθε πληροφοριακό σύστημα χαρακτηρίζεται από την ροή δεδομένων που

διεξάγεται σε αυτό. Στην παρούσα εφαρμογή υπάρχει ροή δεδομένων μεταξύ τριών

βασικών οντοτήτων:

i. Βάσεις δεδομένων Open eClass

ii. PHP scripts

iii. Android application

Όπως εξηγήθηκε δεν είναι δυνατόν μία εξωτερική εφαρμογή να έχει άμεση πρόσβαση στη

βάση δεδομένων του server. Για τον λόγο αυτό χρησιμοποιούνται ως ενδιάμεσοι τα PHP

scripts παρέχοντας πληροφορίες από τη βάση ή γράφοντας σε αυτήν. Η απλή αυτή

αρχιτεκτονική παρουσιάζεται σχηματικά στο σχήμα 4.2.

Η Android εφαρμογή ως client του συστήματος εκκινεί κάθε φορά τη διαδικασία

κάνοντας κλήση σε κάποιο PHP script. Η κλήση μπορεί να περιέχει και τον ορισμό κάποιον

παραμέτρων εάν αυτό είναι απαραίτητο. Το PHP script εκτελείται και αλληλεπιδρά με τη

βάση δεδομένων κάνοντας χρήση του συστήματος διαχείρισης MySql. Οι πληροφορίες που

ανακτώνται από τη βάση επιστρέφονται στην συσκευή η οποία μπορεί να τις

χρησιμοποιήσει για την υλοποίηση των διαφόρων δραστηριοτήτων.

Αξίζει να σημειωθεί ότι είναι πολύ σημαντικό το γεγονός ότι η Android εφαρμογή

αλληλεπιδρά (έμμεσα) με την ίδια τη βάση που αλληλεπιδρά το eClass όπως παρέχεται από

την ομάδα GUNet. Προφανώς αν ο χρήστης εκτελέσει κάποια αλλαγή μέσω της κινητής

εφαρμογής (πχ εγγραφεί σε ένα μάθημα), αυτή η αλλαγή θα υφίσταται και όταν εισέλθει

στο σύστημα μέσω του ηλεκτρονικού του υπολογιστή και κάποιου browser.

Page 46: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 46

Σχήμα 4.1: Αρχιτεκτονική του συστήματος

4.2. Βασικές αρχές

Στην ανάπτυξη της εφαρμογής χρησιμοποιήθηκαν κάποιες βασικές αρχές πολλές

από τις οποίες είναι συνήθεις στην ανάπτυξη εφαρμογών φορητών συσκευών με

περιορισμένες δυνατότητες.

Η εφαρμογή έχει εύχρηστο user interface – Στις εφαρμογές έξυπνων συσκευών

λαμβάνεται πάντα μέριμνα ώστε όλο το περιεχόμενο να είναι ορατό σε κάθε

συσκευή. Για παράδειγμα αν μία συσκευή έχει μικρότερη οθόνη από κάποια άλλη

υπάρχει ο κίνδυνος κάποιο κουμπί στο κάτω μέρος της οθόνης να μην είναι

προσβάσιμο. Κάτι τέτοιο μπορεί να αντιμετωπιστεί με τη χρήση της κάθετης

κύλισης (scrolling), έτσι ώστε ακόμη και αν δε χωράει όλο το περιεχόμενο στην

οθόνη, ο χρήστης θα έχει πάντα πρόσβαση σε αυτό. Επίσης, είναι σημαντικό το user

interface να είναι εύκολο στην κατανόησή του δίνοντας τη δυνατότητα στον χρήστη

να κατανοήσει τον τρόπο λειτουργίας και το πώς μπορεί να εκτελέσει μία ενέργεια.

Όλο το networking εκτελείται στο background – Πολλές φορές η αλληλεπίδραση

εφαρμογών με το διαδίκτυο μπορεί να είναι αργή λόγω προβλημάτων στη σύνδεση.

Αυτό δημιουργεί το πρόβλημα ότι ενδέχεται μία εφαρμογή να είναι απασχολημένη

προσπαθώντας να βρει πρόσβαση στο internet και αυτό να την καταστήσει

προσωρινά μη αποκρίσιμη. Για την αντιμετώπιση αυτής της δυσκολίας το Android

SDK προσφέρει την κλάση AsyncTask η οποία δίνει τη δυνατότητα υλοποίησης

διαδικασιών στο background ώστε να μην επηρεάζεται το user interface. Στην

εφαρμογή λήφθηκε μέριμνα ώστε όλες οι κλήσεις σε PHP scripts να γίνονται στο

Page 47: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 47

παρασκήνιο με αποτέλεσμα ο χρήστης να μπορεί να αλληλεπιδράσει με το

interface (για παράδειγμα να πατήσει ένα κουμπί ή το πίσω), ακόμη και όταν η

εφαρμογή προσπαθεί εκείνη την στιγμή να προσεγγίσει το διαδίκτυο.

Όλα τα δεδομένα λαμβάνονται από τον server σε μορφή JSON - Η μορφή JSON

αναλύθηκε στο προηγούμενο κεφάλαιο και χρησιμοποιείται σε εφαρμογές που

εκτελούν server-client επικοινωνία. Ιδιαίτερα σε εφαρμογής κινητών συσκευών η

χρήση του JSON συνίσταται, καθώς μειώνει τις απαιτήσεις σε μνήμη.

Τα δεδομένα αποθηκεύονται πρόσκαιρα στο κινητό και αποδεσμεύονται τη

στιγμή που δεν είναι πλέον απαραίτητα - Αυτό γίνεται για να μην επιβαρύνεται η

μνήμη της συσκευής με επιπλέον δεδομένα. Έχει όμως το αρνητικό ότι δεν μπορεί

να υπάρξει χρήση της εφαρμογής σε περίπτωση μη σύνδεσης στο internet.

Η εφαρμογή είναι χωρισμένη σε δραστηριότητες – Στον κεφάλαιο 2 αναλύθηκε ο

τρόπος που οι Android εφαρμογές χωρίζονται σε δραστηριότητες. Στην εφαρμογή

του mobile eClass όλες οι διαφορετικές οθόνες στις οποίες μπορεί να περιηγηθεί ο

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

κάποιας διεπαφής. Ο χρήστης μπορεί να κλείσει την τρέχουσα δραστηριότητα

πιέζοντας το πλήκτρο back της συσκευής, ενεργοποιώντας ξανά την προηγούμενη

δραστηριότητα.

4.3. Δραστηριότητες της Android εφαρμογής

Στα σχήματα 4.2 και 4.3 παρουσιάζεται το διάγραμμα ροής των δραστηριοτήτων

(activities) της εφαρμογής (το διάγραμμα χωρίστηκε σε δύο σχήματα για λόγους χώρου). H

εφαρμογή ξεκινάει όταν ο χρήστης πιέσει στην Android συσκευή το εικονίδιό της.

Παρακάτω γίνεται μία σύντομη περιγραφή των διαφορετικών οθονών στις οποίες μπορεί

να περιηγηθεί ο χρήστης, ενώ στα διαγράμματα φαίνεται πώς γίνεται η πρόσβαση σε κάθε

σελίδα.

Page 48: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 48

Σχήμα 4.2: Διάγραμμα ροής της Android εφαρμογής (μέρος 1)

Το Main Page της εφαρμογής δίνει στον χρήστη δύο δυνατότητες, είτε να κάνει

login ή να δημιουργήσει έναν καινούριο λογαριασμό

Page 49: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 49

Η δραστηριότητα Create Account παρουσιάζει μία φόρμα όπου ο χρήστης δίνει τα

απαραίτητα στοιχεία. Σε περίπτωση επιτυχημένης εγγραφής, ο χρήστης οδηγείται

αυτόματα στη δραστηριότητα Login.

Η δραστηριότητα Login παρουσιάζει μία φόρμα όπου ο χρήστης καλείται να

συμπληρώσει το username και το password του. Σε περίπτωση επιτυχούς

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

δραστηριότητα Main Menu.

Στην δραστηριότητα Main Menu, ο χρήστης λαμβάνει ένα μήνυμα που τον

καλωσορίζει στην πλατφόρμα. Οι αρχικές επιλογές που δίνονται είναι τρεις: Να δει

τις ανακοινώσεις των μαθημάτων στα οποία είναι γραμμένος, να βρει διαθέσιμα

μαθήματα και να περιηγηθεί στα μαθήματα στα οποία είναι ήδη συνδεδεμένος.

Στην δραστηριότητα Announcements ο χρήστης μπορεί να δει τις ανακοινώσεις

όλων των μαθημάτων στα οποία είναι γραμμένος. Αυτό κρίθηκε σκόπιμο, καθώς η

επισκόπηση των ανακοινώσεων είναι η πρώτη λειτουργία που θα επιθυμεί κάποιος

να κάνει μέσω της έξυπνης συσκευής του. Πατώντας με το δάχτυλο σε μία

ανακοίνωση ο χρήστης μπορεί να δει το περιεχόμενό της.

Πιέζοντας το κουμπί “Find Lessons” ο εκτελείται η δραστηριότητα Lessons η οποία

παρουσιάζει όλα τα διαθέσιμα μαθήματα. Επιλέγοντας ένα μάθημα ο χρήστης

μπορεί να εγγραφεί σε αυτό ή να απεγγραφεί από αυτό.

Στην δραστηριότητα My Lessons ο χρήστης βλέπει τη λίστα με όλα τα μαθήματα στα

οποία είναι εγγεγραμμένος. Επιλέγοντας κάποιο από αυτά του δίνεται η

δυνατότητα να περιηγηθεί στη “σελίδα” του μαθήματος.

Η δραστηριότητα Lesson Site δεν αναφέρεται σε κάποια ιστοσελίδα στο internet,

αλλά στη σελίδα ενός μαθήματος, έτσι όπως αυτή ορίζεται στην εφαρμογή. Στον

χρήστη παρουσιάζονται πέντε επιλογές: να δει τις ανακοινώσεις, να δει τις

εργασίες, να δει και να κατεβάσει τα διαθέσιμα αρχεία, να δει την ατζέντα του

μαθήματος και να εισέλθει στο φόρουμ. Η ροή της πλοήγησης από αυτή τη

δραστηριότητα και έπειτα παρουσιάζεται στο σχήμα 4.3.

Page 50: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 50

Σχήμα 4.3: Διάγραμμα ροής της Android εφαρμογής (μέρος 2)

H δραστηριότητα Lesson Announcements έχει παρόμοια λειτουργικότητα με την

Announcements που περιγράφηκε παραπάνω, αλλά η διαφορά είναι ότι

παρουσιάζει μόνο τις ανακοινώσεις του συγκεκριμένου μαθήματος.

Η δραστηριότητα Lesson Assignments παρουσιάζει τη λίστα με τις εργασίες του

μαθήματος.

Στην Agenda παρουσιάζονται τα events που υφίστανται στην agenda του

μαθήματος. Επιλέγοντας ένα event, ο χρήστης μπορεί να δει το περιεχόμενό του.

Page 51: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 51

Στην δραστηριότητα Lesson Files ο χρήστης λαμβάνει μία λίστα με τα αρχεία που

είναι ανεβασμένα για το συγκεκριμένο μάθημα. Επιλέγοντας ένα αρχείο μπορεί να

το αποθηκεύσει στην συσκευή του.

Στην δραστηριότητα Lesson Forums παρουσιάζονται οι ομαδικές συζητήσεις του

μαθήματος. Επιλέγοντας μία ο χρήστης μπορεί να δει τα διαφορετικά θέματα.

Στην δραστηριότητα Forum Topics παρουσιάζονται οι θεματικές ενότητες του

συγκεκριμένου φόρουμ. Επιλέγοντας μία ο χρήστης μπορεί να δει τις αναρτήσεις

που έχουν γίνει σε κάθε θέμα.

Στην δραστηριότητα Posts ο χρήστης βλέπει τις αναρτήσεις του φόρουμ.

Επιλέγοντας μία μπορεί να δει το περιεχόμενο και δίνεται η δυνατότητα να

αναρτήσει μία απάντηση αν το επιθυμεί.

Στην δραστηριότητα Enter Reply Text, παρουσιάζεται στον χρήστη ένα πεδίο όπου

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

δίνονται οι επιλογές “done” όπου η απάντηση αναρτάται στο φόρουμ και “cancel”

όπου η όλη διαδικασία ακυρώνεται χωρίς να αναρτηθεί τίποτα.

Στα σχήματα 4.2 και 4.3 αναπαρίσταται με βέλη η ροή της πλοήγησης. Αξίζει να σημειωθεί

ότι σε κάθε βέλος ισχύει και η ροή προς τα πίσω, καθώς η πίεση του πλήκτρου “back” της

συσκευής κλείνει την τρέχουσα δραστηριότητα και η ροή επιστρέφει σε αυτήν η οποία την

κάλεσε. Στην επόμενη παράγραφο θα ασχοληθούμε με κάθε δραστηριότητα

αναλυτικότερα.

4.4. Παράδειγμα υλοποίησης δραστηριότητας

Η αναπτυχθείσα εφαρμογή θα παρουσιαστεί εκτενώς στο επόμενο κεφάλαιο. Στην

παρούσα παράγραφο όμως θα δοθεί ένα παράδειγμα υλοποίησης. Προφανώς η

“διδασκαλία” των γλωσσών προγραμματισμού ξεπερνά τα όρια του παρόντος

συγγράμματος. Σκοπός είναι να μπορέσει ο αναγνώστης να κατανοήσει τις βασικές αρχές

του προγραμματισμού σε Android και PHP και το πώς αυτές χρησιμοποιήθηκαν στο

συγκεκριμένο project. Στην προτεινόμενη βιβλιογραφία υπάρχουν προτάσεις για όποιον

επιθυμεί να ασχοληθεί εκτενώς με το θέμα.

Page 52: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 52

Η δραστηριότητα που θα αναλυθεί είναι η “Login” η οποία χειρίζεται τη σύνδεση

του χρήστη στο σύστημα. Το σενάριο χρήσης είναι απλό: ο χρήστης δίνει σε μία φόρμα το

username και το password του και η εφαρμογή στέλνει τις τιμές αυτές στο checklogin.php,

το οποίο με τη σειρά του ελέγχει αν το συγκεκριμένο ζευγάρι τιμών υπάρχει στη βάση

δεδομένων του eClass. Το PHP script επιστρέφει την απάντηση στην εφαρμογή, η οποία

δρα αναλόγως.

4.4.1. Ορισμός γραφικού περιεχομένου

Το γραφικός περιεχόμενο της δραστηριότητας ορίζεται στο login.xml που τοποθετείται στον

φάκελο res/layout. Ο κώδικας xml του αρχείου παρουσιάζεται παρακάτω:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical"

android:background="@color/white">

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:src="@drawable/logo"/>

<TextView

android:text="Παρακαλώ δώστε το όνομα χρήστη και το

συνθηματικό"

android:textColor="@color/black"

Page 53: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 53

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:layout_gravity="center"

android:layout_marginBottom="5dip"

android:textSize="20sp" />

<TextView

android:text="όνομα χρήστη (Username)"

android:textColor="@color/black"

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:layout_marginTop="10dp"

android:layout_gravity="center"

android:textSize="20sp" />

<EditText

android:id="@+id/username"

android:textColor="@color/black"

android:padding="10dip"

android:layout_width="250dp"

android:layout_gravity="center"

android:layout_marginBottom="10dp"

android:layout_height="50dp"

android:lines="1"

android:inputType="textUri"

android:imeOptions="actionGo" />

<TextView

android:text="Συνθηματικό (Password)"

android:textColor="@color/black"

Page 54: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 54

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:layout_marginTop="10dp"

android:layout_gravity="center"

android:textSize="20sp" />

<EditText

android:id="@+id/password"

android:textColor="@color/black"

android:layout_marginBottom="10dp"

android:padding="10dip"

android:layout_width="250dp"

android:layout_gravity="center"

android:layout_height="50dp"

android:lines="1"

android:password="true"

android:inputType="textUri"

android:imeOptions="actionGo" />

<Button

android:id="@+id/submit"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:background="@drawable/entergr"

android:layout_marginTop="10dp"

android:layout_marginBottom="10dp" />

</LinearLayout>

Page 55: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 55

Στον κώδικα ορίζεται μία δομή LinearLayout η οποία περιέχει ορισμένα στοιχεία τα οποία

τοποθετούνται από κάτω προς τα πάνω στο γραφικό περιβάλλον:

Ένα ImageView που είναι το λογότυπο του OpenEclass. Το αρχείο logo.png

βρίσκεται στο φάκελο res/drawable-mdpi.

Ένα TextView που στην ουσία ορίζει ένα κείμενο που οδηγεί τον χρήστη στο τι

πρέπει να κάνει. Το κείμενο αυτό είναι "Παρακαλώ δώστε το όνομα χρήστη και το

συνθηματικό".

Ένα TextView που χρησιμοποιείται ως επικεφαλίδα στο πεδίο όπου ο χρήστης δίνει

το username του.

Ένα EditText που ορίζει ένα πεδίο το οποίο ο χρήστης μπορεί να το επιλέξει με το

δάχτυλο και να γράψει σε αυτό. Παρατηρούμε ότι το πεδίο αυτό έχει id=username,

ώστε η δραστηριότητα να αναγνωρίσει ότι το κείμενο που έχει γραφεί είναι το

όνομα χρήστη που δόθηκε.

Ένα TextView που χρησιμοποιείται ως επικεφαλίδα στο πεδίο όπου ο χρήστης δίνει

το συνθηματικό του.

Ένα EditText που έχει id=password, ώστε η δραστηριότητα να αναγνωρίσει ότι το

κείμενο που έχει γραφεί είναι το συνθηματικό που δόθηκε.

Ένα Button το οποίο ορίζει μία διεπαφή και έχει id=submit. Το id αυτό θα το

χρησιμοποιήσει η δραστηριότητα ώστε να χειριστεί το πάτημα του κουμπιού. Ως

εικονίδιο της διεπαφής ορίζεται το αρχείο entergr.png, που είναι επίσης

αποθηκευμένο στο φάκελο res/drawable-mdpi.

Σε κάθε στοιχείο υπάρχουν ετικέτες που ορίζουν την ακριβή του θέση στην οθόνη. Το

γραφικό περιεχόμενο που ορίστηκε παρουσιάζεται στο σχήμα 4.4.

Page 56: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 56

Σχήμα 4.4: Γραφικό περιεχόμενο της δραστηριότητας Login

4.4.2. Ο κώδικας Java της δραστηριότητας

Όπως αναφέρθηκε κάθε δραστηριότητα στο Android αποτελεί μία κλάση Java. Η

δραστηριότητα Login.java δηλώνεται ως:

public class Login extends Activity implements OnClickListener

που δηλώνει ότι η κλάση είναι δημόσια, αποτελεί δραστηριότητα και υλοποιεί έναν

OnClickListener, δηλαδή ορίζει διεπαφές και γεγονότα που αυτές πυροδοτούν.

Η πρώτη μέθοδος που καλείται στον κύκλο ζωής μίας δραστηριότητας είναι η

onCreate. Σε αυτή τη μέθοδο ορίζεται ότι το γραφικό περιβάλλον της δραστηριότητας

υπάρχει στο αρχείο login.xml (παράγραφος 4.4.1). Επίσης ορίζει στη διεπαφή με id “submit”

στην οποία υπάρχει ένας onClickListener, όπου γίνεται χειρισμός της πίεσης της διεπαφής.

Page 57: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 57

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

τιμές που θέλει στα δύο πεδία. Όταν πιέσει το “Είσοδος” τότε καλείται η μέθοδος:

Στο σημείο αυτό η εφαρμογή συλλέγει και αποθηκεύει τις τιμές που συμπλήρωσε ο

χρήστης στα δύο πεδία. Έπειτα καλείται το αντικείμενο checkLogin της κλάσης CheckLogin

το οποίο στέλνεις τις τιμές στο PHP scriptQ:

public void onClick(View v) {

switch (v.getId()) {

case R.id.submit:

EditText Name=(EditText)

findViewById(R.id.username);

username=Name.getText().toString();

EditText Pass=(EditText)

findViewById(R.id.password);

password=Pass.getText().toString();

checkLogin=new CheckLogin();

checkLogin.execute();

break;

}

}

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.login);

View SubmitButton = findViewById(R.id.submit);

SubmitButton.setOnClickListener(this);

}

Page 58: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 58

Η κλάση CheckLogin είναι ασύγχρονη, που σημαίνει ότι η κύρια λειτουργία της γίνεται στο

background χωρίς να επηρεάζει την αποκρισημότητα της εφαρμογής. Η εφαρμογή κάνει

μία κλήση στο:

private class CheckLogin extends AsyncTask<String, Void, String> {

@Override

protected String doInBackground(String... urls) {

HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new

HttpPost("http://10.0.2.2/lokas/checklogin.php?myusername="+username+"&myp

assword="+password);

try {

ResponseHandler<String> responseHandler=new

BasicResponseHandler();

String responseBody = httpclient.execute(httppost,

responseHandler);

JSONObject response=new JSONObject(responseBody);

String attributeId="wrong";

attributeId = response.getString("username");

user_id = response.getInt("id");

return attributeId;

}

catch (JSONException e) {

System.out.println("JSON EXP");

return "error";

}

catch (ClientProtocolException e) {

System.out.println("CP EXP");

return "error";

} catch (IOException e) {

e.printStackTrace();

System.out.println("IO EXP");

return "error";

}

}

@Override

protected void onPostExecute(String response) {

System.out.println(response);

if(!response.equals("wrong") &&

Page 59: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 59

http://10.0.2.2/lokas/checklogin.php?myusername="+username+"&mypassword="+passwo

rd

όπου username και password είναι οι τιμές που έδωσε ο χρήστης και περνούν ως

παράμετροι στο checklogin.php. Το PHP script θα κάνει τον έλεγχο και σε περίπτωση

αποτυχίας θα επιστρέψει ένα αντικείμενο JSON με την ένδειξη wrong:

{"username":"wrong","password":"wrong","id":0}

Σε αυτή την περίπτωση εμφανίζεται απλά το μήνυμα “Λάθος username ή/και password”. Σε

περίπτωση που δεν υπήρχε σύνδεση στο internet τότε εμφανίζεται το μήνυμα: "Κάτι

συνέβη. Παρακαλώ ελέγξτε τη σύνδεση στο διαδύκτιο".Σε περίπτωση επιτυχίας αντίθετα θα

επιστραφούν τα στοιχεία του χρήστη:

{"username":"and1","password":"785f0e7403e7756a988b39dafb2f59f6","id"

:"29"}

Στην περίπτωση αυτή καλείται η μέθοδος goToMainMenu(), η οποία οδηγεί τον

ταυτοποιημένο χρήστη στην δραστηριότητα MainMenu.

Στη νέα δραστηριότητα δίνονται τα username και user_id του χρήστη. Τέλος καλείται η

μέθοδος finish() ώστε η δραστηριότητα Login να ολοκληρώσει τον κύκλο ζωής της.

4.4.3. Το PHP script “checklogin.php”

Όπως είδαμε η δραστηριότητα εκτελεί κλήση στο checklogin.php. Ο κώδικα αρχίζει

με την ετικέτα “<?php” και με τις πρώτες γραμμές το script συνδέεται στη βάση δεδομένων.

Οι δύο τελευταίες γραμμές είναι απαραίτητες για το σωστό χειρισμό των ελληνικών

χαρακτήρων.

public void goToMainMenu(){

Intent MainMenu = new Intent();

MainMenu.setClass(Login.this, MainMenu.class);

MainMenu.putExtra("username", username);

MainMenu.putExtra("user_id", user_id);

startActivity(MainMenu);

finish();

}

Page 60: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 60

Το σύμβολο “$” χρησιμοποιείται από την PHP για να δηλώσει ότι ακολουθεί μεταβλητή.

Έπειτα το script διαβάζει τα ορίσματα που δόθηκαν από την εφαρμογή:

Παρατηρούμε ότι στο συνθηματικό χρησιμοποιείται η μέθοδος md5 η οποία κρυπτογραφεί

το συνθηματικό που δόθηκε. Αυτό γίνεται γιατί τα συνθηματικά στη βάση δεδομένων του

eClass αποθηκεύονται κωδικοποιημένα. Η κωδικοποίηση md5 θα αναλυθεί και στο

επόμενο κεφάλαιο.

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

στη βάση:

$sql="SELECT * FROM $tbl_name WHERE username= '$myusername' and

password='$mypassword' and statut=5";

$result=mysql_query($sql);

$count=mysql_num_rows($result);

// username and password sent from form

$myusername=$_GET['myusername'];

$mypassword=$_GET['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)

$myusername = stripslashes($myusername);

$mypassword = stripslashes($mypassword);

$myusername = mysql_real_escape_string($myusername);

$mypassword = md5(mysql_real_escape_string($mypassword));

<?php

$host="localhost"; // Host name

$username="root"; // Mysql username

$password="imdb"; // Mysql password

$db_name="neweclass"; // Database name

$tbl_name="user"; // Table name

// Connect to server and select databse.

$link=mysql_connect("$host", "$username", "$password")or die("cannot connect");

mysql_select_db("$db_name")or die("cannot select DB");

mysql_query("set character set 'greek'",$link);

mysql_query("SET NAMES 'utf8'",$link);

Page 61: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 61

Το ερώτημα επιλέγει τις γραμμές του πίνακα όπου το username και το password είναι ίδια

με τα δεδομένα και το statut είναι ίσο με 5 (για εισαγωγή εκπαιδευόμενου). Η μεταβλητή

count κρατάει τον αριθμό των γραμμών που επέστρεψε η εφαρμογή και που αναμένεται να

είναι ή 0 (αν δεν υπάρχει τέτοιος χρήστης) ή 1 (εφόσον δεν επιτρέπεται παραπάνω από

ένας χρήστες να έχουν το ίδιο username). Αν count=1 τότε επιστρέφονται τα στοιχεία του

χρήστη σε μορφή JSON:

Αλλιώς επιστρέφεται η τιμή “wrong”:

Ο κώδικας PHP τελειώνει με την ετικέτα “?>”.

else {

$Data = array('username' => 'wrong', 'password' => 'wrong', 'id' => 0);

header('Content-type: text/plain');

echo json_encode($Data);

}

?>

if($count==1){

$row=mysql_fetch_array($result);

$Data = array('username' => $myusername, 'password' => $mypassword,

'id'=> $row['user_id']);

header('Content-type: text/plain');

echo json_encode($Data);

}

}

Page 62: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 62

ΚΕΦΑΛΑΙΟ 5: ΠΑΡΟΥΣΙΑΣΗ ΤΗΣ ΑΝΑΠΤΥΧΘΕΙΣΑΣ ΕΦΑΡΜΟΓΗΣ

5. Παρουσίαση της αναπτυχθείσας εφαρμογής

Στην προηγούμενη παράγραφο έγινε αναφορά στη σχεδίαση της εφαρμογής και

στις μεθόδους υλοποίησής της. Στο παρόν κεφάλαιο θα γίνει μία εκτενής παρουσίαση όλων

των δραστηριοτήτων της εφαρμογής που αναπτύχθηκε. Κάθε δραστηριότητα αποτελεί και

μία κλάση java στο Android project που δημιουργήθηκε (σχήμα 5.1).

Σχήμα 5.1: Τα αρχεία .java που αντιστοιχούν στις δραστηριότητες της εφαρμογης

Σε κάθε δραστηριότητα θα δίνεται έμφαση στις κλήσεις που αυτή μπορεί να κάνει

σε PHP scripts, ώστε να φανεί ο τρόπος αλληλεπίδρασης της εφαρμογής με τον server και

με τη βάση δεδομένων του Open eClass. Επίσης δίνεται μία πληθώρα screenshots, ώστε να

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

υλοποιούνται τα διάφορα σενάρια λειτουργίας.

Page 63: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 63

5.1. Application Launch

Η εκκίνηση της εφαρμογής δεν αποτελεί ξεχωριστή δραστηριότητα, αλλά κρίνεται

σκόπιμο να αναλυθεί σύντομα, για την καλύτερη κατανόηση του τρόπου λειτουργίας του

Android. Η εφαρμογή μπορεί να εγκατασταθεί στη συσκευή ή στον emulator απευθείας

από το eclipse ή μέσω του εκτελέσιμου αρχείου eclass.apk. Εφόσον η εφαρμογή είναι

φορτωμένη στη συσκευή το εικονίδιό της είναι ορατό στη λίστα με τις διαθέσιμες

εφαρμογές της συσκευής (σχήμα 5.2).

Σχήμα 5.2: Το εικονίδιο της εγκατεστημένης εφαρμογής στον emulator

Παρατηρείται ότι ως εικονίδιο χρησιμοποιήθηκε το logo του eClass. Όλες οι εικόνες

που χρησιμοποιεί το eClass είναι διαθέσιμες στον φάκελο που έχει εγκατασταθεί η

πλατφόρμα, στη διαδρομή template\classic\img. Έτσι όσες από αυτές τις εικόνες

χρειάζονται αντιγράφηκαν στον υποφάκελο drawable-mdpi του φακέλου res του Android

project. Ο ορισμός του εικονιδίου της εφαρμογής γίνεται στο αρχείο AndroidManifest. Αν

δεν επιλεχθεί κάποιο αρχείο, το Android χρησιμοποιεί για την εφαρμογή ως προεπιλογή το

γνωστό android logo (σχήμα 5.3).

Page 64: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 64

Σχήμα 5.3: Το προεπιλεγμένο Android εικονίδιο

5.2. Main Page

Η αρχική σελίδα (σχήμα 5.4) απλώς δίνει δύο επιλογές στον χρήστη. Είτε να

εισέλθει στο σύστημα, εάν ήδη διαθέτει λογαριασμό, είτε να δημιουργήσει έναν νέο

λογαριασμό.

Σχήμα 5.4: Main Page

Page 65: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 65

Η σελίδα αποτελείται από το logo του eclass, το οποίο χρησιμοποιήθηκε σε όλες τις

δραστηριότητες ως σήμα κατατεθέν, ένα κείμενο που ενημερώνει τον χρήστη για το τι

μπορεί να εκτελέσει και δύο κουμπιά, ένα για κάθε λειτουργία. Πάνω σε κάθε κουμπί

υπάρχει κείμενο που εξηγεί τη λειτουργία του. Αυτές είναι οι standard διεπαφές που

παρέχει το Android SDK. Υπάρχει όμως η δυνατότητα να χρησιμοποιηθούν και άλλες

εικόνες ως κουμπιά εάν αυτό είναι επιθυμητό.

5.3. Create Account

Η δραστηριότητα Create Account δίνει στον χρήστη τη δυνατότητα να εγγραφή

στην πλατφόρμα. Η εγγραφή που μπορεί να γίνει είναι μόνο για χρήστη με ρόλο

εκπαιδευόμενου. Η εφαρμογή παρουσιάζει μία φόρμα όπου ο χρήσης εισάγει τα

απαιτούμενα στοιχεία. Επειδή τα στοιχεία είναι πολλά ολόκληρο το περιεχόμενο της

οθόνης, εκτός από το logo που είναι πάντα ορατό, μπορεί να κυληθεί (scroll) κάθετα (σχήμα

5.5).

Σχήμα 5.5: Η φόρμα εισαγωγής στοιχείων νέου λογαριασμού

Page 66: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 66

Τα στοιχεία που δίνει ο χρήστης είναι τα εξής:

Όνομα

Επώνυμο

Συνθηματικό

Επιβεβαίωση συνθηματικού

Αριθμός μητρώου

Σχολή – Τμήμα

Γλώσσα

Κάποια από τα στοιχεία μπορούν να έχουν μόνο προεπιλεγμένες τιμές. Για παράδειγμα το

“Γλώσσα” μπορεί να πάρει μόνο τις τιμές “Ελληνικά”, “English” και “Espanol”. Σε αυτή την

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

να διαλέξει από τις προϋπάρχουσες επιλογές (σχήμα 5.6).

Σχήμα 5.6: Επιλογή γλώσσας

Page 67: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 67

Όπως παρατηρείται στο σχήμα 5.8 στο τέλος της φόρμας υπάρχει επίσης ένα κουμπί. Αυτή

τη φορά όμως δεν χρησιμοποιήθηκε το default κουμπί του Android SDK, αλλά η εικόνα της

διεπαφής “Εγγραφή” του Open eClass.

Όταν πιεστεί το “Εγγραφή” εκτελούνται πρώτα μερικοί έλεγχοι πριν τα στοιχεία

σταλούν στον server. Ποιο συγκεκριμένα ελέγχεται εάν:

όλα τα πεδία είναι συμπληρωμένα.

οι κωδικοί που δόθηκαν στα πεδία “Password” και “Retype Password” είναι

ταυτόσημοι.

ο κωδικός έχει μήκος μεγαλύτερο ή ίσο από τέσσερεις χαρακτήρες. Ο περιορισμός

αυτός δόθηκε ενδεικτικά για λόγους ανάπτυξης (ώστε να μην απαιτείται να

γράφονται συνέχεια μεγάλα passwords). Μπορεί όμως εύκολα να επεκταθεί σε

απαίτηση περισσότερων χαρακτήρων ή/και ύπαρξη κεφαλαίων και μικρών και

ειδικών χαρακτήρων ή αριθμών. Τέτοιες τεχνικές γενικά συνίστανται στα

πληροφοριακά συστήματα, καθώς καθιστούν τους κωδικούς των χρηστών

περισσότερο ασφαλείς.

το e-mail έχει τη μορφή μίας έγκυρης διεύθυνσης ηλεκτρονικού ταχυδρομείου.

Πρέπει να σημειωθεί, ότι δεν ελέγχεται αν η διεύθυνση υπάρχει, παρά μόνο αν

είναι της μορφής [email protected], που μπορεί να έχει ένα e-mail. Έτσι αν ο

χρήστης δώσει ως e-mail το [email protected] τότε αυτό θα περάσει τον έλεγχο, αλλά αν δώσει

για παράδειγμα andreas@s δε θα περάσει. Ο έλεγχος του αν το e-mail αντιστοιχεί

σε κάποια υπαρκτή διεύθυνση, είναι ευθύνη συνήθως του server, ο οποίος στέλνει

σε πολλά συστήματα ένα μήνυμα ενεργοποίησης του λογαριασμού στη δοθείσα

διεύθυνση. Στο παρόν σύστημα δεν διενεργείται κανένας τέτοιος έλεγχος.

ο αριθμός μητρώου που δόθηκε είναι πραγματικά ένας αριθμός.

Σε περίπτωση που έστω και ένας από τους παραπάνω ελέγχους αποτύχει, η διαδικασία

εγγραφής σταματάει και παρουσιάζεται ένα μήνυμα που εξηγεί το λόγο (σχήμα 5.7).

Page 68: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 68

Σχήμα 5.7: Αποτυχία εγγραφής χρήστη

Εάν αντίθετα όλοι οι έλεγχοι πετύχουν τότε αρχίζει η διαδικασία εγγραφής του

χρήστη. Η εφαρμογή καλεί το PHP script με τίτλο checkcreate.php δίνοντας ως

παραμέτρους όλες τις επιλογές του χρήστη. Το script συνδέεται με τη βάση neweclass και

αρχικά ελέγχει αν το username ήδη υπάρχει στη βάση δεδομένων. O έλεγχος γίνεται με την

εντολή:

SELECT * FROM user WHERE username='$myusername'

όπου myusername είναι το username που δόθηκε ως παράμετρος, δηλαδή το username

που όρισε ο χρήστης (το σύμβολο “$” χρησιμοποιείται πάντα στην PHP για να δηλώσει ότι

ακολουθεί μεταβλητή). Αν η ερώτηση επιστρέψει τιμή τότε αυτό σημαίνει ότι το username

υπάρχει ήδη και ο χρήστης ενημερώνεται ώστε να επιλέξει κάποιο καινούριο (σχήμα 5.8).

Page 69: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 69

Σχήμα 5.8: Οι δύο πιθανές απαντήσεις του server στο αίτημα εγγραφής

Αν το username δεν υπάρχει τότε εκτελείται η SQL εντολή

INSERT INTO user(nom, prenom, username, password, email, statut , am , department, lang,

registered_at, expires_at) VALUES('$myname', '$mysurname', '$myusername',

'$mypassword', '$myemail', 5, '$mynumber', '$myfaculty', '$mylanguage', 1338914462,

1478914462)

Με την εντολή αυτή εισάγεται ο χρήστης στο σύστημα. Αξίζει να σημειωθεί ότι ως “statut”

ορίζεται το “5” που ορίζει ότι ο χρήστης είναι εκπαιδευόμενος. Επίσης ο κωδικός δεν

αποθηκεύεται όπως τον έδωσε ο χρήστης, αλλά πρώτα κωδικοποιείται με το πρότυπο md5.

Αυτό γίνεται ώστε κάποιος που έχει πρόσβαση στη βάση, να μην έχει τη δυνατότητα του να

υποκλέψει τους κωδικούς των χρηστών. Η PHP παρέχει τη βιβλιοθήκη md5 η οποία δέχεται

ως όρισμα μία σειρά χαρακτήρων και την κωδικοποιεί. Για παράδειγμα η λέξη “MD5” αν

κρυπτογραφηθεί δίνει τη σειρά χαρακτήρων: 7f138a09169b250e9dcb378140907378.

Page 70: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 70

Περισσότερες πληροφορίας για τη μέθοδο κρυπτογράφησης md5 μπορούν να βρεθούν στο

διαδύκτιο.

Παραπάνω αναλύθηκαν κάποιοι έλεγχοι που γίνονται στη διαδικασία εγγραφής

ενός χρήστη στην πλατφόρμα. Η επιλογή είναι ενδεικτική και σε διαφορετικές υλοποιήσεις

μπορεί να επιλεχθούν διαφορετικά πρότυπα.

5.4. Login

Ο χρήστης που δημιουργήθηκε, μπορεί πλέον να κάνει login ώστε να εισέλθει στην

εφαρμογή. Η δραστηριότητα Login (αναλύθηκε στην παράγραφο 4.4 ως παράδειγμα, αλλά

παρουσιάζεται και εδώ για λόγους συνοχής) παρουσιάζει μία φόρμα όπου ο χρήστης

καλείται να δώσει το username και το password του (σχήμα 5.11). Όπως βλέπουμε ο

κωδικός δίνεται με την μορφή που δίνονται οι κωδικοί στο Android (“hidden”). Όταν

πατηθεί το πλήκτρο enter, η δραστηριότητα καλεί το checklogin.php δίνοντας ως

παραμέτρους τις εισαχθείσες τιμές. Το script διαπράττει τον έλεγχο ταυτοποίησης του

χρήστη. Το script κάνει στη βάση το παρακάτω ερώτημα:

SELECT * FROM user WHERE username='$myusername' and password='$mypassword' and

statut=5

Όπου myusername και mypassword είναι οι παράμετροι που εστάλησαν από τον client.

Πρέπει να σημειωθεί όμως ότι το PHP script πρώτα κρυπτογραφεί τον κωδικό κατά md5 και

μετά διαπράττει το ερώτημα. Το statut=5 σημαίνει ότι ο χρήστης πρέπει να είναι

εκπαιδευόμενος. Η τιμή 5 δίνεται από το eClass για όλους τους χρήστες αυτής της

κατηγορίας.

Page 71: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 71

Σχήμα 5.9: Η φόρμα Login

Σε περίπτωση αποτυχίας ταυτοποίησης παρουσιάζεται ένα ενημερωτικό μήνυμα

στον χρήστη πως δόθηκε λάθος username ή/και password. Σε περίπτωση επιτυχίας ο

ταυτοποιημένος πλέον χρήστης οδηγείται στη δραστηριότητα Main Menu όπου το σύστημα

τον καλωσορίζει με το username του (σχήμα 5.10).

Page 72: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 72

Σχήμα 5.10: Αποτυχία ταυτοποίησης

Από την απάντηση του checklogin.php η εφαρμογή λαμβάνει εκτός των άλλων και το

user_id του συγκεκριμένου χρήστη, το οποίο κρατείται από αυτό το σημείο και έπειτα για

την αλληλεπίδραση του με το σύστημα.

5.5. Main Menu

Η δραστηριότητα αυτή παρουσιάζει το κύριο μενού το οποίο λαμβάνει ο

ταυτοποιημένος πλέον χρήστης (σχήμα 5.11). Κάτω από το logo της εφαρμογής, ένα γραπτό

μήνυμα καλωσορίζει τον χρήστη στο σύστημα και στην οθόνη δίνονται τρεις επιλογές

Έλεγχος ανακοινώσεων

Εύρεση μαθημάτων

Προβολή λίστας μαθημάτων στα οποία ο χρήστης είναι εγγεγραμμένος.

Στη συγκεκριμένη δραστηριότητα δεν απαιτείται κάποια αλληλεπίδραση με το internet και

τη βάση δεδομένων του Open eClass.

Page 73: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 73

Σχήμα 5.11: Main Menu

5.6. Check Announcements

Στην δραστηριότητα Check Announcements ο χρήστης λαμβάνει μία λίστα με τις

ανακοινώσεις όλων των μαθημάτων στα οποία είναι εγγεγραμμένος. Αυτό κρίθηκε πολύ

σημαντικό ως λειτουργία, καθώς το σενάριο χρήσης του ελέγχου των ανακοινώσεων μέσω

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

Page 74: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 74

Σχήμα 5.12: Λίστα ανακοινώσεων

Με το που δημιουργείται η δραστηριότητα γίνεται κλήση του getuserlessons.php,

το οποίο λαμβάνει ως παράμετρο το user_id και εκτελεί στη βάση το ερώτημα:

SELECT * FROM course_user WHERE user_id=$id

Το script επιστρέφει τα cours_id για τα μαθήματα στα οποία είναι γραμμένος ο χρήστης και

έπειτα εκτελεί για το κάθε ένα το ερώτημα:

SELECT * FROM cours WHERE cours_id=$cours_id

ώστε να πάρρει για κάθε μάθημα τον τίτλο του (στήλη “intitule” στον πίνακα “cours”).

Έπειτα η εφαρμογή καλεί το checkannouncements.php το οποίο μέσω του

ερωτήματος:

SELECT * FROM annonces

επιστρέφει όλες τις ανακοινώσεις του συστήματος και η εφαρμογή, αλλά η εφαρμογή

επιλέγει μόνο αυτές που αφορούν τα συγκεκριμένα course_id που λήφθηκαν πριν. Έτσι ο

Page 75: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 75

χρήστης λαμβάνει μία λίστα με τις ανακοινώσεις των μαθημάτων στα οποία είναι

γραμμένος (σχήμα 5.12).

Η λίστα δημιουργείται με τη χρήση της βιβλιοθήκης android.widget.ListView που

παρέχει το Android SDK. Όπως φαίνεται στο σχήμα παρουσιάζεται ο τίτλος του μαθήματος

στο οποίο ανήκει η ανακοίνωση και ο τίτλος της ανακοίνωσης. Πατώντας πάνω σε ένα

στοιχείο της λίστας ο χρήστης μπορεί να δει το περιεχόμενο της ανακοίνωσης (σχήμα 5.13).

Ο διάλογος που φαίνεται στο σχήμα δημιουργείται με τη βοήθεια της Android βιβλιοθήκης

android.content.DialogInterface. Μέσω της διεπαφής “OK” ο χρήστης μπορεί να κλείσει τον

διάλογο

Σχήμα 5.13: Προβολή περιεχομένου ανακοινώσεων

Όπως βλέπουμε έχει ληφθεί μέριμνα, ώστε η εφαρμογή να υποστηρίζει και κείμενο

γραμμένο με ελληνικούς χαρακτήρες.

Page 76: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 76

5.7. Find Lessons

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

έχουν δημιουργηθεί στο σύστημα (σχήμα 5.14) και μπορεί να εγγραφεί σε ή να απεγγραφεί

από αυτά. Όπως φαίνεται στο σχήμα στο δοκιμαστικό σύστημα δημιουργήθηκαν τρία

μαθήματα.

Αρχικά η εφαρμογή καλεί το getcourses.php το οποίο εκτελεί το ερώτημα:

SELECT * FROM cours

το οποίο επιστρέφει όλα τα μαθήματα. Τα στοιχεία που επιλέγονται και επιστρέφονται σε

μορφή JSON είναι τα περιεχόμενα της στήλης “cours_id” ώστε να ληφθεί το id που θα

χρησιμοποιηθεί αργότερα και “intitule” ώστε να παρουσιαστεί στον χρήστη ο τίτλος του

μαθήματος

Σχήμα 5.14: Λίστα με όλα τα μαθήματα του συστήματος

Page 77: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 77

Πιέζοντας σε κάποιο μάθημα της λίστας ο χρήστης μπορεί να αναγνώσει την

περιγραφή του. Επίσης του δίνεται η δυνατότητα να εγγραφεί σε αυτό ή, αν είναι ήδη

εγγεγραμμένος, να απεγγραφεί από αυτό (σχήμα 5.15).

Η περιγραφή του μαθήματος λαμβάνεται μέσω κλήσης στο getdescription.php. To

script λαμβάνει ως όρισμα το cours_id και εκτελεί αρχικά το ερώτημα:

SELECT * FROM $course_units WHERE course_id='$id'

Από το ερώτημα λαμβάνεται η τιμή του unit_id, η οποία χρησιμοποιείται στο:

SELECT * FROM $unit_resources where unit_id='$id2'

από το οποίο λαμβάνεται το περιεχόμενο της στήλης “description”. Με τον τρόπο αυτό ο

χρήστης βλέπει την περιγραφή του μαθήματος. Έπειτα καλείται το checkusercourse.php το

οποίο δέχεται ως όρισμα το cours_id του μαθήματος και το user_id του χρήστη και ελέγχει

αν αυτός είναι εγγεγραμμένος στο μάθημα. Ο έλεγχος γίνεται με το ερώτημα:

SELECT * FROM $tbl_name WHERE cours_id='$course_id' and user_id='$user_id'

Page 78: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 78

Σχήμα 5.15: Προβολή περιγραφής μαθήματος και δυνατότητα εγγραφής/απεγγραφής

Εάν ο χρήσης δεν είναι εγγεγραμένος στο μάθημα, το κουμπί στον διάλογο φέρνει

την ετικέτα “Εγγραφή”. Αν πατηθεί το κουμπί, γίνεται κλήση στο subscribe.php το οποίο με

την παρακάτω SQL εντολή εγγράφει τον χρήστη στο μάθημα

INSERT INTO cours_user(cours_id, user_id, statut, team, tutor, editor, receive_mail)

VALUES($course_id, $user_id, 5, 0, 0, 0, 1)

Τα “course_id” και “user_id” δίνονται ως παράμετροι από την εφαρμογή, το statut=5 ορίζει

ότι ο χρήστης είναι εκπαιδευόμενος ενώ οι υπόλοιπες τιμές είναι default επιλογές του

eClass.

Εάν ο χρήστης είναι εγγεγραμένος στο μάθημα, το κουμπί στον διάλογο φέρνει την

ετικέτα “Απεγγραφή”. Πατώντας το κουμπί γίνεται κλήση στο unsubscribe.php, το οποίο

δέχεται επίσης ως ορίσματα τα “user_id” και “course_id” και εκτελεί την εντολή:

DELETE FROM cours_user WHERE cours_id='$course_id' and user_id='$user_id'

Page 79: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 79

με την οποία ο η γραμμή του πίνακα “cours_user” που συνδέει τον χρήστη με το μάθημα

διαγράφεται. Και στις δύο περιπτώσεις ο χρήστης λαμβάνει ένα μήνυμα ότι η εγγραφή ή η

απεγγραφή εκτελέστηκαν με επιτυχία.

5.8. MyLessons

Η συγκεκριμένη δραστηριότητα παρουσιάζει μία λίστα με όλα τα μαθήματα στα

οποία ο χρήστης είναι εγγεγραμμένος (σχήμα 5.16). Η εύρεση της λίστας γίνεται μέσω του

getuserlessons.php στο οποίο η εφαρμογή δίνει το user_id και εκτελεί το ερώτημα:

SELECT * FROM $tbl_name WHERE user_id=$id

Επιλογή ενός από τα μαθήματα της λίστας, οδηγεί στη δραστηριότητα Lesson Site η

για το συγκεκριμένο μάθημα. Στη δραστηριότητα δίνεται το cours_id, ώστε να γνωρίζει

ποιανού μαθήματος τα στοιχεία πρέπει να παρουσιάσει.

Σχήμα 5.16: Λίστα των μαθημάτων στα οποία ο χρήστης έχει εγγραφεί

Page 80: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 80

5.9. Lesson Site

Η δραστηριότητα αυτή παρουσιάζει το κύριο μενού της σελίδας του μαθήματος (σχήμα

5.17). Κάτω από το logo της εφαρμογής, ένα γραπτό μήνυμα καλωσορίζει τον χρήστη στο

μάθημα και στην οθόνη δίνονται πέντε επιλογές

Έλεγχος ανακοινώσεων μαθήματς

Εύρεση εργασιών

Προβολή και κατέβασμα αρχείων

Προβολή ατζέντας

Προβολή φόρους και ανάρτηση απάντησης.

Στη συγκεκριμένη δραστηριότητα δεν απαιτείται κάποια αλληλεπίδραση με το internet και

τη βάση δεδομένων του Open eClass.

Σχήμα 5.17: Σελίδα μαθήματος

Page 81: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 81

5.10 Lesson Announcements

Η δραστηριότητα αυτή έχει παρόμοια λειτουργικότητα με την Check

Announcements η οποία περιγράφηκε στην παράγραφο 5.6. Η διαφορά έγκειται στο ότι ο

χρήστης λαμβάνει τώρα μία λίστα μόνο με τις ανακοινώσεις του συγκεκριμένου μαθήματος

(σχήμα 5.18). Η εφαρμογή καλεί την δραστηριότητα checklessonannouncements.php,

περνώντας ως παράμετρο το course_id του μαθήματος. Το script εκτελεί το εξής ερώτημα

στη βάση:

SELECT * FROM annonces where cours_id='$id'

Έτσι συλλέγονται τα απαιτούμενα στοιχεία για τις επιθυμητές ανακοινώσεις. Το script

επιστρέφει σε JSON τα περιεχόμενα των στηλών “title” και “contenu”, οι οποίες περιέχουν

τον τίτλο και το περιεχόμενο της ανακοίνωσης αντίστοιχα.

Σχήμα 5.18: Λίστα ανακοινώσεων του μαθήματος

Page 82: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 82

Στην λίστα παρουσιάζεται ο τίτλος της ανακοίνωσης. Πιέζοντας πάνω σε μία από τις

ανακοινώσεις ο χρήστης μπορεί να αναγνώσει το περιεχόμενό της (σχήμα 5.19).

Σχήμα 5.19: Περιεχόμενο ανακοίνωσης

5.11. Lesson Assignments

Στην δραστηριότητα αυτή ο χρήστης μπορεί να δει τις εργασίες του μαθήματος. Οι

πληροφορίες που απαιτούνται για τη συγκεκριμένη λειτουργία δεν είναι διαθέσιμες στην

κεντρική βάση δεδομένων του eClass που δημιουργήθηκε (neweclass), αλλά στη βάση που

έχει δημιουργήσει η πλατφόρμα για το συγκεκριμένο μάθημα. Όπως προαναφέρθηκε, η

βάση αυτή φέρει το όνομα του κωδικού του μαθήματος. Οπότε η πρώτη λειτουργία που

εκτελεί η δραστηριότητα, είναι να καλέσει το getlessoncode.php δίνοντας ως όρισμα το

course_id. Το script εκτελεί το ερώτημα

SELECT * FROM course WHERE cours_id='$id'

Page 83: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 83

και επιστρέφει το περιεχόμενο της στήλης “code”. Πλέον το όνομα της βάσης στην οποία

πρέπει να συνδεθεί η εφαρμογή είναι γνωστό. Μόλις ανακτηθεί ο κωδικός, καλείται το

getassignments.php στο οποίο ο κωδικός αυτός δίνεται ως παράμετρος. Το script εκτελεί

στην βάση που του δόθηκε το ερώτημα:

SELECT * FROM assignments

με το οποίο λαμβάνονται όλα τα στοιχεία του πίνακα. Για κάθε εγγραφή το script

επιστρέφει σε μορφή JSON τις εξής στήλες:

title

description

group_submissions

submission_date

deadline

Αρχικά χρησιμοποιείται μόνο ο τίτλος, ώστε να παρουσιαστεί στη λίστα με τις εργασίες

(σχήμα 5.20).

Σχήμα 5.20: Λίστα εργασιών μαθήματος

Page 84: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 84

Πιέζοντας πάνω σε μία από τις ανακοινώσεις ο χρήστης μπορεί να αναγνώσει το

περιεχόμενό της (σχήμα 5.21). Στον διάλογο παρουσιάζεται και πάλι ο τίτλος με κόκκινα

γράμματα και από κάτω το περιεχόμενο της εκφώνησης. Πιο κάτω και με μικρότερα

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

το αν η εργασία είναι προσωπική ή ομαδική. Η τελευταία πληροφορία συλλέγεται από το

περιεχόμενο της στήλης “group_submissions” το οποίο είναι 0 αν η εργασία είναι ατομική

και 1 εάν είναι ομαδική.

Σχήμα 5.21: Περιεχόμενο εργασίας

Page 85: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 85

5.12. Lesson Files

Μέσω της δραστηριότητας αυτής ο χρήστης μπορεί να κάνει download των αρχείων

που έχουν ανέβει στη βάση του συγκεκριμένου μαθήματος. Τα αρχεία μπορεί να είναι

οποιουδήποτε τύπου, από ένα απλό αρχείο κειμένου, ως μία φωτογραφία. Τα αρχεία

βρίσκονται επίσης στη βάση δεδομένων του μαθήματος, οπότε η πρώτη ενέργεια είναι και

πάλι η λήψη του κωδικού του μαθήματος με την διαδικασία που περιγράφηκε στην

προηγούμενη παράγραφο. Έπειτα καλείται το getfiles.php το οποίο λαμβάνει ως

παράμετρο τον κωδικό του μαθήματος, ώστε να γνωρίζει σε ποια βάση πρέπει να συνδεθεί.

Το ερώτημα που εκτελείται είναι το:

SELECT * FROM dropbox_file

όπου “dropbox_file” είναι το όνομα του πίνακα όπου αποθηκεύονται πληροφορίες για τα

αρχεία. Το script επιστρέφει σε μορφή JSON τα περιεχόμενα των στηλών:

title

description

author

uploadDate

filename

Αρχικά χρησιμοποιείται μόνο ο τίτλος, ώστε να παρουσιαστεί στη λίστα με τις εργασίες

(σχήμα 5.20).

Page 86: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 86

Σχήμα 5.22: Λίστα με τα αρχεία του μαθήματος

Όπως βλέπουμε ο τίτλος του αρχείου περιέχει και την κατάληξη του αρχείου, έτσι

ώστε να φαίνεται και ο τύπος του. Η στήλη “title” περιέχει το όνομα του αρχείου όπως αυτό

αποθηκεύτηκε από τον χρήστη που το έκανε upload στην ηλεκτρονική πλατφόρμα.

Αντίθετα η στήλη “filename” περιέχει ένα τυχαίο (random) όνομα που δίνει η πλατφόρμα

στο αρχείο. Για παράδειγμα στο αρχείο “Tulips.jpg” δόθηκε το όνομα “4ff95fd5ig0i.jpg”.

Αυτό το όνομα προφανώς δεν ενδιαφέρει τον χρήστη ώστε να προβληθεί στην οθόνη, αλλά

είναι απαραίτητο στην εφαρμογή για να μπορέσει να κάνει download το αρχείο.

Πιέζοντας σε ένα αρχείο εμφανίζεται ένας διάλογος που προβάλλει πληροφορίες

για αυτό (σχήμα 5.23).

Page 87: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 87

Σχήμα 5.23: Πληροφορίες αρχείου

Εκτός από τον τίτλο, ο χρήστης μπορεί να αναγνώσει και το περιεχόμενο της στήλης

“description”. Επίσης δίνονται δύο επιλογές “Download” και “Close”. Σε περίπτωση που

πιεστεί το “Κλείσιμο” ο διάλογος κλείνει χωρίς να εκτελεστεί κάποια άλλη εργασία. Το ίδιο

γίνεται και πατώντας απλά το πλήκτρο “back” της συσκευής, αλλά θεωρήθηκε πως η

ύπαρξη ενός επιπλέον κουμπιου καθιστά την εφαρμογή πιο εύχρηστη. Αν ο χρήστης

επιλέξει να κατεβάσει το αρχείο και πιέσει την διεπαφή “Κατέβασμα Αρχείου” τότε η

εφαρμογή καλεί το download.php δίνοντας ως ορίσματα τόσο τον κωδικό του μαθήματος,

όσο και το περιεχόμενο της στήλης “filename”.

Το script χρειάζεται να γνωρίζει τη διαδρομή στην οποία είναι αποθηκευμένο το

αρχείο στον server. Στον τοπικό server που στήθηκε το eClass η διαδρομή αυτή είναι η:

C:\\xampp\\htdocs\\openeclass2.5\\courses\\".$code."\\dropbox\\".$filename

Page 88: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 88

Σε διαφορετικά server configurations ενδέχεται η διαδρομή αυτή να είναι ελαφρώς

διαφορετική, οπότε θα πρέπει να υπάρξει η κατάλληλη μετατροπή και στο script. Το script

εκτελεί το κατέβασμα του αρχείου. Στην Android εφαρμογή δημιουργείται ένα αντικείμενο

τύπου File στο οποίο γράφεται το αρχείο και έπειτα αποθηκεύεται στην SD card της

συσκευής. Δυστυχώς ο Android emulator δεν επιτρέπει τη δυνατότητα εγγραφής αρχείων

στην SD card ώστε να παρουσιαστεί εδώ screenshot, αλλά η λειτουργία δοκιμάστηκε και σε

πραγματική συσκευή και λειτουργεί.

5.13 Lesson Agenda

H δραστηριότητα Lesson Agenda παρουσιάζει μία λίστα με τα “συμβάντα” του

μαθήματος (σχήμα 5.24). Τα συμβάντα αποθηκεύονται τόσο στην κεντρική βάση

δεδομένων του eClass όσο και στις επί μέρους βάσεις των μαθημάτων. Οπότε είναι δυνατόν

να ληφθούν και από τις δύο πηγές. Η λογική που ακολουθήθηκε ήταν να διαβαστούν από

την κεντρική βάση δεδομένων (neweclass) και να επιλεχθούν μόνο αυτές του

συγκεκριμένου μαθήματος.

Page 89: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 89

Σχήμα 5.24: Λίστα συμβάντων μαθήματος

Η πρώτη λειτουργία που εκτελείται είναι η λήψη του κωδικού του μαθήματος. Έπειτα

καλείται το getevents.php το οποίο συνδέεται με τη βάση δεδομένων neweclass και εκτελεί

το ερώτημα:

SELECT * FROM agenda where lesson_code='$code'

Όπου “agenda” είναι το όνομα του πίνακα όπου αποθηκεύονται τα συμβάντα. Το script

επιστρέφει ένα JSON array που για κάθε εγγραφή περιέχει τα περιεχόμενα των

titre

contenu

day

Στη λίστα εμφανίζεται μόνο ο τίτλος του event.

Page 90: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 90

Επιλέγοντας ένα συμβάν ο χρήστης μπορεί να δει το περιεχόμενο (σχήμα 5.25). Οι

πληροφορίες που προβάλλονται είναι και πάλι ο τίτλος, το κείμενο που περιέχει το συμβάν

και η ημερομηνία που συνέβη.

Σχήμα 5.25: Περιεχόμενο συμβάντος

5.14. Lesson Forum

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

που υπάρχουν για το συγκεκριμένο μάθημα (σχήμα 5.26). Η δραστηριότητα καλεί το

getforum.php με όρισμα τον κωδικό του μαθήματος. Το script συνδέεται με τη βάση

δεδομένων του μαθήματος και εκτελεί το ερώτημα:

SELECT * FROM forums

Page 91: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 91

και επιστρέφει για κάθε συζήτηση σε μορφή JSON τα περιεχόμενα των στηλών:

forum_id

forum_name

forum_desc

To “forum_name” είναι και ο τίτλος της περιοχής συζητήσεων που παρουσιάζεται στη

λίστα.

Σχήμα 5.26: Λίστα των περιοχών συζητήσεων του μαθήματος

Επιλέγοντας μία περιοχή συζητήσεων ο χρήστης μπορεί να δει την περιγραφή του

forum αλλά και να επιλέξει να δει τα θέματα που έχουν ήδη αναρτηθεί (σχήμα 5.27). Σε

περίπτωση που πιεστεί το “Κλείσιμο” ο διάλογος κλείνει χωρίς να εκτελεστεί κάποια άλλη

Page 92: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 92

εργασία, όπως γίνεται και αν πιεστεί το πλήκτρο back της συσκευής (ή το Esc του

ηλεκτρονικού υπολογιστή σε περίπτωση που χρησιμοποιούμε τον Android emulator).

Εάν ο χρήστης επιλέξει την διεπαφή “Θέματα” τότε η εφαρμογή εκτελεί την

δραστηριότητα Topics. Στην δραστηριότητα περνάνε οι τιμές των user_id, course_id και

forum_id, ώστε να μπορεί να γίνει χρήση τους στις διάφορες λειτουργίες.

Σχήμα 5.27: Περιγραφή Forum

5.15. Topics

Στην δραστηριότητα Topics προβάλλεται μία λίστα με τα διάφορα θέματα που

υπάρχουν αναρτημένα στο forum (σχήμα 5.28). Η εφαρμογή καλεί το PHP script

Page 93: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 93

gettopics.php δίνοντας ως παραμέτρους τον κωδικό του μαθήματος και το forum_id. Το

script συνδέεται με τη βάση δεδομένων που έχει ως όνομα τον κωδικό που παρέλαβε και

εκτελεί το ερώτημα:

SELECT * FROM topics WHERE forum_id='$id'

Το ερώτημα επιστρέφει όλες τις στήλες που έχουν το συγκεκριμένο forum_id και δίνει στην

εφαρμογή ένα JSON array, όπου για κάθε γραμμή παρέχονται τα περιεχόμενα των στηλών:

topic_id

topic_title

topic_time

topic_replies

Στη λίστα παρουσιάζεται το περιεχόμενο της στήλης “topic_title”

Σχήμα 5.28: Λίστα με τα θέματα μίας περιοχής συζητήσεων

Page 94: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 94

Αν ο χρήστης πιέσει σε κάποιο από τα θέματα λαμβάνει έναν διάλογο με

περισσότερες πληροφορίες για το θέμα. Στον διάλογο προβάλλεται και πάλι ο τίτλος του

θέματος καθώς και ο αριθμός των απαντήσεων όπως αυτός παρέχεται από την στήλη

“topic_replies”. Αξίζει να σημειωθεί ότι στον αριθμό των απαντήσεων δε λαμβάνεται

υπόψη η αρχική δημοσίευση του θέματος. Οπότε αν για παράδειγμα έχουμε “1 Απάντηση”

αναμένεται η ύπαρξη δύο δημοσιεύσεων στο θέμα.

Πιέζοντας το κουμπί “Αναρτήσεις” εκτελείται η δραστηριότητα Post, μέσω της

οποίας ο χρήστης μπορεί να αναγνώσει τις υπάρχουσες δημοσιεύσεις, αλλά και να

δημιουργήσει μία απάντηση η οποία θα δημοσιευθεί στην περιοχή συζητήσεων. Στην

δραστηριότητα περνάν ως παράμετροι τα user_id, course_id, forum_id και topic_id.

Σχήμα 5.29: Περιεχόμενο θέματος

Page 95: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 95

5.16. Posts

Στην δραστηριότητα αυτή ο χρήστης λαμβάνει μία λίστα με όλες τις δημοσιεύσεις

του θέματος (σχήμα 5.30). Η δραστηριότητα εκτελεί κλήση στο getposts.php δίνοντας τον

κωδικό του μαθήματος και το topic_id ως παραμέτρους. Το PHP script συνδέεται με τη

βάση δεδομένων του συγκεκριμένου μαθήματος και εκτελεί το ερώτημα:

SELECT * FROM posts WHERE topic_id='$id'

Στην εφαρμογή επιστρέφεται ένα JSON array, που για κάθε post παρέχει τα εξής στοιχεία:

post_id

post_time

nom

prenom

Στην λίστα προβάλλεται το όνομα του χρήστη που έκανε τη δημοσίευση και η ώρα και

ημερομηνία της ανάρτησης.

Page 96: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 96

Σχήμα 5.30: Λίστα δημοσιεύσεων του θέματος

Πατώντας σε ένα στοιχείο της λίστας, ο χρήστης μπορεί να αναγνώσει το περιεχόμενο της

ανάρτησης (σχήμα 5.31). Για τη λήψη του περιεχομένου πρέπει να καλεστεί το

getposttext.php καθώς το eClass αποθηκεύει το κείμενο της δημοσίευσης σε διαφορετικό

πίνακα. To script λαμβάνει από την εφαρμογή τον κωδικό του μαθήματος και το post_id,

συνδέεται με τη βάση δεδομένων του μαθήματος και εκτελεί το ερώτημα:

SELECT * FROM posts_text WHERE post_id='$id'

To κείμενο της ανάρτησης επιστρέφεται σε ένα JSON object και η εφαρμογή του

παρουσιάζει μέσω ενός διαλόγου στον χρήστη.

Page 97: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 97

Σχήμα 5.31: Περιεχόμενο δημοσίευσης

Στην δραστηριότητα υπάρχει και η επιλογή “Post Reply” που δίνει τη δυνατότητα

στον χρήστη να αναρτήσει τη δική του απάντηση. Αν πιεστεί το κουμπί εκτελείται η

δραστηριότητα Enter Text, η οποία θα αναλυθεί στην επόμενη παράγραφο. Η συγκεκριμένη

δραστηριότητα καλείται με τη μέθοδο startActivityForResult η οποία γνωστοποιεί στην

εφαρμογή ότι η αρχική δραστηριότητα (Posts) περιμένει από την κληθείσα (Enter Text)

κάποιο αποτέλεσμα. Όταν τελειώσει η δραστηριότητα Enter Text τότε στην Posts εκτελείται

αυτόματα η μέθοδος onActivityResult η οποία λαμβάνει το αποτέλεσμα της

δραστηριότητας και ξαναφορτώνει τα Posts ώστε να εμφανιστεί και η ανάρτηση που μόλις

έγινε (σχήμα 5.32)

Page 98: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 98

Σχήμα 5.32: Η νέα απάντηση του χρήστη

5.16. Enter Text

H δραστηριότητα Enter Text παρέχει στον χρήστη ένα πλαίσιο κειμένου, στο οποίο

αυτός μπορεί να εισάγει το κείμενο της δημοσίευσης (σχήμα 5.33). Η δραστηριότητα έχει

λάβει από την Posts κατά την κλήση της τις τιμές των user_id, course_code, forum_id και

topic_id. Πιέζοντας στο πλαίσιο κειμένου, εμφανίζεται το default soft keyboard της

συσκευής και ο χρήστης πληκτρολογεί το κείμενο.

Αν ο χρήστης πιέσει το “cancel” ή το πλήκτρο “back” της συσκευής, τότε η

δραστηριότητα κλείνει χωρίς να διεξαχθεί κάποια άλλη ενέργεια. Στην δραστηριότητα Posts

επιστρέφεται μία λογική (boolean) μεταβλητή με την τιμή false, ώστε να γνωρίζει ότι δεν

έγινε ανάρτηση.

Εάν ο χρήστης πιέσει το “done” τότε αρχίζει η διαδικασία της ανάρτησης. Αρχικά

καλείται το getnomprenom.php με παράμετρο το user_id. Αυτό γίνεται γιατί μαζί με τη

Page 99: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 99

δημοσίευση απαιτείται να αποθηκευτεί και το ονοματεπώνυμο του χρήστη που την έκανε.

Το script εκτελεί στη βάση δεδομένων neweclass το ερώτημα:

SELECT * FROM user WHERE user_id='$id'

Σχήμα 5.33: Η δραστηριότητα Enter Text

To script επιστρέφει ένα αντικείμενο JSON με το περιεχόμενο των στηλών “nom” και

“prenom” για τον συγκεκριμένο χρήστη και η εφαρμογή τα αποθηκεύει. Αμέσως μόλις

ληφθούν με επιτυχία οι τιμές η δραστηριότητα καλεί το insertpost.php δίνοντας εφτά

ορίσματα:

course_code

forum_id

topic_id

user_id

time

nom

Page 100: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 100

prenom

Το στοιχείο time λαμβάνεται από την τρέχουσα ώρα της συσκευής (ή του emulator) με τη

χρήση των βιβλιοθηκών java.util.Calendarτου και java.util.Date που παρέχει το Android SDK.

Αυτό σημαίνει ότι αν ο χρήστης δεν έχει σωστά ρυθμισμένη την ώρα και την ημερομηνία

στη συσκευή του, υπάρχει κίνδυνος να γραφτούν εσφαλμένα δεδομένα στη βάση.

Το insertpost.php εκτελεί στη βάση το ερώτημα:

INSERT INTO posts (topic_id, poster_id, forum_id, post_time, nom, prenom) VALUES

('$topic_id', '$poster_id', '$forum_id', '$post_time', '$nom', '$prenom')

μέσω του οποίου εισάγεται η δημοσίευση στη βάση δεδομένων του συγκεκριμένου

μαθήματος. Έπειτα εκτελείται το ερώτημα:

SELECT * FROM posts WHERE post_time='$post_time' AND poster_id='$poster_id'

με το οποίο παίρνουμε τα στοιχεία για τη δημοσίευση που μόλις αναρτήθηκε. Αυτό γίνεται

διότι πρέπει να ανακτηθεί το post_id, ώστε να μπορέσει να γίνει η εισαγωγή του κειμένου

της δημοσίευσης στον πίνακα posts_text. Το post_id επιστρέφεται σε ένα αντικείμενο JSON.

Έπειτα η εφαρμογή καλεί το insertposttext.php με ορίσματα τον κωδικό του

μαθήματος το post_id που ελήφθη και το κείμενο που έχει γράψει ο χρήστης στη λίστα. Η

λήψη του κειμένου γίνεται από την εφαρμογή με τη μέθοδο getText() του αντικειμένου

EditText. Το script εκτελεί στη βάση δεδομένων του μαθήματος το ερώτημα:

INSERT INTO posts_text (post_id, post_text) VALUES ('$post_id', '$post_text')

με το οποίο εισάγεται το κείμενο στον αντίστοιχο πίνακα. Πλέον η ανάρτηση έχει

ολοκληρωθεί και η δραστηριότητα τελειώνει αυτόματα, επιστρέφοντας στην Posts την τιμή

true. Με αυτό τον τρόπο η δραστηριότητα Posts αντιλαμβάνεται ότι υπήρξε νέα ανάρτηση

και φορτώνει τις δημοσιεύσεις του θέματος, ώστε να εμφανιστεί και η καινούρια

δημοσίευση, όπως αναλύθηκε στην προηγούμενη παράγραφο.

Ένα πράγμα που έπρεπε να ληφθεί υπόψη στη συγκεκριμένη δραστηριότητα είναι

το εξής. Το κείμενο που πληκτρολόγησε ο χρήστης δίνεται σαν όρισμα στο PHP script μέσα

από το url. Αν αυτό το κείμενο έχει κενά, όπως το “this is an Android post” τότε το url δε θα

είναι δόκιμο με αποτέλεσμα η εφαρμογή να τερματιστεί απρόσμενα. Για την επίλυση αυτού

το προβλήματος η Android εφαρμογή χρησιμοποιεί τη μέθοδο String.replace της Java, ώστε

να αλλάξει τα κενά με μία συγκεκριμένη σειρά χαρακτήρων (κάτι που ο χρήστης δε θα

Page 101: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 101

έγραφε υπό κανονικές συνθήκες. Επιλέχθηκε τυχαία το “QwErTyAsDfG”). Το

insertposttext.php λαμβάνει το κείμενο, βρίσκει τη συγκεκριμένη σειρά χαρακτήρων και την

αντικαθιστά ξανά με κενό, ώστε να δημιουργηθεί ξανά το αρχικό κείμενο.

5.17. Δοκιμή της εφαρμογής

Η εφαρμογή δοκιμάστηκε τόσο στον Android Emulator όσο και σε πραγματικές

συσκευές (Samsung Galaxy Y, HTC One X). Στον Emulator έγινε πειραματισμός με διάφορες

αναλύσεις οθόνης. Επίσης διεξήχθη πειραματισμός με τρεις διαφορετικούς χρήστες να

χρησιμοποιούν την εφαρμογή ταυτόχρονα, ώστε να διαπιστωθεί η αποκρισημότητα του

server. Δυστυχώς το γεγονός ότι το εικονικό eClass στήθηκε στον τοπικό server (localhost),

δεν έδωσε τη δυνατότητα πειραματισμού με περισσότερους χρήστες.

Επιπλέον διεξήχθησαν δοκιμές με τον χρήστη να αλληλεπιδρά με το eClass τόσο

μέσω της εφαρμογής όσο και μέσω του browser το υπολογιστή, ώστε να διαπιστωθεί αν

κάτι τέτοιο επηρεάσει την εγκυρότητα των δεδομένων στη βάση. Τα αποτελέσματα των

δοκιμών, τα συμπεράσματα που προέκυψαν, καθώς και προτάσεις για περαιτέρω μελέτη,

παρουσιάζονται στο προσεχές κεφάλαιο.

Page 102: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 102

ΚΕΦΑΛΑΙΟ 6: ΣΥΜΠΕΡΑΣΜΑΤΑ – ΠΡΟΤΑΣΕΙΣ ΓΙΑ ΠΕΡΑΙΤΕΡΩ MΕΛΕΤΗ

Στα προηγούμενα κεφάλαια παρουσιάστηκε αναλυτικά η εφαρμογή που αναπτύχθηκε για

τις ανάγκες της παρούσας εργασίας. Όπως προαναφέρθηκε, η εφαρμογή δεν φιλοδοξεί να

υλοποιήσει όλες τις λειτουργίες της ηλεκτρονικής πλατφόρμας eClass, αλλά αποσκοπεί σε

μία πρώτη υλοποίηση των πιο βασικών λειτουργιών που θα επιθυμούσε ένας χρήστης να

έχει διαθέσιμες στο κινητό του και η ανάπτυξη μίας αρχιτεκτονικής, η οποία να μπορεί να

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

Κάθε αλληλεπίδραση της εφαρμογής με τον server δοκιμάστηκε και η σωστή

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

εργαλείο phpMyAdmin του XAMPP. Η εφαρμογή σχεδιάστηκε έτσι ώστε να εξασφαλίζει τη

συνοχή τον δεδομένων. Για παράδειγμα ένας χρήστης δεν μπορεί να μεταβάλλει στοιχεία

που αφορούν έναν άλλο χρήστη. Σε αυτό συνέβαλλε και ο περιορισμένος σχετικά αριθμός

των λειτουργιών που υλοποιήθηκαν. Όσο το σύστημα μεγαλώνει ενδέχεται να χρειαστούν

περαιτέρω έλεγχοι.

Η εφαρμογή χρησιμοποιεί networking σε κάθε αλληλεπίδραση της με τον server.

Από τον πειραματισμό που έγινε, διαπιστώθηκε πώς κάθε αλληλεπίδραση (εκτός από το

κατέβασμα αρχείων), είναι ιδιαίτερα γρήγορη και πολύ σπάνια ξεπερνάει το ένα

δευτερόλεπτο. Στο κατέβασμα αρχείων, ο χρόνος εξαρτάται από το μέγεθος του αρχείου.

Παρόλα αυτά, το γεγονός ότι όλη η διαδυκτιακή δραστηριότητα γίνεται στο παρασκήνιο

(background), καθιστά την εφαρμογή αποκρίσιμη ακόμη και όταν βρίσκεται στη μέση μίας

διαδυκτιακής δραστηριότητας (για παράδειγμα κατέβασμα αρχείου). Αυτό είναι πολύ

σημαντικό, καθώς οδηγεί σε μία ομαλή εμπειρία για τον χρήστη, απαλλαγμένη από την

αναμονή για απόκριση της συσκευής.

Ο χρόνος απόκρισης του server δείχνει να μην επηρεάζεται όταν δύο οι τρεις clients

(συσκευές και emulator) διεξάγουν ερωτήματα. Δυστυχώς το γεγονός ότι ο server είναι

τοπικός, δεν δίνει τη δυνατότητα για τον πειραματισμό με περισσότερους και

απομακρυσμένους χρήστες. Ίσως σε μία τέτοια περίπτωση και ανάλογα με τον

αναμενόμενο αριθμό των χρηστών, να απαιτούνταν άλλες πρακτικές για τη γρήγορη

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

σενάριο όπου ο χρήστης έχει ασταθή σύνδεση στο διαδύκτιο. Το Android SDK παρέχει τη

μέθοδο getActiveNetworkInfo(), η οποία επιστρέφει αν υπάρχει ενεργή σύνδεση στο

Page 103: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 103

internet ή όχι. Οπότε με τη χρήση αυτής της μεθόδου, μπορεί η εφαρμογή να ενεργεί

αναλόγως με την απάντηση. Πάντως ο χειρισμός τέτοιων σεναρίων αποτελεί ένα σημαντικό

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

αντιμετώπιση είναι κάτι που αφήνεται για περεταίρω προβληματισμό και μελέτη.

Επιπροσθέτως διεξήχθησαν σενάρια όπου ο ίδιος χρήστης αλληλεπιδρά με το Open

eClass, τόσο από την εφαρμογή όσο και από τον browser του υπολογιστή του. Όπως

αναμενόταν κάτι τέτοιο δεν επηρεάζει τη συνοχή των δεδομένων και τα πειράματα έδειξαν

πως η λειτουργία ήταν ομαλή. Αυτό συμβαίνει γιατί και η εφαρμογή και το Open eClass σαν

διαδυκτιακή εφαρμογή, χρησιμοποιούν τις ίδιες βάσεις ως δεξαμενές δεδομένων. Οπότε

μία αλλαγή μέσω της εφαρμογής, είναι αναμενόμενο ότι θα είναι ορατή και από τον

browser και αντιστρόφως.

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

χρήση και στην κατανόησή της. Ο πειραματισμός έγινε με δέκα διαφορετικούς χρήστες και

ο βαθμός ευκολίας εξαρτάται και από τον βαθμό εξοικείωσής τους με τη χρήση των smart

phones. Πάντως όσοι ήταν χρήστες smart phones αντιλήφθηκαν πολύ γρήγορα τον τρόπο

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

θέμα στην ανάπτυξη εφαρμογών κινητών συσκευών και για αυτό το λόγο το θέμα χρήζει

περαιτέρω μελέτης.

Η γραφική ανάπτυξη της εφαρμογής υπήρξε λιτή, χρησιμοποιώντας κάποια από τα

εικονίδια της πλατφόρμας Open eClass και κάποια στάνταρτ μενού και διεπαφές που

παρέχει το Android Sdk. Αυτό έγινε διότι βάρος δόθηκε στην ίδια τη λειτουργικότητα, αλλά

και γιατί η παρουσίαση της ίδιας της πλατφόρμα Open eClass είναι απλή. Όμως οι ανάγκες

μίας εφαρμογής έξυπνου κινητού, διαφέρουν από μία διαδυκτιακή εφαρμογή

ηλεκτρονικού υπολογιστή. Σε επόμενη υλοποίηση θα μπορούσαν να χρησιμοποιηθούν

περισσότερες δυνατότητας από αυτές που παρέχει ένα smart phone με λειτουργικό

Android (swiping, dragging κλπ). Σε μία εμπορική εφαρμογή, εκτός από την

προγραμματιστική ομάδα κρίνεται απαραίτητη και μία γραφιστική, που θα ορίσει το

γραφικό περιβάλλον της εφαρμογής.

Εκτός από τα παραπάνω, αντικείμενο περεταίρω επεξεργασίας αποτελεί προφανώς

και η υλοποίηση περισσότερων λειτουργιών του Open eClass και ενσωμάτωσή τους στην

Android εφαρμογή. Η πλατφόρμα eClass, έχει αναπτυχθεί από μία ομάδα ερευνητών και

αποτελεί ένα ολοκληρωμένο σύστημα διαχείρισης ηλεκτρονικών μαθημάτων, το οποίο

Page 104: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 104

παρέχει μία πληθώρα δυνατοτήτων, έχει δοκιμαστεί εκτενώς και ήδη βρίσκετε στην έκδοση

2.5. Η παρούσα υλοποίηση προσφέρει μία εύχρηστη αρχιτεκτονική, όπου μπορεί να

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

ώστε σύντομα να αναπτυχθεί ένα ολοκληρωμένο πακέτο εμπορικών προδιαγραφών, το

οποίο να αποτελεί ένα αναπόσπαστο μέρος του Open eClass. Επιπλέον αποτελεί

αντικείμενο εργασίας η ανάπτυξη μίας παρόμοιας εφαρμογής σε συσκευές με διαφορετικό

λειτουργικό σύστημα (Ios, windows mobile).

Page 105: ΕΝΟΛΟΓΙΚΟ ΕΚΑΙΔΕΙΚΟ ΙΔΜΑ ΚΑΒΑΛΑ G MΟΛΗ …digilib.teiemt.gr/jspui/bitstream/123456789/1821/1/012012138.pdf · ελίδα | 4 Εισαγʙγή και

Σελίδα | 105

ΒΙΒΛΙΟΓΡΑΦΙΑ

1. E. Burnette (2009), “Hello, Android: Introducing Google's Mobile Development

Platform”, Pragmatic Bookshelf

2. R. Meier (2008), “Professional Android Application Development”, Wrox Programmer to

Programmer

3. L. Darcey, S. Conder (2010), “Teach Yourself Android Application Development in 24

Hours”, Sams

4. W. M. Lee (2011), “Beginning Android Tablet Application Development”, Wrox

Programmer to Programmer

5. B. Burd (2011), “Android Application Development All in one for Dummies”, For

Dummies

6. J. Lengstorf (2009), “PHP for Absolute Beginners”, Apress

7. R. Lerdorf, Κ. Tatroe, P. McIntyre (2009), “Programming PHP”, O’Reilly

8. J. Meloni (2008), “Teach Yourself PHP, MySQL and Apache All in One”, Sams

9. R.J.T. Dyer (2008), “MYSQL in a Nutshell”, O’Reilly

10. M.E.Davies, Jon.A.Phillips (2007), “Learning PHP & MySQL, 2nd Edition”, O’Reilly

ΙΣΤΟΣΕΛΙΔΕΣ

1. http://developer.android.com/guide/components/index.html

2. http://www.apachefriends.org/en/xampp.html

3. http://www.openeclass.org/

4. http://www.openeclass.org/downloads/files/docs/2.4/install_info_en.php