«Music On» ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΑΤΕΙ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ. Ανάπτυξη εφαρμογής μουσικής για Windows Phone 8.1



Σχετικά έγγραφα
Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

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

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Αντικειμενοστρεφής Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

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

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

Εγχειρίδιο Ζωντανών Μεταδόσεων Υπηρεσιών Βίντεο. Πανεπιστημίου Κρήτης. Εγχειρίδιο τεχνικού μετάδοσης

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

Ει ναι τα Windows που γνωρι ζετε, αλλα καλυ τερα

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

Αντικειμενοστρεφής Προγραμματισμός

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

Δεδομένα, τελεστές, είσοδος/έξοδος

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

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

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

Στερεοφωνικό μικρόφωνο STM10

Πρόλογος... 7 ΕΙΔΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

1. Απαιτήσεις εργασίας

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

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

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

Εγχειρίδιο Ζωντανών Μεταδόσεων Εξελιγμένων Υπηρεσιών Βίντεο Πανελληνίου Σχολικού Δικτύου Εγχειρίδιο τεχνικού μετάδοσης

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά


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

Απαντήστε στις παρακάτω ερωτήσεις πολλαπλής επιλογής (μόνο μία ερώτηση είναι σωστή):

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

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Ανάπτυξη εφαρμογής Input-Output

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

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Οδηγός Χρήσης Microsoft Office365 & OneDrive for Business Πανεπιστημίου Κύπρου

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

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΤΗ JustAlert SPOTIT. Οδηγίες για την εγκατάσταση της εφαρμογής στο κινητό σας

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

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

Εγχειρίδιο Ζωντανών Μεταδόσεων Εξελιγμένων Υπηρεσιών Βίντεο Πανελληνίου Σχολικού Δικτύου Εγχειρίδιο τεχνικού μετάδοσης

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

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

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

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

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

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

Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤ ΚΟ 1/53

Οδηγός Χρήσης Microsoft Office365 & OneDrive for Business Πανεπιστημίου Κύπρου

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Xerox WorkCentre 3655 Πολυλειτουργικός εκτυπωτής Πίνακας ελέγχου

Document Scanning System Ιανουάριος, 2014

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

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

Εγχειρίδιο Χρήσης. 1bank Internet Banking για Εταιρικούς Συνδρομητές

Xerox ColorQube 8700 / 8900 Πίνακας ελέγχου

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΠΑΙΧΝΙΔΙ.

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

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

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

4 η Εργαστηριακή Άσκηση

Κεφάλαιο 2.4: Εργασία με εικονίδια

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

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΣΥΣΤΑΣΕΙΣ ΣΕ ΠΕΡΙΠΤΩΣΗ ΠΡΟΒΛΗΜΑΤΩΝ

Alfaware Οδηγός Χρήσης Εφαρμογής (Software User Manual)

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

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

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

DreamSpark. Τώρα λοιπόν που μάθατε περι τίνος πρόκειται, ας δούμε πώς μπορεί κάποιος να κατεβάσει λογισμικό από το site του DreamSpark.

Visual Flowchart Γενικά

Προγραμματισμός ΙI (Θ)

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

Στοιχειώδης προγραμματισμός σε C++

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

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

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

Το ηλεκτρονικό ταχυδρομείο: Aφορά στην αποστολή και λήψη μηνυμάτων με συγκεκριμένη δομή και με συγκεκριμένα πρωτόκολλα. Ο αποστολέας και ο παραλήπτης

To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Dcad 1.0

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

Slalom Race Computer Game on Scratch

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

Οδηγός Σύνδεσης (για Φωτογραφικές Μηχανές D-SLR)

Transcript:

ΑΤΕΙ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανάπτυξη εφαρμογής μουσικής για Windows Phone 8.1 «Music On» ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Διαμαντίδης Ευάγγελος - Κλεόβουλος (ΑΜ: Τ01693) Επιβλέπων: Ιατρέλλης Όμηρος, Μηχανικός Δικτύων ΛΑΡΙΣΑ 2015

«Εγώ ο Διαμαντίδης Ευάγγελος - Κλεόβουλος, δηλώνω υπεύθυνα ότι η παρούσα Πτυχιακή Εργασία με τίτλο «Ανάπτυξη Εφαρμογής για Windows Phone 8.1: Music On» είναι δική μου και βεβαιώνω ότι: Σε όσες περιπτώσεις έχω συμβουλευτεί δημοσιευμένη εργασία τρίτων, αυτό επισημαίνεται με σχετική αναφορά στα επίμαχα σημεία. Σε όσες περιπτώσεις μεταφέρω λόγια τρίτων, αυτό επισημαίνεται με σχετική αναφορά στα επίμαχα σημεία. Με εξαίρεση τέτοιες περιπτώσεις, το υπόλοιπο κείμενο της πτυχιακής αποτελεί δική μου δουλειά. Αναφέρω ρητά όλες τις πηγές βοήθειας που χρησιμοποίησα. Σε περιπτώσεις που τμήματα της παρούσας πτυχιακής έγιναν από κοινού με τρίτους, αναφέρω ρητά ποια είναι η δική μου συνεισφορά και ποια των τρίτων. Γνωρίζω πως η λογοκλοπή αποτελεί σοβαρότατο παράπτωμα και είμαι ενήμερος(-η) για την επέλευση των νομίμων συνεπειών» Διαμαντίδης Ευάγγελος - Κλεόβουλος

Εγκρίθηκε από την τριμελή εξεταστική επιτροπή Τόπος: Ημερομηνία: ΕΠΙΤΡΟΠΗ ΑΞΙΟΛΟΓΗΣΗΣ 1. 2. 3.

Περίληψη Ο στόχος της παρούσας πτυχιακής άσκησης είναι η ανάπτυξη εφαμογής μουσικής και ήχου για συσκευές Windows Phone. Αποτέλεσμα της εργασίας είναι η εφαρμογή «Music On», εφαρμογή που επιτρέπει στους χρήστες την αναπαραγωγή μουσικής από την μνήμη της συσκευής και από αρχείο ήχου στο Διαδίκτυο, την ηχογράφηση, την διαχείριση της αναπαραγωγής με επιλογές παύσης, προηγούμενου και επόμενου ήχου ακόμη κι όταν η εφαρμογή δεν βρίσκεται σε πρώτο πλάνο ή η συσκευή είναι κλειδωμένη. Διατίθεται ακόμη και η λειτουργία δημιουργίας ήχου κλήσης μέσω της εφαρμογης. Για την ανάπτυξη αυτής χρησιμοποιήθηκε το Microsoft Visual Studio 2013 σε γλώσσα προγραμματισμού C#, καθώς επίσης και η δηλωτική γλώσσα Xaml για το σχεδιαστικό μέρος της εφαρμογής. -i-

Ευχαριστίες Εκφράζω τις θερμότερες των ευχαριστιών μου σε όσους συνέβαλαν στην ολοκλήρωση της παρούσας εργασίας. Πρώτον και κυριότερον, τον επιβλέπων καθηγητή μου κ. Ιατρέλλη Όμηρο για την συνεχή καθοδήγηση του κι ένδειξη εμπιστοσύνης στο πρόσωπό μου. Την οικογένεια μου, τους φίλους κι όλα τα αγαπημένα μου πρόσωπα τα οποία ήταν πάντοτε κοντά μου και μέσω της αγάπης τους και υπομονής τους συνέβαλαν στην εκπλήρωση των στόχων και ονείρων μου έως και σήμερα. Διαμαντίδης Ευάγγελος - Κλεόβουλος 20/04/2015 -iii-

Περιεχόμενα ΠΕΡΙΛΗΨΗ... I ΕΥΧΑΡΙΣΤΙΕΣ... III ΠΕΡΙΕΧΟΜΕΝΑ... V 1 ΕΙΣΑΓΩΓΗ... 1 2 ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ... 3 2.1 Η ΕΞΕΛΙΞΗ ΤΩΝ WINDOWS PHONE... 5 3 MICROSOFT VISUAL STUDIO 2013... 7 3.1 ΠΡΟΔΙΑΓΡΑΦΕΣ ΑΠΑΙΤΗΣΕΙΣ... 7 3.2 ΕΚΔΟΣΕΙΣ VISUAL STUDIO 2013... 8 3.3 ΟΛΟΚΛΗΡΩΜΕΝΟ ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ (INTEGRATED DEVELOPMENT ENVIRONMENT)... 9 3.3.1 Λύσεις και Έργα (Solutions and Projects)... 10 3.3.2 Διάγνωση Σφαλμάτων (Debug Diagnostics)... 10 3.3.3 Εργαλεία Δοκιμών (Testing Tools)... 11 3.3.4 Σχεδιασμός και Μοντελοποίηση (Design and Modeling)... 12 3.4 MICROSOFT VISUAL STUDIO SDK (SOFTWARE DEVELOPMENT KIT)... 13 3.5 MICROSOFT SILVERLIGHT... 14 3.6 ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ VISUAL STUDIO 2013... 15 3.6.1 C#... 15 3.6.2 Xaml... 23 4 ΡΟΗ ΗΧΟΥ ΑΠΟ ΔΙΑΔΙΚΤΥΟ ΣΕ.NET (STREAMING WEB AUDIO IN.NET)... 25 4.1 ΡΟΗ ΣΕ ΠΡΑΓΜΑΤΙΚΟ ΧΡΟΝΟ (LIVE STREAMING)... 25 4.2 ΡΥΘΜΟΣ ΜΕΤΑΔΟΣΗΣ BIT (BIT RATE)... 26 5 ΑΠΟΜΟΝΩΜΕΝΟΣ ΧΩΡΟΣ ΑΠΟΘΗΚΕΥΣΗΣ (ISOLATED STORAGE)... 27 5.1 ΣΧΕΔΙΑ URI (URI SCHEMES)... 27 5.2 ΔΙΑΧΕΙΡΙΣΗ ΣΤΟΙΧΕΙΩΝ ΣΕ ISOLATED STORAGE... 28 -v-

6 MICROSOFT XNA... 30 7 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ MUSIC ON... 31 7.1 ΕΙΣΑΓΩΓΗ... 31 7.2 ΑΡΧΙΚΗ ΟΘΟΝΗ - PLAY... 32 7.3 ΔΗΜΙΟΥΡΓΙΑ ΉΧΟΥ ΚΛΗΣΗΣ - CREATE RINGTONE... 38 7.4 ΗΧΟΓΡΑΦΗΣΗ - RECORD... 46 7.5 ΑΝΑΠΑΡΑΓΩΓΗ ΑΠΟ ΤΟ ΔΙΑΔΙΚΤΥΟ - ONLINE MP3... 51 7.6 ΠΛΗΡΟΦΟΡΙΕΣ ΕΦΑΡΜΟΓΗΣ - ABOUT... 53 8 ΣΥΜΠΕΡΑΣΜΑΤΑ... 55 ΒΙΒΛΙΟΓΡΑΦΙΑ - ΑΝΑΦΟΡΕΣ... 57 ΠΑΡΑΡΤΗΜΑ Α... 59 -vi-

1 Εισαγωγή Ζούμε στην εποχή της τεχνολογικής επανάστασης, εποχή στην οποία η πληροφορία αποτελεί αναπόσπαστο κομμάτι της καθημερινότητας σε όλους τους τομείς. Κοινωνικότητα, ενημέρωση, ψυχαγωγία, ακόμη και συναλλαγές. Η ανάγκη για πρόσβαση σε όλα αυτά μέσω της τεχνολογίας έχει οδηγήσει τον άνθρωπο στη δημιουργία φορητών ηλεκτρονικών συσκευών όπως smartphone, tablet, phablet, laptop και notebook, συσκευές. Μέσω των παραπάνω, η πρόσβαση στην πληροφορία καθίσταται πιο εύκολη από ποτέ από οποιοδήποτε σχεδόν σημείο. Εικόνα 1: Nokia Lumia 930 - Windows Phone 8.1 Ένα smartphone, όπως αυτό της Εικόνας 1, αποτελεί έναν φορητό ηλεκτρονικό υπολογιστή τσέπης. Οι λειτουργίες που παρέχει είναι απεριόριστες, από πρόσβαση στο Διαδίκτυο και λήψη άριστης ποιότητας φωτογραφιών έως και την πλοήγηση του χρήστη μέσω GPS και την πραγματοποίηση συναλλαγών. Οι λειτουργίες αυτών είναι πλήρως επεκτάσιμες χάριν στα κέντρα εφαρμογών τα οποία διαθέτουν επιπλέον εφαρμογές, ανεπτυγμένες από μονάδες ή ομάδες προγραμματιστών για να προσφέρουν καλύτερη εμπειρία στους χρήστες. Για τα Windows Phones, το κέντρο εφαρμογών αυτό ονομάζεται Windows Store. Η εφαρμογή Music On που αναπτύχθηκε στην παρούσα πτυχιακή θα είναι σύντομα μέλος της οικογένειας των εφαρμογών του Windows Store, παρέχοντας στο κοινό μια εναλλακτική λύση όσον αφορά την αξιοποίηση της συσκευής από πλευράς μουσικής και ήχου. -1-

2 Ιστορική Αναδρομή Η ανάγκη του ανθρώπου για την επίτευξη εξ' αποστάσεως επικοινωνίας υπήρχε από την αρχή, σχεδόν, της ύπαρξής του. Η πρώτη ουσιαστική εμφάνιση έλαβε χώρα κατά τη διάρκεια του Β' Παγκοσμίου Πολέμου μέσω των ασυρμάτων, τεχνολογία η οποία άλλαξε δραματικά την πορεία της ανθρωπότητας. Οι προσπάθειες για δημιουργία φορητών συσκευών επικοινωνίας συνεχίστηκε με αποτέλεσμα τη δημιουργία του πρώτου κινητού τηλεφώνου το 1973 από την εταιρεία Motorola και συγκεκριμένα από τον εμπνευστή του, τον Martin Cooper. Εικόνα 2: Ο δημιουργός του πρώτου κινητού τηλεφώνου, Martin Cooper, με το πρώτο κινητό τηλέφωνο. Η πλέον ουσιαστική εξέλιξη των κινητών τηλεφώνων ήρθε με την ψηφιοποίηση των δικτύων στις αρχές της δεκαετίας του 1990. Οι συσκευές τότε άρχισαν να γίνονται πιο λειτουργικές αλλά και ελκυστικές για το κοινό μιας και πλέον κυκλοφόρησαν σε πιο διακριτικά μεγέθη, αυξάνοντας αισθητά την φορητότητά τους. -3-

Εικόνα 3: Κινητά τηλέφωνα της δεκαετίας 1990-2000. Με την αρχή της νέας χιλιετίας, παρουσιάστηκαν στο κοινό τα κινητά τρίτης γενεάς, 3G, με πλέον έγχρωμες οθόνες αφής και πολύ περισσότερες λειτουργίες αυξάνοντας την χρηστικότητα τους. Τα κινητά πλέον αποτελούν έναν ηλεκτρονικό υπολογιστή τσέπης κι έχουν γίνει αναπόσπαστο κομμάτι της καθημερινότητάς μας. Η διάρκεια ζωής της μπαταρίας έχει αυξηθεί σε επίπεδα που επιτρέπουν την συνεχή χρήση τους για ημέρες. Ο χρήστης έχει πλέον τη δυνατότητα να λαμβάνει και να αποστέλλει μηνύματα ηλεκτρονικού ταχυδρομείου (e-mail), να δραστηριοποιείται σε μέσα κοινωνικής δικτύωσης, να βλέπει ταινίες και να ακούει μουσική, να πλοηγείται,να δημιουργεί έγγραφα αλλά και ολόκληρες παρουσιάσεις, να ψυχαγωγείται μέσω ηλεκτρονικών παιχνιδιών κι εφαρμογών και πολλά άλλα. Η ονομασία που έχει επικρατήσει γι' αυτά είναι Έξυπνα Τηλέφωνα ή αλλιώς Smartphones. Εικόνα 4: Σύγχρονα Έξυπνα Τηλέφωνα - Smartphones. -4-

Τα Smartphones είναι κατασκευασμένα από διάφορα μέταλλα εσωτερικά, όσον αφορά τα κυκλώματα, ενώ εξωτερικά χρησιμοποιούνται κατά κύριο λόγο πλαστικά και αλουμίνιο παρέχοντας αντοχή σε χτυπήματα, υψηλές θερμοκρασίες αλλά και υγρασία. Εν αντιθέσει με τα κινητά της δεκαετίας 1990-2000, τα σύγχρονα έξυπνα τηλέφωνα έχουν εσωτερικές κεραίες μειώνοντας με αυτόν τον τρόπο το μέγεθος τους αλλά και καθιστώντας τα ακόμα πιο ελκυστικά λόγω της εμφάνισης τους. Η σύνδεση με το δίκτυο στο οποίο είναι καταχωρημένος ο χρήστης γίνεται μέσω της κάρτας SIM, ή αλλιώς Subscriber Identity Module. Μέσω της κάρτας αυτής πιστοποιείται η ταυτότητα του συνδρομητή δικτύου. Προστατεύεται συνήθως από κωδικό για την διασφάλιση των δεδομένων κι επιτρέπει στον χρήστη τη δυνατότητα πραγματοποίησης κλήσεων, αποστολής μηνυμάτων (SMS) αλλά και πρόσβασης στο Διαδίκτυο. 2.1 Η εξέλιξη των Windows Phone Στις αρχές της νέας χιλιετίας έκανε την εμφάνιση της μια έκδοση λειτουργικού συστήματος με όνομα Windows Mobile από την εταιρεία Microsoft. Το λογισμικό εξελίχθηκε στην σημερινή του μορφή με την ονομασία Windows Phone. Η σειρά Lumia της εταιρείας Nokia είναι η πλέον χαρακτηριστική μιας και χρησιμοποιεί αποκλειστικά το λογισμικό Windows Phone. Εικόνα 5: Windows Phone 8. -5-

Το πιο δημοφιλές χαρακτηριστικό των Windows Phones είναι το απλό και λιτό μενού καθώς επίσης και η εμφανίσιμη αρχική οθόνη η οποία αποτελείται από πλακίδια (tiles) των οποίων το μέγεθος και θέση μπορεί να ορίζει ο χρήστης ανά πάσα στιγμή. Επίσης, η πρωτοποριακή τους εμφάνιση καθώς και το γεγονός πως το λογισμικό είναι ανεπτυγμένο από την μεγαλύτερη εταιρεία πληροφορικής, την Microsoft, έπαιξε σημαντικό ρόλο στο να γίνουν δημοφιλέστερα. Οι εφαρμογές Microsoft Office που παρέχονται δωρεάν με κάθε συσκευή παίζουν σημαντικό ρόλο στην προσέλκυση νέων χρηστών καθώς παρέχουν τη δυνατότητα γρήγορης κι αποτελεσματικής σύνθεσης εγγράφων με ευκολία και αξιοπιστία. Η εφαρμογή OneDrive δίνει τη δυνατότητα αποθήκευσης δεδομένων σε cloud, επιτρέποντας την πρόσβαση στα δεδομένα αυτά από τον χρήστη ανά πάσα χρονική στιγμή από οποιαδήποτε συσκευή. Διατίθενται επίσης εφαρμογές ψυχαγωγίας, όπως το XBox για ηλεκτρονικά παιχνίδια, Music για αναπαραγωγή μουσικής, κάμερα για λήψη φωτογραφιών και βίντεο υψηλής ανάλυσης, εφαρμογές επεξεργασίας εικόνας καθώς και αμέτρητες ακόμη λειτουργίες που εξυπηρετούν σχεδόν κάθε ανάγκη ενός κατόχου έξυπνης συσκευής. Η τελευταία έκδοση Windows Phone 8.1 με κωδική ονομασία Cyan σύστησε στους χρήστες μια εξελιγμένη τεχνητή νοημοσύνη με το όνομα Cortana. Η Cortana δέχεται φωνητικές εντολές από τον χειριστή της συσκευής πραγματοποιώντας διάφορες εργασίες όπως πραγματοποίηση κλήσεων, αποστολή μηνυμάτων, διαχείριση ημερολογίου του χρήστη αλλά και πολλές άλλες, καθιστώντας έτσι τα Windows Phones τις πλέον εξελιγμένες έξυπνες συσκευές. Εικόνα 6: Windows Phone 8.1. -6-

3 Microsoft Visual Studio 2013 Το πρόγραμμα Microsoft Visual Studio 2013 αποτελεί το βασικό εργαλείο για την ανάπτυξη εφαρμογών Microsoft Windows και Windows Phone. Οι βασικές πλατφόρμες για την ανάπτυξη είναι οι εξής: Microsoft Silverlight Windows Store Windows API Windows Forms Windows Presentation Foundation. Μερικές από τις υποστηριζόμενες γλώσσες προγραμματισμού σε Visual Studio είναι οι εξής: C++ C# Visual Basic HTML Javascript F#. 3.1 Προδιαγραφές Απαιτήσεις Για την εγκατάσταση και χρήση του Microsoft Visual Studio 2013 ο χρήστης πρέπει να πληροί κάποιες προδιαγραφές απαιτήσεις. Εξοπλισμός: 1. Επεξεργαστής 1.6GHz ή ταχύτερο 2. RAM 1GB 3. Σκληρός Δίσκος 10GB (NTFS) με ταχύτητα 5400 RPM 4. Επεξεργαστής Γραφικών συμβατός με DirectX 9 και ελάχιστη ανάλυση 1024x768. -7-

Λειτουργικό Σύστημα 1. Windows 8.1 (x86 & x64) 2. Windows 8 (x86 & x64) 3. Windows 7 (x86 & x64) 4. Windows Server 2008 R2 SP1(x64) 5. Windows Server 2012 (x64). 3.2 Εκδόσεις Visual Studio 2013 Το πρόγραμμα χωρίζεται σε τέσσερις (4) διαφορετικές εκδόσεις, καθώς επίσης και τρεις (3) Online εκδόσεις: Ultimate Premium Test Pro Pro Visual Studio Online Basic Visual Studio Online Pro Visual Studio Online Advanced. Η πιο αξιοσημείωτη Online εκδοχή της εφαρμογής είναι η Pro μιας και οι υπόλοιπες δύο, Basic και Advanced, είναι πολύ περιορισμένες συγκριτικά με αυτή. Η δωρεάν έκδοση, διαθέσιμη προς στο ευρύ κοινό, είναι η Express. Οι φοιτητές του τμήματος Μηχανικών Πληροφορικής Τ.Ε.του ΤΕΙ Θεσσαλίας μπορούν δωρεάν να προμηθευτούν τις εκδόσεις Ultimate, Premium και Professional από το DreamSpark μέσω της σχολής χρησιμοποιώντας τα στοιχεία τους. -8-

3.3 Ολοκληρωμένο Περιβάλλον Εργασίας (Integrated Development Environment) Το περιβάλλον εργασίας στο Microsoft Visual Studio 2013 είναι ολοκληρωμένο, παρέχοντας ευελιξία στον χρήστη. Επιτρέπει τη χρήση εργαλείων διαχείρισης Έργων και Λύσεων αυτών για τις συνδέσεις αρχείων και φακέλων, σηματοδοτεί τα επιλεγμένα σημεία του ενδιαφέροντός του, επισημαίνοντας τα λάθη του για την περαιτέρω κατανόηση του κώδικα στιγματίζοντας σφάλματα ή επιπλέον στοιχεία στον κώδικα που τυχόν να μην χρειάζονται. Από πλευράς εμφάνισης γίνεται η διευκόλυνση προβολής αναλόγως την επιλογή μεταξύ σταθερού υπολογιστή ή φορητού. Δίδεται ακόμη και η δυνατότητα συγχρονισμού των προσωπικών ρυθμίσεων του χρήστη με όλες τις υπόλοιπες συσκευές τις οποίες χρησιμοποιεί, χωρίς να χρειάζεται η επανάληψη της παραμετροποίησης των ρυθμίσεων του εκ νέου. Αποτελεί το πλέον εξελιγμένο πρόγραμμα, φιλικό στην χρήση, με κορυφαία ποιότητα και αξιοπιστία για την ανάδειξη των εφαρμογών που αναπτύσσονται σε αυτό. Παρακάτω αναλύονται μερικά από τα πιο βασικά χαρακτηριστικά που την κάνουν το πλέον απαραίτητο εργαλείο ανάπτυξης εφαρμογών, ειδικά για Windows και Windows Phone. Εικόνα 7: Λογότυπο Microsoft Visual Studio 2013-9-

3.3.1 Λύσεις και Έργα (Solutions and Projects) Το Microsoft Visual Studio 2013 παρέχει στους χρήστες εργαλεία για την καλύτερη διαχείριση των δεδομένων με σκόπο την επιτυχημένη ανάπτυξη εφαρμογών. Τα εργαλεία αυτά ονομάζονται Λύσεις και Έργα (Solutions and Projects). Ένα project αποτελείται από αρχεία και φακέλους, συνδεδεμένα το ένα με το άλλο ώστε να λειτουργεί η εφαρμογή. Έτσι, κατά την δημιουργία μιας νέας εφαρμογής, ενός νέου Έργου ή Project δηλαδή, το πρόγραμμα ζητά από τον χρήστη τη δημιουργία ενός νέου Solution ή Λύσης για την καλύτερη διαχείριση των αρχείων και φακέλων της εφαρμογής, καθώς και των μεταξύ τους συνδέσεων. Εικόνα 8: Δημιουργία Έργου και Λύσης 3.3.2 Διάγνωση Σφαλμάτων (Debug Diagnostics) Στο Visual Studio ο χρήστης έχει τη δυνατότητα να παρακολουθεί και να διορθώνει τα σφάλματα που τυχόν εμφανίζονται κατά την ανάπτυξη των εφαρμογών. Τα σφάλματα αυτά μπορεί να είναι απλά λάθη στη γραφή ή ακόμα και λανθασμένες μέθοδοι τις οποίες το πρόγραμμα δεν αναγνωρίζει ως ορθές. Εικόνα 9: Διαδικασία εντοπισμού σφαλμάτων -10-

3.3.3 Εργαλεία Δοκιμών (Testing Tools) Στο Microsoft Visual Studio παρέχεται επίσης η λειτουργία δοκιμών μέσω εργαλείων ώστε οι χρήστες να μπορούν να αναπαράγουν τα σφάλματα και λάθη που τυχόν προέκυψαν στην εφαρμογή αποσκοπώντας στο να υπάρχει καλύτερος έλεγχος για την ορθή λειτουργία της. Εμφανίζονται στον χρήστη πληροφορίες που τον βοηθούν να κατανοήσει καλύτερα τη σωστή δομή ώστε να αποφεύγονται τα σφάλματα και να διατηρείται ποιοτική η εφαρμογή. Παρέχεται επίσης η δυνατότητα διεξαγωγής ελέγχων, τόσο αυτοματοποιημένων, όσο και χειροκίνητων, βασισμένων σε σενάρια, για την επιβεβαίωση της ορθής λειτουργίας. Εικόνα 10: Διαδικασία διενέργειας δοκιμών -11-

3.3.4 Σχεδιασμός και Μοντελοποίηση (Design and Modeling) Το Visual Studio περιέχει λειτουργία σχεδιασμού και μοντελοποίησης των έργων για την καλύτερη διαχείριση αλλά και παρακολούθηση από τον χρήστη. Σχεδιάζοντας οπτικά την εφαρμογή και τις σχέσεις μεταξύ των στοιχείων αυτής, ελαχιστοποιείται η πιθανότητα σφάλματος και ταυτοχρόνως αυξάνεται η κατανόηση της λειτουργικότητας της εφαρμογής μέσω διαγραμμάτων UML και χαρτών κώδικα (UML and Code Maps). Εικόνα 11: Απλό διάγραμμα UML κλάσεων στο Visual Studio 2013-12-

3.4 Microsoft Visual Studio SDK (Software Development Kit) Το Microsoft Visual Studio SDK (Software Development Kit) είναι μια επέκταση του Microsoft Visual Studio 2013 που περιέχει βιβλιοθήκες και εργαλεία βοηθώντας έτσι τον χρήστη με την ανάπτυξη των εφαρμογών του και την μεγιστοποίηση των δυνατοτήτων που του δίνονται. Αξίζει να σημειωθεί πως η επέκταση αυτή περιέχει έναν προσομοιωτή (emulator) κινητού τηλεφώνου Windows Phone 8 και 8.1. Αυτό χρησιμεύει στην απεικόνιση μιας εικονικής συσκευής στην οθόνη του υπολογιστή στον οποίο εργάζεται ο χρήστης. Προβάλλεται, δηλαδή, μια εικονική Windows Phone συσκευή της οποίας η οθόνη απεικονίζει την εφαρμογή όπως ακριβώς αυτή θα φαίνεται σε μια φυσική συσκευή. Αποτέλεσμα αυτού είναι η άμεση παρακολούθηση του σχεδιασμού και της λειτουργίας της εφαρμογής, μέσα από το ίδιο περιβάλλον εργασίας του χρήστη, χωρίς χρονοτριβές και περαιτέρω ενέργειες που ενδεχομένως να μην χρειάζονται. Ένα επίσης αξιοσημείωτο χαρακτηριστικό της επέκτασης είναι το εργαλείο που επιτρέπει τη δήλωση συσκευής ως Συσκευή Ανάπτυξης (Developer Device) και λέγεται Developer Device Registration. Δηλώνοντας μια συσκευή σε αυτή την κατηγορία, ο χρήστης μπορεί να την χρησιμοποιεί για να φορτώνει εφαρμογές τις οποίες αναπτύσσει. Εκτός των παραπάνω, η εν λόγω επέκταση προσθέτει υποστήριξη για περισσότερες γλώσσες, τη δυνατότητα παραμετροποίησης της διάγνωσης σφαλμάτων (debugger) και την ευχέρεια σχεδιασμού πρωτότυπων σχεδίων για έργα (project templates), παραμετροποιημένα από τον χρήστη. -13-

3.5 Microsoft Silverlight Το Microsoft Silverlight είναι ένα framework σχεδιασμένο για τη λειτουργία εφαρμογών και είναι διαθέσιμο ως επέκταση για φυλλομετρητές ιστοσελίδων (Web Browsers, πλην όμως του Google Chrome για λόγους ασφαλείας). Εν αρχή χρησιμοποιήθηκε αποκλειστικά για ροή πολυμέσων (media streaming), παρ' όλα αυτά, έπειτα από τις πέντε (5) εκδόσεις που ακολούθησαν από την αρχική εμφάνιση του το 2007, έχει εξελιχθεί σε εργαλείο πολυμέσων, γραφικών αλλά υποστηρίζει και γλώσσες CLI. Η χρησιμότητα του Silverlight στα Windows Phone είναι ότι επιτρέπει στους προγραμματιστές εφαρμογών για Windows Phone 8 και 8.1 να αναπτύσσουν τις εφαρμογές τους χρησιμοποιώντας τη γλώσσα C# και τη δηλωτική γλώσσα Xaml για τον σχεδιασμό. Οι εφαρμογές Windows Phone 8 που έχουν αναπτυχθεί σε Silverlight framework μπορούν να μετατραπούν σε Silverlight 8.1, με τη διαφορά όμως πως οι εφαρμογές για Windows Phone 8.1 πλέον αναπτύσσονται και σε WinRT (Windows Runtime). Αυτό σημαίνει πως μια εφαρμογή Windows Phone 8 μπορεί να μετατραπεί σε Silverlight για 8.1, χωρίς όμως τα προνόμια εφαρμογών ανεπτυγμένων σε WinRT. Επομένως, η μεταφορά γίνεται μεταξύ των Silverlight, είναι όμως αδύνατη μεταξύ Silverlight και WinRT. Εικόνα 12: Λογότυπο Microsoft Silverlight -14-

3.6 Γλώσσες Προγραμματισμού Visual Studio 2013 Παρακάτω αναλύονται οι γλώσσες προγραμματισμού που χρησιμοποιήθηκαν για την ανάπτυξη εφαρμογής της πτυχιακής και δεν είναι άλλες από την C#, για την ανάπτυξη του λειτουργικού μέρους της εφαρμογής, καθώς και η δηλωτική γλώσσα Xaml για το σχεδιαστικό κομμάτι της. 3.6.1 C# Η C# είναι μια αντικειμενοστρεφής γλώσσα προγραμματισμού και χρησιμοποιείται για ανάπτυξη λογισμικού και εφαρμογών σε.net Framework (DotNet Framework). Ο χρήστης ωφελείται από την χρήση αυτής για την ανάπτυξη καθώς αποκτά πρόσβαση σε βιβλιοθήκες του.net Framework. Εικόνα 13: C# -15-

3.6.1.1 Τύποι Δεδομένων στην C# Οι τύποι δεδομένων στην C# χωρίζονται σε ακέραιους και μεταβλητές κινητής υποδιαστολής. Ακέραιοι Τύπος Μέγεθος Περιγραφή int 4 byte Κανονικός ακέραιος uint 4 byte Κανονικός ακέραιος μεγαλύτερος ή ίσος του 0 byte 1 byte Μικρός ακέραιος μεγαλύτερος ή ίσος του 0 sbyte 1 byte Μικρός ακέραιος short 2 byte Ακέραιος μεσαίου μεγέθους ushort 2 byte Ακέραιος μεσαίου μεγέθους μεγαλύτερος ή ίσος του 0 long 8 byte Μεγάλος ακέραιος ulong 8 byte Μεγάλος ακέραιος μεγαλύτερος ή ίσος του 0 Μεταβλητές κινητής υποδιαστολής Τύπος Μέγεθος Περιγραφή Float 4 byte Κανονικός δεκαδικός Double 8 byte Μεγάλος δεκαδικός Decimal 16 byte Δεκαδικός ακριβείας -16-

Το πιο απλό, και ίσως πιο διαδεδομένο, παράδειγμα της C# είναι το πρόγραμμα Hello World!, ένα πρόγραμμα το οποίο εκτυπώνει στον χρήστη το μήνυμα Hello World!. using System; namespace Namespace1 class Helloworld static void Main() Console.WriteLine("Hello World"); Console.ReadKey(); Παράδειγμα 1: Hello World! Συμβολοσειρές (strings) είναι σύνολο αλφαριθμητικών που αποτελούν ένα στοιχείο, static void Main() string strname = "VanDiam"; //Κώδικας// //Κώδικας// //Κώδικας// Παράδειγμα 2: Σύνταξη συμβολοσειράς Υπάρχουν ακόμη και μεταβλητές τύπου Boolean (bool) που παίρνουν τιμές μόνο για αληθή ή ψευδή ή αλλιώς true or false. Επίσης, οι απροσδιόριστες τιμές, ή αλλιώς Nullable (null) οι οποίες παίρνουν τιμές όπως μηδέν (0), ή παραμένουν κενές. -17-

3.6.1.2 Δομές Ελέγχου Στη C# χρησιμοποιούνται δομές ελέγχου αναλόγως με περιπτώσεις που θέτει ο χρήστης ώστε ο κώδικας να ελέγχεται βάσει συνθηκών ή να εκτελούνται διαφορετικά κομμάτια κώδικα. Οι πιο συνηθισμένες είναι η if και η switch. Η διαφορά μεταξύ των δυο είναι πως στην πρώτη αν ικανοποιείται η συνθήκη τότε το πρόγραμμα συνεχίζει όπως έχει θέσει ο χρήστης, ενώ αν όχι χρησιμοποιείται else ώστε να συμβεί κάτι άλλο. if (synth1) stoixeio1; else stoixeio2; Παράδειγμα 3: Σύνταξη if-else Στην περίπτωση switch ο χρήστης θέτει κάποια σενάρια ή περιπτώσεις κατά τις οποίες όταν ισχύουν, εκτελούνται διάφορα κομμάτια κώδικα. Χρησιμοποιούνται περιπτώσεις, μια break για να σταματά ο κώδικας καθώς επίσης και μια προεπιλεγμένη περίπτωση, ή αλλιώς default case. switch (var) case t1: stoixeio11; stoixeio12; break; case t2: stoixeio21; stoixeio22; break; default: stoixeioproep; break; Παράδειγμα 4: Σύνταξη switch -18-

3.6.1.3 Κλάσεις Ένα πρόγραμμα ανεπτυγμένο σε C# αποτελείται από κλάσεις οι οποίες το διέπουν. Στο ουσιώδες, οι κλάσεις περιέχουν λειτουργίες που χρησιμοποιούνται από το κυρίως πρόγραμμα ώστε να δημιουργηθούν αντικείμενα. class student public string ArΜitroou; public string OnomEp; Παράδειγμα 5: Σύνταξη κλάσης Έχοντας δημιουργήσει την παραπάνω κλάση, θέλουμε να την χρησιμοποιήσουμε ώστε να δημιουργήσουμε κάποιο αντικείμενο στο πρόγραμμα, που στην προκειμένη περίπτωση είναι ένας φοιτητής. static void Main(string[] args) Student VanDiam = new Student(); VanDiam.EtGen = 1987; VanDiam.MinGen = Martios; VanDiam.ArΜitroou = 12345; Console.WriteLine( O VanDiam gennithike to 0, o minas 1 ki exei A.M 2, VanDiam.EtGen, VanDiam.MinGen, VanDiam.ArΜitroou); Console.ReadLine(); Παράδειγμα 6: Δημιουργία αντικειμένου Στο παραπάνω παράδειγμα δημιουργήθηκε αντικείμενο Student, δόθηκαν τιμές στις μεταβλητές του και εν συνεχεία εκτυπώθηκαν μέσα σε ένα μήνυμα. -19-

Στην περίπτωση που θέλουμε να αποκτήσουμε πρόσβαση στο ίδιο το αντικείμενο της κλάσης, εν αντιθέσει με τα public του παραδείγματος 5, δηλαδή σε private στοιχεία, χρησιμοποιείται η this που μας δίνει τη δυνατότητα πρόσβασης σε αυτό καθώς και τις μεθόδους και ιδιότητες του αντικειμένου. private string Armitroou; private string OnomEp; public Student(string Armitroou, string OnomEp) this.armitroou = Armitroou; this.onomep = OnomEp; Παράδειγμα 7: Χρήση του this Οι μεταβλητές που δηλώνονται σε κλάσεις μπορούν να διαχωριστόυν σε τρία (3) διαφορετικά επίπεδα πρόσβασης για καλύτερη διαχείριση. Η public μεταβλητή δεν έχει κάποιον περιορισμό. Η private περιορίζεται για πρόσβαση μόνον μέσα στην ίδια κλάση. Η protected περιορίζεται για χρήση στην ίδια κλάση αλλά και σε επιπλέον τύπους που τυχόν να την κληρονομούν. 3.6.1.4 Κληρονομικότητα Όπως αναφέρθηκε παραπάνω, στην εισαγωγή, η γλώσσα προγραμματισμού C# είναι μια αντικειμενοστρεφής γλώσσα. Το βασικό χαρακτηριστικό των γλωσσών αυτών είναι πως παρέχουν τη δυνατότητα να μοιράζονται από κοινού διαδικασίες οι οποίες χρησιμοποιούν δεδομένα και αντικείμενα που σχετίζονται μεταξύ τους. Επομένως, η κληρονομικότητα δίνει τη δυνατότητα στα δεδομένα και αντικείμενα αυτά να κληρονομούν χαρακτηριστικά άλλων δεδομένων και αντικειμένων με αποτέλεσμα να αποφεύγεται η επανάληψη. public class klasi1 : klasi2 public int antikeimeno123 //Κώδικας// Παράδειγμα 8: Σύνταξη κληρονομικότητας -20-

3.6.1.5 Δομές Επανάληψης Στον προγραμματισμό οι δομές επανάληψης αποτελούν ένα απαραίτητο εργαλείο για την επίτευξη του επιθυμητού, προς τον προγραμματιστή, αποτελέσματος. Ο χρήστης θέτει τους κανόνες της επανάληψης ώστε να λαμβάνει χώρα ένα γεγονός κατά την επανάληψη αυτή. Στην C# χρησιμοποιούνται τρεις δομές επανάληψης, η for, η foreach, η while και η do while. Αν και μεταξύ τους έχουν κάποια κοινά χαρακτηριστικά και έναν κοινό στόχο, ο τρόπος προσέγγισης αλλά και η διεξαγωγή της επανάληψης διαφέρει από τη μια στη άλλη. Η for ως η πιο απλή δομή χρησιμοποιείται για συγκεκριμένο αριθμό επαναλήψεων ώστε να εκτελείται κώδικας για όσο κρατά η επανάληψη. for (i=1; i<=10; i++) //Κώδικας// //Κώδικας// //Κώδικας// Παράδειγμα 9: Σύνταξη της for Η foreach χρησιμοποιείται για τη διεξαγωγή επαναλήψεων στα στοιχεία ενός συνόλου, όπως για παράδειγμα ένας πίνακας, για την άντληση πληροφοριών εντός αυτού. int[] table = new int[] //Τιμές// ; int maxt = int.mint; foreach (int i in table) if(//κώδικας//) //Κώδικας// //Κώδικας// //Κώδικας// Παράδειγμα 10: Σύνταξη της foreach -21-

Η δομή while χρησιμοποιείται ώστε να πραγματοποιηθεί επανάληψη για έναν, αρκετές φορές, άγνωστο αριθμό επαναλήψεων και έως να ικανοποιηθεί η συνθήκη όπως αυτή τέθηκε από τον προγραμματιστή. int i = 100; while (i > 0 ) //Κώδικας// i-- Παράδειγμα 11: Σύνταξη της while για γνωστό αριθμό επαναλήψεων Τέλος, η δομή επανάληψης do while χρησιμοποιείται ώστε να εκτελείται κώδικας όσο η συνθήκη, που έχει τεθεί από τον χρήστη, ισχύει. int i = 100; do //Κώδικας// //Κώδικας// //Κώδικας// while (i > 0); Παράδειγμα 12: Σύνταξη της do while -22-

3.6.2 Xaml Η Xaml (Extensible Application Markup Language) είναι, όπως επισημαίνεται και στον τίτλο της, μια δηλωτική γλώσσα και είναι βασισμένη στα πρότυπα της XML. Δημιουργός της είναι η ίδια η Microsoft και χρησιμοποιώντας την ο προγραμματιστής αποκτά τη δυνατότητα σχεδιασμού του περιβάλλοντος εφαρμογών για Windows Phone 8 και 8.1,.Net Framework 3.0 και 4.0, Silverlight κτλ. 3.6.2.1 Δημιουργία Αντικειμένων Η δημιουργία των αντικειμένων στην Xaml είναι εύκολη και γρήγορη, κάνοντας την εύκολη στην εκμάθηση αλλά και τη χρήση της. <TextBox Text="This is a textbox!" HorizontalAlignment="Left" VerticalAlignment="Top" Name="ΤextBox" Width="150" Height="20" TextChanged="TextBox_TextChanged"/> Παράδειγμα 13: Δημιουργία πλαισίου κειμένου Ο κώδικας του Παραδείγματος 13 δημιουργεί ένα πλαίσιο κειμένου μέσα στο οποίο ο χρήστης πληκτρολογεί. Τέτοια πλαίσια συναντώνται κυρίως σε οθόνες εισόδου λογαριασμού. Εικόνα 14: Αποτέλεσμα κώδικα του Παραδείγματος 13 Ομοίως, δίνεται η δυνατότητα δημιουργίας κι άλλων αντικειμένων όπως buttons, radio buttons, check box και λοιπών εντός του Microsoft Visual Studio 2013 με τη χρήση του εργαλείου Toolbox. Εικόνα 15: Το Toolbox του Visual Studio 2013-23-

Εκτός των απλών αντικειμένων, οι χρήστες μπορούν να δημιουργήσουν και ομαδοποιήσεις περισσοτέρων του ενός αλλά συνολικά, εντός panels. Εικόνα 16: Ομαδοποίηση αντικειμένων εντός panel Η κατάληξη αρχείων Xaml είναι μορφής.xaml (λόγου χάρη arxeio1.xaml). Προκειμένου να λειτουργήσει η σχεδίαση του χρήστη χρησιμοποιώντας την Xaml, το αρχείο συνδυάζεται με την C# σε άλλο αρχείο το οποίο μοιράζονται, με κατάληξη.cs. Επομένως, για ένα αρχείο arxeio1.xaml θα υπάρχει πάντα ένα αρχείο arxeio1.xaml.cs. -24-

4 Ροή ήχου από Διαδίκτυο σε.net (Streaming Web Audio in.net) Ως streaming ή ροή (συνήθως πολυμέσων όπως βίντεο, ήχου κτλ) ορίζεται η διαδικασία κατά την οποία τα δεδομένα του αντικειμένου του πολυμέσου περνούν και αναπαράγονται από το μέσο αναπαραγωγής (όπως music player ή video player) χωρίς να χρειάζεται το αρχείο να αποθηκευτεί σε τοπικό αποθηκευτικό μέσο από τον χρήστη. Αυτό εξυπηρετεί επειδή το κοινό έχει τη δυνατότητα να αναπαράγει πολυμέσα τοπικά χωρίς την ανάγκη δέσμευσης χρήσιμου αποθηκευτικού χώρου και περαιτέρω επιβάρυνση της συσκευής. Είναι σημαντικό να σημειωθεί πως βασική προϋπόθεση για την επίτευξη ροής είναι η συνεχής σύνδεση του πελάτη με τον τροφοδότη του αντικειμένου της ροής, το οποίο επιτυγχάνεται με τη μεταξύ τους σύνδεση μέσω Διαδικτύου ή τοπικού δικτύου. 4.1 Ροή σε πραγματικό χρόνο (Live Streaming) Η θεμελιώδης διαφορά μεταξύ στατικού πολυμέσου (static media) και πολυμέσου ροής (streamed media) είναι πως τα πρώτα έχουν μια δεδομένη αρχή κι ένα δεδομένο τέλος, ενώ η αρχή και το τέλος πολυμέσου ροής ορίζεται από τον χρήστη τη στιγμή που επιλέγει την έναρξη και τη λήξη της αναπαραγωγής αντιστοίχως. Αυτό βεβαίως δεν σημαίνει πως το υλικό σταματά να μεταδίδεται σε άλλους χρήστες ή πελάτες, όμως είναι στην ευχέρειά τους να διαλέγουν τις στιγμές έναρξης και λήξης αυτού. Δεν είναι λίγες οι φορές που η σύνδεση μεταξύ τροφοδότη και πελάτη παρουσιάζει αστάθειες για διάφορους λόγους, μεταξύ των οποίων χαμηλό διαθέσιμο εύρος σύνδεσης (bandwidth) ενός εκ των δύο ή και των δύο, προβλήματος δικτύου που μειώνει την ταχύτητα μεταφοράς, ή λόγω χρήσης του διαθέσιμου εύρους (bandwidth) από άλλες εφαρμογές κτλ. Για τον λόγο αυτό πολλές φορές συναντάται η τεχνολογία Προσαρμοστικής Ροής (Adaptive Streaming) η οποία επιτρέπει τη συνέχεια της ροής, με μετατροπή της σε χαμηλότερης ποιότητας, ώστε να αποφευχθεί η οριστική διακοπή ή μικροδιακοπές στην μεταξύ τους σύνδεση. -25-

Τα πρωτόκολλα ροών πολυμέσων είναι τα εξής: HTTP (Hyper Text Transfer Protocol ως το πλέον διαδεδομένο πρωτόκολλο για ροή πολυμέσων) RTMP (Real Time Messaging Protocol, ανεπτυγμένο από την πρώην Macromedia και νυν Adobe, προσφέροντας συμβατότητα με προϊόντα όπως Adobe Flash κτλ.) RTSP (Real Time Streaming Protocol που χρησιμοποιείται για τη δημιουργία και διαχείριση συνδέσεων για ροές μεταξύ τελικών σημείων) 4.2 Ρυθμός Μετάδοσης Bit (Bit Rate) Με τον όρο Ρυθμός Μετάδοσης Bit (Bit Rate) ορίζεται η συμπίεση (compression) του πολυμέσου, επομένως και η ποιότητα του. Βάσει αυτού καθορίζεται και το διαθέσιμο εύρος (bandwidth) που χρειάζεται ώστε να αναπαραχθεί το αρχείο σε κατάσταση ροής. Για τον λόγο αυτό συνήθως οι ροές κωδικοποιούνται σε αρχεία μικρότερου μεγέθους, με διάφορους τρόπους, ώστε να επιτυγχάνεται θεαματική μείωση του μεγέθους αυτού, χωρίς όμως να θυσιάζεται ένα σχετικά μεγάλο μέρος της ποιότητας. -26-

5 Απομονωμένος Χώρος Αποθήκευσης (Isolated Storage) Στα Windows Phone, για την αποθήκευση δεδομένων κάποιων εφαρμογών τοπικά μπορεί να χρησιμοποιηθεί ένας ξεχωριστός χώρος αποθήκευσης γνωστός και ως Απομονωμένος Χώρος Αποθήκευσης (Isolated Storage). Η χρήση του για την εφαρμογή είναι αποκλειστική κι εξασφαλίζει την ασφάλεια των δεδομένων της, καθώς και του υπόλοιπου λειτουργικού μας συστήματος, καθώς δεν μπορεί να χρησιμοποιηθεί από άλλες εφαρμογές ή κακοβούλως για παραβίαση ασφάλειας δεδομένων κτλ. 5.1 Σχέδια URI (URI Schemes) Ένα Σχέδιο Ενιαίου Προσδιορισμού Πόρων (Uniform Resource Identifier) χρησιμεύει ώστε ο προγραμματιστής να αποκτά πρόσβαση στον τοπικό φάκελο. Πιο συγκεκριμένα, στα Windows Phone αυτό επιτυγχάνεται με τη χρήση των ms-appdata και isostore URI Σχεδίων. var file = await Windows.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/Image1.png")); Παράδειγμα 14: Χρήση ms-appdata URI Σχεδίου MyDataContext db = new mydatacontext("isostore:/database.mdf) Παράδειγμα 15: Χρήση isostore URI Σχεδίου -27-

5.2 Διαχείριση Στοιχείων σε Isolated Storage Σε επίπεδο Απομονωμένου Χώρου Αποθήκευσης ο προγραμματιστής, προκειμένου να αποθηκεύσει ρυθμίσεις που αφορούν στα δεδομένα, οι οποίες θα συνεχίζουν να υπάρχουν και μετά το κλείσιμο αυτής και την επανεκκίνηση της, χρησιμοποιεί την κλάση IsolatedStorageSettings. Η συγκεκριμένη κλάση αποθηκεύει τιμές-κλειδιά στο Isolated Storage που αφορούν σε γενικές ρυθμίσεις της εφαρμογής με τη χρήση της μεθόδου savestring. void savestring(string min123, string ruthmiseis123) IsolatedStorageSettings.ApplicationSettings[ruthmiseis123] = min123; IsolatedStorageSettings.ApplicationSettings.Save(); Παράδειγμα 16: Αποθήκευση ρυθμίσεων εφαρμογής με τη χρήση της μεθόδου savestring και των ρυθμίσεων της συμβολοσειράς ruthmiseis123 Η φόρτωση αυτών των αποθηκευμένων ρυθμίσεων επιτυγχάνεται με τη χρήση μεθόδου loadstring. string loadstring (string ruthmiseis123) if (IsolatedStorageSettings.ApplicationSettings.Contains(ruthmiseis123)) return (string)isolatedstoragesettings.applicationsettings[ruthmiseis123]; Παράδειγμα 17: Χρήση της μεθόδου loadstring για την κλήση ρυθμίσεων της συμβολοσειράς ruthmiseis123 Μέσα στο Isolated Storage ο προγραμματιστής έχει έναν αρκετά περιορισμένο αριθμό επιλογών όσον αφορά ενέργειες τις οποίες μπορεί να πραγματοποιήσει, όπως δημιουργία αρχείων και φακέλων και αφαίρεση αυτών, ανάγνωση πληροφοριών κτλ., με τη χρήση της κλάσης IsolatedStorageFileStream. Πιο συγκεκριμένα, για την ανάγνωση από κάποιο αρχείο χρησιμοποιείται η κλάση StreamReader και για εγγραφή περιεχομένου συμβολοσειράς σε αυτό η StreamWriter. -28-

IsolatedStorageFile mystorage1 = IsolatedStorageFile.GetUserStoreForApplication(); if (mystorage1.fileexists(arxeio1)) using(streamwriter writefile = new StreamWrite(new IsolatedStorageFileStream(arxeio1, FileMode.Open, FileAccess.Write, mystorage1))) string arxeiotextdata = "Hello World!"; writefile.writeline(arxeiotextdata); writefile.close(); Παράδειγμα 18: Εγγραφή σε αρχείο με τη χρήση της κλάσης StreamWriter Για τη διευκόλυνση των προγραμματιστών στον έλεγχο των αρχείων εντός του Isolated Storage, το Windows Phone SDK παρέχει ένα πρόγραμμα εξερεύνησης του Απομονωμένου Χώρου Αποθήκευσης, το ISETool, σε περιβάλλον γραμμής εργασιών (command line). Καθώς ο συγκεκριμένος χώρος, όπως επισημαίνεται παραπάνω, δεν επιδέχεται εκτεταμμένης πρόσβασης, το ISETool περιορίζεται μόνο σε βασικές λειτουργίες, όπως αντιγραφή, επικόλληση αρχείων κτλ. -29-

6 Microsoft XNA Η Microsoft XNA είναι μια δωρεάν βιβλιοθήκη εργαλείων, ανεπτυγμένη από την ίδια τη Microsoft, με σκοπό κυρίως την δημιουργία ηλεκτρονικών παιχνιδιών για πλατφόρμες της. Έχει ως βάση το.net Framework, επομένως χρησιμοποιείται και στα Windows Phone ως βασικό πρόγραμμα ανάπτυξης ηλεκτρονικών παιχνιδιών γι' αυτά. Το πλέον σημαντικό χαρακτηριστικό είναι πως, εφαρμογές ανεπτυγμένες σε XNA, θα λειτουργούν σε όλες τις πλατφόρμες που υποστηρίζουν τη βιβλιοθήκη χωρίς ιδιαίτερες αλλαγές στον κυρίως κώδικα, και αυτό επειδή η XNA στηρίζεται στο CLR (Common Language Runtime), κομμάτι του.net Framework, που σχετίζεται με την εκτέλεση εφαρμογών του. Εικόνα 17: Λογότυπο Microsoft XNA Στην εφαρμογή που αναπτύχθηκε χρησιμοποιήθηκαν κάποιες λειτουργίες του Microsoft XNA. Συγκεκριμένα, η λειτουργία Dispatcher Timer για τον χειρισμό γεγονότων των οποίων λαμβάνουν χώρα ανά χρονική στιγμή, τοποθετώντας τα σε μια ουρά στην οποία θα περιμένουν έως να κληθούν. private DispatcherTimer frameworkdispatchertimer; Παράδειγμα 19: Δημιουργία του Dispatcher Timer DispatcherTimer playtimer; playtimer = new DispatcherTimer(); playtimer.interval = TimeSpan.FromMilliseconds(1000); //one second playtimer.tick += new EventHandler(playTimer_Tick); playtimer.start(); Thread.Sleep(1000); Παράδειγμα 20: Κώδικας που χρησιμοποιήθηκε για τη δημιουργία μεθόδου η οποία ανανεώνεται κάθε 1 δευτερόλεπτο Από τις βιβλιοθήκες του XNA χρησιμοποιήθηκαν οι Microsoft.Xna.Framework, Microsoft.Xna.Framework.Audio και Microsoft.Xna.Framework.Media. -30-

7 Ανάπτυξη Εφαρμογής Music On 7.1 Εισαγωγή Η εφαρμογή Music On που αναπτύχθηκε κατά τη διάρκεια της παρούσας πτυχιακής είναι μια εφαρμογή αναπαραγωγής μουσικής και ήχου. Παρέχει τη δυνατότητα δημιουργίας ήχου κλήσης, ηχογράφησης και αναπαραγωγής ήχου από το Διαδίκτυο. Είναι συμβατή με συσκευές λογισμικού Windows Phone 8.1. Στο ουσιώδες, πρόκειται για μια σουίτα ήχου με στόχο την ψυχαγωγία των χρηστών, παρέχοντας επιπλέον δυνατότητες σε σχέση με πολλές που συναντώνται στον κεντρικό πάροχο εφαρμογών για Windows Phone, το Windows Store. Αναπτύχθηκε πλήρως στο Visual Studio 2013 Ultimate με τη βοήθεια του Windows Phone SDK, ενώ βασική γλώσσα προγραμματισμού για την ανάπτυξη είναι η C# καθώς και η δηλωτική γλώσσα Xaml για τον σχεδιασμό της. Η εφαρμογή, με τη χρήση του κουμπιού play στην αρχική οθόνη εκκινεί αναπαραγωγή ήχου που βρίσκεται αποθηκευμένος στη βιβλιοθήκη (music library) της συσκευής. Δίνονται οι επιλογές προηγούμενο και επόμενο για αναπαραγωγή του προηγούμενου και επόμενου ήχου αντιστοίχως, καθώς και η επιλογή παύσης (pause) όταν η εφαρμογή βρίσκεται σε φάση αναπαραγωγής ήχου. Έχει χρησιμοποιηθεί το εργαλείο Pivot για ομαλή μετάβαση από καρτέλα σε καρτέλα, αριστερά και δεξιά, μέσω των οποίων ο χρήστης μεταβαίνει σε διαφορετικές λειτουργίες της εφαρμογής. Η πρώτη οθόνη play έχει οριστεί ως pivot item 1, η δεύτερη οθόνη για δημιουργία ήχου κλήσης (ringtone) ως pivot item 2, η τρίτη οθόνη για ηχογράφηση (record) ως pivot item 3, η τέταρτη οθόνη για αναπαραγωγή ήχου από το Διαδίκτυο (online mp3) ως pivot item 4 και τέλος η οθόνη πληροφοριών (about) που περιέχει γενικές πληροφορίες για την εφαρμογή και συνδέσμους έχει οριστεί ως pivot item 5. -31-

7.2 Αρχική Οθόνη - play Κατά την εκκίνηση της εφαρμογής, ο χρήστης μεταβαίνει στην αρχική της οθόνη, με όνομα play. Εικόνα 18: Κεντρική οθόνη της εφαρμογής Music On Στο άνω αριστερά μέρος είναι πάντα τοποθετημένο ένα μικρό λογότυπο της εφαρμογής με την ονομασία και ακριβώς από κάτω, με έντονα λευκά γράμματα το όνομα της σελίδας στην οποία βρίσκεται ο χρήστης. Χαμηλότερα υπάρχουν πληροφορίες για τον ήχο που αναπαράγεται την παρούσα χρονική στιγμή και το όνομα του καλλιτέχνη. Στο κέντρο της οθόνης διακρίνεται το λογότυπο της εφαρμογής σε μεγαλύτερη εικόνα και στο κάτω μέρος αυτού μια μπάρα προόδου, ο χρόνος που έχει διανυθεί καθώς επίσης και ο συνολικός χρόνος του ήχου. Τέλος, στο κάτω μέρος διακρίνονται τα κουμπιά χερισμού του ήχου, επιλογή προηγούμενου, αναπαραγωγή και επιλογή επόμενου, κατά σειρά εμφάνισης. Μόλις η εφαρμογή εκκινεί, δημιουργείται μια μέθοδος η οποία φορτώνει όλα τα επιθυμητά δεδομένα. this.loaded += MainPage_Loaded; Ενδεικτικό 1: Δημιουργία μεθόδου για τα αρχικά αντικείμενα της εφαρμογής void MainPage_Loaded(object sender, RoutedEventArgs e) Ενδεικτικό 2: Μέθοδος στην οποία φορτώνονται τα επιθυμητά αντικείμενα εκκίνησης -32-

Η εμφάνιση της εφαρμογής έχει επιτευχθεί με τη χρήση της δηλωτικής γλώσσας Xaml. Πριν από κάθε άλλη ενέργεια, πρέπει να δημιουργηθεί η κεντρική σελίδα εντός της οποίας τοποθετούνται τα στοιχεία που διέπουν το γραφικό κομμάτι. <phone:phoneapplicationpage> Ενδεικτικό 3: Δημιουργία σελίδας της εφαμογής Για τη συγκεκριμένη εφαρμογή χρησιμοποιήθηκε ένας τίτλος στο άνω αριστερά μέρος, με ένα λογότυπο και κείμενο. <phone:pivot.titletemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Image Source="/Assets/logomusicon.png" Width="30" Height="30" /> <TextBlock Text="Music On" Style="StaticResource PhoneTextTitle3Style"/> </StackPanel> </DataTemplate> </phone:pivot.titletemplate> Ενδεικτικό 4: Δημιουργία τίτλου σελίδας Όπως επισημαίνεται στην εισαγωγή, για την εύκολη και γρήγορη πλοήγηση μεταξύ των διαφόρων σελίδων της εφαρμογής χρησιμοποιήθηκε το εργαλείο Pivot. <phone:pivotitem > Ενδεικτικό 5: Δημιουργία ενός Pivot Item Oι πέντε (5) διαφορετικές σελίδες της εφαρμογής ονομάστηκαν Pivot Items. Ουσιαστικά, κατά τη δημιουργία τέτοιων αντικειμένων, δημιουργείται ένας τίτλος, το κείμενο και εισάγονται χαρακτηριστικά εμφάνισης και μορφοποίησης για την επίτευξη του επιθυμητού αποτελέσματος. <phone:pivotitem.header> <Grid Margin="11,28,13,0" > <TextBlock Name="play" FontSize="50" Text="play"/> </Grid> </phone:pivotitem.header> Ενδεικτικό 6: Δημιουργία τίτλου της πρώτης σελίδας play ως Pivot Item Το πλέον κατάλληλο ύψος για το grid εντός του οποίου βρίσκονται όλα τα στοιχεία της εφαρμογής επιλέχθηκε να είναι στα 600 pixels. <Grid Height="600"> Ενδεικτικό 7: Εισαγωγή τιμής ύψους του grid -33-

Για τον ορθό σχεδιασμό της οθόνης δημιουργήθηκαν σειρές και στήλες εντός των οποίων τοποθετήθηκαν τα στοιχεία. Για τον λόγο ότι η εφαρμογή πρέπει να είναι εμφανισιακά ορθή σε όλα τα μεγέθη οθόνης, έπειτα από την κάθε τιμή σειράς χρησιμοποιείται το σύμβολο "*" ώστε το μέγεθος των στοιχείων των σειρών αυτών να προσαρμόζεται ανάλογα με το μέγεθος της εικόνας στην οποία θα κληθεί να προβληθεί η εφαρμογή. <Grid.RowDefinitions> <RowDefinition Height="100*"/> <RowDefinition Height="300*"/> <RowDefinition Height="40*"/> <RowDefinition Height="100*"/> <RowDefinition Height="80*"/> </Grid.RowDefinitions> Ενδεικτικό 8: Εισαγωγή μεγέθους σειρών Όσον αφορά τα κουμπιά χειρισμού ήχου, επιλογής προηγούμενου, αναπαραγωγής ή παύσης και επιλογής επόμενου, τοποθετούνται στη σειρά τέσσερα (4). <Grid Grid.Row="3" > Ενδεικτικό 9: Εισαγωγή κουμπιών στην σειρά τέσσερα (4) <Button x:name="previous_b" Click="PreviousButton"/> <Button x:name="play_b" Click="PlayButton"/> <Button x:name="next_b" Click="NextButton"/> Ενδεικτικό 10: Δημιουργία κουμπιών χειρισμού ήχου Όταν ο χρήστης επιλέξει την αναπαραγωγή μέσω του click event, από την Xaml, όπως παρατίθεται στο Ενδεικτικό 10, καλείται μέθοδος η οποία περιέχει τον κώδικα που πρέπει να εκτελεστεί. private void PlayButton(object sender, RoutedEventArgs e) Ενδεικτικό 11: Μέθοδος που καλείται κατά την επιλογή αναπαραγωγή Την ίδια χρονική στιγμή που λαμβάνει χώρα το γεγονός, το κουμπί αναπαραγωγή αλλάζει εμφάνιση, σε κουμπί παύσης, επισημαίνοντας με αυτόν τον τρόπο στον χρήστη πως εάν το ξαναπατήσει, ο ήχος θα τεθεί σε κατάσταση παύσης. var brush = new ImageBrush(); brush.imagesource = new BitmapImage(new Uri(@"Assets/pause.png", UriKind.Relative)); play_b.background = brush; Ενδεικτικό 12: Μετατροπη του κουμπιού αναπαραγωγή σε κουμπί παύσης -34-

Στην ακριβώς αντίστροφη περίπτωση, το κουμπί πρέπει να μετατραπεί εκ νέου σε κουμπι αναπαραγωγής, ώστε ο χρήστης να γνωρίζει πως, με το πάτημά του, η αναπαραγωγή του ήχου θα συνεχιστεί. var brush = new ImageBrush(); brush.imagesource = new BitmapImage(new Uri(@"Assets/play.png", UriKind.Relative)); play_b.background = brush; Ενδεικτικό 13: Μετατροπή κουμπιού παύσης σε κουμπί αναπαραγωγής Εικόνα 19: Γραφική μετατροπή του κουμπιού αναπαραγωγής σε παύσης Το πρόγραμμα, βεβαίως, εκτός από τη αλλαγή της εμφάνισης, χρειάζεται μια λειτουργία που να υποχρεώνει τον ήχο να συνεχίζει την αναπαραγωγή έπειτα από μια κατάσταση παύσης όταν ο χρήστης θα χρησιμοποιήσει ξανά το κουμπί. Microsoft.Xna.Framework.Media.MediaPlayer.State == MediaState.Paused FrameworkDispatcher.Update(); Microsoft.Xna.Framework.Media.MediaPlayer.Resume(); Ενδεικτικό 14: Λειτουργία συνέχειας αναπαραγωγής ήχου Αντιστρόφως, υπάρχει και η λειτουργία που θέτει τον ήχο σε κατάσταση παύσης. Microsoft.Xna.Framework.Media.MediaPlayer.State == MediaState.Playing Microsoft.Xna.Framework.Media.MediaPlayer.Pause(); Ενδεικτικό 15: Λειτουργία μετάβασης του ήχου σε κατάσταση παύσης -35-

Όταν η αναπαραγωγή ενός ήχου ξεκινά, το πρόγραμμα αποκτά πρόσβαση στην Media Library της συσκευής ώστε να μπορέσει να καλέσει τις απαραίτητες πληροφορίες, όπως τον τίτλο του ήχου και το όνομα του καλλιτέχνη, τη συνολική διάρκεια του ήχου, καθώς επίσης την αναπαράσταση κάθε χρονικής στιγμής στη μπάρα προόδου και στον χρόνο που διανύθηκε ώστε να ξεκινήσει η αναπαραγωγή. using (var ml = new MediaLibrary()) foreach (var song in ml.songs) artist_list.add(song.artist.tostring()); song_name.text = ml.songs[sound_value].tostring(); artist_name.text = artist_list[sound_value].tostring(); EndTime.Text = String.Format(@"0:hh\:mm\:ss", ml.songs[sound_value].duration); _totalsongduration = ml.songs[sound_value].duration; progressbar.maximum = _totalsongduration.totalseconds; FrameworkDispatcher.Update(); MediaPlayer.Play(ml.Songs[sound_value]); ml.dispose(); Ενδεικτικό 16: Κώδικας που εκτελείται κατά την έναρξη της αναπαραγωγής ήχου Όλες αυτές οι πληροφορίες θα πρέπει να γίνονται διαθέσιμες και οπτικά στον χρήστη της εφαρμογής στο ανάλογο stack panel εντός του οποίου έχει επιλεγεί να προβάλλονται. <StackPanel Grid.Row="0" Orientation="Vertical"> <TextBlock x:name="song_name" Text="Media music 1" Style="StaticResource PhoneTextExtraLargeStyle" Margin="0,0,-2,0" TextTrimming="WordEllipsis" /> <TextBlock x:name="artist_name" HorizontalAlignment="Left" Text="Album name 1" Style="StaticResource PhoneTextSubtleStyle" FontStyle="Italic" /> </StackPanel> Ενδεικτικό 17: Εμφάνιση πληροφοριών αναπαραγωγής με χρήση της Xaml Άνωθεν των χρόνων αναπαραγωγής είναι σχεδιασμένη μια μικρή και διακριτική μπάρα προόδου η οποία ενημερώνει τον χρήστη οπτικά για την πρόοδο της αναπαραγωγής. <ProgressBar x:name="progressbar" Grid.Row="1" Margin="25 0 25 0" VerticalAlignment="Bottom"/> Ενδεικτικό 18: Σχεδιασμός μπάρας προόδου με χρήση της Xaml -36-

Το πρόγραμμα θα δημιουργήσει μια μέθοδο η οποία θα ανανεώνεται κάθε ένα προκαθορισμένο χρονικό διάστημα ώστε εντός αυτής να εκτελούνται οι εντολές που καθορίζονται. DispatcherTimer playtimer; playtimer = new DispatcherTimer(); playtimer.interval = TimeSpan.FromMilliseconds(1000); //one second playtimer.tick += new EventHandler(playTimer_Tick); playtimer.start(); Thread.Sleep(1000); Ενδεικτικό 19: Οι ιδιότητες που περιέχονται στη μέθοδο που δημιουργείται public void playtimer_tick(object sender, EventArgs e) Ενδεικτικό 20: Η μέθοδος που δημιουργείται και ανανεώνεται κάθε 1 δευτερόλεπτο Η μπάρα προόδου θα διαβάζει σε κάθε κατάσταση, είτε αναπαραγωγής είτε παύσης, τα συνολικά δευτερόλεπτα ώστε να εμφανίζει ορθώς, οπτικά, τη θέση της. progressbar.value = MediaPlayer.PlayPosition.TotalSeconds; Ενδεικτικό 21: Εμφάνιση θέσης στη μπάρα προόδου σε σχέση με τον συνολικό χρόνο Τέλος, υπάρχουν στην οθόνη οι χρονικές ενδείξεις για τον παρόντα χρόνο αναπαραγωγής αλλά και τον συνολικό χρόνο διάρκειας του ήχου. <Grid Grid.Row="2"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0 0 35 0"> <TextBlock x:name="currenttime" Text="00:00:00" /> <TextBlock Text=" / " /> <TextBlock x:name="endtime" Text="00:00:00"/> </StackPanel> </Grid> Ενδεικτικό 22: Σχεδιασμός χρονικών ενδείξεων σε Xaml -37-

7.3 Δημιουργία Ήχου Κλήσης - create ringtone Η δεύτερη κατά σειρά σελίδα της εφαρμογής αφορά στη δυνατότητα που παρέχεται από την εφαρμογή στο να δημιουργηθεί ήχος κλήσης μέσω αυτής. Εικόνα 20: Οθόνη δημιουργίας ήχου κλήσης Παρατηρείται ένα γενικό κείμενο επεξήγησης καθώς και η μοναδική επιλογή - κουμπί Let's Start Now. <Button Content="Let's Start Now" Click="LetsStartButton"/> Ενδεικτικό 23: Δημιουργία του κουμπιού Με το πάτημα αυτού ο χρήστης πλοηγείται σε νέα σελίδα που περιέχει στοιχεία σε λίστα καθώς και δύο (2) επιλογές, αναπαραγωγή και δημιουργία ήχου κλήσης. -38-

Εικόνα 21: Οθόνη λίστας αντικειμένων Κατά την επίσκεψη της νέας αυτής σελίδας δημιουργείται μέθοδος κλήσης των αντικειμένων της λίστας. this.loaded += RingtonePage_Loaded; Ενδεικτικό 24: Δημιουργία μεθόδου φόρτωσης void RingtonePage_Loaded(object sender, RoutedEventArgs e) Ενδεικτικό 25: Η μέθοδος που δημιουργείται Για την εμφανιζόμενη λίστα χρησιμοποιείται ένα grid το οποίο περιέχει listbox με αντικείμενα ώστε ο χρήστης να μπορεί να πραγματοποιήσει κύλιση για την εξερεύνηση των αντικειμένων. -39-

<Grid Grid.Row="2"> <ListBox Name="_listbox"> <ListBox.ItemTemplate> <DataTemplate x:name="_data"> <StackPanel Orientation="Horizontal" Height="60" VerticalAlignment="Top" Grid.Row="3"> <Image VerticalAlignment="Top" Height="50" Width="50" Margin="5 5 0 0" Tap="Play_Ringtone" Source="/Assets/play.png"/> <Image VerticalAlignment="Top" Height="50" Width="50" Margin="5 5 0 0" Tap="Create_Ringtone" Source="/Assets/ring.png"/> <StackPanel Orientation="Vertical" Width="340"> <TextBlock Margin="5 10 0 0" Style="StaticResource LongListSelectorGroupHeaderLetterTileStyle" Text="Binding Name" FontSize="24" TextTrimming="WordEllipsis"/> </StackPanel> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </Grid> Ενδεικτικό 26: Δημιουργία ενός grid το οποίο περιέχει listbox Εντός του προγράμματος, δημιουργείται λίστα με ιδιότητες. public List<RingtonesProperties> ring_properties = new public class RingtonesProperties string name; string link; public string Name get return name; set name = value; public string Link get return link; set link = value; Ενδεικτικό 27: Δημιουργία λίστας Ενδεικτικό 28: Οι ιδιότητες της λίστας -40-

Προκειμένου η λίστα να αποκτήσει στοιχεία, στόχος είναι ονόματα και σύνδεσμοι με ιδιότητα ringtone properties. Η διαδικασία θα επαναληφθεί όσες φορές χρειαστεί έως ότου να μην υπάρχουν άλλα στοιχεία προς φόρτωση. ring_properties.add(new RingtonesProperties Name = "Fun We Are Young Ft Janelle Monae", Link = "http://m.phoneky.co.uk/mp3- ringtones/tone/2012/editor/fun_we_are_young_ft_janelle_monae.mp3" ); Ενδεικτικό 29: Πρόσθεση χαρακτηριστικού και στοιχείου στη λίστα Εκ των δύο (2) επιλογών για κάθε στοιχείο της λίστας, όταν πατηθεί η αναπαραγωγή από τον χρήστη, εκτελείται μέθοδος. private void Play_Ringtone(object sender, System.Windows.Input.GestureEventArgs e) Ενδεικτικό 30: Η μέθοδος που εκτελείται Αυτό που ζητά η εν λόγω μέθοδος είναι σε ποιό αντικείμενο της λίστας αντιστοιχεί η επιλογή αναπαραγωγής που μόλις έκανε ο χρήστης με την χρήση του αντίστοιχου κουμπιού. IsolatedStorageSettings.ApplicationSettings["iso_item"] = _listbox.selectedindex; Ενδεικτικό 31: Το περιεχόμενο της μεθόδου για το επιλεγμένο αντικείμενο Εν συνεχεία θα πρέπει να πραγματοποιηθεί έλεγχος για το αν υπάρχει στο Isolated Storage. filename = ring_properties[(int)isolatedstoragesettings.applicationsettings["iso_item"]].link.substring(ring_properties[(int)isolatedstoragesettings.applicationsetti ngs["iso_item"]].link.lastindexof("/") + 1).Trim(); Ενδεικτικό 32: Κώδικας για την αναζήτηση του στοιχείου -41-

Το παραπάνω χρησιμοποιείται ως εξής. using (IsolatedStorageFile isfs = IsolatedStorageFile.GetUserStoreForApplication()) if (isfs.fileexists(filename)) PlaySound(); else _webclient.openreadasync(new Uri(ring_properties[(int)IsolatedStorageSettings.ApplicationSettings["iso_ite m"]].link)); IsolatedStorageSettings.ApplicationSettings["play_item"] = true; Ενδεικτικό 33: Χρήση της αναζήτησης του στοιχείου Στην περίπτωση δηλαδή που το αντικείμενο υπάρχει, αυτό σημαίνει πως δημιουργήθηκε κάποια στιγμή. Αν όμως δεν υπάρχει, τότε θα δημιουργηθει με την κλήση μεθόδου. private void PlaySound() Ενδεικτικό 34: Μέθοδος που καλείται στην περίπτωση που δεν υπάρχει το στοιχείο using (var isostream = isf.openfile(filename, FileMode.Open, FileAccess.Read)) mediaelement.stop(); mediaelement.setsource(isostream); mediaelement.position = System.TimeSpan.FromSeconds(o); mediaelement.volume = 20; mediaelement.play(); Ενδεικτικό 35: Το περιεχόμενο της μεθόδου Επίσης, στην περίπτωση που το στοιχείο δεν έχει βρεθεί, άρα και δεν υπάρχει, πραγματοποιείται Web Client Κλήση από την οποία πρέπει να διαβαστεί. _webclient.openreadasync(new Uri(ring_properties[(int)IsolatedStorageSettings.ApplicationSettings["iso_ite m"]].link)); Ενδεικτικό 36: Μέθοδος για ανάκτηση Web Client Κλήσης διαβάζοντας ασύγχρονα -42-

Νωρίτερα, έχει ήδη γίνει κατανοητό πως στην περίπτωση που χρειαστούμε τα δεδομένα, πρέπει να έχει πραγματοποιηθεί μια Web Client Κλήση. _webclient = new WebClient(); _webclient.openreadcompleted += (s1, e1) => Ενδεικτικό 37: Web Client Κλήση για ανάγνωση των bytes Αυτό που απομένει πλέον είναι να γίνει έλεγχος για το αν υπάρχει αρκετός χώρος στoν Isolated Storage ώστε να γίνει αποθήκευση του αρχείου σε αυτήν. bool isspaceavailable = IsSpaceIsAvailable(e1.Result.Length); Ενδεικτικό 38: Κώδικας ελέγχου ελεύθερου χώρου Επομένως, μεταβαίνουμε σε μέθοδο που πραγματοποιεί τον έλεγχο. private bool IsSpaceIsAvailable(long spacereq) Ενδεικτικό 39: Η μέθοδος ελέγχου για τον ελεύθερο χώρο using (var store = IsolatedStorageFile.GetUserStoreForApplication()) long spaceavail = store.availablefreespace; if (spacereq > spaceavail) return false; return true; Ενδεικτικό 40: Το περιεχόμενο της μεθόδου Στην περίπτωση που το αρχείο ήδη υπάρχει στoν Isolated Storage, τότε θα σβηστεί. using (IsolatedStorageFile isfs = IsolatedStorageFile.GetUserStoreForApplication()) if (isfs.fileexists(filename)) isfs.deletefile(filename); Ενδεικτικό 41: Έλεγχος ύπαρξης του στοιχείου στην Isolated Storage Άρα, εάν ο έλεγχος επιστρέψει πως υπάρχει αρκετός αποθηκευτικός χώρος, τότε το αρχείο θα γραφτεί στoν Isolated Storage -43-

if (isspaceavailable) using (isfs = new IsolatedStorageFileStream(fileName, FileMode.CreateNew, IsolatedStorageFile.GetUserStoreForApplication())) long filelen = e1.result.length; byte[] b = new byte[filelen]; e1.result.read(b, 0, b.length); isfs.write(b, 0, b.length); isfs.flush(); Ενδεικτικό 42: Εγγραφή του αρχείου στην Isolated Storage, εφόσον υπάρχει χώρος Για τη δεύτερη περίπτωση, αυτήν της επιλογής δημιουργίας ήχου κλήσης, θα εκτελεστεί μέθοδος η οποία περιέχει το listbox. private void Create_Ringtone(object sender, System.Windows.Input.GestureEventArgs e) Ενδεικτικό 43: Η μέθοδος που εκτελείται για δημιουργία ringtone Το περιεχόμενο της μεθόδου είναι ακριβώς το ίδιο με αυτό του Ενδεικτικού 31 παραπάνω, επομένως και θα πραγματοποιηθεί ο ίδιος έλεγχος, όπως ακριβώς περιγράφεται στο Ενδεικτικό 32. Εφόσον το αρχείο υπάρχει, θα εκτελεστεί η RingSound() αλλά και ένα Ringtone.Choosers το οποίο έχει δημιουργηθεί σε μέθοδο. this.loaded += RingtonePage_Loaded; Ενδεικτικό 44: Δημιουργία της μεθόδου saveringtonechooser = new SaveRingtoneTask(); saveringtonechooser.completed += new EventHandler<TaskEventArgs>(saveRingtoneChooser_Completed); Ενδεικτικό 45: Το περιεχόμενο της μεθόδου που δημιουργήθηκε Την ίδια χρονική στιγμή, και εφόσον εκτελείται η RingSound(), ενεργοποιείται μέθοδος η οποία περιέχει κώδικα για να βρεθεί στο Isolated Storage το URI, το όνομα με το οποίο θα το δημιουργήσει αλλά και να το εμφανίσει. private void RingSound() Ενδεικτικό 46: Η μέθοδος που ενεργοποιείται -44-

saveringtonechooser.source = new Uri("isostore:/" + filename); saveringtonechooser.displayname = ring_properties[(int)isolatedstoragesettings.applicationsettings["iso_item"]].name; saveringtonechooser.show(); Ενδεικτικό 47:Το περιεχόμενο της μεθόδου Ο χρήστης πλέον, καλείται να αποφασίσει αν θέλει όντως να επιλέξει τον ήχο κλήσης ή να ακυρώσει τη διαδικασία. void saveringtonechooser_completed(object sender, TaskEventArgs e) switch (e.taskresult) case TaskResult.OK: MessageBox.Show("Ringtone " + ring_properties[(int)isolatedstoragesettings.applicationsettings["iso_item"]].name + " saved."); break; case TaskResult.Cancel: MessageBox.Show("Save cancelled."); break; case TaskResult.None: MessageBox.Show("Ringtone could not be saved."); break; Ενδεικτικό 48: Κώδικας ανάλογα με την επιλογή του χρήστη Τέλος, στην περίπτωση που το αρχείο δεν υπάρχει, θα πραγματοποιηθεί Web Client Κλήση για δημιουργία του αρχείου στον Isolated Storage, όπως επισημαίνεται παραπάνω. -45-

7.4 Ηχογράφηση - record Η εφαρμογή Music On δίνει στο κοινό τη δυνατότητα της ηχογράφησης και αναπαραγωγής του ηχογραφημένου μηνύματος των χρηστών. Εικόνα 22: Η οθόνη ηχογράφησης Η οθόνη διέπεται από ένα απλό κείμενο και ένα (1) λειτουργικό κουμπί, η χρήση του οποίου πλοηγεί τον χρήστη σε νέα οθόνη για την πραγματοποίηση της ηχογράφησης και την αναπαραγωγή του ηχογραφημένου μηνύματος. Εικόνα 23: Οθόνη πραγματοποίησης ηχογράφησης και αναπαραγωγής του στοιχείου -46-