ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΟΥ ΖΩΓΡΑΦΙΚΗΣ ΜΕΣΩ ΚΟΙΝΩΝΙΚΟΥ ΔΙΚΤΥΟΥ ΜΕ ΣΥΝΔΕΣΗ BLUETOOTH ΣΕ ΠΛΑΤΦΟΡΜΑ ANDROID

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΟΥ ΖΩΓΡΑΦΙΚΗΣ ΜΕΣΩ ΚΟΙΝΩΝΙΚΟΥ ΔΙΚΤΥΟΥ ΜΕ ΣΥΝΔΕΣΗ BLUETOOTH ΣΕ ΠΛΑΤΦΟΡΜΑ ANDROID"

Transcript

1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΣΤΗΝ ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΟΥ ΖΩΓΡΑΦΙΚΗΣ ΜΕΣΩ ΚΟΙΝΩΝΙΚΟΥ ΔΙΚΤΥΟΥ ΜΕ ΣΥΝΔΕΣΗ BLUETOOTH ΣΕ ΠΛΑΤΦΟΡΜΑ ANDROID ( ΜΕ ΕΠΙΒΛΕΠΟΝΤΑ ΚΑΘΗΓΗΤΗ ΤΟΝ Κ. ΝΙΚΗΤΑ - ΜΑΡΙΝΟ ΣΓΟΥΡΟ ) ΠΑΛΑΜΗΔΗΣ ΑΘΑΝΑΣΙΟΣ του Ευαγγέλου Α.Μ. ~ ΜΕ11088 Διπλωματική Εργασία υποβληθείσα στο Τμήμα Ψηφιακών Συστημάτων του Πανεπιστημίου Πειραιώς ως μέρους των απαιτήσεων για την απόκτηση Μεταπτυχιακού Διπλώματος Ειδίκευσης στην Διδακτική της Τεχνολογίας και Ψηφιακών Συστημάτων Πειραιάς, Απρίλιος 2014

2 UNIVERSITY OF PIRAEUS DEPARTMENT OF DIGITAL SYSTEMS MASTER PROGRAM IN TECHNOLOGY EDUCATION AND DIGITAL SYSTEMS DESIGN OF A SOCIAL NETWORK PAINT GAME BY USING BLUETOOTH IN ANDROID PLATFORM BY PALAMIDIS ATHANASIOS EVANGELOU ΜΕ11088 (SUPERVISOR PROFFESSOR MR. NIKITAS - MARINOS SGOUROS) Master Thesis submitted to the Department of Digital Systems of the University of Piraeus in partial Fulfillment of the requirements for the degree of Master of Technology Education and Digital Systems Piraeus, Greece, April

3 Η διπλωματική εργασία είναι αφιερωμένη στους γονείς μου, στους φίλους και ιδιαίτερα στον αδελφό μου Παντελή Παλαμήδη που με στήριξε οικονομικά για να ολοκληρώσω τις μεταπτυχιακές μου σπουδές 3

4 Ευχαριστίες Θέλω να ευχαριστήσω θερμά τον επιβλέποντα καθηγητή μου κ. Νικήτα Μαρίνο Σγούρο για την ανάθεση της διπλωματικής εργασίας. 4

5 Περιεχόμενα ΕΙΣΑΓΩΓΗ... 9 ΑΝΤΙΚΕΙΜΕΝΟ ΤΗΣ ΕΡΓΑΣΙΑΣ... 9 ΚΕΦΑΛΑΙΟ 1 Ο ΓΕΝΙΚΑ - ΠΑΙΧΝΙΔΙΑ ΚΟΙΝΩΝΙΚΗΣ ΔΙΚΤΥΩΣΗΣ Η έννοια του Social Gaming Παιχνίδια κοινωνικής δικτύωσης ( Social Network Games ) Η τεχνολογία και οι πλατφόρμες Ιδιαίτερα χαρακτηριστικά των παιχνιδιών κοινωνικής δικτύωσης H Κοινωνική δικτύωση (Social Network) σε δίκτυα κινητών επικοινωνιών Τύποι κοινωνικών δικτύων κινητής τηλεφωνίας Μοντέλα κοινωνικών δικτύων κινητής τηλεφωνίας Στατιστικά στοιχεία για το φύλο και την ηλικία Στατιστικά στοιχεία πρόσβασης κοινωνικών παιχνιδιών μέσω συσκευών Στατιστικά στοιχεία κοινωνικών δικτύων που χρησιμοποιούνται Στατιστικά στοιχεία για τις δραστηριότητες των Social Networks ΚΕΦΑΛΑΙΟ 2 Ο ΠΛΑΤΦΟΡΜΑ ANDROID ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ Τι είναι η πλατφόρμα Android Βασικά χαρακτηριστικά του Android Οι εκδόσεις του Android μέχρι σήμερα Android εκδοση Cupcake Android εκδοση Donut Android εκδοση 2.1 Eclair Android εκδοση Froyo Android εκδοση Gingerbread Android εκδοση Honeycomb Android εκδοση 4.0 Ice Cream Sandwich Android εκδοση 4.1 Jelly Bean Android εκδοση 4.4 KitKat

6 2.4 Η αρχιτεκτονική του Android Ο πυρήνας Linux Kernel Οι Βιβλιοθήκες (Libraries) Ο χρόνος εκτέλεσης εφαρμογής (Android Runtime) Η Εικονική μηχανή (Dalvik Virtual Machine) Το πλαίσιο εφαρμογής ( Application Framework ) Οι εφαρμογές ( Applications) Τα στάδια του κύκλου ζωής μιας δραστηριότητας Activity Τα συστατικά μέρη μιας εφαρμογής στο Android Οι βιβλιοθήκες ενός project Οι φάκελοι και τα αρχεία ενός project Το αρχείο AndroidManifest.xml Καρτέλα καταγραφής (Logcat) Το Android πακέτο με επέκταση.apk ΚΕΦΑΛΑΙΟ 3 Ο ΕΙΣΑΓΩΓΗ ΣΤΟ ECLIPSE - FACEBOOK SDK Ξεκινώντας με το Eclipse Android και οι απαραίτητες ρυθμίσεις του Δημιουργία Application στο Facebook Εισαγωγή (Import) του SDK στο Eclipse Δημιουργία Hash Key για την εφαρμογή Δημιουργία νέου Android project και η βιβλιοθήκη Facebook SDK XML Facebook Δημιουργία button του facebook στο Eclipse Οι βασικές βιβλιοθήκες και εντολές του facebook Οι άδειες (Permissions) του Facebook Τα κυριότερα σημεία του κώδικα του Facebook ΚΕΦΑΛΑΙΟ 4 Ο BLUETOOTH CHAT Γενικά για το bluetooth

7 4.2 Οι βασικές βιβλιοθήκες και κλάσεις του Bluetooth Οι άδειες (permissions) του bluetooth Ενεργοποιώντας το Bluetooth Αντιστοίχηση συσκευών bluetooth Ανακαλύπτοντας τις συσκευές Ενεργοποιήση Bluetooth ώστε να είναι ορατή σε άλλες συσκευές Σύνδεση ως server Σύνδεση ως client Διαχείριση της σύνδεσης bluetooth Αποστολή και λήψη μηνυμάτων στο chat μέσω bluetooth Εμφάνιση λέξης για τον χρήστη που θα ζωγραφίσει και εμφάνιση μηνύματος νικητή του παιχνιδιού Μοίρασμα μηνύματος του νικητή στο Facebook και επιτυχής έξοδος από την εφαρμογή PaintGuess ΚΕΦΑΛΑΙΟ 5 Ο Η ΖΩΓΡΑΦΙΚΗ ΣΤΟ ΚΙΝΗΤΟ Τα γραφικά στη ζωγραφική του Android Οι δείκτες αφής (touch Events) στη ζωγραφική Η βασική δομή της ζωγραφικής Βασικές εντολές στη ζωγραφική Βασικές εντολές στους δείκτες αφής - οθόνης xml layout ζωγραφικής Βασικά σημεία του κώδικα ζωγραφικής Τελικό αρχείο AndroidManifest.xml ΚΕΦΑΛΑΙΟ 6 Ο ΠΕΡΙ ΤΗΣ ΕΦΑΡΜΟΓΗΣ PAINT GUESS Ελάχιστες απαιτήσεις της εφαρμογής PaintGuess Εγκατάσταση της εφαρμογής PaintGuess στο κινητό Περιγραφή της εφαρμογής PaintGuess Πλεονεκτήματα της εφαρμογής PaintGuess

8 6.5 Mειονεκτήματα της εφαρμογής PaintGuess Προβλήματα που υπήρξαν κατά την διάρκεια δημιουργίας της εφαρμογής PaintGuess ΚΕΦΑΛΑΙΟ 7 Ο ΤΟ ΜΕΛΛΟΝ ΤΟΥ SOCIAL GAMING Καλωσορίσατε στο μέλλον των παιχνιδιών Τι επιφυλάσσει το μέλλον για παιχνίδια μέσω κοινωνικής δικτύωσης του facebook Το μέλλον των κοινωνικών παιχνιδιών είναι mobile Μελλοντικές σκέψεις για την εφαρμογή PaintGuess ΒΙΒΛΙΟΓΡΑΦΙΑ

9 ΕΙΣΑΓΩΓΗ ΑΝΤΙΚΕΙΜΕΝΟ ΤΗΣ ΕΡΓΑΣΙΑΣ Αντικείμενο της παρούσας εργασίας είναι η δημιουργία ενός διαδραστικού παιχνιδιού τύπου social gaming που θα αναδεικνύει έναν κοινωνικό χαρακτήρα σε λειτουργικό περιβάλλον android. Η εφαρμογή παιχνιδιού που θα δημιουργηθεί με αυτή την εργασία θα έχει άμεση σχέση με τη ζωγραφική. Πιο συγκεκριμένα ο σκοπός του παιχνιδιού θα είναι ο χρήστης να ανακαλύψει και να πληκτρολογήσει κάποια λέξη ή φράση που θα βλέπει να δημιουργείται η εικόνα στην οθόνη της συσκευής android που κατέχει. Η εικόνα που θα δημιουργείται στην οθόνη του χρήστη θα είναι η ζωντανή αναμετάδoση της ζωγραφιάς που υλοποιείται την ίδια στιγμή από άλλον χρήστη στον οποίο έχει δοθεί μία λέξη/φράση κλειδί. Όπως διαφαίνεται καθαρά από τα προηγούμενα, η εφαρμογή χρειάζεται τουλάχιστον 2 χρήστες για να λειτουργήσει (ο πρώτος χρήστης ζωγραφίζει και ο δεύτερος μαντεύει). Παρόλα αυτά τα έντονα κοινωνικά χαρακτηριστικά του παιχνιδιού γίνονται εντονότερα όταν πολλοί χρήστες συγχρόνως παίζουν το ρόλο αυτού που μαντεύει. Έτσι ο σκοπός του παιχνιδιού από την πλευρά του χρήστη δεν είναι μόνο να βρίσκει την λέξη/φράση που βλέπει να ζωγραφίζεται αλλά να το κάνει αυτό πιο γρήγορα από τους υπόλοιπους χρήστες. Κάθε σωστή απάντηση θα ενημερώνει όλους τους χρήστες ποιος χρήστης βρήκε την σωστή λέξη/φράση και ποια είναι η λέξη/φράση. Κοινωνικά χαρακτηριστικά της εργασίας : Ο κοινωνικός χαρακτήρας του παιχνιδιού έχει να κάνει με δύο χαρακτηριστικά του: Α) Η εφαρμογή θα παρέχει και τη δυνατότητα ανταλλαγής μηνυμάτων στους χρήστες μέσω παραθύρου chat όπου οι χρήστες θα μπορούν να επικοινωνούν μεταξύ τους αλλά και να πληκτρολογούν τις απαντήσεις τους. Β) Η είσοδος του χρήστη στην εφαρμογή θα γίνεται με login από το facebook ενώ αν κάποιος χρήστης μαντέψει σωστά την ζωγραφιά τότε θα αναρτάται μήνυμα ότι είναι ο νικητής. 9

10 Τεχνικές απαιτήσεις για τη δημιουργία παιχνιδιού Η εφαρμογή και η δημιουργία του παιχνιδιού καθώς και των επί μέρων στοιχείων του θα γίνει με τη χρήση του emulator προγράμματος eclipse sdk και ύστερα θα μεταφερθεί σε κάθε συσκευή κινητό με λειτουργικό android για να παίξει ο κάθε χρήστης. Απαραίτητος κώδικας θα δημιουργηθεί για τα εξής επιμέρους στοιχεία: i) Facebook login που θα αναλυθεί περαιτέρω στο 3 ο κεφάλαιο. ii) Chat Bluetooth που θα αναλυθεί περαιτέρω στο 4 ο κεφάλαιο. iii) Ζωγραφική που θα αναλυθεί περαιτέρω στο 5 ο κεφάλαιο. Συνοπτικά θα πούμε για τα κεφάλαια που ακολουθούν. Στο 1 ο κεφάλαιο θα αναφερθούμε στην έννοια και στα χαρακτηριστικά του social gaming και πώς έχει αλλάξει αυτό το είδος παιχνιδιών στα κινητά τηλέφωνα, τα λεγόμενα smart phones. Στο 2 ο κεφάλαιο θα μιλήσουμε για την πλατφόρμα Android στα κινητά τηλέφωνα και θα δούμε τα επιμέρους χαρακτηριστικά του και την αρχιτεκτονική του. Στο 3 ο κεφάλαιο θα αναφερθούμε στην εγκατάσταση του Eclipse SDK και τις απαραίτητες ρυθμίσεις που χρειάζεται για να δουλέψει σωστά το συγκεκριμένο πρόγραμμα. Επίσης θα αναφερθούμε στο κοινωνικό δίκτυο του Facebook και στο τρόπο με τον οποίο μπορούμε να κάνουμε την συγκεκριμένη εφαρμογή μας να λειτουργήσει με κοινωνικά χαρακτηριστικά ( social gaming ). Στο 4 ο κεφάλαιο θα αναφερθούμε στο Bluetooth chat, όπου θα αναλυθεί ο κώδικας Java του Bluetooth chat και θα περιγράψουμε τον τρόπο που θα επικοινωνούν και θα γράφουν μηνύματα μεταξύ τους οι χρήστες. Στο 5 ο κεφάλαιο θα αναφερθούμε στη ζωγραφική στο κινητό Android όπου θα αναλυθεί ο κώδικας Java και τα επιμέρους χαρακτηριστικά του. Επίσης θα δούμε τον τρόπο με τον οποίο στέλνει ο χρήστης αυτό που ζωγραφίζει στους υπόλοιπους χρήστες που συμμετέχουν. Στο 6 ο κεφάλαιο θα αναφερθούμε στην εφαρμογή του παιχνιδιού PaintGuess που έφτιαξα, και θα δούμε τον τρόπο λειτουργίας του παιχνιδιού. Επίσης θα αναφερθούμε σε διαφορά προβλήματα που αντιμετώπισα καθ όλου τη διάρκεια υλοποίησης της συγκεκριμένης εφαρμογής PaintGuess. Τέλος, στο τελευταίο και 7 ο κεφάλαιο θα αναφερθούμε στο μέλλον του social gaming και σε μελλοντικές ιδέες που θα μπορούσαν να βελτιώσουν την συγκεκριμένη εφαρμογή PaintGuess. 10

11 ΚΕΦΑΛΑΙΟ 1 Ο ΓΕΝΙΚΑ - ΠΑΙΧΝΙΔΙΑ ΚΟΙΝΩΝΙΚΗΣ ΔΙΚΤΥΩΣΗΣ 1.1 Η έννοια του Social Gaming Το social gaming όπως ονομάζεται, συνήθως αναφέρεται στα παιχνίδια που έχουν κοινωνική αλληλεπίδραση μεταξύ των χρηστών όταν παίζουν, σε αντίθεση με τα παιχνίδια που είναι για έναν και μόνο χρήστη - παίκτη. Οι κατηγορίες παιχνιδιών τύπου social gaming μπορεί να είναι : Παιχνίδια με τράπουλα (card games) που αφορούν πολλαπλούς παίκτες. Παιχνίδια κοινωνικής δικτύωσης (Social Network Game) που αναφέρεται σε παιχνίδια με κοινωνικό δίκτυο ολοκλήρωσης ή στοιχείων. Επιτραπέζια παιχνίδια (board games), στην οποία μετρητές, ή κομμάτια τοποθετούνται, μετακινούνται ή αφαιρούνται σε μια μαρκαρισμένη επιφάνεια σύμφωνα με ένα σύνολο από κανόνες. Βιντεοπαιχνίδια με πολλούς παίκτες (Multiplayer Video Games), όπου περισσότεροι από ένας παίχτης μπορούν να παίξουν σε ένα παιχνίδι περιβάλλοντος την ίδια χρονική στιγμή. Υπάρχουν δύο είδη σε αυτήν την κατηγορία : ΜΜΟ (όπως και MMORPG και MMORTS) LAN PARTY, όπου γίνεται μια προσωρινή συγκέντρωση ανθρώπων που συμμετέχουν και παίζουν σε ένα τοπικό δίκτυο LAN, κυρίως για παιχνίδια πολλών παικτών στον ηλεκτρονικό υπολογιστή Παιχνίδια ρόλων (Role-playing Games), ένα παιχνίδι στο οποίο οι παίκτες αναλαμβάνουν τους ρόλους των χαρακτήρων σε ένα φανταστικό περιβάλλον. Reality Games, μια διαδραστική αφήγηση που προσφέρει μια πλατφόρμα για να διερευνήσει πιθανές καταστάσεις και στις κοινωνικές συναναστροφές, αποφεύγοντας τις συνέπειες του πραγματικού κόσμου. 1.2 Παιχνίδια κοινωνικής δικτύωσης ( Social Network Games ) Ένα παιχνίδι κοινωνικής δικτύωσης ( Social Network Game ) είναι ένα είδος online παιχνιδιού που παίζεται μέσα από διάφορα κοινωνικά δίκτυα και αποτελείται από πολλαπλούς 11

12 παίκτες (multiplayer) και μηχανισμούς ασύγχρονου τρόπου παιχνιδιού (gameplay). Τα παιχνίδια κοινωνικής δικτύωσης τα συναντάμε πιο συχνά σε εφαρμογές browsing στο διαδίκτυο, αλλά μπορεί επίσης να εφαρμοστούν και σε άλλες πλατφόρμες όπως στις κινητές συσκευές. Είναι αναμφισβήτητα τα πιο διάσημα παιχνίδια σε ολόκληρο τον κόσμο με χιλιάδες προϊόντα και υπηρεσίες κ με εκατομμύρια παίκτες. Τα παιχνίδια (lil) green patch, Happy Farm, Farm Town, YoVille, και Mob Wars ήταν τα πρώτα επιτυχημένα παιχνίδια αυτής της γενιάς. Σήμερα τα πιο δημοφιλή παιχνίδια κοινωνικής δικτύωσης είναι το FarmVille (Εικόνα 1.1), CityVille, Gardens of Times και το Sims Social. Σε αντίθεση με τα παραδοσιακά video games, τα παιχνίδια κοινωνικής δικτύωσης συχνά προσελκύουν νέους ανθρώπους που να τους κάνουν να τα προτιμούν περισσότερο. Παραδοσιακά, αυτά τα παιχνίδια είναι προσανατολισμένα να είναι τυχαία παιχνίδια ή αλλιώς casual games όπως ονομάζονται. Εταιρείες που κατασκευάζουν παιχνίδια κοινωνικής δικτύωσης στην αγορά περιλαμβάνονται μεταξύ άλλων οι Zynga, MegaZebra, Wooga, 5 Minutes, PlayFish, PlayDom, Kabam, Crowdstar,RockYou, Booyah και Row Sham Bow Inc. ΕΙΚΟΝΑ 1.1 : Το πιο δημοφιλές παιχνίδι κοινωνικής δικτύωσης, το Farmville 1.3 Η τεχνολογία και οι πλατφόρμες Ένα βιντεοπαιχνίδι κοινωνικής δικτύωσης μπορεί να δημιουργηθεί με οποιαδήποτε τεχνολογία των παραδοσιακών παιχνιδιών, ωστόσο στην πλειοψηφία τους υλοποιούνται με Adobe Flash, PHP ή JavaScript. Μερικά παιχνίδια μπορούν να χρησιμοποιήσουν ένα συνδυασμό από αυτές τις τεχνολογίες. Σε ορισμένες περιπτώσεις η έννοια του παιχνιδιού έχει έρθει πιο κοντά στα παιχνίδια κοινωνικής δικτύωσης για να καταστήσουν την τεχνολογία πιο ελκυστική με το να ενθαρρύνουν τους χρήστες να συμμετέχουν σε επιθυμητές συμπεριφορές 12

13 και να είναι σε θέση να λύνουν προβλήματα αξιοποιώντας την ψυχολογική προδιάθεση του ανθρώπου με το να συμμετέχουν στο παιχνίδι. Ένα παιχνίδι κοινωνικής δικτύωσης συνήθως παίζεται μέσω περιηγητή διαδικτύου, ωστόσο είναι ευδιάκριτα από παιχνίδια βασισμένα στη περιήγηση με τέτοιο τρόπο που επηρεάζουν τα κοινωνικό γράφημα του παίκτη και ξεχωρίζει τα δεδομένα χρηστών που είναι μέρος του κοινωνικού δικτύου. Με την ανακάλυψη των κινητών συσκευών Smartphones, τα παιχνίδια κοινωνικής δικτύωσης έχουν ήδη εξαπλωθεί ραγδαία σε πλατφόρμες κινητών συσκευών τηλεφώνων όπως οι συσκευές με λειτουργικό ios και Android. Ετσι δίνεται η δυνατότητα μέσα από κινητά κοινωνικά δίκτυα όπως το OpenFeint και μέσω Oauth με υλοποιήσεις από δικτυακούς τόπους κοινωνικής δικτύωσης όπως είναι το Facebook, τα οποία επιτρέπουν εφαρμογές σε κινητές συσκευές να αποκτήσουν πρόσβαση σε ένα περιορισμένο ποσοστό των προστατευόμενων δεδομένων του χρήστη σε αυτές τις ιστοσελίδες. Μέσω μιας εσωτερικής εφαρμογής (in-app) και σε σύνδεση με αυτά τα δίκτυα, οι χρήστες μπορούν να έχουν μια εμπειρία πολύ παρόμοια με εκείνη ενός παιχνιδιού βασισμένη σε ιστότοπο παιχνιδιού. Έχει προβλεφθεί ότι το Social Gaming θα φέρει πάνω από 6 δισεκατομμύρια δολάρια σε έσοδα, μέχρι το Ιδιαίτερα χαρακτηριστικά των παιχνιδιών κοινωνικής δικτύωσης Ένα κοινωνικό βίντεο παιχνίδι μπορεί να χρησιμοποιεί σε οποιοδήποτε από τα ακόλουθα χαρακτηριστικά : Asynchronous gameplay: που επιτρέπει τους κανόνες που πρέπει να επιλυθούν, χωρίς να χρειάζεται οι παίκτες να παίξουν ταυτόχρονα. Κοινότητα (Community): Ένα από τα πιο ιδιαίτερα χαρακτηριστικά των κοινωνικών παιχνιδιών βίντεο είναι σε επιρροή του κοινωνικού δικτύου του παίκτη. Αναζητήσεις ή στόχους στο παιχνίδι μπορεί να είναι δυνατή μόνο εάν ένας παίκτης "μοιράζει" το παιχνίδι με τους φίλους του (που συνδέονται μέσω του κοινωνικού δικτύου που φιλοξενεί το παιχνίδι) είτε τους παίρνει να παίξει, ως «γείτονας» ή «εχθρός» τους. Δεν υπάρχουν προϋποθέσεις νίκης (No victory conditions): Δεδομένου ότι οι περισσότεροι προγραμματιστές υπολογίζουν στους χρήστες να παίζουν συχνά τα παιχνίδια τους, γενικά δεν υπάρχουν προϋποθέσεις νίκης. Δηλαδή, το παιχνίδι δεν 13

14 τελειώνει ποτέ και κανείς δεν έχει ποτέ κηρυχθεί "νικητής". Αντ 'αυτού, πολλά casual games έχουν «αποστολές» ή «αποστολές» για τους παίκτες για να ολοκληρωθεί. Αυτό δεν ισχύει για τα επιτραπέζια παιχνίδια -όπως τα κοινωνικά παιχνίδια, όπως το Scrabble. Εικονικό νόμισμα (Virtual Currency): Κοινωνικά παιχνίδια δικτύου που χρησιμοποιούν «εικονικά νομίσματα», τα οποία οι παίκτες συνήθως πρέπει να αγοράσουν με χρήματα στο πραγματικό κόσμο. Με τα νομίσματα αυτά μπορεί ο παίχτης μέσα στο παιχνίδι να αγοράσει αναβαθμίσεις που διαφορετικά θα πάρει πολύ περισσότερο χρόνο για να κερδίσουν τα επιτεύγματα μέσα στο παιχνίδι. Σε πολλές περιπτώσεις, κάποιες αναβαθμίσεις είναι διαθέσιμα μόνο μέσω του εικονικού νομίσματος. Ο παρακάτω πίνακας περιγράφει τα κοινά χαρακτηριστικά των κοινωνικών παιχνιδιών, όπως αναφέρει ο Björk στο 2010 GCO Games Convention on-line 14

15 15

16 1.5 H Κοινωνική δικτύωση (Social Network) σε δίκτυα κινητών επικοινωνιών H Κοινωνική δικτύωση σε δίκτυα κινητών επικοινωνιών ξεκίνησε ως υπηρεσία συνομιλιών (chat services) στην Ιαπωνία, Σκανδιναβία, Ιταλία, Γαλλία και τις ΗΠΑ από το 1999 και έπειτα εξελίχτηκε σε chat rooms και σε κοινοτικές υπηρεσίες γραπτών μηνυμάτων. Με την εισαγωγή των διαφόρων τεχνολογιών σε δίκτυα κινητής τηλεφωνίας, η κοινωνική δικτύωση έχει φτάσει σε ένα επίπεδο εκ των προτέρων πάνω από τέσσερις γενιές : 1 Η Γενιά : Η Πρώτη γενιά ξεκίνησε το 1999 ή στις αρχές του Οι τεχνολογίες που χρησιμοποιούνται σε αυτή τη γενιά είναι εφαρμογές που βασίζονται, σε προ-εγκατεστημένα κινητά τηλέφωνα. Κύρια Χαρακτηριστικά όπως text κείμενο συνομιλίας μέσω chat rooms. Οι άνθρωποι που εμπλέκονται που χρησιμοποίησαν τις υπηρεσίες αυτές είναι ανώνυμες. Οι υπηρεσίες αυτής της γενιάς κινητών σε κοινωνικά δίκτυα μπορούν να χρησιμοποιηθούν από το λεγόμενο «pay as you go» ή την εγγραφή σε κάποια υπηρεσία. 2 Η Γενιά : Η Δεύτερη γενιά ξεκίνησε το 2004 έως το Η Εισαγωγή των 3G και κινητά τηλέφωνα με κάμερα προσθέτει πολλά χαρακτηριστικά, όπως ανέβασμα φωτογραφιών, αναζήτηση μέσω κινητού τηλεφώνου για το πρόσωπο με βάση το προφίλ, επικοινωνία/φλερτάρισμα με πρόσωπο ανώνυμα κλπ. Η Περιφερειακή κατανομή αυτών των χαρακτηριστικών περιλαμβάνουν την Ιαπωνία, την Κορέα, την Αυστραλία, τη Δυτική Ευρώπη και τις ΗΠΑ. Οι εφαρμογές αυτές είναι κυρίως χρήσιμες για εφαρμογές γνωριμιών. 3 Η Γενιά : Τα πειράματα για αυτή τη γενιά κινητών κοινωνικής δικτύωσης ξεκίνησε το Η απόφαση αυτή εγκρίθηκε ευρέως το 2008/2009. Αυτή η γενιά έφερε τεράστιες αλλαγές και έκανε την κινητή κοινωνικής δικτύωσης ως μέρος της καθημερινής ζωής. Τα χαρακτηριστικά γνωρίσματα περιλαμβάνουν πλούσια εμπειρία του χρήστη, αυτόματη δημοσίευση στο προφίλ του στο διαδίκτυο και ενημερώσεις κατάστασης, web 2.0 χαρακτηριστικά, αναζήτηση μέσω ομάδων από κοινά ενδιαφέροντα, ειδοποιήσεις, τοποθεσίες με βάση τη θέση και ανταλλαγή υπηρεσιών μουσικού περιεχομένου κλπ.. Τεχνολογίες για WAP 2.0, Java μέσω διακομιστή Server, MMS, εφαρμογές για σύλληψη φωνής κλπ. Οι διάφορες εφαρμογές είχαν προσαρμοστεί με γενικό συμφέρον, όπως τη μουσική, όπου γινόταν διανομή τραγουδιών στο κινητό τηλέφωνο. Περιφερειακή κατανομή αυτής της γενιάς των κινητών κοινωνικά δίκτυα περιλαμβάνουν την Ιαπωνία, την Κορέα, τη Δυτική Ευρώπη και τη Βόρεια Αμερική. Η 16

17 διαφήμιση και οι διάφορες διαφημιστικές καμπάνιες που υποστήριζαν το περιεχόμενο αυτό γινόταν ολοένα και πιο σημαντική. 4 Η Γενιά : Η τέταρτη γενιά ξεκίνησε το 2008 και έφτασε στο 2010.Όλα τα χαρακτηριστικά της τρίτης γενιάς έχουν μεταφερθεί σε αυτή τη γενιά των κοινωνικών δικτύων κινητής τηλεφωνίας. Τα χαρακτηριστικά αυτής της γενιάς περιλαμβάνουν τα χαρακτηριστικά της τρίτης γενιάς, την ικανότητα να κρύψει / παρουσία μάσκα, ασύγχρονη συνομιλία βίντεο, πολυκάναλο ήχο για συνομιλία chat με το πάτημα ενός κουμπιού, multiplayer παιχνίδια για κινητά κλπ. Οι τεχνολογίες που έκαναν αυτά τα χαρακτηριστικά εφικτά είναι τα widgets, web 2.0, Flash Lite, Open Social, Open Handset Alliance. Το επιχειρηματικό μοντέλο της προηγούμενης γενιάς συνεχίστηκε μαζί με το «εικονικό νόμισμα» με την αγορά και το εμπόριο των εικονικών αγαθών. 1.6 Τύποι κοινωνικών δικτύων κινητής τηλεφωνίας Αρχικά, υπήρχαν δύο βασικοί τύποι κοινωνικών δικτύων κινητής τηλεφωνίας. Το πρώτο είναι οι εταιρείες που συνεργάζονται με ασύρματο τηλέφωνο με μεταφορείς για τη διανομή των κοινοτήτων τους μέσω των σελίδων έναρξης με προεπιλογή για προγράμματα περιήγησης κινητών τηλεφώνων. Ένα παράδειγμα αυτού είναι το JuiceCaster. Ο δεύτερος τύπος είναι οι εταιρείες που δεν έχουν τέτοιες σχέσεις με φορέα (επίσης γνωστή ως «από το κατάστρωμα») και βασίζονται σε άλλες μεθόδους για να προσελκύσουν τους χρήστες. 1.7 Μοντέλα κοινωνικών δικτύων κινητής τηλεφωνίας Οι ιστότοποι κοινωνικής δικτύωσης για κινητά τηλέφωνα επιτρέπουν στους χρήστες να δημιουργήσουν ένα προφίλ, να κάνουν αποστολή και λήψη μηνυμάτων μέσω του τηλεφώνου ή του υπολογιστή και να επισκέπτονται ένα online ιστότοπο του διαδικτύου στο κινητό τηλέφωνο. Υπάρχουν διάφορα μοντέλα που είχαν προσαρμοστεί από διάφορες περιοχές δικτύωσης. Τα περισσότερα από αυτά τα sites έχουν πολλές δυνατότητες με μοναδικό χαρακτηριστικό ή την ειδική λειτουργία που άλλες περιοχές δεν μοιράζονται, αλλά η κύρια λειτουργία του δικτυακού τόπου είναι ακριβώς η ίδια με άλλες υπηρεσίες. Όλα αυτά τα sites ανήκουν σε διάφορες κατηγορίες ανάλογα με τα επιχειρηματικά μοντέλα. 17

18 1.8 Στατιστικά στοιχεία για το φύλο και την ηλικία Σε μια έρευνα που έγινε από την εταιρεία Informations Solution Group (ISP) όσο αφορά το φύλο ανδρών και γυναικών, έδειξε ότι το περασμένο χρόνο άνδρες και γυναίκες που έπαιξαν παιχνίδια κοινωνικού χαρακτήρα στο κινητό τηλέφωνο είχαν το ίδια ποσοστά όπως μπορούμε να δούμε στο παρακάτω γράφημα 1.1. Αξίζει να σημειωθεί ότι οι άνδρες χρησιμοποιούν εξίσου το ίδιο ένα κινητό ή ένα tablet για να παίξουν ένα παιχνίδι κοινωνικού χαρακτήρα. Γράφημα 1.1 : Πίνακας ποσοστού των δύο φύλων που έπαιξαν στο κινητό ένα παιχνίδι. Όσο αφορά την ηλικία, ο κατά μέσος όρος ηλικίας ενός ατόμου που παίζει ένα παιχνίδι στο κινητό είναι 39.5 χρόνια σε σχέση με το 2011 που ήταν Τα δύο τρίτα (66%) των ατόμων που παίζουν παιχνίδια στο κινητό είναι μικρότεροι σε ηλικία από 45 χρονών, καθώς το 16% είναι 55 χρονών ή παραπάνω σε ηλικία. Η μέση τιμή αυτών που παίζουν παιχνίδια σε tablet είναι 44.7 όπως φαίνεται στο παρακάτω γράφημα 1.2. Γράφημα 1.2 : Πίνακας ποσοστού κατά ηλικία ανά φύλο όσων παίζουν παιχνίδια στο κινητό ή στο tablet 18

19 1.9 Στατιστικά στοιχεία πρόσβασης κοινωνικών παιχνιδιών μέσω συσκευών Σε σχέση με αυτούς που παίζουν κοινωνικά παιχνίδια σε επιτραπέζιους υπολογιστές ή λαπτοπ, πάνω από το 1/3 (38%) των ατόμων παίζουν μέσω ενός κινητού τηλεφώνου, το 20% χρησιμοποιεί μια κονσόλα παιχνιδιών, και το 10% παίζει παιχνίδια στο tablet. Επίσης οι χρήστες που παίζουν κοινωνικά παιχνίδια προτιμούν τις ipads συσκευές και τα tablets περισσότερο στις Ην. Πολιτείες από ότι στο Ηνωμένο Βασίλειο, ενώ οι χρήστες που παίζουν κοινωνικά παιχνίδια στο Ηνωμένο Βασίλειο προτιμούν περισσότερα τα κινητά τηλέφωνα από ότι στις Ην. Πολιτείες (Γράφημα 1.3 και γράφημα 1.4). Σε σχέση με το 2010 έχει αυξηθεί η χρησιμοποίηση κινητού τηλεφώνου για κοινωνικά παιχνίδια το 2011 (Γράφημα1.5). Γράφημα 1.3 : Ποσοστό προτίμησης συσκευών για τους χρήστες που παίζουν κοινωνικά παιχνίδια Γράφημα 1.4 : Ποσοστά προτίμησης συσκευών για κοινωνικά παιχνίδια για το έτος

20 Γράφημα 1.5 : Ποσοστά προτίμησης συσκευών για κοινωνικά παιχνίδια για το έτος Στατιστικά στοιχεία κοινωνικών δικτύων που χρησιμοποιούνται Στο 91% των χρηστών, το Facebook είναι το προτιμότερο κοινωνικό δίκτυο που προτιμούν οι χρήστες για να παίξουν ένα παιχνίδι, ακολουθώντας το google+ με 17%, το MySpace με 15% και το bebo με 7%. Το Google+ και το MySpace είναι ελάχιστα πιο δημοφιλή στους χρήστες που παίζουν πολλές ώρες καθημερινά τους λεγόμενους Avid social gamers.(γράφημα 1.6) Γράφημα 1.6 :Ποσοστά χρηστών που παίζουν παιχνίδια σε κοινωνικά δίκτυα 1.11 Στατιστικά στοιχεία για τις δραστηριότητες των Social Networks Οι χρήστες ξοδεύουν περισσότερο από 56% από το χρόνο τους σε κοινωνικά δίκτυα παίζοντας παιχνίδια, με το 39% από το χρόνο τους να ξοδεύεται παίζοντας κοινωνικά παιχνίδια μαζί με άλλους χρήστες. Εκτός από το να παίζουν παιχνίδια, οι χρήστες ανταλλάζουν μηνύματα ή κάνουν chat με φίλους και αναρτήσουν/διαβάζουν μηνύματα στο προφίλ των χρηστών φίλων Ως αναμενόμενο, οι λεγόμενοι Avid gamers αφιερώνουν περισσότερο χρόνο παίζοντας παιχνίδια σε κοινωνικά δίκτυα, ειδικότερα κοινωνικά παιχνίδια (Γράφημα 1.7). 20

21 Γράφημα 1.7 : Ποσοστά χρηστών που κάνουν διάφορες δραστηριότητες σε κοινωνικά δίκτυα για το έτος 2010 και

22 22

23 ΚΕΦΑΛΑΙΟ 2 Ο ΠΛΑΤΦΟΡΜΑ ANDROID ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ 2.1 Τι είναι η πλατφόρμα Android Το Android είναι ένα λειτουργικό σύστημα για συσκευές κινητής τηλεφωνίας το οποίο τρέχει τον πυρήνα του λειτουργικού Linux. Αρχικά αναπτύχθηκε από την Google και αργότερα από την Open Handset Alliance. Επιτρέπει στους κατασκευαστές λογισμικού να συνθέτουν κώδικα με την χρήση της γλώσσας προγραμματισμού Java, ελέγχοντας την συσκευή μέσω βιβλιοθηκών λογισμικού ανεπτυγμένων από την Google. Η πρώτη παρουσίαση της πλατφόρμας Android έγινε στις 5 Νοεμβρίου 2007, παράλληλα με την ανακοίνωση της ίδρυσης του οργανισμού Open Handset Alliance, μιας κοινοπραξίας 48 τηλεπικοινωνιακών εταιριών, εταιριών λογισμικού καθώς και κατασκευής hardware, οι οποίες είναι αφιερωμένες στην ανάπτυξη και εξέλιξη ανοιχτών προτύπων στις συσκευές κινητής τηλεφωνίας. Η Google δημοσίευσε το μεγαλύτερο μέρος του κώδικα του Android υπό τους όρους της Apache License, μιας ελεύθερης άδειας λογισμικού. Το λογότυπο για το λειτουργικό σύστημα Android είναι ένα ρομπότ σε χρώμα πράσινο μήλο και σχεδιάστηκε από τη γραφίστρια Irina Blok (εικόνα 2.1.1). Εικόνα : Το λογότυπο για το λειτουργικό σύστημα Android 23

24 2.2 Βασικά χαρακτηριστικά του Android Λειτουργίες Οθόνης Η πλατφόρμα είναι προσαρμόσιμη σε μεγαλύτερη ανάλυση (VGA), δισδιάστατες ψηφιακές γραφικές βιβλιοθήκες, τρισδιάστατα γραφικά βασισμένα στην OpenGL ES 1.0 έκδοση χαρακτηριστικών, καθώς και παραδοσιακές απεικονίσεις οθόνης "έξυπνων" συσκευών κινητής τηλεφωνίας. Αποθήκευση Δεδομένων Χρήση βάσης δεδομένων SQLite για τις ανάγκες αποθήκευσης Συνδεσιμότητα Το Android υποστηρίζει τεχνολογίες συνδεσιμότητας συμπεριλαμβανομένου GSM/EDGE, CDMA, EV-DO, UMTS, Bluetooth, και Wi-Fi. Αποστολή μηνυμάτων SMS και MMS είναι οι διαθέσιμοι τρόποι ανταλλαγής μηνυμάτων. Περιήγηση στον Ιστό Για την περιήγηση στον ιστό το Android διαθέτει φυλλομετρητή βασισμένο στην ανοιχτή τεχνολογία WebKit. Υποστήριξη Java Λογισμικό γραμμένο στην Java είναι δυνατόν να μεταγλωττιστεί και να εκτελεστεί στην εικονική μηχανή Dalvik, η οποία αποτελεί εξειδικευμένη υλοποίηση εικονικής μηχανής, σχεδιασμένης για χρήση σε φορητές συσκευές, παρόλο που δεν είναι πρότυπη εικονική μηχανή Java. Υποστήριξη Πολυμέσων Το λειτουργικό Android υποστηρίζει τις ακόλουθα μορφές ήχου, στατικής και κινούμενης εικόνας: H.263, H.264 (σε 3GP ή MP4 container), MPEG-4 SP, AMR, AMR-WB, AAC, HE-AAC, MP3, MIDI, OGG Vorbis, WAV, JPEG, PNG, GIF, BMP. 24

25 Επιπλέον υποστήριξη υλικού Το λειτουργικό Android μπορεί να συνεργαστεί με κάμερες στατικής ή κινούμενης εικόνας, οθόνες αφής, GPS, αισθητήρες επιτάχυνσης, μαγνητόμετρα, δισδιάστατους καθώς και τρισδιάστατους επιταχυντές γραφικών. Περιβάλλον Ανάπτυξης Λογισμικού Περιλαμβάνει ένας προσομοιωτή συσκευής, εργαλεία για διόρθωση σφαλμάτων, μνήμη και εργαλεία ανάλυσης της απόδοσης του εκτελέσιμου λογισμικού καθώς και ένα επιπρόσθετο για το Eclipse IDE. Αγορά και Εγκατάσταση Εφαρμογών Παρόμοια με το App Store του iphone OS, το Android Market είναι ένας κατάλογος εφαρμογών που μπορούν να μεταφορτωθούν και εγκατασταθούν στην συσκευή άμεσα μέσω ασύρματων καναλιών, χωρίς την χρήση υπολογιστή. Αρχικά μόνο δωρεάν εφαρμογές ήταν δυνατόν να εγκατασταθούν. Εφαρμογές επί πληρωμή ήταν μετέπειτα διαθέσιμες στο Android Market στις ΗΠΑ ύστερα από τις 19 Φεβρουαρίου Οθόνη Αφής Πολλαπλών Σημείων Το λειτουργικό Android είχε εξ ορισμού υποστήριξη για οθόνες πολλαπλών σημείων αλλά η δυνατότητα αυτή έχει κλειδωθεί σε επίπεδο πυρήνα (πιθανόν για αποφυγή παραβιάσεων των πατεντών λογισμικού της Apple στις τεχνολογίες οθονών αφής). Κυκλοφορεί μια ανεπίσημη τροποποίηση (mod) που έχει αναπτυχθεί για να υποστηρίζει πολλαπλή επαφή (multi-touch), αλλά απαιτεί δικαιώματα πρόσβασης υπέρ-χρήστη (superuser) στη συσκευή για να γραφεί στη μνήμη flash ένας πυρήνας που να μην είναι υπογεγραμμένος (unsigned kernel). 2.3 Οι εκδόσεις του Android μέχρι σήμερα Το Android είναι ένα προϊόν ελεύθερου λογισμικού, όπου το λογισμικό του συνεχώς αναβαθμίζεται. Υπάρχουν συνολικά 9 εκδόσεις λογισμικού του Android σε διάστημα 5 ετών (περίοδος ). Αξιοσημείωτες αλλαγές στο λειτουργικό Android θα παρουσιαστούν στις επόμενες εκδόσεις παρακάτω και περιλαμβάνουν αλλαγές στο σύστημα διαχείρισης των 25

26 μεταφορτώσεων,το λογισμικό συστήματος, το ραδιόφωνο και το σύστημα τηλεφωνίας, εργαλεία προγραμματισμού, το κυρίως σύστημα και διάφορες εφαρμογές, καθώς και πληθώρες διορθώσεις σφαλμάτων. Android εκδοση Cupcake Στις 30 Απριλίου 2009, κυκλοφόρησε η επίσημη έκδοση 1.5 με όνομα Cupcake για το Android. Τα νέα χαρακτηριστικά του είναι : Δυνατότητα καταγραφής κινούμενης εικόνας με την χρήση της αντίστοιχης λειτουργίας του τηλεφώνου Μεταφόρτωση αρχείων βίντεο στο YouTube και εικόνων στο Picasa κατευθείαν από το τηλέφωνο Επανασχεδιασμένο λογισμικό πληκτρολογίου με λειτουργία αυτόματης συμπλήρωσης κειμένου Δυνατότητα αυτόματης σύνδεσης ασύρματης συσκευής ακουστικού Bluetooth εφόσον εντοπιστεί σε μια συγκεκριμένη απόσταση Νέα widgets και φάκελοι που μπορούν να τοποθετηθούν στην επιφάνεια εργασίας Εφέ αλλαγής οθονών και μενού Διευρυμένη λειτουργία αντιγραφής/επικόλλησης για να περιλαμβάνει δικτυακές διευθύνσεις Android εκδοση Donut Στις 15 Σεπτεμβρίου 2009 κυκλοφόρησε η έκδοση 1.6, με όνομα Donut. Τα νέα χαρακτηριστικά του είναι : Υποστήριξη επιλογής πολλαπλών αρχείων ταυτόχρονα Ανανεωμένο γκαλερί και φωτογραφική μηχανή Βελτιωμένο Android Market Ανανεωμένη φωνητική αναζήτηση Δυνατότητας κλήσης επαφών Δυνατότητα αναζήτησης σελιδοδεικτών, ιστορικού και επαφών Υποστήριξη για ανάλυση οθονών WVGA Ανανεωμένη υποστήριξη τεχνολογιών για CDMA/EVDO, 802.1x, VPNs Μηχανή μετατροπής κειμένου σε ομιλία (text-tospeech) 26

27 Android εκδοση 2.1 Eclair Στις 26 Οκτωβρίου του 2009 κυκλοφόρησε η έκδοση 2.1, με όνομα Éclair. Τα νέα χαρακτηριστικά του είναι : Ταχύτερη απόκριση του υλικού σε σχέση με τις δυο προηγούμενες Υποστήριξη περισσότερων οθόνων και αναλύσεων Υποστήριξη πρότυπου browser HTML5 Βελτιωμένοι χάρτες Google Yποστήριξη φλας για την κάμερα η οποία έχει πλέον και ψηφιακό zoom. Δυνατότητα για γεγονότα πολλαπλής αφής (multitouch events) Υποστήριξη Bluetooth 2.1 Android εκδοση Froyo Στις 20 Μαΐου του 2010 παρουσιάστηκε η έκδοση 2.2 με όνομα Froyo. Τα νέα χαρακτηριστικά του είναι : Ταχύτερο λειτουργικό σύστημα, μεγαλύτερη μνήμη και καλύτερη απόδοση Υποστήριξη JavaScript του Chrome V8 στον browser, και Adobe Flash 10.1 Υποστήριξη Microsoft Exchange Ανανεωμένο Android Market Δυνατότητα εγκατάστασης εφαρμογών στην κάρτα μνήμης και η μεταφορά τους εκεί από τη μνήμη του τηλεφώνου Υποστήριξη WiFi hotspot στο τηλέφωνο Android εκδοση Gingerbread Στις 6 Δεκεμβρίου του 2010 παρουσιάστηκε η έκδοση 2.3 με όνομα Gingerbread. Τα νέα χαρακτηριστικά του είναι : Υποστήριξη για πρωτόκολλο SIP για κλήσεις μέσω VoIP Υποστήριξη τύπος βίντεο WebM/VP8 και κωδικοποιητής AAC Βελτιωμένος ήχος καθώς και λειτουργίες απεικόνισης για την ανάπτυξη παιχνιδιών Υποστήριξη NFC (Near Field Communication) και η ύπαρξη πολλαπλών καμερών Βελτιωμένη ενεργειακή υποστήριξη και μετατροπή αρχείων YAFFS σε 27

28 ext4 στις νέες συσκευές Android εκδοση Honeycomb Στις 9 Μαΐου του 2011 παρουσιάστηκε η έκδοση 3.0 με όνομα Honeycomb. Τα νέα χαρακτηριστικά του είναι : Νέο User Interface και υποστηρίζονται διπύρηνοι και τετραπύρηνοι επεξεργαστές Απλοποίηση του multitasking έτσι ώστε ο χρήστης να μπορεί με τη χρήση ενός πλήκτρου (recent apps) να περνάει από μια εφαρμογή σε άλλη Δυνατότητα για Video Chat μέσω της εφαρμογής Google Talk καθώς η ανάγνωση βιβλίων μέσω του Google ebooks Κρυπτογράφηση όλων των δεδομένων χρήστη Android εκδοση 4.0 Ice Cream Sandwich Στις 19 Οκτωβρίου του 2011 παρουσιάστηκε η έκδοση 4.0 με όνομα Ice Cream Sandwich. Τα νέα χαρακτηριστικά του είναι : Αλλαγμένο User Interface, όπου υπάρχουν εικονικά πλήκτρα τα οποία παίρνουν τη θέση των φυσικών ή αφής που υπήρχαν στις συσκευές Βελτίωση της ασφάλεια του συστήματος με αναγνώριση προσώπου για ξεκλείδωμα συσκευής Νέος browser που μπορεί να ανοίξει ταυτόχρονα μέχρι και 16 καρτέλες Δυνατότητα τερματισμού εφαρμογών που τρέχουν στο background από το χρήστη Νέα εφαρμογή Android Beam που επιτρέπει την αποστολή δεδομένων από τη συσκευή σε όσες βρίσκονται εντός μιας μικρής ακτίνας εμβέλειας Υποστήριξη Wi-Fi Direct συσκευών που μπορούν να συνδεθούν μεταξύ τους ασύρματα χωρίς την μεσολάβηση κάποιου access point Υποστήριξη εγγραφής βίντεο σε 1080p Android εκδοση 4.1 Jelly Bean Στις 24 Ιουλίου του 2013 παρουσιάστηκε η έκδοση 4.1 με όνομα Jelly Bean. Τα νέα χαρακτηριστικά του είναι : Notification Shade με νέες λειτουργίες στην αρχική οθόνη που αφορούν τις ειδοποιήσεις. 28

29 Νέα Widgets, που δείχνουν τις εφαρμογές, την μουσική, τα βίντεο, τα παιχνίδια ή τα βιβλία που χρησιμοποιήσατε τελευταία. Αλλαγή μεγέθους εικόνας με παρατεταμένο άγγιγμα Ανανεωμένο πληκτρολόγιο, με σημαντικότερη βελτίωση την πρόβλεψη της επόμενης λέξης που εκτιμάται ότι θα γράψει ο χρήστης, με βάση το ιστορικό της συγγραφής του Νέες γλώσσες υποστήριξης Android εκδοση 4.4 KitKat Αναμένεται το Δεκέμβριο του 2013 η νέα έκδοση android 4.4 με λογότυπο την γνωστή σοκολάτα KitKat. Φημολογίες λένε ότι η νέα έκδοση θα έχει καλύτερη αυτονομία μπαταρίας, αποθήκευση δεδομένων σε σύστημα clouding όπως το πρόγραμμα dropbox. Επίσης θα παρέχει βελτιωμένη ασφάλεια και αλλαγές στην βελτίωση του προσανατολισμού της εικόνας καθώς και διορθώσεις σφαλμάτων. Τέλος θα έχει παγκόσμια κάλυψη δικτύου και μεγαλύτερη υποστήριξη hardware. Μέχρι τώρα έχουμε δει πολλές εκδόσεις του Android που κυκλοφόρησαν, αλλά αν παρατηρήσουμε προσεχτικά αυτές οι εκδόσεις που έχουν κυκλοφορήσει είναι σε αλφαβητική σειρά. Επίσης, όλες οι εκδόσεις έχουν όνομά κάποιο επιδόρπιο: Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice Cream Sandwich, Jelly Bean και τώρα Kitkat. Παρακάτω φαίνεται στην εικόνα όλα τα λογότυπα εκδόσεων που περιγράψαμε παραπάνω. Εικόνα : Όλα τα λογότυπα εκδόσεων Android 29

30 2.4 Η αρχιτεκτονική του Android Η πλατφόρμα του Android αποτελείται από μια στοίβα λογισμικού. Τα επίπεδα της στοίβας του Android χωρίζονται σε πέντε ενότητες και σε τέσσερα κύρια στρώματα όπως φαίνεται παρακάτω στο διάγραμμα αρχιτεκτονικής από το υψηλότερο επίπεδο προς το χαμηλότερο επίπεδο (εικόνα 2.4.1). Εικόνα : Η αρχιτεκτονική του Android Τα βασικά επίπεδα της αρχιτεκτονικής android είναι οι εξής : O πυρήνας Linux (Linux Kernel) Οι προηγμένες βιβλιοθήκες (Libraries) Η εικονική μηχανή Dalvik (Dalvik VM) Ο χρόνος εκτέλεσης (Android Runtime) Το πλαίσιο εφαρμογής (Application Framework) Οι εφαρμογές (Applications) 30

31 2.5 Ο πυρήνας Linux Kernel Στο πρώτο επίπεδο που είναι και το κάτω μέρος της στοίβας βρίσκεται ο πυρήνας Linux Kernel. Ποτέ δεν αλληλοεπιδρά με τους χρήστες και με τους προγραμματιστές αλλά βρίσκεται στην καρδιά του όλου συστήματος. Η σημασία του πηγάζει από το γεγονός ότι παρέχει τις ακόλουθες λειτουργίες στο σύστημα Android : Αφαίρεση υλικού Hardware (Hardware Abstraction) Προγράμματα Διαχείρισης Μνήμης ( Memory Management Programs) Ρυθμίσεις ασφάλειας ( Security Settings) Λογισμικό Διαχείρισης Ενέργειας (Power Management Software) Άλλα προγράμματα οδήγησης υλικού (camera driver -wifi driver κτλ) Υποστήριξη για τις κοινές βιβλιοθήκες ( Shared Libraries Support) Στοίβα Δικτύου (Network Stack) Παρακάτω υπάρχει ένας πίνακας με όλες τις εκδόσεις Android και οι αντίστοιχες εκδόσεις του πυρήνα Kernel Linux (εικόνα 2.5.1). Εικόνα : Εκδόσεις Android και εκδόσεις πυρήνα Kernel Linux 2.6 Οι Βιβλιοθήκες (Libraries) Το επόμενο επίπεδο στην αρχιτεκτονική Android περιλαμβάνει τις μητρικές βιβλιοθήκες του Android. Οι βιβλιοθήκες αυτές φέρουν ένα σύνολο οδηγιών για να καθοδηγήσει τη συσκευή στο χειρισμό διαφορετικών τύπων δεδομένων. Για παράδειγμα, η αναπαραγωγή και την καταγραφή των διαφόρων μορφών ήχου και βίντεο καθοδηγείται από τη Βιβλιοθήκη Media Framework. 31

32 Οι Βιβλιοθήκες ανοικτού κώδικα είναι οι παρακάτω : Surface Manager (σύνθεση των παραθύρων στην οθόνη) SGL (2D γραφικά) Open GL ES (3D Βιβλιοθήκη) Media Framework (Αφορά την διαχείριση των πολυμέσων και βασίζεται στην πλατφόρμα PacketVideo OpenCORE (codec)) Free type (απόδοση γραμματοσειράς) WebKit (ένα Application Framework το οποίο επιτρέπει την κατασκευή ενός web browser) libc (Βιβλιοθήκες συστήματος C) SQLite (Απλή σχεσιακή βάση δεδομένων για την διαχείριση του συστήματος) Open SSL (Υποστήριξη για χρήση των Secure Sockets Layer του κρυπτογραφικού πρωτοκόλλου για ασφαλείς επικοινωνίες μέσω διαδικτύου) 2.7 Ο χρόνος εκτέλεσης εφαρμογής (Android Runtime) Στο ίδιο επίπεδο με τις βιβλιοθήκες βρίσκεται το στρώμα Android runtime που περιλαμβάνει ένα σύνολο βιβλιοθηκών πυρήνα Java. Οι προγραμματιστές του android φτιάχνουν τις εφαρμογές τους, χρησιμοποιώντας τη γλώσσα προγραμματισμού Java. Περιλαμβάνει επίσης την Dalvik Virtual Machine. 2.8 Η Εικονική μηχανή (Dalvik Virtual Machine) Το Dalvik Virtual Machine είναι ένα λογισμικό ανοικτού κώδικα. Είναι το λογισμικό που ευθύνεται για τη λειτουργία των εφαρμογών για Android συσκευές. Ο Dan Bornstein ονόμασε το λογισμικό Dalvik VM από την ονομασία ενός χωριού Dalvik στην περιοχή Eyjarjorour της Ισλανδίας όπου διέμεναν ψαράδες προγονοί του. Τα χαρακτηριστικά του Dalvik VM είναι : Έχει ένα μητρώο με βάση την εικονική μηχανή Είναι βελτιστοποιημένο για χαμηλές απαιτήσεις μνήμης Έχει σχεδιαστεί για να επιτρέπει να τρέχουν ταυτόχρονα πολλαπλές εικονικές μηχανές VM Βασίζεται στον υποκείμενο λειτουργικό σύστημα για την απομόνωση της διαδικασίας, διαχείριση μνήμης και threading υποστήριξη Λειτουργεί με DEX αρχεία 32

33 2.9 Το πλαίσιο εφαρμογής ( Application Framework ) Οι εφαρμογές μας αλληλεπιδρούν άμεσα με αυτά τα τμήματα της αρχιτεκτονικής Android. Τα προγράμματα αυτά διαχειρίζονται τις βασικές λειτουργίες του τηλεφώνου, όπως τη διαχείριση των πόρων, η φωνή διαχείριση κλήσεων κλπ. Σημαντικά τμήματα του πλαισίου εφαρμογής ( Application Framwork): Διαχειριστής Δραστηριότητας: Διαχειρίζεται τον κύκλο δραστηριοτήτων της ζωής των εφαρμογών. Οι πάροχοι περιεχομένου: Διαχειρίζεται την ανταλλαγή δεδομένων μεταξύ των εφαρμογών. Υπεύθυνος Τηλεφωνίας: Διαχειρίζεται όλες τις φωνητικές κλήσεις. Χρησιμοποιούμε υπεύθυνο τηλεφωνίας, αν θέλουμε να έχουμε πρόσβαση φωνητικών κλήσεων κατά την εφαρμογή μας. Υπεύθυνος Τοποθεσίας: Περιοχή διαχείρισης, με χρήση GPS ή πύργο κυττάρων Διαχείριση πόρων: διαχείριση των διαφόρων τύπων των πόρων που χρησιμοποιούμε στην εφαρμογή μας 2.10 Οι εφαρμογές ( Applications) Οι εφαρμογές βρίσκονται στο ανώτερο επίπεδο της στοίβας Android. Ένας μέσος χρήστης της συσκευής Android θα ήταν ως επί το πλείστον να αλληλεπιδρούν με αυτό το επίπεδο (για τις βασικές λειτουργίες, όπως η πραγματοποίηση τηλεφωνικών κλήσεων, την πρόσβαση στο πρόγραμμα περιήγησης στο Web, κλπ.). Τα στρώματα πιο κάτω είναι προσβάσιμα ως επί το πλείστον από τους προγραμματιστές, και τους developers. Πολλές βασικές εφαρμογές έχουν εγκατασταθεί με κάθε συσκευή, όπως: SMS client app Dialer Πρόγραμμα περιήγησης στο Web Επικοινωνία manager 33

34 2.11 Τα στάδια του κύκλου ζωής μιας δραστηριότητας Activity Για να αναπτυχθεί μια επιτυχημένη εφαρμογή, είναι σημαντικό για τον προγραμματιστή να χαρτογραφήσει την πλήρη ροή των δραστηριοτήτων που βασίζεται στην ενέργεια του χρήστη. Αυτό θα εξασφαλίσει ότι η εφαρμογή συμπεριφέρεται ακριβώς όπως αναμενόταν. Συνεπώς, η κατανόηση της δραστηριότητας του κύκλου ζωής είναι πολύ σημαντική για τους προγραμματιστές. Ακολουθώντας τα διαφορετικά στάδια του κύκλου ζωής μιας δραστηριότητας Activity όπως φαίνεται στη παρακάτω εικόνα Εικόνα : Ο κύκλος ζωής μιας δραστηριότητας Activity Κατάσταση Ξεκινήματος (Starting) : Όταν μια δραστηριότητα δεν υπάρχει ακόμη στη μνήμη, είναι στην αρχική κατάσταση. Κατάσταση Επαναληπτικής (Running) : Μια δραστηριότητα που βρίσκεται στο προσκήνιο είναι σε κατάσταση λειτουργίας. Κάθε δραστηριότητα που είναι στην οθόνη και αλληλεπιδρά με το χρήστη είναι η λειτουργία της δραστηριότητάς εκείνη τη συγκεκριμένη χρονική στιγμή. Βρίσκεται στην κορυφή της στοίβας Δραστηριότητας Activity. Κατάστασης Παύσης (Paused) : Όταν μια δραστηριότητα δεν είναι στο επίκεντρο (δηλαδή να μην αλληλεπιδρά με το χρήστη), αλλά εξακολουθεί να είναι ορατό στην οθόνη, είναι σε κατάσταση παύσης. 34

35 Κατάστασης Διακοπής (Stopped) : Μια δραστηριότητα που δεν είναι ορατή στην οθόνη, αλλά υπάρχει στη μνήμη, είναι στην κατάσταση διακοπής. Κατάσταση Καταστροφής (Destroyed) : Ένα κατεστραμμένο αποτέλεσμα μιας δραστηριότητας από την αφαίρεση μιας δραστηριότητας (δηλαδή δεν απαιτείται πλέον) από τη μνήμη. Τέτοιες μετακομίσεις εμφανίζονται γενικά, όταν ο διαχειριστής δραστηριότητα αποφασίσει ότι δεν υπάρχει καμία χρήση πιά για τις δραστηριότητες αυτές Τα συστατικά μέρη μιας εφαρμογής στο Android Τα συστατικά μέρη μιας εφαρμογής αναφέρονται στο αρχείο Manifest.xml που θα εξηγήσουμε παρακάτω. Τα ποιο σημαντικά μέρη είναι τα παρακάτω : Δραστηριότητες (Activities) : Ένα Activity αποτελεί τον θεμέλιο λίθο ενός User Interface. Κατ' αναλογία, ένα Activity είναι για μια Android εφαρμογή ότι ένα παράθυρο ή ένας διάλογος για μία desktop παραθυρική εφαρμογή. Κάθε εφαρμογή λοιπόν αποτελείται από τουλάχιστον ένα Activity ή και περισσότερα, αν η εφαρμογή χρησιμοποιεί περισσότερες από μίας οθόνες διάδρασης. Τα activities χρησιμοποιούν views και fragments για να τοποθετήσουν στο επίπεδο και να εμφανίσουν πληροφορία, αλλά και να αποκριθούν σε ενέργειες του χρήστη. Προθέσεις (Intents) : Τα Intents είναι από τα πιο σημαντικά συστατικά της πλατφόρμας και περιγράφουν ένα μήνυμα συστήματος. Τα μηνύματα αυτά παράγονται και 'κυκλοφορούν' στο σύστημα καθ' όλη τη χρονική περίοδο κατά την οποία η συσκευή είναι σε λειτουργία και ενημερώνουν τις εφαρμογές για κάθε είδους συμβάν που λαμβάνει χώρα ανά πάσα χρονική στιγμή. Ένα τέτοιο συμβάν μπορεί να είναι μια αλλαγή στην κατάσταση μιας hardware συσκευής (π.χ. ο χρήστης ενεργοποίησε το Bluetooth), η εισροή δεδομένων (π.χ. μόλις παραλήφθηκε ένα SMS), ή ένα συμβάν που προκλήθηκε από μία εφαρμογή μετά από χειρισμό του χρήστη (π.χ. ο χρήστης έκανε κλικ σε ένα link και πρέπει να ανοίξει ο web browser και να προβληθεί η αντίστοιχη ιστοσελίδα). Υπηρεσίες (services) : Μια υπηρεσία μπορεί να λειτουργεί στο παρασκήνιο για να εκτελέσει την εργασία ακόμα και όταν ο χρήστης βρίσκεται σε μια διαφορετική εφαρμογή. Για παράδειγμα ακούγοντας μουσική από τo Media Player ενώ διαβάζει ο χρήστης κάποια μηνύματα. 35

36 Πάροχοι Περιεχομένου (Content Providers) : Οι Content Providers αποτελούν ένα μέσο μόνιμης αποθήκευσης και συνήθως αλληλεπιδρούν με SQL βάσεις δεδομένων. Αποτελούν επίσης και τον προτιμώμενο τρόπο διαμοιρασμού δεδομένων πέραν των ορίων μιας εφαρμογής. Μπορούμε να ρυθμίσουμε τον content provider της εφαρμογής μας να επιτρέπει την πρόσβαση στα δεδομένα του από άλλες εφαρμογές και όμοια η εφαρμογή μας, μπορεί να χρησιμοποιεί τους content providers που παρέχουν οι άλλες εφαρμογές. Για παράδειγμα, μία εφαρμογή που θέλει να έχει πρόσβαση στις επαφές του τηλεφώνου π.χ. για να πραγματοποιήσει μία κλήση, θα πρέπει να κάνει χρήση του αντίστοιχου Content Provider. Διεργασίες και νήματα (Processes and Threads) : Κάθε εφαρμογή τρέχει στη δική της διαδικασία και όλα τα στοιχεία της εφαρμογής τρέχουν σε αυτή τη διαδικασία, από προεπιλογή. Το Android θα μπορούσε να αποφασίσει να κλείσει μια διαδικασία σε κάποιο σημείο, όταν η μνήμη είναι χαμηλή και απαιτείται από άλλες διαδικασίες να τρέξουν που είναι πιο άμεση η εξυπηρέτηση του χρήστη. Για την αποφυγή οποιασδήποτε διακοπής της εφαρμογής θα πρέπει να γίνει η δραστηριότητα (Activity) σε νέο νήμα (thread) για να αποφευχθεί η επιβράδυνση της διεπαφής του χρήστη. Δικαιώματα (Permissions) : Μια βασική εφαρμογή Android δεν έχει δικαιώματα που συνδέονται με αυτό από προεπιλογή, που σημαίνει ότι δεν μπορούμε να κάνουμε τίποτα που θα μπορούσε να επηρεάσει αρνητικά την εμπειρία του χρήστη ή τα δεδομένα στη συσκευή. Για να κάνουμε χρήση των προστατευόμενων χαρακτηριστικών της συσκευής, πρέπει να συμπεριλάβουμε στο δικό μας AndroidManifest.xml αρχείο μία ή περισσότερες <usespermission> ετικέτες δηλώνοντας τα δικαιώματα που έχει ανάγκη η εφαρμογή μας. Για παράδειγμα, μια εφαρμογή που πρέπει να επιτρέψει την πρόσβαση στο διαδίκτυο στο αρχείο AndroidManifest.xml: <manifest xmlns:android=" package="com.android.app.myapp" > <uses-permission android:name="android.permission.internet" />... </manifest> 36

37 2.13 Οι βιβλιοθήκες ενός project Οι βιβλιοθήκες σε ένα project βρίσκονται συνήθως στο φάκελο lib και περιέχουν ένα σύνολο αρχείων JAR. Μια βιβλιοθήκη μπορεί να προστεθεί από τις ιδιότητες του project μέσα από το Eclipse SDK. Στην καρτέλα Java Build Path μπορεί ο χρήστης να ορίσει, να εισάγει, να εξάγει, ή και να αφαιρέσει κάποια βιβλιοθήκη Οι φάκελοι και τα αρχεία ενός project Ένα project Android περιλαμβάνει τους παρακάτω φακέλους και αρχεία όταν δημιουργείται καινούργιο Project στο Eclipse SDK : Αρχείο Manifest.xml - Σε αυτό το αρχείο ορίζονται τα activities, content providers, services και intent receivers της εφαρμογής. Επίσης ορίζονται οι άδειες που απαιτούνται από την εκάστοτε εφαρμογή. Φάκελος gen Φάκελος που περιέχει πόρους που δημιουργήθηκαν αυτόματα Φάκελος assets Μια αυθαίρετη συλλογή από αρχεία και φακέλους Φάκελος src - Περιέχει όλα τα αρχεία κώδικα της εφαρμογής Φάκελος res - ο φάκελος αυτός περιέχει τους πόρους της εφαρμογής. Είναι ο φάκελος γονέας των drawable, anim, layout, menu, value, xml και raw Φάκελος drawable [h/l/m/xh]dpi - Περιέχει τις εικόνες που χρησιμοποιούνται στην εφαρμογή ή αρχεία που τις περιγράφουν για διάφορα μεγέθη οθονών. Φάκελος layout - Περιέχει τα αρχεία που καθορίζουν την όψη και τα γραφικά της εφαρμογής. Φάκελος menu Φάκελος που περιέχει αρχεία XML που περιγράφουν τα μενού της εφαρμογής Φάκελος values Φάκελος που περιέχει άλλους πόρους που χρησιμοποιεί η εφαρμογή όπως strings ή χρώματα 2.15 Το αρχείο AndroidManifest.xml Κάθε Android project περιλαμβάνει ένα αρχείο manifest, το AndroidManifest.xml, που αποθηκεύεται στην κορυφή της ιεραρχίας των αρχείων στο project. Το manifest ορίζει τη δομή και τα δεδομένα της εφαρμογής, τα συστατικά της και τις απαιτήσεις της. 37

38 Περιλαμβάνει κόμβους για κάθε μια από τις Activities, Services, Content Providers και Broadcast Receivers που αποτελούν μια εφαρμογή και χρησιμοποιώντας τα Intent Filters και τα Permissions καθορίζει πως θα αλληλεπιδρούν μεταξύ τους και με άλλες εφαρμογές. Το manifest μπορεί επίσης να καθορίσει τα μετά-δεδομένα της εφαρμογής (όπως τα icons, τον αριθμό της έκδοσης ή το theme) και επιπρόσθετους κόμβους στο top-level που ορίζουν τα απαιτούμενα permissions, τα unit tests ενώ ορίζονται και τις απαιτήσεις ως προς το υλικό, την οθόνη και την πλατφόρμα. Το manifest αποτελείται από το root tag manifest το οποίο περιέχει ένα package attribute που ορίζεται στο πακέτο του project. Περιλαμβάνει επίσης και ένα xmlns:android attribute που παρέχει διάφορα attributes συστήματος που χρησιμοποιούνται μέσα στο αρχείο. Χρησιμοποιούμε το attribute versioncode για να ορίσουμε την τρέχουσα έκδοση της εφαρμογής σαν έναν ακέραιο που αυξάνει με κάθε σημαντική αλλαγή στην εφαρμογή και χρησιμοποιούμε το versionname attribute για να καθορίσουμε το όνομα της έκδοσης που θα είναι ορατή στους χρήστες. Μπορούμε επίσης να ορίσουμε αν θα επιτρέπεται ή αν είναι επιθυμητό να εγκαθίσταται η εφαρμογή σε εξωτερικό αποθηκευτικό μέσο (συνήθως μια κάρτα SD) αντί μιας εσωτερικής πηγής χρησιμοποιώντας το attribute installlocation, θέτοντας την τιμή preferexternal ή auto, όπου η πρώτη εγκαθιστά την εφαρμογή σε εξωτερικό μέσο όποτε είναι δυνατό και η δεύτερη αφήνει την απόφαση στο σύστημα. Αν δεν ορίσουμε το attribute αυτό, η εφαρμογή θα εγκατασταθεί στην εσωτερική μνήμη και οι χρήστες δεν θα μπορούν να τη μεταφέρουν σε κάποια εξωτερική. Επειδή η εσωτερική μνήμη είναι περιορισμένη, είναι καλό όποτε αυτό είναι δυνατό να εγκαθιστούμε την εφαρμογή στην εξωτερική μνήμη. Ένα από τα πιο σημαντικά elements του manifest είναι το <uses-sdk>, το οποίο ορίζει τη συμβατότητα της εφαρμογής με διάφορες εκδόσεις του Android χρησιμοποιώντας τα attributes android:minsdkversion και android:targetsdkversion. Για την εφαρμογή μας αυτά μοιάζουν με τον ακόλουθο κώδικα: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="com.example.myfirstproject" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="17" /> </manifest> Θα πρέπει να θέτουμε το attribute android:targetsdkversion στην υψηλότερη δυνατή τιμή και να τη δοκιμάζουμε στην αντίστοιχη έκδοση της πλατφόρμας. 38

39 2.16 Καρτέλα καταγραφής (Logcat) H καρτέλα Logcat στο Eclipse SDK παρέχει έναν μηχανισμό για την συλλογή, τον εντοπισμό και την προβολή των σφαλμάτων στην έξοδο του συστήματος. Καταγράφεται το τι γίνεται κάθε στιγμή στην εφαρμογή. Αυτό μπορεί να γίνει είτε μέσω του command line με την εντολή adb logcat είτε μέσω του Eclipse προγράμματος. Εικόνα : Παράδειγμα καταγραφής στη καρτέλα Logcat το τι γίνεται κάθε στιγμή στην εφαρμογή 2.17 Το Android πακέτο με επέκταση.apk Το Android πακέτο με επέκταση apk περιέχει όλες τις απαραίτητες πληροφορίες για να εκτελεστεί η εφαρμογή μας σε ένα κινητό τηλέφωνο ή στον εξομοιωτή Eclipse SDK. Αφού γίνει compile το project μπορούμε να σώσουμε και να εξάγουμε το project σαν συμπιεσμένο πακέτο με κατάληξη.apk και να το μεταφέρουμε στο κινητό τηλέφωνο και τέλος να εγκαταστήσουμε κ να τρέξουμε την εφαρμογή. Το παρακάτω διάγραμμα δείχνει πώς γίνεται η διαδικασία αυτή (εικόνα ). Εικόνα : Διαδικασία εγκατάστασης και μεταφοράς του project σε συσκευή ή στον Εξομοιωτή 39

40 40

41 ΚΕΦΑΛΑΙΟ 3 Ο ΕΙΣΑΓΩΓΗ ΣΤΟ ECLIPSE - FACEBOOK SDK 3.1 Ξεκινώντας με το Eclipse Android και οι απαραίτητες ρυθμίσεις του Το πρόγραμμα Eclipse είναι η καλύτερη επιλογή για να ξεκινήσει κάποιος να προγραμματίζει εφαρμογές για λειτουργικό Android. Ξεκινώντας κάνουμε εγκατάσταση του πακέτου Android SDK που περιέχει το Eclipse classic (Juno) έκδοση 4.2, το Αndroid SDK tools, τα οποία είναι διαθέσιμα στην ιστοσελίδα παρακάτω : σε οποιοδήποτε λειτουργικό είτε Windows είτε OS X. Αφού ολοκληρωθεί η εγκατάσταση, ίσως χρειαστεί να γίνει μια επανεκκίνηση του συστήματος. Επίσης θα χρειαστεί και η εγκατάσταση Java έκδοση 1.6 και πάνω, που είναι διαθέσιμη στη ιστοσελίδα index.html. Μπορούμε να κατεβάσουμε το JAVA JDK 7 στη περίπτωση μας. Προκειμένου να εγκατασταθεί και να λειτουργήσει σωστά το Facebook SDK θα πρέπει να τρέχει τουλάχιστον με την έκδοση Android v2.2 (API 8) στο Eclipse. Αφού ανοίξουμε το πρόγραμμα Eclipse Classic από την επιφάνεια εργασίας θα δούμε στο κεντρικό μενού Window τις επιλογές Android SDK Manager και AVD Manager ( για επιλογή συσκευής Emulator) (Εικόνα 3.1.1). Εικόνα : Μενού στο Eclipse Android SDK Manager και AVD Manager Κάνοντας κλικ στο Android SDK Manager, θα εμφανιστεί ένα νέο παράθυρο. Στο παράθυρο Android SDK Manager μπορούμε να κάνουμε εγκατάσταση αναβάθμιση 41

42 εκδόσεων firmware Android που θέλουμε να τρέξουμε σαν εικονική συσκευή. Συνιστάται να εγκαθίστανται οι εκδόσεις Android 2.2, Android και Android 4.0 (εικόνα 3.1.2). Αφού τσεκάρουμε τα πακέτα που θέλουμε να εγκαταστήσουμε και πατήσουμε install packets, θα μας ζητηθεί να κάνουμε αποδοχή των όρων πολιτικής Accept terms and services και μετά την εγκατάσταση θα γίνει επανεκκίνηση του Eclipse για να σωθούν οι αλλαγές του προγράμματος. Εικόνα : Εγκατάσταση εκδόσεων Android στο Android SDK Manager Ακόμα κι αν έχουμε μια πραγματική συσκευή Android να αναπτύξουμε, είναι πολύ χρήσιμο να ρυθμιστούν οι παράμετροι του Εξομοιωτή Emulator Android. Στο υπάρχον εγκατεστημένο AVD Manager δημιουργούμε ένα νέο AVD, και αφήνουμε τις προεπιλεγμένες ρυθμίσεις ως έχουν όπως φαίνεται στην εικόνα Στην επιλογή Name βάζουμε ότι ονομασία θέλουμε ώστε να μπορούμε να επιλέξουμε την επιθυμητή έκδοση. Συνήθως βάζουμε σαν ονομασία την έκδοση του Android. Στην επιλογή target επιλέγουμε την έκδοση που εγκαταστήσαμε στο Android SDK Manager προηγουμένως. Συνήθως χρησιμοποιείται η έκδοση Android 4.1 (API level 16). Μπορούμε ανά πάσα στιγμή να ξεκινήσουμε τον emulator είτε απευθείας από το AVD Manager Tool είτε αργότερα όταν τρέχουμε το πρόγραμμα μας. 42

43 Εικόνα : Δημιουργία νέας εικονικής συσκευής Android (AVD) 3.2 Δημιουργία Application στο Facebook Για να δημιουργήσουμε μια καινούργια εφαρμογή (Application) στο Facebook θα πρέπει να έχουμε λογαριασμό Facebook ή να κάνουμε καινούργιο λογαριασμό μπαίνοντας στην ιστοσελίδα του Facebook και χρησιμοποιώντας ένα λογαριασμό για να γίνει επιβεβαίωση των στοιχείων του λογαριασμού μας. Αφού εισέλθουμε στο λογαριασμό Facebook, πηγαίνουμε στο μενού πάνω δεξιά στις ρυθμίσεις και επιλέγουμε την «Δημιουργία Εφαρμογής» όπως φαίνεται στο σχήμα Εικόνα : Δημιουργία εφαρμογής (Application) στο Facebook 43

44 Έπειτα θα χρειαστεί να κάνουμε μια νέα εγγραφή σαν προγραμματιστής developer όπως φαίνεται παρακάτω στην εικόνα και να αποδεχτούμε τους όρους και την πολιτική απορρήτου και πλατφόρμας του Facebook. Εικόνα : Καρτέλα νέας εγγραφής ως προγραμματιστής Developer στο Facebook Κάνοντας εγγραφή μας οδηγούμαστε στην ιστοσελίδα του Facebook developers site. Εκεί επιλέγουμε την «Δημιουργία νέας εφαρμογής», και εισάγουμε βασικές πληροφορίες όπως το όνομα της εφαρμογής μας όπως φαίνεται στην εικόνα Εικόνα : Δημιουργία καινούργιας εφαρμογής PaintGuess Μόλις δημιουργηθεί η εφαρμογή μας, σημειώνουμε κάτω το κλειδί της εφαρμογής μας (APP ID) ή αλλιώς API KEY που φαίνεται στη παρακάτω σελίδα (εικόνα Για λόγους ασφάλειας έχει σβηστεί ο αριθμός ΑppID και App Secret). Θα χρειαστεί να το εισάγουμε στα αρχεία του project στο eclipse. Εναλλακτικά μπορούμε να χρησιμοποιήσουμε το App ID σε ένα υπάρχον project στο Eclipse. Εικόνα : App ID της εφαρμογής PaintGuess 44

45 3.3 Εισαγωγή (Import) του SDK στο Eclipse Ο Φάκελος εγκατάστασης του Facebook-3.5 που κατεβάζουμε από την επίσημη ιστοσελίδα του facebook developers, το οποίο ονομάζεται Facebook και είναι το SDK project από μόνο του. Στο φάκελο Samples υπάρχουν επιπλέον δείγματα projects. Μπορούμε να εισάγουμε στο Eclipse πρόγραμμα αυτά τα projects δείγματα και το Facebook SDK. Πρέπει να βεβαιωθούμε ότι στο φάκελο Workspace του τοπικού υπολογιστή δε υπάρχει άλλο project με το όνομα Facebook SDK. Εάν υπάρχει μάλλον θα αναφέρεται σε παλιότερη έκδοση Facebook SDK και θα πρέπει να διαγραφεί ή να αλλάξουμε τον προορισμό (path) του Workspace. Για να εισάγουμε τη νέα έκδοση Facebook SDK και τα δείγματα αν θέλουμε πηγαίνουμε στο μενού του Eclipse. File Import και επιλέγουμε General/Existing projects into Workspace (εικόνα 3.3.1) Εικόνα : Κάνοντας εισαγωγή (Import) του Facebook SDK Έπειτα κάνουμε browse και βρίσκουμε την διαδρομή root του φακέλου SDK με την ονομασία «facebook-android-sdk-3.5». Το SDK θα πρέπει να εμφανιστεί στη λίστα ως Facebook SDK μαζί με τα δείγματα Samples (εικόνα 3.3.2). 45

46 Εικόνα 3.3.2: Κάνοντας import το Facebook SDK και Samples (Προαιρετικά) Κάνουμε κλικ στο Finish. Εάν τα δείγματα των project (Samples) έχουν σφάλματα, απλά κάνουμε ανανέωση των projects πηγαίνοντας στο μενού Project clean. Εάν υπάρχουν σφάλματα όπως "Android requires compiler compliance level 5.0 or 6.0." πρέπει να βεβαιωθούμε ότι υπάρχει η έκδοση 1.6 java στις ιδιότητες του project στη καρτέλα java compiler (εικόνα 3.3.3). θα χρειαστεί να δημιουργήσουμε κλειδιά Android Hash keys για το facebook που θα εξηγηθεί παρακάτω για να δουλέψουν σωστά τα δείγματα και το Facebook SDK. Εικόνα : Ιδιότητες project για την καρτέλα java compiler 46

47 3.4 Δημιουργία Hash Key για την εφαρμογή Θα πρέπει να συσχετίσουμε τα κλειδιά του android (hash keys) με την εφαρμογή μας στο facebook. Το Ηash Κey χρησιμοποιείται από το facebook ως ένας έλεγχος ασφάλειας για την γνησιότητα τους. Από προεπιλογή, το πακέτο της εφαρμογής είναι συνδεδεμένο με ένα κλειδί που λέγεται debug key. Κατά την δημοσίευση της εφαρμογής, τυπικά συνδέεται με ένα διαφορετικό, καινούργιο κλειδί. Ως εκ τούτου, θέλουμε να έχουμε όλα τα κλειδιά hash keys εκείνα που σχετίζονται με τα αντίστοιχα κλειδιά στο Facebook. Επιλέγουμε την «επεξεργασία εφαρμογής» και επιλέγουμε το πεδίο «Native Android App» όπως φαίνεται στην εικόνα και στο πεδίο Key Hashes βάζουμε το αντίστοιχο κλειδί. Εικόνα 3.4.1: Προσθέτοντας Key Hashes στην εφαρμογή του Facebook Υπάρχουν δύο τρόποι για να βρει κανείς τα κλειδιά κατακερματισμού (Hash Keys). Ο ένας τρόπος είναι να τρέξουμε το keytool.exe που βρίσκεται στην java 1.6 υποκατάλογο στον τοπικό υπολογιστή. Συνήθως βρίσκεται από προεπιλογή στο home/.android κατάλογο. Για λειτουργικό Os X τρέχουμε την παρακάτω εντολή : keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore openssl sha1 -binary openssl base64 Για λειτουργικό Windows τρέχουμε την παρακάτω εντολή : keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore openssl sha1 -binary openssl base64 Θα ζητηθεί να δώσουμε ένα κωδικό πρόσβασης (password). Αυτό πρέπει να είναι η λέξη android χωρίς τα θαυμαστικά. Μόλις πατήσουμε Enter θα μας δοθεί ένα Hash Key μεγέθους 30 χαρακτήρων ή περίπου. (Εάν δε μας ζητηθεί κωδικός πρόσβασης σημαίνει ότι κάτι δε τρέχει σωστά, και θα πρέπει να ελέγξουμε την διαδρομή path και να βεβαιωθούμε ότι 47

48 υπάρχει εκεί το debug.keystore). Ένας δεύτερος τρόπος για να βεβαιωθούμε ότι έχουμε το σωστό Hash Key είναι ο εξής. Τρέχουμε ένα από τα έτοιμα δείγματα Samples στο Eclipse που εμπεριέχεται στο συμπιεσμένο αρχείο facebook-android-sdk-3.5, και συγκεκριμένα το HelloFacebookSample. Ανοίγουμε την κλάση HelloFacebookSampleActivity και κάνουμε την προσωρινή αλλαγή σε κώδικα αμέσως μετά την μέθοδο OnCreate( ) public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // Add code to print out the key hash try { PackageInfo info = getpackagemanager().getpackageinfo( "com.facebook.samples.hellofacebook", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.tobytearray()); Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); catch (NameNotFoundException e) { catch (NoSuchAlgorithmException e) { Αποθηκεύουμε τις αλλαγές και ξανατρέχουμε το δείγμα. Στην καρτέλα καταγραφής (Logcat) ψάχνουμε για ένα μήνυμα παρόμοιο με το παρακάτω :47:37.747: D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo= Αντιγράφουμε και αποθηκεύουμε το Hash Key στο πεδίο Key Hashes του Native Android App στο προφίλ του Facebook Developers της εφαρμογής. Ξανατρέχουμε τα δείγματα για να βεβαιωθούμε ότι μπορούμε να κάνουμε είσοδο στο Facebook από το Eclipse με το καινούργιο Hash Key. 3.5 Δημιουργία νέου Android project και η βιβλιοθήκη Facebook SDK Σε αυτό το στάδιο, θα φτιάξουμε ένα νέο project στο Eclipse και θα προσθέσουμε τον ελάχιστο απαραίτητο κώδικα για να μπορούμε να κάνουμε είσοδο Facebook Login από το Eclipse ή το κινητό τηλέφωνο. 48

49 Δημιουργούμε ένα νέο project στο πρόγραμμα Eclipse επιλέγοντας από το μενού το File New Project και μετά Android Application Project (εικόνα 3.5.1). Εικόνα 3.5.1: Δημιουργία ενός νέου project Android Δεν είμαστε υποχρεωμένοι να χρησιμοποιήσουμε το ίδιο όνομα εφαρμογής όπως όταν κάναμε εγγραφή στο facebook developers. Έπειτα μπορούμε να επιλέξουμε ένα εικονίδιο για την εφαρμογή μας (εικόνα 3.5.2). Εικόνα : Επιλογή ενός εικονιδίου για την εφαρμογή μας 49

50 Στο τέλος δίνουμε ένα όνομα για το Activity. Μπορούμε να το αφήσουμε ως έχει με όνομα MainActivity με ένα όνομα σχεδίου (Layout Name) ως activity_main (εικόνα 3.5.3). Εικόνα : Δημιουργία κεντρικής σελίδας MainActivity Κλικάρουμε το Finish και το νέο μας project έχει δημιουργηθεί μαζί με την κλάση main activity (εικόνα 3.5.4) Εικόνα : Δημιουργία νέου project με την MainActivity.java Σε αυτό το σημείο πρέπει να επιστρέψουμε στις ρυθμίσεις της εφαρμογής μας που δημιουργήσαμε στο facebook στην καρτέλα Native Android App. Εκεί πρέπει να προστέσουμε το όνομα πακέτου και το όνομα κλάσης που βάλαμε στο Android Eclipse όταν δημιουργήσαμε νέο project.(εικόνα 3.5.5). Επίσης ενεργοποιούμε την επιλογή Facebook Login (Enabled). 50

51 Εικόνα : Προσθήκη ονόματος πακέτου και όνομα κλάσης στις ρυθμίσεις στο Facebook Επιστρέφοντας στο Eclipse, το νέο μας project πρέπει να συνδεθεί με την SDK FACEBOOK βιβλιοθήκη του project. Πηγαίνουμε στις ιδιότητες (properties) του project και κάνουμε πλοήγηση στο πεδίο Android. Στο κάτω μέρος στο πεδίο Library, κάνουμε κλίκ στο Add και επιλέγουμε το FACEBOOK SDK project από το workspace που κατεβάσαμε απο το facebook (εικόνα 3.5.6). Εικόνα : Προσθήκη της βιβλιοθήκης Facebook SDK στη βιβλιοθήκη του Project 3.6 XML Facebook Για να προσθέσουμε το Facebook App ID στο project μας, ανοίγουμε το αρχείο strings.xml που βρίσκεται στο φάκελο res/values του project στο Eclipse. Πρέπει να προσθέσουμε ένα string App_id περιλαμβανομένου του ID που βάλαμε στο προηγούμενο βήμα.(εικόνα 3.6.1) 51

52 Εικόνα : Προσθήκη Facebook App ID στο strings.xml Εάν κάνουμε προβολή της πηγής (source) του αρχείου strings.xml θα δούμε το αποτέλεσμα του αρχείου : <string name = "app_id"> </string> Ανοίγουμε το αρχείο Manifest.xml στο root του project. Πατάμε add στο Uses Permission με όνομα : android.permission.internet (εικόνα 3.6.2). Εικόνα 3.6.2: Προσθήκη πρόσβασης στο διαδίκτυο στο αρχείο Manifest.xml 52

53 Ακόμα στο πεδίο Application, πατάμε Add στο αντικείμενο Meta Data με όνομα «com.facebook.sdk.applicationid» και με τιμή app_id για το string (εικόνα 3.6.3). Εικόνα : Προσθήκη του string Facebook στο Manifest.xml Τέλος προσθέτουμε ένα νέο Activity σαν app με όνομα com.facebook.loginactivity. (εικόνα 3.6.4) Πάλι αν ελέγξουμε την πηγή (source) του αρχείου AndroidManifest.xml θα έχουν προστεθεί τρείς γραμμές. <uses-permission android:name="android.permission.internet"/>, <meta-data android : name = "com.facebook.sdk.applicationid" android :value ="@string/app_id"/>, και <activity android:name = "com.facebook.loginactivity"/> Εικόνα : Προσθήκη LoginActivity στο AndroidManifest.xml 53

54 3.7 Δημιουργία button του facebook στο Eclipse Πρώτα απ όλα, θα προσθέσουμε ένα κουμπί (button) προκειμένου ο χρήστης να κλικάρει προκειμένου να κάνει login μέσω facebook και να εισέλθει στην εφαρμογή. Ανοίγουμε τo αρχείο activity_main.xml που βρίσκεται στο φάκελο res/layout και προσθέτουμε το κώδικα που φαίνεται παρακάτω : Activity_main.xml <RelativeLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/background" > <Button android:id="@+id/but_fb" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerhorizontal="true" android:layout_centervertical="true" android:background="@drawable/fb" /> </RelativeLayout> Στο φάκελο drawable θα βάλουμε μια εικόνα background.jpg για φόντο στην αρχική μας σελίδα (layout) της εφαρμογής μας. Και βάζοντας κουμπί με όνομα id but_fb θα δημιουργήσει ένα κουμπί στο layout της εφαρμογής με ανάλογο ύψος και πλάτος. Στο κυρίως φάκελο src στην activity_main πρέπει να δηλώσουμε το κουμπί που αναφέραμε πιο πάνω κ να βάλουμε το login κώδικα του facebook, ώστε όταν πατηθεί το κουμπί όταν τρέξει η εφαρμογή να μας βγάλει σε νέο παράθυρο activity τη φόρμα του facebook, για να κάνουμε είσοδο στο κυρίως πρόγραμμα μας με το και το κωδικό του facebook. 3.8 Οι βασικές βιβλιοθήκες και εντολές του facebook Παρακάτω αναφέρονται συνοπτικά οι βιβλιοθήκες και οι κλάσεις που θα χρειαστούμε για το Login του Facebook. Session Αποτελεί την σημαντικότερη βιβλιοθήκη, συνεδρία όπως ονομάζεται όπου χρησιμοποιείται για τον έλεγχο ταυτότητας ενός χρήστη και τη διαχείριση συνόδου του χρήστη στο Facebook. 54

55 Request - Xρησιμοποιείται για αιτήματα για κλήσεις του Facebook API. Ένα αίτημα που απαιτεί έλεγχο ταυτότητας του χρήστη πρέπει να περάσει σε μια ανοιχτή σύνοδο (session). Αιτήσεις μπορούν επίσης να είναι ανώνυμα, που σημαίνει ότι δεν απαιτείται από τον χρήστη για τον έλεγχο ταυτότητας. StatusCallback Περίπτώση της συνόδου παρέχουν ειδοποίηση αλλαγής κατάσταση μέσω μιας διασύνδεσης επανάκλησης Response - Επιστρέφει την απάντηση από την κλήση API του Facebook. GraphUser - Eίναι μια διεπαφή που παρέχει μια έντονα-δακτυλογραφημένη αναπαράσταση ενός χρήστη του Facebook AccessTokens - Ένα διακριτικό πρόσβασης είναι ένα τυχαίο string, που δίνει σε μια εφαρμογή προσωρινή και ασφαλή πρόσβαση στο Facebook API. Ένα διακριτικό πρόσβασης μπορεί να δημιουργηθεί για λογαριασμό ενός προσώπου, σε μια σελίδα στο Facebook ή σε μια εφαρμογή. Παράγεται στο τελευταίο στάδιο της ροής εισόδου του Facebook. Παρακάτω βλέπουμε το πώς δημιουργείται ένα Access Token σε έναν χρήστη. 55

56 3.9 Οι άδειες (Permissions) του Facebook Οι άδειες του Facebook χρησιμοποιούνται κυρίως για να αποκτήσουμε πρόσβαση σε ένα υποσύνολο των στοιχείων του προσώπου που έχει αποθηκευμένα δεδομένα στο Facebook ζητώντας την άδεια του χρήστη για να έχει πρόσβαση π.χ στη λίστα φίλων, στο προφίλ,ή ακόμα και να μπορεί να δημοσιεύσει στο προφίλ μέσα από την εφαρμογή PaintGuess. Οι άδειες είναι strings που περνούν μαζί με την αίτηση σύνδεσης ή κλήσης API Facebook. Παρακάτω βλέπουμε δύο περιπτώσεις αδειών : Publish_stream άδεια για να κάνουμε δημοσιεύσεις (posts) στο προφίλ του ενδιαφερομένου Status_update άδεια για να κάνουμε ανανέωση του status του χρήστη στο facebook private String user1; private Session.StatusCallback statuscallback = new SessionStatusCallback(); public final String[] permissions = { "publish_stream,status_update " ; 3.10 Τα κυριότερα σημεία του κώδικα του Facebook Στο παρακάτω κομμάτι δηλώνουμε το κουμπί button του facebook για να κάνουμε είσοδο στο facebook. Button login = (Button) findviewbyid(r.id.but_fb); login.setonclicklistener(new OnClickListener() { public void onclick(view v) { SharedPreferences prefs1 = getsharedpreferences("username", Context.MODE_PRIVATE); String connect = prefs1.getstring("name", ""); if (connect.equals("") connect.equals(null)) { onclicklogin(); else { Intent intent1 = new Intent(); intent1.setclass(mainactivity.this, BluetoothChat.class); startactivity(intent1); ); Στο παρακάτω κώδικα βλέπουμε το κυρίως κομμάτι για να γίνει το login του facebook private void onclicklogin() { 56

57 Session session = Session.getActiveSession(); if (!session.isopened() &&!session.isclosed()) { session.openforread(new Session.OpenRequest(this).setCallback(statusCallback)); else { Session.openActiveSession(this, true, statuscallback); private class SessionStatusCallback implements Session.StatusCallback public void call(session session, SessionState state, Exception exception) { getusernamefromfb(); Στο παρακάτω κώδικα κάνουμε αίτημα κλήσης στο facebook API ανοίγοντας μια συνεδρία και επιστρέφει το αίτημα που θέλουμε να πάρουμε μαζί με το όνομα facebook που κάναμε Login και το εμφανίζουμε σε μήνυμα toast όταν εισέλθουμε. Επίσης παίρνουμε το όνομα (username) του χρήστη που διατηρεί λογαριασμό στο Facebook σαν string και μέσω της Json, αποθηκεύεται στη μέθοδο Sharedpreference στην μνήμη. Και έπειτα καλείται στη κλάση Bluetoothchat, για να εμφανίζεται το όνομα στο chat. private void getusernamefromfb() { Session session = Session.getActiveSession(); Log.v("",""+session); if (session.isopened()) { // make request to the /me API // Create the Request Request merequest = Request.newMeRequest(session, new GraphUserCallback() public void oncompleted(graphuser user, Response response) { if (response.geterror() == null) { Toast.makeText(getApplicationContext(),"Welcome " + user.getname() + "!", Toast.LENGTH_SHORT).show(); user1 = user.getname(); Log.v("user", user1); SharedPreferences.Editor prefs = getsharedpreferences("username", Context.MODE_PRIVATE).edit(); prefs.putstring("name", user1).commit(); Intent intent1 = new Intent(); 57

58 intent1.setclass(mainactivity.this,bluetoothchat.class); startactivity(intent1); ); // Execute the request merequest.executeasync(); Προκειμένου να έχουμε αυθεντικοποιήση του χρήστη και πρόσβαση στα Permissions του facebook, δημιουργείται ένα token με το παρακάτω τρόπο : private Session.StatusCallback statuscallback = new SessionStatusCallback(); public final String[] permissions = { "publish_stream,status_update" protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS); Session session = Session.getActiveSession(); if (session == null) { if (savedinstancestate!= null) { session = Session.restoreSession(this, null, statuscallback, savedinstancestate); if (session == null) { session = new Session(this); Session.setActiveSession(session); if (session.getstate().equals(sessionstate.created_token_loaded)) { session.openforread(new Session.OpenRequest(this).setCallback(statusCallback)); Για να κάνουμε έξοδο logout του κυρίως χρήστη που έχει κάνει είσοδο στο facebook, καλούμε την μέθοδο κλάσης logout(context). Για παράδειγμα : Facebook.logout (MainActivity.this); facebook login. Παρακάτω υπάρχει ο όλος κώδικας του MainActivity.java και το κομμάτι του 58

59 MainActivity.java package com.example.thanasis; import java.security.messagedigest; import java.security.nosuchalgorithmexception; import android.app.activity; import android.content.context; import android.content.intent; import android.content.sharedpreferences; import android.content.pm.packageinfo; import android.content.pm.packagemanager; import android.content.pm.packagemanager.namenotfoundexception; import android.content.pm.signature; import android.os.bundle; import android.util.base64; import android.util.log; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.toast; import com.facebook.loggingbehavior; import com.facebook.request; import com.facebook.request.graphusercallback; import com.facebook.response; import com.facebook.session; import com.facebook.sessionstate; import com.facebook.settings; import com.facebook.model.graphuser; public class MainActivity extends Activity { private String user1; private Session.StatusCallback statuscallback = new SessionStatusCallback(); public final String[] permissions = { "publish_stream,status_update" protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS); Session session = Session.getActiveSession(); if (session == null) { if (savedinstancestate!= null) { session = Session.restoreSession(this, null, statuscallback, savedinstancestate); 59

60 if (session == null) { session = new Session(this); Session.setActiveSession(session); if (session.getstate().equals(sessionstate.created_token_loaded)) { session.openforread(new Session.OpenRequest(this).setCallback(statusCallback)); PackageInfo info = null; try { info =getpackagemanager().getpackageinfo("com.example.thanasis", PackageManager.GET_SIGNATURES); catch (NameNotFoundException e1) { // TODO Auto-generated catch block e1.printstacktrace(); for (Signature signature : info.signatures) { MessageDigest md = null; try { md = MessageDigest.getInstance("SHA"); catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printstacktrace(); md.update(signature.tobytearray()); Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); Button but = (Button) findviewbyid(r.id.but_howtoplay); but.setonclicklistener(new OnClickListener() public void onclick(view v) { Intent intent = new Intent(MainActivity.this,HowtoplayActivity.class); startactivity(intent); ); Button login = (Button) findviewbyid(r.id.but_fb); login.setonclicklistener(new OnClickListener() { public void onclick(view v) { SharedPreferences prefs1 = getsharedpreferences("username",context.mode_private); String connect = prefs1.getstring("name", ""); if (connect.equals("") connect.equals(null)) { // signinwithfacebook(); onclicklogin(); 60

61 else { Intent intent1 = new Intent(); intent1.setclass(mainactivity.this, BluetoothChat.class); startactivity(intent1); ); private void onclicklogin() { Session session = Session.getActiveSession(); if (!session.isopened() &&!session.isclosed()) { session.openforread(new Session.OpenRequest(this).setCallback(statusCallback)); else { Session.openActiveSession(this, true, statuscallback); private class SessionStatusCallback implements Session.StatusCallback public void call(session session, SessionState state, Exception exception) { getusernamefromfb(); private void getusernamefromfb() { Session session = Session.getActiveSession(); Log.v("",""+session); if (session.isopened()) { // make request to the /me API // Create the Request Request merequest = Request.newMeRequest(session, new GraphUserCallback() public void oncompleted(graphuser user, Response response) { if (response.geterror() == null) { Toast.makeText(getApplicationContext(),"Hello " + user.getname() + "!", Toast.LENGTH_LONG).show(); user1 = user.getname(); Log.v("user", user1); SharedPreferences.Editor prefs = getsharedpreferences( "username", Context.MODE_PRIVATE).edit(); 61

62 prefs.putstring("name", user1).commit(); Intent intent1 = new Intent(); intent1.setclass(mainactivity.this,bluetoothchat.class); startactivity(intent1); ); // Execute the request public void onstart() { super.onstart(); public void onstop() { super.onstop(); public void onactivityresult(int requestcode, int resultcode, Intent data) { super.onactivityresult(requestcode, resultcode, data); Session.getActiveSession().onActivityResult(this, requestcode, resultcode, protected void onsaveinstancestate(bundle outstate) { super.onsaveinstancestate(outstate); Session session = Session.getActiveSession(); Session.saveSession(session, outstate); 62

63 4.1 Γενικά για το bluetooth ΚΕΦΑΛΑΙΟ 4 Ο BLUETOOTH CHAT Η πλατφόρμα android περιλαμβάνει υποστήριξη για επικοινωνία Bluetooth, που επιτρέπει σε μια συσκευή να ανταλλάσει δεδομένα με άλλες συσκευές ασύρματα. Αυτό γίνεται μέσω των λεγόμενων Bluetooth Api s και ενεργοποιούν χαρακτηριστικά όπως σύνδεση point to point και mutlipoint wireless. Η συγκεκριμένη εφαρμογή μας επιτρέπει δύο συσκευές android να κάνουν chat text to text μέσω Bluetooth. Και περιλαμβάνει τις παρακάτω δυνατότητες : Αναζήτηση άλλων συσκευών μέσω Bluetooth Αίτημα για αντιστοίχηση τοπικής σύνδεσης Bluetooth με άλλες συσκευές Δημιουργία RFCOMM καναλιών sockets Μεταφορά δεδομένων μέσω Bluetooth Διαχείριση πολλαπλών συνδέσεων Σύνδεση με απομακρυσμένη συσκευή 4.2 Οι βασικές βιβλιοθήκες και κλάσεις του Bluetooth Όλα τα Bluetooth Api s υπάρχουν στο πακέτο android.bluetooth. Παρακάτω αναφέρονται συνοπτικά οι βιβλιοθήκες και οι κλάσεις που θα χρειαστούμε για να δημιουργήσουμε σύνδεση Bluetooth. BluetoothAdapter Αντιπροσωπεύει το τοπικό αντάπτορα Bluetooth (Bluetooth radio). Με την εντολή αυτή μπορούμε να ανακαλύψουμε άλλες συσκευές Bluetooth, να κάνουμε αίτημα για σύνδεση και αντιστοίχιση από μια λίστα με άλλες συσκευές, να χρησιμοποιήσουμε μια MAC διεύθυνση για σύνδεση και να δημιουργήσουμε ένα BluetoothServerSocket που θα ακούει τις επικοινωνίες από άλλες συσκευές. BluetoothDevice Αντιπροσωπεύει μια απομακρυσμένη συσκευή Bluetooth. Χρησιμοποιείται για να ζητήσει μια σύνδεση με μια απομακρυσμένη συσκευή μέσω ενός BluetoothSocket ή αναζήτηση πληροφοριών σχετικά με τη συσκευή, όπως το όνομα, τη διεύθυνσή της, την κλάση και την κατάσταση σύνδεσης. BluetoothSocket Αντιπροσωπεύει το interface ενός διακοσμητή Socket Bluetooth (παρόμοιο με το tcp socket). Αυτό είναι το σημείο σύνδεσης που επιτρέπει στην 63

64 εφαρμογή την ανταλλαγή δεδομένων με άλλη συσκευή Bluetooth μέσω InputStream και OutputStream. BluetoothServerSocket Αντιπροσωπεύει ένα ανοικτό διακοσμητή Server που ακούει για εισερχόμενες αιτήσεις ( παρόμοιο με ένα TCP Server Socket ). Για να συνδεθούν δύο συσκευές Android, η μία συσκευή πρέπει να ανοίξει ένα server socket με αυτή την κλάση. Όταν μια απομακρυσμένη συσκευή Bluetooth κάνει μια αίτηση σύνδεσης με την συσκευή αυτή, η BluetoothServerSocket θα επιστρέψει μια συνδεδεμένη BluetoothSocket όταν η σύνδεση γίνεται δεκτή. BluetoothClass Περιγράφει τα γενικά χαρακτηριστικά και τις δυνατότητες μια Bluetooth συσκευής. Eίναι μόνο για ανάγνωση στο σύνολο ιδιοτήτων που ορίζουν κύριες και δευτερεύουσες κατηγορίες συσκευών της συσκευής αυτής και τις υπηρεσίες της. 4.3 Οι άδειες (permissions) του bluetooth Για να χρησιμοποιήσουμε τις δυνατότητες Bluetooth στην εφαρμογή μας, θα πρέπει να δηλώσουμε στο αρχείο AndroidManifest.xml την άδεια Bluetooth. Έτσι, θα δίνεται το δικαίωμα να εκτελεστεί οποιαδήποτε επικοινωνία Bluetooth, όπως η αίτηση για σύνδεση, την αποδοχή μιας σύνδεσης, και τη μεταφορά δεδομένων. <manifest... > <uses-permission android:name="android.permission.bluetooth" />... </manifest> 4.4 Ενεργοποιώντας το Bluetooth Πριν η εφαρμογή μας μπορέσει να επικοινωνήσει μέσω Bluetooth, πρέπει να βεβαιωθούμε ότι η Android συσκευή μας υποστηρίζει Bluetooth. Η ενεργοποίηση του Bluetooth γίνεται με την χρήση του BluetoothAdapter, όπου γίνεται αίτημα να ενεργοποιηθεί το Bluetooth στη συσκευή μας, αν αυτή υποστηρίζεται. Αν δεν υποστηρίζει η συσκευή Bluetooth τότε θα κλείσει αυτόματα η εφαρμογή. BluetoothAdapter mbluetoothadapter = BluetoothAdapter.getDefaultAdapter(); if (mbluetoothadapter == null) { // Device does not support Bluetooth 64

65 Για να βεβαιωθούμε ότι το Bluetooth είναι ενεργοποιημένο, πρέπει να καλέσουμε την μέθοδο startactivityforresult() με την πρόθεση ACTION_REQUEST_ENABLE. Αυτό θα εκδώσει ένα αίτημα για να ενεργοποιήσουμε τη σύνδεση Bluetooth μέσα από τις ρυθμίσεις του συστήματος (χωρίς διακοπή της αίτησής μας). if (!mbluetoothadapter.isenabled()) { Intent enablebtintent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startactivityforresult(enablebtintent, REQUEST_ENABLE_BT); Θα εμφανιστεί ένα παράθυρο διαλόγου, ζητώντας άδεια από τον χρήστη για να ενεργοποιήσει το Bluetooth, όπως φαίνεται στην εικόνα Αν ο χρήστης απαντήσει «ναι» το σύστημα θα ενεργοποιήσει το Bluetooth, και θα επιστρέψει στην εφαρμογή μόλις αυτή η διαδικασία ολοκληρωθεί. 4.5 Αντιστοίχηση συσκευών bluetooth Εικόνα : Αίτημα άδειας Bluetooth της εφαρμογής Πριν κάνουμε αναζήτηση συσκευών μέσω Bluetooth, η μέθοδος getbondeddevices(), επιστρέφει μια λίστα από συσκευές που έχουν ήδη γίνει αντιστοίχιση. Για παράδειγμα μπορούμε να κάνουμε αντιστοίχιση συσκευών και να βλέπουμε το όνομα της κάθε συσκευής με την μέθοδο ArrayAdapter. Set<BluetoothDevice> paireddevices = mbluetoothadapter.getbondeddevices(); // If there are paired devices if (paireddevices.size() > 0) { // Loop through paired devices for (BluetoothDevice device : paireddevices) { // Add the name and address to an array adapter to show in a ListView marrayadapter.add(device.getname() + "\n" + device.getaddress()); 65

66 4.6 Ανακαλύπτοντας τις συσκευές Για να ξεκινήσει η ανακάλυψη συσκευών, καλούμε την μέθοδο startdiscovery(). Η διαδικασία είναι ασύγχρονη και η μέθοδος θα επιστρέψει μια λογική, που δηλώνει κατά πόσο η ανακάλυψη ξεκίνησε με επιτυχία. Η διαδικασία ανακάλυψης περιλαμβάνει μια σάρωση που κρατάει περίπου 12 δευτερόλεπτα. Ακολουθεί μια σελίδα σάρωσης όπου ανακτάται το όνομα της Bluetooth συσκευής. // Create a BroadcastReceiver for ACTION_FOUND private final BroadcastReceiver mreceiver = new BroadcastReceiver() { public void onreceive(context context, Intent intent) { String action = intent.getaction(); // When discovery finds a device if (BluetoothDevice.ACTION_FOUND.equals(action)) { // Get the BluetoothDevice object from the Intent BluetoothDevice device = intent.getparcelableextra(bluetoothdevice.extra_device); // Add the name and address to an array adapter to show in a ListView marrayadapter.add(device.getname() + "\n" + device.getaddress()); ; // Register the BroadcastReceiver IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); registerreceiver(mreceiver, filter); // Don't forget to unregister during ondestroy 4.7 Ενεργοποιήση Bluetooth ώστε να είναι ορατή σε άλλες συσκευές Αν θέλουμε μπορούμε να κάνουμε την τοπική συσκευή ανιχνεύσιμη σε άλλες συσκευές με την μέθοδο startactivityforresult (Intent,int) με την πρόθεση ACTION_REQUEST_DISCOVERABLE. Αυτό θα εκδώσει ένα αίτημα να ενεργοποιηθεί η λειτουργία εντοπισμού Bluetooth μέσω των ρυθμίσεων του συστήματος. Από προεπιλογή η συσκευή θα καταστεί ανιχνεύσιμη για 120 δευτερόλεπτα. Μπορούμε να ορίσουμε μια διαφορετική διάρκεια ανίχνευσης της συσκευής μας με την πρόθεση EXTRA_DISCOVERABLE_DURATION. Η μέγιστη διάρκεια ανίχνευσης σε μια εφαρμογή είναι 3600 δευτερόλεπτα και η τιμή 0 σημαίνει ότι είναι πάντα ορατή. Παρακάτω φαίνεται ο κώδικας για διάρκεια 300 δευτερολέπτων : Intent discoverableintent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); discoverableintent.putextra(bluetoothadapter.extra_discoverable_duration, 300); startactivity(discoverableintent); 66

67 Ένα παράθυρο διαλόγου θα εμφανιστεί, ζητώντας την άδεια του χρήστη να καταστεί η συσκευή ανιχνεύσιμη, όπως φαίνεται στην εικόνα Εάν ο χρήστης απαντά "ναι", τότε η συσκευή θα γίνει ανιχνεύσιμη για το συγκεκριμένο χρονικό διάστημα. Εικόνα : Αίτημα άδειας Bluetooth ώστε να είναι ανιχνεύσιμη για 300 secs 4.8 Σύνδεση ως server Όταν θέλουμε να συνδέσουμε δύο συσκευές θα πρέπει κανείς να ενεργήσει ως διακοσμητής server χρησιμοποιώντας την μέθοδο BluetoothServerSocket. Ο σκοπός της μεθόδου αυτής είναι να ακούει για εισερχόμενες αιτήσεις σύνδεσης και όταν κάποια είναι αποδεκτή, παρέχει μια σύνδεση με την μέθοδος BluetoothSocket. Όταν δωθεί πρόσβαση στην μέθοδο BluetoothSocket από την μέθοδο BluetoothServerSocket, η BluetoothServerSocket μπορεί και πρέπει να απορρίπτεται, εκτός αν θέλουμε να αποδεχτούμε κ άλλες συνδέσεις. Παρακάτω βλέπουμε τον κώδικα για την πλευρά του διακοσμητή Server που δέχεται μέχρι εφτά εισερχόμενες συνδέσεις : private class AcceptThread extends Thread { BluetoothServerSocket serversocket = null; public AcceptThread() { public void run() { if (D) Log.d(TAG, "BEGIN macceptthread" + this); setname("acceptthread"); BluetoothSocket socket = null; try { // Listen for all 7 UUIDs for (int i = 0; i < 7; i++) { serversocket = madapter.listenusingrfcommwithservicerecord(name, muuids.get(i)); socket = serversocket.accept(); if (socket!= null) { String address = socket.getremotedevice().getaddress(); msockets.add(socket); 67

68 mdeviceaddresses.add(address); connected(socket, socket.getremotedevice()); catch (IOException e) { Log.e(TAG, "accept() failed", e); if (D) Log.i(TAG, "END macceptthread"); public void cancel() { if (D) Log.d(TAG, "cancel " + this); try { serversocket.close(); catch (IOException e) { Log.e(TAG, "close() of server failed", e); 4.9 Σύνδεση ως client Για να ξεκινήσει μια σύνδεση με την απομακρυσμένη συσκευή ( μια συσκευή που κατέχει μια ανοικτή υποδοχή Server Socket), θα πρέπει να χρησιμοποιήσουμε την μέθοδο BluetoothDevice για να αποκτήσουμε πρόσβαση στο BluetoothSocket και να ξεκινήσει η σύνδεση της συσκευής. Παρακάτω φαίνεται ο βασικός κώδικας για την σύνδεση μέσω Bluetooth από την πλευρά του client : private class ConnectThread extends Thread { private final BluetoothSocket mmsocket; private final BluetoothDevice mmdevice; private UUID tempuuid; public ConnectThread(BluetoothDevice device, UUID uuidtotry) { mmdevice = device; BluetoothSocket tmp = null; tempuuid = uuidtotry; // Get a BluetoothSocket for a connection with the // given BluetoothDevice try { tmp = device.createrfcommsockettoservicerecord(uuidtotry); catch (IOException e) { Log.e(TAG, "create() failed", e); mmsocket = tmp; 68

69 public void run() { Log.i(TAG, "BEGIN mconnectthread"); setname("connectthread"); // Always cancel discovery because it will slow down a connection madapter.canceldiscovery(); // Make a connection to the BluetoothSocket try { // This is a blocking call and will only return on a // successful connection or an exception mmsocket.connect(); catch (IOException e) { if (tempuuid.tostring().contentequals(muuids.get(6).tostring())) { connectionfailed(); // Close the socket try { mmsocket.close(); catch (IOException e2) { Log.e(TAG, "unable to close() socket during connection failure", e2); // Start the service over to restart listening mode BluetoothChatService.this.start(); return; // Reset the ConnectThread because we're done synchronized (BluetoothChatService.this) { mconnectthread = null; // Start the connected thread connected(mmsocket, mmdevice); public void cancel() { try { mmsocket.close(); catch (IOException e) { Log.e(TAG, "close() of connect socket failed", e); 4.10 Διαχείριση της σύνδεσης bluetooth Όταν έχουμε συνδέσει με επιτυχία δύο (ή περισσότερες) συσκευές, ο καθένας θα έχει ένα συνδεδεμένο BluetoothSocket. Αυτό είναι όπου η διασκέδαση ξεκινά, επειδή μπορούμε να 69

70 μοιραστούμε τα δεδομένα μεταξύ των συσκευών. Χρησιμοποιώντας την BluetoothSocket, η γενική διαδικασία για τη μεταφορά δεδομένων είναι απλή. Οι μέθοδοι InputStream και OutputStream χειρίζονται τις μεταδόσεις μέσω των Sockets και αντίστοιχα μέσω των InputStream() και OutputStream(). Η ανάγνωση και η εγγραφή δεδομένων γίνεται με τις εντολές read (byte []) και write (byte []) αντίστοιχα. Παρακάτω φαίνεται ο κώδικας όπου γίνεται διαχείριση της συσκευής Bluetooth : private class ConnectedThread extends Thread { private final BluetoothSocket mmsocket; private final InputStream mminstream; private final OutputStream mmoutstream; public ConnectedThread(BluetoothSocket socket) { mmsocket = socket; InputStream tmpin = null; OutputStream tmpout = null; // Get the input and output streams, using temp objects because // member streams are final try { tmpin = socket.getinputstream(); tmpout = socket.getoutputstream(); catch (IOException e) { mminstream = tmpin; mmoutstream = tmpout; public void run() { byte[] buffer = new byte[1024]; // buffer store for the stream int bytes; // bytes returned from read() // Keep listening to the InputStream until an exception occurs while (true) { try { // Read from the InputStream bytes = mminstream.read(buffer); // Send the obtained bytes to the UI activity mhandler.obtainmessage(message_read, bytes, -1, buffer).sendtotarget(); catch (IOException e) { break; /* Call this from the main activity to send data to the remote device */ public void write(byte[] bytes) { try { mmoutstream.write(bytes); catch (IOException e) { 70

71 /* Call this from the main activity to shutdown the connection */ public void cancel() { try { mmsocket.close(); catch (IOException e) { 4.11 Αποστολή και λήψη μηνυμάτων στο chat μέσω bluetooth Η ανάγνωση και η εγγραφή μηνυμάτων γίνεται με τις εντολές MESSAGE_READ και MESSAGE_WRITE αντίστοιχα. Παρακάτω φαίνονται οι δύο περιπτώσεις ανάγνωσης και εγγραφής μηνυμάτων. case MESSAGE_WRITE: byte[] writebuf = (byte[]) msg.obj; // construct a string from the buffer String writemessage = new String(writeBuf); mconversationarrayadapter.add("me: " + writemessage); break; case MESSAGE_READ: byte[] readbuf = (byte[]) msg.obj; // construct a string from the valid bytes in the buffer String readmessage = new String(readBuf, 0, msg.arg1); mconversationarrayadapter.add(mconnecteddevicename+": " + readmessage); break; Ο παρακάτω κώδικας στέλνει το περιεχόμενο του μηνύματος μέσω του χρήστη με το συγκεκριμένο username που συνδέθηκε μέσω facebook την ώρα που θα πατηθεί το κουμπί send. // Initialize the send button with a listener that for click events msendbutton = (Button) findviewbyid(r.id.button_send); msendbutton.setonclicklistener(new OnClickListener() { public void onclick(view v) { // Send a message using content of the edit text widget TextView view = (TextView) findviewbyid(r.id.edit_text_out); String message = username +": " + view.gettext().tostring(); sendmessage(message); ); 71

72 Ο παρακάτω κώδικας αποστέλλει ένα μήνυμα στο χρήστη που είναι συνδεδεμένος μέσω Bluetooth. Αρχικά τσεκάρει αν οι δύο χρήστες είναι συνδεδεμένοι μέσω Bluetooth. Σε περίπτωση που είναι συνδεδεμένοι, τσεκάρει αν έχει κάτι να στείλει σαν μήνυμα. Αν το μήνυμα έχει μέγεθος μεγαλύτερο από 0 bytes το στέλνει. Παίρνει αυτό που έγραψε ο χρήστης και το στέλνει μέσω του server Bluetooth στο χρήστη που είναι συνδεδεμένος. /** * Sends a message. message A string of text to send. */ private void sendmessage(string message) { //Log.e("aaa",message); // Check that we're actually connected before trying anything if (mchatservice.getstate()!= BluetoothChatService.STATE_CONNECTED) { Toast.makeText(this, R.string.not_connected, Toast.LENGTH_SHORT).show(); return; // Check that there's actually something to send if (message.length() > 0) { // Get the message bytes and tell the BluetoothChatService to write byte[] send = message.getbytes(); mchatservice.write(send); // Reset out string buffer to zero and clear the edit text field moutstringbuffer.setlength(o); moutedittext.settext(moutstringbuffer); 72

73 4.12 Εμφάνιση λέξης για τον χρήστη που θα ζωγραφίσει και εμφάνιση μηνύματος νικητή του παιχνιδιού Στο παιχνίδι ο χρήστης που θα πατήσει πάνω στο πεδίο που πρέπει να ζωγραφίσει, θα του εμφανιστεί στο chat μια λέξη κλειδί,αυτό που θα πρέπει να ζωγραφίσει για να μαντέψει ο αντίπαλος του. Παρακάτω φαίνεται ένα δείγμα του κώδικα όπου με ένα μαθηματικό αλγόριθμο επιλέγει μια λέξη κλειδί από μια λίστα κ στέλνει τυχαία την λέξη αυτήν στο χρήστη που άγγιξε την οθόνη της ζωγραφικής προκειμένου να ζωγραφίσει. Συνολικά υπάρχουν 20 λέξεις κλειδιά στην συγκεκριμένη λίστα. if (writemessage.indexof("testaki")>-1) { if (arxiki==0) { int g = (int)(math.random() * 2) + 1; String sk = ""+g; if (sk.indexof("1")>-1) { leksi = "car"; mconversationarrayadapter.add("car"); else { leksi = "star"; mconversationarrayadapter.add("star"); arxiki = 1; else { mconversationarrayadapter.add(writemessage); break; 1) { case MESSAGE_READ: byte[] readbuf = (byte[]) msg.obj; // construct a string from the valid bytes in the buffer String readmessage = new String(readBuf, 0, msg.arg1); if (readmessage.length() > 0) { if (readmessage.indexof("testaki") > -1) { arxiki = 1; DrawPanel.onTouchEvent1(readMessage); else { if (readmessage.indexof(leksi) > -1 && arxiki == arxiki = 0; leksi = ""; 73

74 DrawPanel.onTouchEvent1("0"); mconversationarrayadapter.add(readmessage+ " ###YOU ARE THE WINNER###"); BluetoothChat.this.sendMessage("finish " + "-"+ readmessage + " ###YOU ARE THE WINNER###"); if (readmessage.indexof("finish") > -1) { showgameoverwinner(readmessage); showgameoverlosser(readmessage); else { else { mconversationarrayadapter.add(readmessage); break; Νικητής του παιχνιδιού θα είναι αυτός που θα μαντέψει σωστά την λέξη κλειδί και θα εμφανιστεί ένα πλαίσιο μηνύματος Alert Box. Παρακάτω βλέπουμε δείγμα του κώδικα, όπου ενημερώνει τον χρήστη ότι είναι ο νικητής και αν επιθυμεί να κάνει μοίρασμα της νίκης του στο facebook προφίλ του. private void showgameoverwinner(final String readmessage) { final String newcurrentmessage = username + " is The Winner."; AlertDialog.Builder alertdialog = new AlertDialog.Builder( BluetoothChat.this); alertdialog.settitle("congratulations"); alertdialog.setmessage("congratulation you're the winner. Want to share to facebook?"); alertdialog.seticon(r.drawable.icon); alertdialog.setpositivebutton("yes", new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int which) { drawingpanel.cleardrawing(); drawingpanel = new DrawPanel(getApplicationContext()); publishstory(newcurrentmessage); ); alertdialog.setnegativebutton("no", new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int which) { drawingpanel.cleardrawing(); 74

75 DrawPanel(getApplicationContext()); ); drawingpanel = new dialog.dismiss(); showplayagain(); alertdialog.show(); 4.12 Μοίρασμα μηνύματος του νικητή στο Facebook και επιτυχής έξοδος από την εφαρμογή PaintGuess Αφού ενημερωθεί ο νικητής του παιχνιδιού ότι νίκησε, θα τον ρωτά αν θέλει να δημοσιεύσει την νίκη του σε μήνυμα στο facebook profil, όπως αναφέραμε παραπάνω. Παρακάτω φαίνεται το δείγμα του κώδικα όπου γίνεται η επιτυχής δημοσίευση μηνύματος στο faceboοk προφίλ του χρήστη. private void publishstory(final String readmessage) { Session session = Session.getActiveSession(); Session.OpenRequest requestpermission = new Session.OpenRequest(this); requestpermission.setpermissions(permissions); if (session!= null ) { Request request = Request.newStatusUpdateRequest( Session.getActiveSession(), readmessage, new Request.Callback() public void oncompleted(response response) { FacebookRequestError error = response.geterror(); if (error!= null) { Toast.makeText(BluetoothChat.this,error.getErrorMessage(), Toast.LENGTH_SHORT).show(); else { Toast.makeText(BluetoothChat.this,"Successfully posted!", Toast.LENGTH_LONG).show(); showplayagain(); ); request.executeasync(); Όταν γίνει επιτυχής δημοσίευση ή δε δεχτεί να γίνει δημοσίευση της νίκης του η εφαρμογή θα ρωτά τον χρήστη αν θέλει να λήξει το παιχνίδι, να κάνει αποσύνδεση και να συνδεθεί με διαφορετικό όνομα χρήστη στο παιχνίδι. Παρακάτω φαίνεται δείγμα του κώδικα. 75

76 public void showplayagain() { AlertDialog.Builder alertdialog = new AlertDialog.Builder( BluetoothChat.this); alertdialog.settitle("play Again"); alertdialog.setmessage("do you want to logout and play again using different username?"); alertdialog.seticon(r.drawable.icon); alertdialog.setpositivebutton("yes", new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int which) { logoutfacebook(); ); alertdialog.setnegativebutton("no", new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int which) { dialog.dismiss(); ); alertdialog.show(); public void logoutfacebook() { Session session = Session.getActiveSession(); if (!session.isclosed()) { session.closeandcleartokeninformation(); SharedPreferences prefs1 = getsharedpreferences("username", Context.MODE_PRIVATE); prefs1.edit().remove("name").commit(); Toast.makeText(this, "Logout Successfully", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(BluetoothChat.this, MainActivity.class); startactivity(intent); finish(); 76

77 ΚΕΦΑΛΑΙΟ 5 Ο Η ΖΩΓΡΑΦΙΚΗ ΣΤΟ ΚΙΝΗΤΟ 5.1 Τα γραφικά στη ζωγραφική του Android Η σημαντικότερη βιβλιοθήκη στη ζωγραφική του Android είναι τα Γραφικά (Graphics). Έτσι τα γραφικά android.graphics διαιρούν την ζωγραφική σε τρείς κλάσεις. Η μία αφορά τα Canvas το οποίο έχει να κάνει με το τι θα ζωγραφίσει ο χρήστης, το Paint που έχει να κάνει με το πώς θα ζωγραφίσει ο χρήστης και τέλος τα Bitmaps που έχουν να κάνουν με pixels μιας εικόνας. 5.2 Οι δείκτες αφής (touch Events) στη ζωγραφική Το πρότυπο android έχει υποστήριξη εκδήλωσης αφής (touch event) με τη μέθοδο κλάσης View class. Μπορούμε να εισάγουμε στο πρόγραμμα μας εκδηλώσεις αφής μέσα από τα Activities και τα custom views. Το λειτουργικό android υποστηρίζει πολλαπλούς δείκτες (multiple pointers) για παράδειγμα το δάκτυλο μας να αλληλεπιδρά με την οθόνη όπως φαίνεται στην εικόνα Εικόνα : Οι δείκτες αφής στο κινητό android 5.3 Η βασική δομή της ζωγραφικής Η εφαρμογή έχει έξι βασικές βιβλιοθήκες - κλάσεις που θα χρησιμοποιηθούν για να ζωγραφίζει ο χρήστης στο κινητό του (εικόνα 5.2.1). Αυτές είναι : Paint Class - Χρησιμοποιούμε την συγκεκριμένη κλάση η οποία κρατά το στυλ και την πληροφορία του χρώματος σχετικά με το πώς θα ζωγραφίσω γεωμετρίες, κείμενο και γραφικά bitmaps. 77

78 OnTouch Events Προσφέρουν δυνατότητα δραστηριότητας του δάκτυλου μας με οθόνες αφής MotionEvent Χρησιμοποιείται και αναπαριστά την κίνηση της αφής, και είναι η βασική κλάση για touch Events getx() and gety() Χρησιμοποιείται για να πάρει την τρέχουσα θέση ( συντεταγμένες) OnDraw() Χρησιμοποιείται ως αντικείμενο Canvas που μας επιτρέπει να εκτελέσουμε λειτουργίες σχεδίασης όπως να σχεδιάσουμε γραμμές, κύκλους, κείμενο και γραφικά Bitmaps. Εικόνα : Η βασική δομή της ζωγραφικής 5.4 Βασικές εντολές στη ζωγραφική Μερικές από τις πιο βασικές εντολές που χρησιμοποιούμε για να ζωγραφίσουμε σε μια οθόνη αφής είναι οι εξής : Paint.setAntiAlias(true) Η εντολή κάνει τις άκρες πιο ομαλές καθώς ζωγραφίζει ο χρήστης Paint.setColor(Color.GREEN) - καθορίζει το χρώμα της ζωγραφικής (πινέλo) όπου εδώ το χρώμα είναι πράσινο Paint.setStyle(Paint.Style.STROKE) καθορίζει το στυλ της ζωγραφιάς γεωμετρικά Paint.setStrokeJoin(Paint.Join.ROUND) - καθορίζει το σχήμα της ζωγραφιάς Paint.setStrokeWidth() καθορίζει το πλάτος της ζωγραφιάς 78

79 5.5 Βασικές εντολές στους δείκτες αφής - οθόνης Μερικές από τις πιο βασικές εντολές που χρησιμοποιούμε για τους δείκτες αφής ώστε να ζωγραφίζουμε όταν ακουμπάμε το δάκτυλο μας στην οθόνη αφής είναι οι εξής : MotionEvent.ACTION_DOWN - Χρησιμοποιούμε αυτήν την εντολή όταν πρόκειται να ακουμπήσουμε με το δάκτυλο μας την οθόνη αφής MotionEvent.ACTION_UP - Χρησιμοποιούμε αυτήν την εντολή όταν θέλουμε να αφήσουμε το δάκτυλο μας από την οθόνη αφής MotionEvent.ACTION_MOVE Χρησιμοποιούμε αυτήν την εντολή όταν θέλουμε να κινήσουμε το δάκτυλο μας στην οθόνη αφής 5.6 xml layout ζωγραφικής Στο αρχείο main.xml στο φάκελο layout δημιουργούμε δύο ξεχωριστά LinearLayout, ένα για το chat και ένα για την ζωγραφική που θα χρησιμοποιηθεί είτε για να ζωγραφίζει ο χρήστης είτε για να βλέπει την ζωγραφιά ο άλλος χρήστης όπως φαίνεται στο κώδικα παρακάτω : <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/in" android:layout_width="fill_parent" android:layout_height="229dp" android:stackfrombottom="true" android:transcriptmode="alwaysscroll" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <EditText android:id="@+id/edit_text_out" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_weight="1" /> <Button android:id="@+id/button_send" android:layout_width="wrap_content" 79

80 android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > </LinearLayout> </LinearLayout> Αντίστοιχα βλέπουμε το Graphical layout δίπλα από την main.xml 5.7 Βασικά σημεία του κώδικα ζωγραφικής Αφού δημιουργήσαμε το κατάλληλο layout για το πάνελ της ζωγραφικής όπου θα ζωγραφίζει ο χρήστης θα δούμε μερικά σημεία του κώδικα ζωγραφικής για το πώς ζωγραφίζουμε, πώς σβήνουμε την ζωγραφιά και πώς στέλνουμε αυτό που ζωγραφίσαμε στην άλλη συνδεδεμένη συσκευή. Στο παρακάτω κώδικα θέτουμε μερικές εντολές της ζωγραφικής για να ζωγραφίσουμε στο επιθυμητό Linearlayout που καθορίσαμε στο xml όπως φαίνεται παρακάτω : 80

81 linear = (LinearLayout) findviewbyid(r.id.ll); drawingpanel = new DrawPanel(getApplicationContext()); linear.addview(drawingpanel); mpaint = new Paint(); mpaint.setdither(true); mpaint.setcolor(0xffffff00); mpaint.setstyle(paint.style.stroke); mpaint.setstrokejoin(paint.join.round); mpaint.setstrokecap(paint.cap.round); mpaint.setstrokewidth(3); Σε αυτό το σημείο του κώδικα θέτουμε background χρώμα άσπρο στο canvas που θέλουμε να public void ondraw(canvas c) { super.ondraw(c); this.setbackgroundcolor(color.white); for (Object obj : strokes) { drawstroke((arraylist) obj, c); drawstroke(points, c); Σε αυτό το σημείο του κώδικα δίνουμε εντολή να ζωγραφίζει ελεύθερα σε μορφή στίγματος (drawpoint) to λεγόμενο free-hand drawing σε συντεταγμένες x,y. private void drawstroke(arraylist stroke, Canvas c) { if (stroke.size() > 0) { Point p0 = (Point) stroke.get(0); for (int i = 1; i < stroke.size(); i++) { Point p1 = (Point) stroke.get(i); c.drawpoint(p1.x, p1.y, paint); p0 = p1; Ο κώδικας για το πώς σβήνουμε την ζωγραφιά που δημιουργήσαμε στο Drawpanel ή αντίστοιχα εμφανίστηκε στην άλλη συσκευή φαίνεται παρακάτω. public void cleardrawing() { paint.setxfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); paint.reset(); invalidate(); 81

82 Στο παρακάτω κώδικα ο χρήστης που ακουμπά κ κινεί το δάκτυλο του στο Drawpanel της ζωγραφικής λαμβάνει σε στίγματα points με συντεταγμένες x,y αυτό που ζωγραφίζει ο πρώτος χρήστης εκείνη την public boolean ontouchevent(motionevent event) { if (event.getactionmasked() == MotionEvent.ACTION_MOVE) { if (notpaint == 0) { points.add(new Point((int) event.getx(), (int) event.gety())); BluetoothChat.testaki("testaki: " + (int) event.getx() + " " + (int) event.gety()); invalidate(); else { invalidate(); if (event.getactionmasked() == MotionEvent.ACTION_UP) { if (notpaint == 0) { this.strokes.add(points); points = new ArrayList(); return true; Παρακάτω υπάρχει όλος ο κώδικας του Drawpanel.java και το κομμάτι της ζωγραφικής. Drawpanel.java package com.example.thanasis; import java.util.arraylist; import android.content.context; import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; import android.graphics.paint.cap; import android.graphics.point; import android.graphics.porterduff; import android.graphics.porterduffxfermode; import android.view.motionevent; import android.view.view; public class DrawPanel extends View { static int notpaint = 0; 82

83 public DrawPanel(Context context) { super(context); points = new ArrayList(); strokes = new ArrayList(); paint = createpaint(color.green, public void ondraw(canvas c) { super.ondraw(c); this.setbackgroundcolor(color.white); for (Object obj : strokes) { drawstroke((arraylist) obj, c); drawstroke(points, c); public void cleardrawing() { paint.setxfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); paint.reset(); invalidate(); public void createdrawing() { points = new ArrayList(); strokes = new ArrayList(); paint = createpaint(color.white, public boolean ontouchevent(motionevent event) { if (event.getactionmasked() == MotionEvent.ACTION_MOVE) { if (notpaint == 0) { points.add(new Point((int) event.getx(), (int) event.gety())); BluetoothChat.testaki("testaki: " + (int) event.getx() + " " + (int) event.gety()); invalidate(); else { invalidate(); if (event.getactionmasked() == MotionEvent.ACTION_UP) { if (notpaint == 0) { this.strokes.add(points); points = new ArrayList(); return true; // ///////////////////////////////////////////////////////// public static boolean ontouchevent1(string event) { 83

84 int t, r; notpaint = 1; String l = ""; if (event.length() > 3) { l = event.substring(9, event.length()); if (event.length() < 3) { notpaint = 0; points.clear(); else if (l.length() < 6) { // 2 * 2 String x = l.substring(0, 2); t = Integer.parseInt(x); String y = l.substring(3, 5); r = Integer.parseInt(y); points.add(new Point(t, r)); else if (l.length() < 7) { // 2* 3 if (l.substring(2, 3).equals("\n")) { String x = l.substring(0, 2); t = Integer.parseInt(x); String y = l.substring(3, 6); r = Integer.parseInt(y); points.add(new Point(t, r)); else { String x = l.substring(0, 3); t = Integer.parseInt(x); String y = l.substring(4, 6); r = Integer.parseInt(y); points.add(new Point(t, r)); else if (l.length() < 8) { // 3*3 String x = l.substring(0, 3); t = Integer.parseInt(x); String y = l.substring(4, 7); r = Integer.parseInt(y); points.add(new Point(t, r)); return true; private void drawstroke(arraylist stroke, Canvas c) { if (stroke.size() > 0) { Point p0 = (Point) stroke.get(0); for (int i = 1; i < stroke.size(); i++) { Point p1 = (Point) stroke.get(i); c.drawpoint(p1.x, p1.y, paint); p0 = p1; private Paint createpaint(int color, float width) { Paint temp = new Paint(); 84

85 temp.setstyle(paint.style.stroke); temp.setantialias(true); temp.setcolor(color); temp.setstrokewidth(width); temp.setstrokecap(cap.round); return temp; public static Paint paint; private static ArrayList points; private static ArrayList strokes; 5.8 Τελικό αρχείο AndroidManifest.xml Παρακάτω φαίνεται το τελικό AndroidManifest.xml της εφαρμογής PaintGuess. <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="com.example.thanasis" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="18" /> <uses-permission android:name="android.permission.bluetooth_admin" /> <uses-permission android:name="android.permission.bluetooth" /> <uses-permission android:name="android.permission.internet" /> <application android:allowbackup="true" > <activity android:name="com.example.thanasis.mainactivity" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name="com.example.thanasis.howtoplayactivity" /> <activity android:name=".bluetoothchat" /> <activity android:name="com.example.facebook.facebookclientactivity" /> <activity android:name=".devicelistactivity" /> <activity android:name="com.facebook.loginactivity" 85

86 /> <activity android:name=".loginusingloginfragmentactivity" /> <meta-data android:name="com.facebook.sdk.applicationid" /> </application> </manifest> 86

87 ΚΕΦΑΛΑΙΟ 6 Ο ΠΕΡΙ ΤΗΣ ΕΦΑΡΜΟΓΗΣ PAINT GUESS 6.1 Ελάχιστες απαιτήσεις της εφαρμογής PaintGuess Οι ελάχιστες απαιτήσεις που χρειάζεται για να τρέξει η εφαρμογή είναι οι εξής : Υποστήριξη Bluetooth στο κινητό Διαθέσιμο Wifi δίκτυο Android v 2.2 ( έκδοση Froyo) Επεξεργαστής 1 GHz Μνήμη 512 MB Διαθέσιμο χώρο για εγκατάσταση 20 Mb 6.2 Εγκατάσταση της εφαρμογής PaintGuess στο κινητό Αφού τελειώσουμε το συγκεκριμένο project της εφαρμογής PaintGuess και κάνοντας save και build από το μενού στο πρόγραμμα Eclipse SDK για να βεβαιωθούμε ότι δεν υπάρχουν λάθη στο κώδικα της εφαρμογής είμαστε έτοιμοι να εγκαταστήσουμε την εφαρμογή στο κινητό. Ο λόγος που εγκαθιστούμε την εφαρμογή στο κινητό και δε το τρέχουμε απευθείας από το πρόγραμμα Eclipse SDK είναι γιατί παρόλο που το Eclipse SDK έχει υποστήριξη Bluetooth δεν ενεργοποιείται στο πρόγραμμα και χρειάζεται εικονικό πρόγραμμα όπως το Virtual Box για να λειτουργήσει σωστά. Έτσι συνδέουμε το κινητό μας τηλέφωνο android μέσω usb με τον υπολογιστή και κάνουμε export το project μας από το μενού του Eclipse SDK στην επιφάνεια εργασίας και κάνουμε αντιγραφή επικόλληση το αρχείο με κατάληξη apk που βρίσκεται στο φάκελο bin του project μας σε κάποιο φάκελο του κινητού Κάνουμε διπλό κλικ στο αρχείο apk στο κινητό και κάνουμε εγκατάσταση της εφαρμογής όπως φαίνεται στην παρακάτω εικόνα. Μόλις ολοκληρωθεί η εγκατάσταση θα μας βγάλει μήνυμα αν επιθυμούμε να ανοίξουμε την εφαρμογή ( εικόνα 6.1.1). 87

88 Εικόνα : Εγκατάσταση της εφαρμογής PaintGuess Με την ολοκλήρωση της εγκατάστασης, πατώντας το κουμπί Ok, θα εμφανιστεί το εικονίδιο PaintGuess στο κινητό μας όπως φαίνεται στην παρακάτω εικόνα στις εφαρμογές του κινητού (εικόνα 6.1.2). Εικόνα : Εικονίδιο PaintGuess σε κινητό Android 88

89 6.3 Περιγραφή της εφαρμογής PaintGuess Κάνοντας διπλό κλικ στο εικονίδιο PaintGuess εμφανίζεται το κεντρικό μενού του παιχνιδιού. Στο κεντρικό μενού βλέπουμε δύο κουμπιά. Πατώντας το κουμπί Start Game γίνεται η είσοδος του παιχνιδιού μέσω facebook και πατώντας το κουμπί How To Play μεταφερόμαστε σε μια νέα Activity όπου μας επεξηγεί πως παίζεται το παιχνίδι όπως φαίνεται στη παρακάτω εικόνα Εικόνα : Κεντρικό μενού του παιχνιδιού PaintGuess, επεξήγηση παιχνιδιού και επιστροφή στο κεντρικό μενού Το κουμπί Back to main menu μας επιστρέφει στο αρχικό μενού. Πατώντας το κουμπί Play Game αφού συνδεθούμε μέσω wifi στο διαδίκτυο, η εφαρμογή θα μας μεταφέρει στο Login του facebook όπου θα πρέπει να κάνουμε login χρησιμοποιώντας υπάρχον λογαριασμό facebook ή μπορούμε να δημιουργήσουμε ένα καινούργιο λογαριασμό στο πεδίο Δημιουργία Νέου λογαριασμού όπως φαίνεται στην εικόνα Σε περίπτωση που δε συνδεθούμε μέσω wifi στο διαδίκτυο το κουμπί Play Game δε θα λειτουργήσει αν το πατήσουμε. Αν δώσουμε λάθος κωδικό ή τότε θα μας βγάλει μήνυμα σφάλματος ότι δε αναγνώρισε τον λογαριασμό ή είναι εσφαλμένος ο κωδικός πρόσβασης όπως φαίνεται στην εικόνα

90 Εικόνα και : Εμφάνιση facebook login για είσοδο στο παιχνίδι και εμφάνιση σφάλματος μη αναγνώρισης εμαιλ. Εάν δώσουμε σωστό και κωδικό πρόσβασης θα εμφανιστεί μια εξουσιοδότηση της εφαρμογής του προφίλ μας στο facebook και θα μας ζητηθεί να δεχτούμε την εξουσιοδότηση ώστε να έχει πρόσβαση στο προφίλ, στις δημοσιεύσεις και στη λίστα φίλων η εφαρμογή PaintGuess όπως φαίνεται στην εικόνα Εικόνα και : Εξουσιοδότηση για την εφαρμογή PaintGuess και εμφάνιση του facebook id που έκανε login σε μήνυμα 90

91 Πατώντας οκ θα εμφανιστεί ένα μήνυμα καλωσορίσματος του χρήστη που έκανε είσοδο στην εφαρμογή π.χ Welcome Thanasis Asteras (εικόνα 6.3.5) και ένα αίτημα άδειας Bluetooth όπου θα ζητείται να επιτραπεί η ενεργοποίηση του Bluetooth στην εφαρμογή PaintGuess (εικόνα 6.3.6). Πατώντας Ναι θα εμφανιστεί το κυρίως παιχνίδι PaintGuess. Η οθόνη είναι χωρισμένη στη μέση. Από την μέση και πάνω υπάρχει το chat μέσω Bluetooth όπου οι συνδεδεμένοι χρήστες θα γράφουν και θα ανταλλάσουν μηνύματα μεταξύ τους. Από την μέση και κάτω είναι η οθόνη της ζωγραφικής όπου θα ζωγραφίζει ο επιλαχών παίκτης. (εικόνα 6.3.7). Εικόνα και εικόνα : Αίτημα άδειας Bluetooth και κυρίως παιχνίδι PaintGuess. Αν γράψουμε οτιδήποτε στο πλαίσιο text και πατήσουμε το κουμπί send θα μας βγάλει μήνυμα ότι δε έχουμε συνδεθεί με κάποια συσκευή όπως φαίνεται στην εικόνα Γι αυτό το λόγο μέσα από το μενού του κινητού μας θα πρέπει να συνδεθούμε με μια συσκευή μέσω Bluetooth προκειμένου να μπορούμε να στέλνουμε μηνύματα chat Το μενού εμφανίζει δύο επιλογές είτε σύνδεση με συσκευή (connect to a device) είτε να γίνει ορατή η συσκευή σε άλλες συσκευές μέσω Bluetooth (make discoverable) όπως φαίνεται στην εικόνα

92 Εικόνα και : Μήνυμα και μενού σύνδεσης με συσκευή μέσω bluetooth Αν κλικάρουμε την επιλογή connect a device θα εμφανιστεί η εικόνα όπου θα ζητηθεί να γίνει αναζήτηση συσκευής (scan for devices) ενώ αν κλικάρουμε την επιλογή make discoverable θα ζητηθεί άδεια ώστε να είναι ορατή σε άλλες συσκευές Bluetooth για 300 δευτερόλεπτα (secs) όπως φαίνεται στην εικόνα Εικόνα και εικόνα : Αίτημα άδεια Bluetooth για 300 secs και αναζήτηση συσκευών. 92

93 Πατώντας το κουμπί Scan for devices θα γίνει αναζήτηση συσκευών μέσω Bluetooth και θα εμφανιστούν οι συσκευές που έχουν ενεργοποιημένο bluetooth όπως φαίνεται στις εικόνες και αντίστοιχα. Εικόνα και : Αναζήτηση συσκευών μέσω Bluetooth και εμφάνιση των συσκευών Επιλέγουμε να συνδεθούμε με την συσκευή για παράδειγμα null (ΒlueΖ) και θα μας ζητηθεί να γίνει σύζευξη της συσκευής με τη δική μας οι οποίες θα έχουν κοινό κωδικό PIN συνήθως 0000 όπως φαίνεται στην εικόνα Αφού ολοκληρωθεί η σύζευξη θα εμφανιστεί μήνυμα σε κάθε συνδεδεμένη συσκευή ότι συνδεθήκαμε με την αντίστοιχη συσκευή connected to bluez και έτσι μπορούμε να στείλουμε μηνύματα στο chat μεταξύ μας (εικόνα ). Εικόνα : Σύζευξη Bluetooth με κώδικο PIN 93

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

Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών Βιβλιογραφία: Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών Προγραμματισμός Android Ian Clifton. AndroidTM User Interface Design, Addison-Wesley, 2013 P. Deitel. H. Deitel, A. Deitel.

Διαβάστε περισσότερα

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

Εισαγωγή στην Ανάπτυξη Εφαρμογών Android Εισαγωγή στην Ανάπτυξη Εφαρμογών Android Σημειώσεις σεμιναρίου Επιμέλεια: Βασίλης Κόλιας Ενότητα 2 Εισαγωγή στις εφαρμογές Graphical User Interfaces Πίνακας Περιεχομένων 4 Εισαγωγή στις εφαρμογές... 2

Διαβάστε περισσότερα

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

ANDROID Προγραμματισμός Εφαρμογών ANDROID Προγραμματισμός Εφαρμογών Παναγιώτης Κρητιώτης ΑΜ 1607 Περιεχόμενα Εισαγωγή Βασικά Στοιχεία Χαρακτηριστικά Αρχιτεκτονική Εργαλεία Προγραμματισμού Eclipse IDE Android SDK - ADT Plugin Προσομοιωτής

Διαβάστε περισσότερα

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

Ανάπτυξη διαδικτυακής εφαρμογής σε περιβάλλον κινητών συσκευών με λειτουργικό σύστημα Android Ανάπτυξη διαδικτυακής εφαρμογής σε περιβάλλον κινητών συσκευών με λειτουργικό σύστημα Android Ιωάννης Γιαννόπουλος, ΑΜ: 0430 Γεώργιος Δούρος, ΑΜ: 0686 Επιβλέπων: Γεώργιος Ασημακόπουλος Σεπτέμβριος 2014

Διαβάστε περισσότερα

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

Digital Academy. Εισαγωγή στην ανάπτυξη Android Εφαρμογών Digital Academy Εισαγωγή στην ανάπτυξη Android Εφαρμογών Περιεχόμενα ΠΕΡΙΕΧΟΜΕΝΑ... 2 ΕΝΟΤΗΤΑ 1 ΠΡΩΤΗ ΓΝΩΡΙΜΙΑ ΜΕ ΤΟ ANDROID... 4 1.1 ΕΙΣΑΓΩΓΗ... 4 1.2 ΠΗΓΕΣ ΓΝΩΣΗΣ... 4 1.3 ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ... 5 1.4

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Επιμέλεια: Μαργαρίτα Ρουγγέρη Επιβλέπων: Γεώργιος Στυλιαράς Πληροφορική Πολυμέσα ΓΤΠ61 4 η Εργασία 2011 Επιμέλεια: Μαργαρίτα Ρουγγέρη 71953 Επιβλέπων: Γεώργιος Στυλιαράς Πληροφορική Πολυμέσα ΓΤΠ61 4 η Εργασία 2011 Λειτουργικό σύστημα κινητή τηλεφωνία Google Open source Smart phones, tablets, mp3, τηλεοράσεις

Διαβάστε περισσότερα

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

ΠΑΡΑΡΤΗΜΑ ΓΡΕΒΕΝΩΝ ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΣΙΑΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ ΓΡΕΒΕΝΩΝ ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΣΙΑΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Θέμα : ΥΛΟΠΟΙΗΣΗ ΞΕΝΟΓΛΩΣΣΗΣ ΕΚΠΑΙΔΕΥΤΙΚΗΣ ΕΦΑΡΜΟΓΗΣ ΣΕ ΠΛΑΤΦΟΡΜΑ ANDROID Όνοματεπώνυμο : Στέκας Ιγνάτιος Επιβλέπων : Σωτήριος Κοντογιάννης Ημερομηνία

Διαβάστε περισσότερα

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

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Σ ε λ ί δ α 1 Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Περιεχόμενα 1. Download Arebas Easy... 2 2. Εγκατάσταση Arebas Easy... 3 3. Εγγραφή στον Arebas Server... 7 4. Παραμετροποίηση Arebas Easy...

Διαβάστε περισσότερα

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

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ της Πλατφόρμας Τηλεκατάρτισης ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή...2 2. Αρχική σελίδα, Εισαγωγή & Περιβάλλον Συστήματος...3 2.1. Αρχική σελίδα εισαγωγής...3 2.2. Εισαγωγή στην Πλατφόρμα Τηλε-κατάρτισης...4

Διαβάστε περισσότερα

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

Ανάπτυξη Εφαρμογής Ταξίμετρου σε Android 2014 Ανάπτυξη Εφαρμογής Ταξίμετρου σε Android Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Μεταπτυχιακό Πρόγραμμα Σπουδών: «Ψηφιακές Επικοινωνίες και Δίκτυα» Ανάπτυξη Εφαρμογής Ταξίμετρου σε πλατφόρμα

Διαβάστε περισσότερα

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

ΠΡΟΛΟΓΟΣ. Σε ποιους απευθύνεται αυτό το βιβλίο... vi Διάρθρωση του βιβλίου... vi Πίνακας Περιεχομένων ΠΡΟΛΟΓΟΣ V Σε ποιους απευθύνεται αυτό το βιβλίο... vi Διάρθρωση του βιβλίου... vi 1η Ενότητα: Κινητός ιστός... vii 2η Ενότητα: Κινητές εφαρμογές στην πλατφόρμα Android... vii 3η Ενότητα:

Διαβάστε περισσότερα

Ηλεκτρονική Αίθουσα Επικοινωνίας «Big Blue Button»

Ηλεκτρονική Αίθουσα Επικοινωνίας «Big Blue Button» Ηλεκτρονική Αίθουσα Επικοινωνίας «Big Blue Button» μέσω ΙΕΠ Moodle Για να χρησιμοποιήσουμε την Ηλεκτρονική Αίθουσα Επικοινωνίας «Big Blue Button», θα πρέπει να συνδεθούμε μέσω της πλατφόρμας Moodle του

Διαβάστε περισσότερα

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

Ενότητα 1η. Εισαγωγή στην Πληροφορική Ενότητα 1η Εισαγωγή στην Πληροφορική 1.1 Τι είναι Πληροφορική Ένας σύντομος ορισμός για το τι είναι πληροφορική είναι ο παρακάτω: όλα εκείνα που χρειάζεται κανείς για να παράγει, να οργανώνει και να διαχειρίζεται

Διαβάστε περισσότερα

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

Εισαγωγή 6. Δημιουργία λογαριασμού 13. Εγκατάσταση και λειτουργία του Skype 28. Βασικές λειτουργίες 32. Επιλογές συνομιλίας 48 ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή 6 Δημιουργία λογαριασμού 13 Εγκατάσταση και λειτουργία του Skype 28 Βασικές λειτουργίες 32 Επιλογές συνομιλίας 48 Γενικές ρυθμίσεις Skype 64 Το Skype σε φορητές συσκευές 78 Εγγραφή

Διαβάστε περισσότερα

6 Εισαγωγή στο Wordpress 3.x

6 Εισαγωγή στο Wordpress 3.x Περιεχόμενα 1 Εγκατάσταση του WordPress... 11 Ελάχιστες απαιτήσεις... 11 Easy PHP... 12 Εγκατάσταση Easy PHP... 12 Βήματα εγκατάστασης EasyPHP με εικόνες... 13 Το EasyPHP στα Ελληνικά... 17 Κατέβασμα και

Διαβάστε περισσότερα

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

1. Κατάλογος συσκευασίας 1. Κατάλογος συσκευασίας 1. 2. Αντάπτορας AC 3. 4. Καλώδιο USB 5. Κάρτα εγγύησης 2. Γενική επισκόπηση της συσκευής 3 4 5 1 6 2 7 1 2 3 4 5 6 Πλήκτρο Λειτουργίας\Επανα φοράς Ένταση +\ Ένταση - Κάρτα Micro

Διαβάστε περισσότερα

ΔΗΜΙΟΥΡΓΙΑMOBILE ΕΦΑΡΜΟΓΩΝ ΓΙΑ ANDROID ΣΥΣΚΕΥΕΣ ΜΕ APPINVENTOR

ΔΗΜΙΟΥΡΓΙΑMOBILE ΕΦΑΡΜΟΓΩΝ ΓΙΑ ANDROID ΣΥΣΚΕΥΕΣ ΜΕ APPINVENTOR ΔΗΜΙΟΥΡΓΙΑMOBILE ΕΦΑΡΜΟΓΩΝ ΓΙΑ ANDROID ΣΥΣΚΕΥΕΣ ΜΕ APPINVENTOR Σοφία Τζελέπη Σύμβουλος Πληροφορικής Δυτ. Θεσ/νικης Απρίλιος 2013 http://users.sch.gr/stzelepi/portal stzelepi@sch.gr ΑΠΡΙΛΙΟΣ 2013 App Inventor

Διαβάστε περισσότερα

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

Internet 1. Ρυθµίσεις ικτύου Η MID διαθέτει ενσωµατωµένο Wi-Fi module. Κάντε κλικ στο, στο µενού ρυθµίσεων θα εµφανιστεί στο MID. 1 2 9 4 3 5 6 7 8 Internet 1. Ρυθµίσεις ικτύου Η MID διαθέτει ενσωµατωµένο Wi-Fi module. Κάντε κλικ στο, στο µενού ρυθµίσεων θα εµφανιστεί στο MID. 6.3 Επιλέξτε µια εικόνα. Κάντε κλικ στο "Wallpaper"

Διαβάστε περισσότερα

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

Η εφαρμογή είναι βελτιστοποιημένη για όλες τις συσκευές ios και Android, με ios 9.x ή νεότερη έκδοση και Android 4.4 ή νεότερη έκδοση. Οδηγίες βήμα προς βήμα για την εφαρμογή Με την εφαρμογή αυτή μπορείτε να χρησιμοποιήσετε ψηφιακά βιβλία (e-books) σε μορφή «Adobe Digital Editions epub» και «Adobe Digital Editions PDF», αρχεία ήχου (e-audios),

Διαβάστε περισσότερα

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network).

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). ΙΔΡΥΜΑ ΝΕΟΛΑΙΑΣ ΚΑΙ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗΣ ΥΠΗΡΕΣΙΕΣ ΔΙΑΔΙΚΤΥΟΥ Καλαμάτα, 2015 Το Διαδίκτυο Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). Πρόκειται

Διαβάστε περισσότερα

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

1. Κατάλογος συσκευασίας 1. Κατάλογος συσκευασίας 1. 2. Αντάπτορας AC 3. Ακουστικά 4. Καλώδιο USB 5. 6. Κάρτα εγγύησης 2. Γενική επισκόπηση της συσκευής 10 11 3 4 7 1 2 5 6 8 9 1 2 3 4 5 6 7 Ένταση +\ Ένταση - Ρύθμιση της στάθμης

Διαβάστε περισσότερα

Τεχνολογία Ηλεκτρονικού Εµπορίου. 8 η διάλεξη: Κινητό Ηλεκτρονικό Εµπόριο - Android. Χρήστος Γεωργιάδης

Τεχνολογία Ηλεκτρονικού Εµπορίου. 8 η διάλεξη: Κινητό Ηλεκτρονικό Εµπόριο - Android. Χρήστος Γεωργιάδης Τεχνολογία Ηλεκτρονικού Εµπορίου 8 η διάλεξη: Κινητό Ηλεκτρονικό Εµπόριο - Android Χρήστος Γεωργιάδης Τι είναι το Android? Το Android είναι λειτουργικό σύστηµα για συσκευές κινητής τηλεφωνίας το οποίο

Διαβάστε περισσότερα

Ενημέρωση σε Windows 8.1 από τα Windows 8

Ενημέρωση σε Windows 8.1 από τα Windows 8 Ενημέρωση σε Windows 8.1 από τα Windows 8 Τα Windows 8.1 και τα Windows RT 8.1 είναι βασισμένα στα Windows 8 και στα Windows RT, για να σας προσφέρουν βελτιώσεις στην εξατομίκευση, την αναζήτηση, τις εφαρμογές,

Διαβάστε περισσότερα

Σύνδεση στο ΙΕΠ Moodle Υλικό Επιμόρφωσης Εξ Αποστάσεως Επιμορφώσεις

Σύνδεση στο ΙΕΠ Moodle Υλικό Επιμόρφωσης Εξ Αποστάσεως Επιμορφώσεις Σύνδεση στο ΙΕΠ Moodle Υλικό Επιμόρφωσης Εξ Αποστάσεως Επιμορφώσεις (Α) Σύνδεση στο ΙΕΠ Moodle Για σύνδεση στο Moodle του ΙΕΠ πληκτρολογούμε στη γραμμή των διευθύνσεων του φυλλομετρητή μας www.iep.edu.gr

Διαβάστε περισσότερα

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

Ανάπτυξη εφαρμογής ηλεκτρονικού πίνακα ανακοινώσεων για φορητή συσκευή Διατμηματικό Πρόγραμμα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήματα (Master in Information Systems MIS) Διπλωματική εργασία με θέμα: Ανάπτυξη εφαρμογής ηλεκτρονικού πίνακα ανακοινώσεων για φορητή συσκευή

Διαβάστε περισσότερα

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

Δομή. 1 Πλήκτρα αυξομείωσης έντασης ήχου 7 Ηχεία 2 Θύρα Φόρτιση. 8 Πλήκτρο Home 3 Θύρα MicroUSB. 9 Είσοδος Κάρτας SD. 6 Μπροστινή κάμερα Γρήγορος Οδηγός, Δομή 1 2 3 4 5 6 7 7 8 6 10 11 1 Πλήκτρα αυξομείωσης έντασης ήχου 7 Ηχεία 2 Θύρα Φόρτιση 8 Πλήκτρο Home 3 Θύρα MicroUSB 9 Είσοδος Κάρτας SD 4 Υποδοχή ακουστικών 3.5mm 10 Πίσω κάμερα 5

Διαβάστε περισσότερα

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

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Λαμπαδαρίδης Αντώνιος el04148@mail.ntua.gr Διπλωματική εργασία στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Επιβλέπων: Καθηγητής Τ. Σελλής Περίληψη

Διαβάστε περισσότερα

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

ΠΑΡΑΡΤΗΜΑ ΓΡΕΒΕΝΩΝ ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΣΙΑΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ ΓΡΕΒΕΝΩΝ ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΣΙΑΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Θέμα : Υλοποίηση ξενόγλωσσης εκπαιδευτικής εφαρμογής σε πλατφόρμα Android Όνομα : Στέκας Ιγνάτιος Α.Μ : gp00133 Εξάμηνο : Εαρινό εξάμηνο

Διαβάστε περισσότερα

Εφαρμογή Skype Μαθησιακά Αποτελέσματα

Εφαρμογή Skype Μαθησιακά Αποτελέσματα ΕΦΑΡΜΟΓΗ SKYPE Εφαρμογή Skype Μαθησιακά Αποτελέσματα Κατανόηση της εφαρμογής Skype και της χρησιμότητάς του. Εφαρμογή στην καθημερινότητά μας. Να κάνουμε δωρεάν κλήσεις εσωτερικού και εξωτερικού. Να δεχόμαστε

Διαβάστε περισσότερα

ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1: ΥΠΗΡΕΣΙΕΣ - ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ

ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1: ΥΠΗΡΕΣΙΕΣ - ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1: ΥΠΗΡΕΣΙΕΣ - ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ Περιγραφή Αυτό το πρόγραμμα έχει σχεδιαστεί για να βοηθήσει τους μαθητές να γνωρίσουν τις υπηρεσίες και τις εφαρμογές του διαδικτύου καθώς και τους

Διαβάστε περισσότερα

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

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο FrontPage 2003 Πρακτικός Οδηγός Χρήσης Το FrontPage είναι ένα πρόγραμμα δημιουργίας ιστοσελίδων και δικτυακών τόπων που επιτρέπει το σχεδιασμό ιστοσελίδων μέσα από γραφικό περιβάλλον αλλά και την ταυτόχρονη

Διαβάστε περισσότερα

MASTER-MID GPS. Εγχειρίδιο. Mobility, Versatility, Flexibility MT7000

MASTER-MID GPS. Εγχειρίδιο. Mobility, Versatility, Flexibility MT7000 MASTER-MID GPS Mobility, Versatility, Flexibility MT7000 Εγχειρίδιο GR Εισαγωγή...2 Περιεχόμενα συσκευασίας...2 Επισκόπηση...2 Κουμπιά...3 Ενεργοποίηση συσκευής...3 Απενεργοποίηση συσκευής...3 Κατάσταση

Διαβάστε περισσότερα

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

Εισαγωγή Επαφών από την κάρτα SIM 1 Εισαγωγή Επαφών από την κάρτα SIM 1. Πατήστε το Πλήκτρο Κεντρικής Σελίδας > > Επαφές. 2. Πατήστε το Πλήκτρο Μενού > Εισαγωγή / Εξαγωγή > Εισαγωγή από κάρτα SIM. Η συσκευή σας ZTE-RACER θα διαβάσει αυτόματα

Διαβάστε περισσότερα

Υποστήριξη. Σας ευχαριστούμε που επιλέξατε τα προϊόντα NETGEAR.

Υποστήριξη. Σας ευχαριστούμε που επιλέξατε τα προϊόντα NETGEAR. Έναρξη χρήσης Υποστήριξη Σας ευχαριστούμε που επιλέξατε τα προϊόντα NETGEAR. Αφού εγκαταστήσετε τη συσκευή σας, εντοπίστε τον σειριακό αριθμό στην ετικέτα του προϊόντος και χρησιμοποιήστε τον για να δηλώσετε

Διαβάστε περισσότερα

XAMPP Apache MySQL PHP javascript xampp

XAMPP Apache MySQL PHP javascript xampp XAMPP Το xampp είναι ένα δωρεάν πρόγραμμα με το οποίο μπορούμε να κάνουμε εγκατάσταση τον Apache, τη MySQL και την PHP. Apache. Ο Apache είναι ένας Web Server. Είναι δηλαδή πρόγραμμα το οποίο τρέχει μόνιμα

Διαβάστε περισσότερα

Android Studio για Windows

Android Studio για Windows Android Studio για Windows 1. Οδηγίες Εγκατάστασης: 1. Κατεβάστε το Android Studio από εδώ (τελευταία έκδοση 0.4.6, 496 MB): http://developer.android.com/sdk/installing/studio.html 2. Εγκαταστήστε το αρχείο

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Οδηγός Χρήστη. Καλώς ήλθατε στο Ηλεκτρονικό Περιβάλλον Μάθησης. http://elearning.kekdiastasi.edu.gr/

Οδηγός Χρήστη. Καλώς ήλθατε στο Ηλεκτρονικό Περιβάλλον Μάθησης. http://elearning.kekdiastasi.edu.gr/ Οδηγός Χρήστη Καλώς ήλθατε στο Ηλεκτρονικό Περιβάλλον Μάθησης http://elearning.kekdiastasi.edu.gr/ Περιεχόµενα 1. ΕΙΣΟ ΟΣ ΣΤΗΝ ΠΛΑΤΦΟΡΜΑ 3 2. ΤΟ ΠΡΟΦΙΛ ΣΑΣ 6 3. ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΤΟΥ ΜΑΘΗΜΑΤΟΣ 9 4. ΤΟ ΜΑΘΗΜΑ

Διαβάστε περισσότερα

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

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ 1 ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΥΛΟΠΟΙΗΣΗ ΑNDROID ΕΦΑΡΜΟΓΗΣ ΑΠΟΣΤΟΛΗΣ ΣΥΝΤΟΜΩΝ ΜΗΝΥΜΑΤΩΝ ΜΕΣΩ ΤΗΣ OMNIVOICE ΤΣΙΑΛΟΣ ΔΗΜΗΤΡΙΟΣ Α.Μ.: 9883 ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: Ράπτης Βασίλειος 2 ΕΥΧΑΡΙΣΤΙΕΣ

Διαβάστε περισσότερα

Οδηγός γρήγορης εγκατάστασης. (Για Windows και MAC) Ασύρματη κάμερα IP HD περιστροφής / κλισης για εσωτερικούς χώρους v3.14

Οδηγός γρήγορης εγκατάστασης. (Για Windows και MAC) Ασύρματη κάμερα IP HD περιστροφής / κλισης για εσωτερικούς χώρους v3.14 Οδηγός γρήγορης εγκατάστασης (Για Windows και MAC) Ασύρματη κάμερα IP HD περιστροφής / κλισης για εσωτερικούς χώρους v3.14 Περιεχόμενα συσκευασίας 1 Εισαγωγή στο υλικό Εξωτερική περιγραφή ΔΙΑΦΟΡΕΣ Μοντέλο

Διαβάστε περισσότερα

Δίνουμε λύσεις, δεν προτείνουμε

Δίνουμε λύσεις, δεν προτείνουμε Δίνουμε λύσεις, δεν προτείνουμε Σχετικά με εμάς Ολοκληρωμένες λύσεις προβολής επαγγελματιών στο διαδίκτυο. Ο Όμιλος FOCUS-ON, ένας όμιλος Web & Mobile Services, ξεκίνησε τη δραστηριοποίησή του το 2008

Διαβάστε περισσότερα

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795 Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795 Περιεχόμενα Εισαγωγή Εγκατάσταση Δημιουργία νέου project Java Editor Perspectives Δημιουργία source folders Προσθήκη νέου αρχείου στο project Εισάγωντας

Διαβάστε περισσότερα

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΡΙΣΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΡΙΣΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Ανάπτυξη mobile εφαρμογής διεπαφής χρήστη, για τις υπηρεσίες

Διαβάστε περισσότερα

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

Κεφάλαιο 1 Συναντώντας τις Τεχνολογίες του Σήμερα. Ενισχυμένη Έκδοση 2017 Κεφάλαιο 1 Συναντώντας τις Τεχνολογίες του Σήμερα Ενισχυμένη Έκδοση 2017 Επισκόπηση Στόχων Να διακρίνετε μεταξύ φορητών υπολογιστών (laptops), tablets, επιτραπέζιων υπολογιστών (desktops) και εξυπηρετητών

Διαβάστε περισσότερα

10 Νέα χαρακτηριστικά του Facebook που (πιθανόν) δεν γνωρίζεις

10 Νέα χαρακτηριστικά του Facebook που (πιθανόν) δεν γνωρίζεις 10 Νέα χαρακτηριστικά του Facebook που (πιθανόν) δεν γνωρίζεις 6 Μαρτίου 2016 Παναγιώτης Σακαλάκης Αν υπάρχει κάτι που γνωρίζει ο περισσότερος κόσμος για το Facebook, αυτό είναι πως κατέχει την πρώτη θέση

Διαβάστε περισσότερα

Σημείωση για το προϊόν

Σημείωση για το προϊόν Έναρξη από εδώ Copyright 2013 Hewlett-Packard Development Company, L.P. Η ονομασία Windows είναι σήμα κατατεθέν της Microsoft Corporation στις ΗΠΑ. Οι πληροφορίες στο παρόν έγγραφο μπορεί να αλλάξουν χωρίς

Διαβάστε περισσότερα

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

Ο Οδηγός γρήγορης εκκίνησης Ο Οδηγός γρήγορης εκκίνησης του Microsoft PowerPoint 2013 έχει διαφορετική εμφάνιση από προηγούμενες εκδόσεις. Γι αυτό το λόγο, δημιουργήσαμε αυτόν τον οδηγό για να ελαχιστοποιήσουμε την καμπύλη εκμάθησης.

Διαβάστε περισσότερα

Αξιολόγηση της επίσημης Moodle Mobile εφαρμογής

Αξιολόγηση της επίσημης Moodle Mobile εφαρμογής Αξιολόγηση της επίσημης Moodle Mobile εφαρμογής ΣΕΜΙΝΑΡΙΟ ΕΚΠΑΙΔΕΥΤΙΚΟΥ ΛΟΓΙΣΜΙΚΟΥ ΑΛΕΞΑΝΔΡΟΣ ΚΑΝΤΑΣ ΠΡΩΤΟ ΣΕΜΙΝΑΡΙΟ ΔΕΥΤΕΡΟΥ ΚΥΚΛΟΥ ΕΚΠΑΙΔΕΥΣΗΣΗΣ ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΚΡΗΤΗΣ Αυτή η εργασία

Διαβάστε περισσότερα

Περιεχόμενα Πώς να χρησιμοποιήσετε το βιβλίο... 7 Αντί προλόγου... 9 Κεφάλαιο 1: Κεφάλαιο 2: Κεφάλαιο 3: Κεφάλαιο 4: Κεφάλαιο 5: Πώς να δημιουργήσω το Προφίλ μου και να γίνω μέλος στο Facebook;... 15 Τι

Διαβάστε περισσότερα

Google Family Link. Οδηγός για Γονείς

Google Family Link. Οδηγός για Γονείς 1 Google Family Link Οδηγός για Γονείς 2 Το Google Family Link είναι μια εφαρμογή γονικού ελέγχου της Google, που ενσωματώνει λειτουργίες περιορισμού χρόνου οθόνης και διαχείρισης εφαρμογών. Έτσι οι γονείς

Διαβάστε περισσότερα

Πλατφόρμα Cloud. Έκδοση 1.0. Οδηγός χρήσης

Πλατφόρμα Cloud. Έκδοση 1.0. Οδηγός χρήσης Πλατφόρμα Cloud Έκδοση 1.0 Οδηγός χρήσης Σεπτέμβριος 2017 www.lexmark.com Περιεχόμενα 2 Περιεχόμενα Ιστορικό αλλαγών...3 Επισκόπηση... 4 Ξεκινώντας...5 Απαιτήσεις συστήματος...5 Πρόσβαση στην Πλατφόρμα

Διαβάστε περισσότερα

Υπηρεσία διαμοιρασμού αρχείων

Υπηρεσία διαμοιρασμού αρχείων 7 Ιουνίου 2013 Υπηρεσία διαμοιρασμού αρχείων Πανεπιστήμιο Κύπρου, Τμήμα Πληροφορικής Ομάδα Τεχνικής Υποστήριξης v0.4 Πίνακας περιεχομένων Γενικά... 2 Διαθεσιμότητα... 2 Πρόσβαση... 2 Φυλλομετρητή ιστού...

Διαβάστε περισσότερα

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

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή 1 Πίνακας Περιεχομένων 1. Εισαγωγή... 4 1.1 Περιβάλλον Moodle...4 1.2 Χρήση ονόματος χρήστη και κωδικού...4 1.3 Δημιουργία νέου μαθήματος...4 1.3.1

Διαβάστε περισσότερα

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

Τμήμα Πληροφορικής & Επικοινωνιών ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Εφαρμογή για το λειτουργικό σύστημα Android ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Αρχιτεκτονικής Υπολογιστών & Βιομηχανικών Εφαρμογών ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Εφαρμογή για το λειτουργικό σύστημα Android Σπουδαστές: Γεωργίου

Διαβάστε περισσότερα

Οδηγίες ρύθμισης για σύνδεση των μετατροπέων Fronius στο online portal Fronius Solar.web (με χρήση Η/Υ)

Οδηγίες ρύθμισης για σύνδεση των μετατροπέων Fronius στο online portal Fronius Solar.web (με χρήση Η/Υ) Οδηγίες ρύθμισης για σύνδεση των μετατροπέων Fronius στο online portal Fronius Solar.web (με χρήση Η/Υ) 1. Πριν Ξεκινήσετε Δημιουργήστε λογαριασμό στο online portal Fronius Solar.web Σε περίπτωση που δεν

Διαβάστε περισσότερα

Οδηγός γρήγορης εγκατάστασης. Ασύρματη κάμερα. IP MJPEGγια εξωτερικούς χώρους V3.14

Οδηγός γρήγορης εγκατάστασης. Ασύρματη κάμερα. IP MJPEGγια εξωτερικούς χώρους V3.14 Οδηγός γρήγορης εγκατάστασης Ασύρματη κάμερα IP MJPEGγια εξωτερικούς χώρους V3.14 Περιεχόμενα συσκευασίας 1 Εισαγωγή στο υλικό Εξωτερική περιγραφή ΔΙΑΦΟΡΕΣ Μοντέλο Pan/Tilt Κεραία POE FI8904W FI8905W FI8905E

Διαβάστε περισσότερα

Οδηγίες Χρήσης EAP Controller Software

Οδηγίες Χρήσης EAP Controller Software Οδηγίες Χρήσης EAP Controller Software Designed by TP-Link Hellas Ltd. Professional Business Unit Επιμέλεια: Βαλάντης Οικονομόπουλος 1 Περιεχόμενα 1.1 Προσδιορισμός της Τοπολογίας του Δικτύου...2 1.2 Αρχική

Διαβάστε περισσότερα

Vodafone Business Connect

Vodafone Business Connect Vodafone Business Connect Vodafone Business WebHosting Αναλυτικός Οδηγός Χρήσης Photo Album Αναλυτικός οδηγός χρήσης: Photo Album Vodafone Business Connect - Υπηρεσίες φιλοξενίας εταιρικού e-mail & web

Διαβάστε περισσότερα

Τα είδη των ιστοσελίδων. Web Sites E-commerce Sites CMS & Blog Sites CMS Flash Facebook Layouts Tumblr Themes

Τα είδη των ιστοσελίδων. Web Sites E-commerce Sites CMS & Blog Sites CMS Flash Facebook Layouts Tumblr Themes Ορισμός ιστοσελίδας Ιστοσελίδα (αγγλικά: web page) είναι ένα είδος εγγράφου του παγκόσμιου ιστού (WWW) που περιλαμβάνει πληροφορίες με την μορφή κειμένου, υπερκειμένου, εικόνας, βίντεο και ήχου. Τα είδη

Διαβάστε περισσότερα

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Ταξιδιωτικός οδηγός της Θεσσαλονίκης για Android ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Ταξιδιωτικός οδηγός της Θεσσαλονίκης για Android Των φοιτητών Γιακουμή Ζαχαρία Επιβλέπων καθηγητής Κεραμόπουλος Ευκλείδης Αρ. Μητρώου: 073232 Παζαρλόγλου Ευαγγελία Αρ. Μητρώου: 073244

Διαβάστε περισσότερα

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

ΨΗΦΙΑΚΗ ΑΛΛΗΛΕΓΓΥΗ ΟΔΗΓΟΣ ΨΗΦΙΑΚΗ ΑΛΛΗΛΕΓΓΥΗ ΟΔΗΓΟΣ Πίνακας Περιεχομένων Ενεργοποίηση και Αρχικοποίηση Συσκευής... 4 1 Περιεχόμενα συσκευασίας ipad... 5 2 Εξοικείωση με την συσκευή... 6 3 Αρχικοποίηση και ρυθμίσεις ipad... 7 4

Διαβάστε περισσότερα

Σχεδίαση και Ανάπτυξη Ιστότοπων

Σχεδίαση και Ανάπτυξη Ιστότοπων Σχεδίαση και Ανάπτυξη Ιστότοπων Ιστορική Εξέλιξη του Παγκόσμιου Ιστού Παρουσίαση 1 η 1 Βελώνης Γεώργιος Καθηγητής Περιεχόμενα Τι είναι το Διαδίκτυο Βασικές Υπηρεσίες Διαδικτύου Προηγμένες Υπηρεσίες Διαδικτύου

Διαβάστε περισσότερα

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

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή 1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ Μάθημα: Ενότητα: Πληροφορική Α' Γυμν. Το του Υπολογιστή 1. Τι ονομάζεται Πρόγραμμα; Είναι οι οδηγίες που δίνονται στον υπολογιστή για να εξηγήσουμε πώς γίνεται μια εργασία (δηλαδή η

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Κατασκευή δικτυακής εφαρμογής στην αρχιτεκτονική ios iphone που υλοποιεί ένα παιχνίδι ερωτοαπαντήσεων Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Κατασκευή δικτυακής εφαρμογής στην αρχιτεκτονική ios iphone που υλοποιεί ένα παιχνίδι Παρτώνας Αλέξανδρος Επιβλέπων: Δρ.

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

Διαβάστε περισσότερα

Μια καλή επιλογή θα ήταν www.epipla-onomasas.gr (χωρίζοντας τις λέξεις με παύλα -) ή

Μια καλή επιλογή θα ήταν www.epipla-onomasas.gr (χωρίζοντας τις λέξεις με παύλα -) ή Τι είναι ένα CMS CMS ή Σύστημα Διαχείρισης Περιεχομένου (Content Management System) ονομάζουμε ένα λογισμικό που μας βοηθά να ελέγχουμε και να διαχειριζόμαστε έναν ιστότοπο δημόσιας ή περιορισμένης πρόσβασης.

Διαβάστε περισσότερα

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

ΕΓΧΕΙΡΙ ΙΟ ΡΥΘΜΙΣΕΩΝ ΓΙΑ ΤΗΝ ΠΡΟΣΒΑΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΟΥΣ ΠΟΡΟΥΣ ΙΚΤΥΟ ΒΙΒΛΙΟΘΗΚΩΝ ΤΟΥ ΙΝΣΤΙΤΟΥΤΟΥ ΘΕΡΒΑΝΤΕΣ ΕΓΧΕΙΡΙ ΙΟ ΡΥΘΜΙΣΕΩΝ ΓΙΑ ΤΗΝ ΠΡΟΣΒΑΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΟΥΣ ΠΟΡΟΥΣ ΙΚΤΥΟ ΒΙΒΛΙΟΘΗΚΩΝ ΤΟΥ ΙΝΣΤΙΤΟΥΤΟΥ ΘΕΡΒΑΝΤΕΣ σ. 1 από 18 _ Εγχειρίδιο ρυθµίσεων για την πρόσβαση σε ηλεκτρονικούς πόρους bibliotecas Εγχειρίδιο

Διαβάστε περισσότερα

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0 Δομές Δεδομένων 5ο εξάμηνο Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse v1.0 Τις σημειώσεις κράτησαν και διαμόρφωσαν σε word οι: Κονδύλη Γαλήνη, ΑΜ 5576 Μάλλιου Χριστίνα, ΑΜ 5413

Διαβάστε περισσότερα

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 10. Υπηρεσίες και εφαρμογές Διαδικτύου. ΚΕΦΑΛΑΙΟ 10 Υπηρεσίες και εφαρμογές Διαδικτύου. Α Γενικού Λυκείου Α Γενικού Λυκείου 87 Διδακτικές ενότητες 10.1 Υπηρεσίες Διαδικτύου 10.2 Ο παγκόσμιος ιστός, υπηρεσίες και εφαρμογές Διαδικτύου Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να μπορούν να διακρίνουν

Διαβάστε περισσότερα

Εθνική Σχολή Δημόσιας Υγείας Υγειονομική Σχολή Αθηνών 1929-1994 ESDY. ασύρματο δίκτυο. Οδηγός Σύνδεσης. www.esdy.edu.gr

Εθνική Σχολή Δημόσιας Υγείας Υγειονομική Σχολή Αθηνών 1929-1994 ESDY. ασύρματο δίκτυο. Οδηγός Σύνδεσης. www.esdy.edu.gr Εθνική Σχολή Δημόσιας Υγείας Υγειονομική Σχολή Αθηνών 99-99 ασύρματο δίκτυο Οδηγός Σύνδεσης www.esdy.edu.gr Οδηγός Σύνδεσης στο Ασύρματο Δίκτυο της ΕΣΔΥ Η Εθνική Σχολή Δημόσιας Υγείας παρέχει δωρεάν στους

Διαβάστε περισσότερα

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

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα Λιόλιου Γεωργία ΕπιβλέπουσαΚαθηγήτρια: ΣατρατζέµηΜάγια, καθηγήτρια, τµ. ΕφαρµοσµένηςΠληροφορικής, ΠΑΜΑΚ Εισαγωγή Γενικά στοιχεία εφαρµογή

Διαβάστε περισσότερα

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

Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885 CubisLITE Client Οδηγίες Χρήσεως Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885 1 ΠΕΡΙΕΧΟΜΕΝΑ Γενικά 1. Τι είναι ο CubisLITE Server 2. Τι είναι ο

Διαβάστε περισσότερα

SMART Ink. Λογισμικό λειτ ουργικού συστ ήματ ος Mac OS X. Οδηγός χρήστ η

SMART Ink. Λογισμικό λειτ ουργικού συστ ήματ ος Mac OS X. Οδηγός χρήστ η SMART Ink Λογισμικό λειτ ουργικού συστ ήματ ος Mac OS X Οδηγός χρήστ η Σημείωση για το εμπορικό σήμα SMART Board, SMART Ink, SMART Notebook, smarttech, το λογότυπο της SMART και όλα τα σλόγκαν της SMART

Διαβάστε περισσότερα

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

ΤΕΙ ΠΕΙΡΑΙΑ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΕΙ ΠΕΙΡΑΙΑ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Π.Μ.Σ. ΕΦΑΡΜΟΣΜΕΝΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Υποβοήθηση Επιβίωσης Ηλικιωμένων μέσω εφαρμογής

Διαβάστε περισσότερα

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

Κουμπί επαναφοράς (RESET BUTTON) Οπές εγκατάστασης συσκευής στην επιτοίχια βάση Οδηγός Εγκατάστασης και Λειτουργίας Έξυπνου Ασύρματου κουδουνιού πόρτας ZV400V Εμπρόσθια Όψη Συσκευής Οπίσθια Όψη Συσκευής Οπές εγκατάστασης συσκευής στην επιτοίχια βάση Αισθητήρας κίνησης Κάμερα Θύρα

Διαβάστε περισσότερα

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

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5 A. EVANS, K. MARTIN, M. A. POATSY Εισαγωγή στην πληροφορική Θεωρία και πράξη 2 η έκδοση Κεφάλαιο 5 Λογισμικό συστημάτων: Το λειτουργικό σύστημα, τα βοηθητικά προγράμματα και η διαχείριση αρχείων Τα βασικά

Διαβάστε περισσότερα

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

Διαχειριστής αγροκτήματος από συσκευές με λειτουργικό σύστημα Android ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ Διαχειριστής αγροκτήματος από συσκευές με λειτουργικό σύστημα Android Πτυχιακή εργασία του Κουκουρή

Διαβάστε περισσότερα

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

Το σύστημα θα πρέπει να σχεδιαστεί με τρόπο που θα ικανοποιήσει τις απαιτήσεις του χρήστη εύκολα. Έγγραφο απαιτήσεων 1 Περιγραφή Συστήματος Η online ιστοσελίδα και η αντίστοιχη έκδοση για κινητά τηλέφωνα έχει ως στόχο να υποστηρίξει και να ενισχύσει το User Experience (UX) των επισκεπτών του e-museum,

Διαβάστε περισσότερα

Στη συνέχεια θα απαντήσεις σε ερωτήσεις σχετικά με τα ψηφιακά μέσα και τις ψηφιακές συσκευές, που περιλαμβάνουν επιτραπέζιους υπολογιστές (desktop

Στη συνέχεια θα απαντήσεις σε ερωτήσεις σχετικά με τα ψηφιακά μέσα και τις ψηφιακές συσκευές, που περιλαμβάνουν επιτραπέζιους υπολογιστές (desktop Στη συνέχεια θα απαντήσεις σε ερωτήσεις σχετικά με τα ψηφιακά μέσα και τις ψηφιακές συσκευές, που περιλαμβάνουν επιτραπέζιους υπολογιστές (desktop computers), φορητούς υπολογιστές (laptops ή notebooks),

Διαβάστε περισσότερα

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

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ -Για τους Φοιτητές- Έκδοση 1.2 Οκτώβριος 2015 Υπεύθυνος Σύνταξης: Χρήστος Λάζαρης (lazaris@aueb.gr) Πίνακας Περιεχομένων Εισαγωγή...

Διαβάστε περισσότερα

Ξεκινώντας με το MIT Αρρ Inventor. 1 η Εργασία

Ξεκινώντας με το MIT Αρρ Inventor. 1 η Εργασία Ξεκινώντας με το MIT Αρρ Inventor 1 η Εργασία Απαιτήσεις 1. Σύνδεση στο Διαδίκτυο (διότι οι εφαρμογές δημιουργούνται online) 2. Εγκατεστημένος ο Browser Google Chrome 3. Υπαρκτός λογαριασμός Gmail 4. Κατεβάστε

Διαβάστε περισσότερα

www.e-katartisi.com Equal Society e-learning platform

www.e-katartisi.com Equal Society e-learning platform www.e-katartisi.com Equal Society e-learning platform Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΕΙΣΟ ΟΣ ΣΤΗΝ ΠΛΑΤΦΟΡΜΑ ΤΗΛΕΚΑΤΑΡΤΙΣΗΣ Για να εισέλθετε στην πλατφόρµα τηλεκατάρτισης της Equal Society και να έχετε πρόσβαση στα περιεχόµενά

Διαβάστε περισσότερα

Ελληνικό Ανοικτό Πανεπιστήµιο Μεταπτυχιακό Πρόγραµµα: Γραφικές Τέχνες-Πολυµέσα (ΓΤΠ61)

Ελληνικό Ανοικτό Πανεπιστήµιο Μεταπτυχιακό Πρόγραµµα: Γραφικές Τέχνες-Πολυµέσα (ΓΤΠ61) Ελληνικό Ανοικτό Πανεπιστήµιο Μεταπτυχιακό Πρόγραµµα: Γραφικές Τέχνες-Πολυµέσα (ΓΤΠ61) Αξιοποίηση Πολυµέσων στις Εφαρµογές Κοινωνικής Δικτύωσης Μίαρη Ειρήνη Εισηγητής: Ζευγώλης Δηµήτρης 10/4/2011 Ορισµοί

Διαβάστε περισσότερα

Οδηγίες ρύθμισης για σύνδεση των μετατροπέων Fronius στο online portal Fronius Solar.web (με χρήση smartphone/tablet)

Οδηγίες ρύθμισης για σύνδεση των μετατροπέων Fronius στο online portal Fronius Solar.web (με χρήση smartphone/tablet) Οδηγίες ρύθμισης για σύνδεση των μετατροπέων Fronius στο online portal Fronius Solar.web (με χρήση smartphone/tablet) 1. Πριν Ξεκινήσετε Δημιουργήστε λογαριασμό στο online portal Fronius Solar.web Σε περίπτωση

Διαβάστε περισσότερα

Χαρακτηριστικά ιστοσελίδας

Χαρακτηριστικά ιστοσελίδας Χαρακτηριστικά ιστοσελίδας COSMOS4U Web Site Pro Χαρακτηριστικά Επιπλέον Δυνατότητες Προφίλ Εταιρίας Παρουσίαση της εταιρίας σας με φωτογραφικό υλικό και κείμενα. Τήρηση προδιαγραφών και χρήση λέξεων κλειδιά

Διαβάστε περισσότερα

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

Κεφάλαιο 2.3: Ρυθμίσεις των Windows Κεφάλαιο 2.3: Ρυθμίσεις των Windows 2.3.1 Βασικές πληροφορίες συστήματος Για να δούμε βασικές πληροφορίες για τον υπολογιστή μας, πατάμε το κουμπί «Έναρξη» και επιλέγουμε διαδοχικά «Πίνακας Ελέγχου», «Σύστημα

Διαβάστε περισσότερα

Copyright 2017 HP Development Company, L.P.

Copyright 2017 HP Development Company, L.P. Οδηγός χρήσης Copyright 2017 HP Development Company, L.P. Οι πληροφορίες στο παρόν έγγραφο μπορεί να αλλάξουν χωρίς προειδοποίηση. Οι μοναδικές εγγυήσεις για τα προϊόντα και τις υπηρεσίες της HP είναι

Διαβάστε περισσότερα

APP INVENTOR ΜΕΡΟΣ A - 1 Η ΕΒΔΟΜΑΔΑ. Σοφία Τζελέπη,

APP INVENTOR ΜΕΡΟΣ A - 1 Η ΕΒΔΟΜΑΔΑ. Σοφία Τζελέπη, APP INVENTOR ΜΕΡΟΣ A - 1 Η ΕΒΔΟΜΑΔΑ Σοφία Τζελέπη, stzelepi@sch.gr App Inventor 2 Google, 15 Dec 2010 MIT, 1 Jan 2012 Cloud-based software Gmail account Android Phone Τι μπορώ να κάνω; 3 animations games

Διαβάστε περισσότερα

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

Πως θα κατασκευάσω το πρώτο πρόγραμμα; Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να γίνει εξοικείωση το μαθητών με τον ΗΥ και το λειτουργικό σύστημα. - Επίδειξη του My Computer

Διαβάστε περισσότερα

ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΥΠΗΡΕΣΙΑ COSMOTE TV GO ΣΕ ΥΠΟΛΟΓΙΣΤΗ (PC/LAPTOP)

ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΥΠΗΡΕΣΙΑ COSMOTE TV GO ΣΕ ΥΠΟΛΟΓΙΣΤΗ (PC/LAPTOP) ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΥΠΗΡΕΣΙΑ COSMOTE TV GO ΣΕ ΥΠΟΛΟΓΙΣΤΗ (PC/LAPTOP) Για την πρόσβαση στην υπηρεσία COSMOTE TV GO για υπολογιστή, αρχικά ανοίξτε την ιστοσελίδα της υπηρεσίας www.cosmotetvgo.gr. Για τη χρήση

Διαβάστε περισσότερα

Θα αναπτύξουμε μια εφαρμογή που θα λειτουργεί σαν κουμπί πανικού. Η εφαρμογή θα αποτελείται από δύο κουμπιά.

Θα αναπτύξουμε μια εφαρμογή που θα λειτουργεί σαν κουμπί πανικού. Η εφαρμογή θα αποτελείται από δύο κουμπιά. Δραστηριότητα Κουμπί Πανικού Περιγραφή Εφαρμογής Θα αναπτύξουμε μια εφαρμογή που θα λειτουργεί σαν κουμπί πανικού. Η εφαρμογή θα αποτελείται από δύο κουμπιά. Εικόνα 1 - Εφαρμογή Κουμπί Πανικού Το πρώτο

Διαβάστε περισσότερα

SMART Ink. Λογισμικό λειτ ουργικού συστ ήματ ος Mac OS X. Οδηγός χρήστ η

SMART Ink. Λογισμικό λειτ ουργικού συστ ήματ ος Mac OS X. Οδηγός χρήστ η SMART Ink Λογισμικό λειτ ουργικού συστ ήματ ος Mac OS X Οδηγός χρήστ η Δήλωση προϊόντος Αν δηλώσετε το προϊόν SMART, θα σας ειδοποιήσουμε για νέα χαρακτηριστικά και αναβαθμίσεις λογισμικού. Κάντε τη δήλωση

Διαβάστε περισσότερα

Ηλεκτρονική Διαφήμιση. Αντωνιάδου Όλγα

Ηλεκτρονική Διαφήμιση. Αντωνιάδου Όλγα Ηλεκτρονική Διαφήμιση Αντωνιάδου Όλγα Διαφήμιση στο διαδίκτυο Το διαδίκτυο είναι αναμφισβήτητα ένα τεράστιο πεδίο προώθησης και διαφήμισης υπηρεσιών και προϊόντων. Η ποσότητα της πληροφορίας που διακινείται

Διαβάστε περισσότερα

Cookies Γραμμή βοηθείας Ενημέρωση-Επαγρύπνηση Γραμμή παράνομου περιεχομένου

Cookies Γραμμή βοηθείας Ενημέρωση-Επαγρύπνηση Γραμμή παράνομου περιεχομένου Cookies 210 6007686 www.safeline.gr Γραμμή βοηθείας Ενημέρωση-Επαγρύπνηση Γραμμή παράνομου περιεχομένου Tι είναι τα cookies; Τα cookies είναι μικρά κομμάτια πληροφορίας, με τη μορφή απλού κειμένου, που

Διαβάστε περισσότερα

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

Αναζήτηση στον Ιστό. Πληκτρολόγηση του URL:  στο πλαίσιο αναζήτησης του Mozilla Firefox. Enter ή κλικ στο Αναζήτηση Αναζήτηση στον Ιστό Χρήση μιας μηχανής αναζήτησης Επιλογή συγκεκριμένης μηχανής αναζήτησης Είναι συχνό το φαινόμενο να θέλει ο χρήστης να εντοπίσει πληροφορίες στο διαδίκτυο και να μην ξέρει που να κοιτάξει.

Διαβάστε περισσότερα

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

Οδηγός χρήστη. Xperia SmartTags NT1/NT2 Οδηγός χρήστη Xperia SmartTags NT1/NT2 Περιεχόμενα Εισαγωγή...3 Οδηγός έναρξης...4 Ενεργοποίηση της λειτουργίας NFC...4 Περιοχή εντοπισμού NFC...4 Χρήση του Smart Connect για τη διαχείριση των ετικετών

Διαβάστε περισσότερα

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

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ 1 ΠΕΡΙΕΧΟΜΕΝΑ 1. ΑΝΑΛΥΣΗ ΜΕΝΟΥ ΕΦΑΡΜΟΓΗΣ... 4 2. ΕΠΕΞΗΓΗΣΗ ΚΕΝΤΡΙΚΟΥ ΜΕΝΟΥ ΚΑΡΤΕΛΑΣ... 5 3. ΔΗΜΙΟΥΡΓΙΑ ΠΕΛΑΤΗ... 6 4. ΑΝΑΖΗΤΗΣΗ ΠΕΛΑΤΗ... 6 5. ΕΠΕΞΕΡΓΑΣΙΑ/ΔΙΑΓΡΑΦΗ

Διαβάστε περισσότερα