Γηπισκαηηθή Δξγαζία ηνπ θνηηεηή ηνπ Τκήκαηνο Ηιεθηξνιφγσλ Μεραληθψλ θαη Τερλνινγίαο Υπνινγηζηψλ ηεο Πνιπηερληθήο Σρνιήο ηνπ Παλεπηζηεκίνπ Παηξψλ



Σχετικά έγγραφα
ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

Ενδεικτικά Θέματα Στατιστικής ΙΙ

Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) FritzBox Fon WLAN Annex B ( )

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

Οδηγίες τρήζης για λειηοσργία μεηαθοράς καναλιών ζε υηθιακό δέκηη OST-7060 HD

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

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

Case Study. Παξαθάηω παξνπζηάδνπκε βήκα - βήκα κε screenshots έλα παξάδεηγκα ππνβνιήο κηαο εξγαζίαο θαη ηελ παξαγωγή ηνπ Originality Report.

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

Α Ο Κ Η Α Μ Α Ζ Η Η Ρ Η ( S E A R C H )


Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

Κεθάλαιο 1. Ενόηηηα 2 Πλάνο Μάρκεηινγκ. Εξγαιεία Μάξθεηηλγθ. Dr. Andrea Grimm Dr. Astin Malschinger

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

Οργάνωση και Δομή Παρουσιάσεων

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά:

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

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

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

ΒΗΜΑ 2. Εηζάγεηε ηνλ Κωδηθό Πξόζβαζεο πνπ ιακβάλεηε κε SMS & δειώλεηε επηζπκεηό Όλνκα Πξόζβαζεο (Username) θαη ην ζαο

Δξγαιεία Καηαζθεπέο 1 Σάμε Σ Δ.Κ.Φ.Δ. ΥΑΝΙΧΝ ΠΡΧΣΟΒΑΘΜΙΑ ΔΚΠΑΙΓΔΤΗ. ΔΝΟΣΗΣΑ 11 ε : ΦΧ ΔΡΓΑΛΔΙΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Φαθόο κε ζσιήλα.

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP

1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

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

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ

ΕΓΧΕΙΡΙΔΙΟ ΕΚΔΟΗ 8.0.0

ΥΡΙΣΟΤΓΔΝΝΙΑΣΙΚΔ ΚΑΣΑΚΔΤΔ

Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη

ΦΥΣΙΚΗ ΤΩΝ ΡΕΥΣΤΩΝ. G. Mitsou

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗ ΦΥΣΙΚΗ. Ύλη: Εσθύγραμμη Κίνηζη

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

Constructors and Destructors in C++

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis

Διαδικαζία μεηαθοράς δεδομένων Εκκαθαριζηικής για ηο Eιδικό ζημείωμα περαίωζης Φ.Π.Α

Η αξρή ζύλδεζεο Client-Server

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

x-1 x (x-1) x 5x 2. Να απινπνηεζνύλ ηα θιάζκαηα, έηζη ώζηε λα κελ ππάξρνπλ ξηδηθά ζηνπο 22, 55, 15, 42, 93, 10 5, 12

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

ΔΡΓΑΙΑ 1. Γιαδικησακά πληροθοριακά σζηήμαηα. Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές. ηέθανος Κονηοβάς ΑΔΜ :283. Πάζτος Βαζίλειος ΑΔΜ :288

ΜΕΛΕΣΗ E.O.K. ΜΕ ΑΙΘΗΣΗΡΑ ΘΕΗ

Διαηιμήζεις για Αιολικά Πάρκα. Κώδικες 28, 78 και 84

ΔΦΑΡΜΟΜΔΝΑ ΜΑΘΗΜΑΣΙΚΑ ΣΗ ΧΗΜΔΙΑ Ι ΘΔΜΑΣΑ Α επηέκβξηνο Να ππνινγηζηνύλ νη κεξηθέο παξάγσγνη πξώηεο ηάμεο ηεο ζπλάξηεζεο f(x,y) =

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

ΜΑΘΗΜΑ / ΤΑΞΗ : ΗΛΕΚΤΡΟΛΟΓΙΑ/Γ ΛΥΚΕΙΟΥ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 08/09/2014

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

Δξγαζηεξηαθή άζθεζε 03. Σηεξενγξαθηθή πξνβνιή ζην δίθηπν Wulf

Σύνθεζη ηαλανηώζεων. Έζησ έλα ζώκα πνπ εθηειεί ηαπηόρξνλα δύν αξκνληθέο ηαιαληώζεηο ηεο ίδηαο ζπρλόηεηαο πνπ πεξηγξάθνληαη από ηηο παξαθάησ εμηζώζεηο:

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

A. Αιιάδνληαο ηε θνξά ηνπ ξεύκαηνο πνπ δηαξξέεη ηνλ αγωγό.

ΛΙΜΝΗ ΤΣΑΝΤ. Σρήκα 1. Σρήκα 2

Παιχνίδι γλωζζικής καηανόηζης με ζχήμαηα!

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΤΙΚΗ ΣΚΥΤΑΛΟΓΡΟΜΙΑ 2015 ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ Τεηάπηη 28 Ιανουαπίου 2015 ΛΔΥΚΩΣΙΑ Τάξη: Α Γυμναζίου

Κβαντικοί Υπολογισμοί. Πέκπηε Γηάιεμε

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access)

Φςζική Πποζαναηολιζμού Γ Λςκείος. Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο

Σημεία Ασύπματηρ Ππόσβασηρ (Hot-Spots)

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

Τηλζφωνο: Ε-mail: Ώρες διδασκαλίας: 16:00 19:15 μμ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Έκδοζη /10/2014. Νέα λειηοσργικόηηηα - Βεληιώζεις

Ηλεκηπονικά Απσεία και Διεπαθέρ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

ΗΜΔΡΟΜΗΝΙΑ. ΟΝΟΜΑΣΔΠΩΝΤΜΟ.. ΒΑΘΜΟΛΟΓΙΑ..

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

(γ) Να βξεζεί ε ρξνλνεμαξηώκελε πηζαλόηεηα κέηξεζεο ηεο ζεηηθήο ηδηνηηκήο ηνπ ηειεζηή W.

ΠΑΡΑΡΣΗΜΑ Δ. ΔΤΡΔΗ ΣΟΤ ΜΔΣΑΥΗΜΑΣΙΜΟΤ FOURIER ΓΙΑΦΟΡΩΝ ΗΜΑΣΩΝ

5 η Δργαζηηριακή Άζκηζη Κσκλώμαηα Γσαδικού Αθροιζηή/Αθαιρέηη

ΑΣΚΗΣΔΙΣ ΦΥΣΙΚΗΣ ΚΑΤΑΣΤΑΣΗΣ ΣΤΟ ΓΗΠΔΓΟ

ΟΣΑ Επηρεηξεζηαθή Ννεκνζύλε. Ελόηεηα: Ad1.2.2 «Ση θξύβεηαη» πίζω από κηα Επηρεηξεζηαθή Αλαθνξά (report): XML & XSD γηα αξράξηνπο

Γίθησα ποσ παρέτοληαη από τρήζηες: Κίλεηρα, ηετλοιογίες θαη αλοητηά δεηήκαηα Λεσηέρες Μακάηας

ΕΝΤΟΛΕΣ WINDOWS ΚΑΙ UNIX

Γιπθόδε + Ομπγόλν Δηνμείδην ηνπ άλζξαθα + Νεξό + Ελέξγεηα

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

Μορθές Κακόβοσλοσ Κώδικα (Malicious Code)

ΑΞΙΟΘΕΑΣΑ ΣΟΤ ΥΩΡΙΟΤ ΜΑ

6 η Εργαζηηριακή Άζκηζη Επαλήθεσζη Λειηοσργίας Βαζικών Φλιπ-Φλοπ

Οη πην γλσζηέο κνξθέο Pervasive παηρληδηώλ είλαη ηα Location Based Games, Augmented Reality Games θαη Mixed Reality Games.

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙΜΟ Α ΛΤΚΔΙΟΤ. Ημεπομηνία: 10/12/11 Ώπα εξέτασηρ: 09:30-12:30 ΠΡΟΣΔΙΝΟΜΔΝΔ ΛΤΔΙ

Σρήκα Α. Γξάθνπκε ηα ζηνηρεία ηνπ Πξνκεζεπηή θαη παηάκε Δηζαγσγή. Σρήκα Β1

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

Διατείριση Φσσικών Καταστρουών: ACTIVE LANDSLIDE INVENTORY MAPPING AND SUSCEPTIBILITY ZONING

Άσκηση 1 - Μοπυοποίηση Κειμένου

ΣΥΣΤΗΜΑΤΑ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 1. Να ιπζνύλ ηα ζπζηήκαηα. 1 0,3x 0,1y x 3 3x 4y 2 4x 2y ( x 1) 6( y 1) (i) (ii)

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ύζηεκα Ωξνκέηξεζεο Πξνζσπηθνύ (Έθδνζε 2) ΤΠΗΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΤΣΗΜΑΣΩΝ

Δπαστηπιότητα 1 - ανάπτςξη, μεταγλώττιση, αποσυαλμάτωση και. εκτέλεση ππογπάμματορ

ΣΡΑΠΕΖΑ ΘΕΜΑΣΩΝ Α ΛΤΚΕΙΟΤ

ACTA A.E. Αριςτο Σέλεια Πιςτοποίηςη. Ανθρώπινου Δυναμικοφ. «ΠΙΣΟΠΟΙΗΗ ΑΝΘΡΩΠΙΝΟΤ ΔΤΝΑΜΙΚΟΤ Εξελίξεισ - Προοπτικέσ»

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

1 η Εργαζηηριακή Άζκηζη Ειζαγωγή

ΔΠΙΣΡΟΠΗ ΓΙΑΓΩΝΙΜΩΝ 74 ος ΠΑΝΔΛΛΗΝΙΟ ΜΑΘΗΣΙΚΟ ΓΙΑΓΩΝΙΜΟ ΣΑ ΜΑΘΗΜΑΣΙΚΑ Ο ΘΑΛΗ 19 Οκηωβρίοσ Δνδεικηικές λύζεις

Transcript:

ΠΑΝΔΠΙΣΗΜΙΟ ΠΑΣΡΩΝ ΣΜΗΜΑ ΗΛΔΚΣΡΟΛΟΓΩΝ ΜΗΥΑΝΙΚΩΝ ΚΑΙ ΣΔΥΝΟΛΟΓΙΑ ΤΠΟΛΟΓΙΣΩΝ ΣΟΜΔΑ:ΣΗΛΔΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΣΔΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΑ ΔΡΓΑΣΗΡΙΟ:ΔΝΤΡΜΑΣΗ ΣΗΛΔΠΙΚΟΙΝΩΝΙΑ Γηπισκαηηθή Δξγαζία ηνπ θνηηεηή ηνπ Τκήκαηνο Ηιεθηξνιφγσλ Μεραληθψλ θαη Τερλνινγίαο Υπνινγηζηψλ ηεο Πνιπηερληθήο Σρνιήο ηνπ Παλεπηζηεκίνπ Παηξψλ Φξφλε Γεκήηξηνπ ηνπ Νηθνιάνπ Αξηζκφο Μεηξψνπ: 6664 Θέκα «ΔΚΣΙΜΙΗ ΚΑΡΓΙΑΚΟΤ ΡΤΘΜΟΤ ΜΔ ΔΠΔΞΔΡΓΑΙΑ ΗΜΑΣΩΝ VIDEO Δ ΛΔΙΣΟYΡΓΙΚΟ ΤΣΗΜΑ ANDROID» Δπηβιέπσλ Αλαπιεξσηήο Καζεγεηήο Γεξκαηάο Δπάγγεινο Αξηζκόο Γηπισκαηηθήο Δξγαζίαο:

Πάηξα, Ινχληνο 2013 ΠΙΣΟΠΟΙΗΗ Πηζηνπνηείηαη φηη ε Γηπισκαηηθή Δξγαζία κε ζέκα «ΔΚΣΙΜΙΗ ΚΑΡΓΙΑΚΟΤ ΡΤΘΜΟΤ ΜΔ ΔΠΔΞΔΡΓΑΙΑ ΗΜΑΣΩΝ VIDEO Δ ΛΔΙΣΟYΡΓΙΚΟ ΤΣΗΜΑ ANDROID» Τνπ θνηηεηή ηνπ Τκήκαηνο Ηιεθηξνιφγσλ Μεραληθψλ θαη Τερλνινγίαο Υπνινγηζηψλ Φξφλε Γεκήηξηνπ ηνπ Νηθνιάνπ Αξηζκφο Μεηξψνπ: 6664 Παξνπζηάζηεθε δεκφζηα θαη εμεηάζηεθε ζην Τκήκα Ηιεθηξνιφγσλ Μεραληθψλ θαη Τερλνινγίαο Υπνινγηζηψλ ζηηο.../../

Ο Δπηβιέπσλ Ο Γηεπζπληήο ηνπ Τνκέα Αξηζκόο Γηπισκαηηθήο Δξγαζίαο: Θέκα: «ΔΚΣΙΜΙΗ ΚΑΡΓΙΑΚΟΤ ΡΤΘΜΟΤ ΜΔ ΔΠΔΞΔΡΓΑΙΑ ΗΜΑΣΩΝ VIDEO Δ ΛΔΙΣΟYΡΓΙΚΟ ΤΣΗΜΑ ANDROID» Φνηηεηήο: Δπηβιέπσλ:

Πεξίιεςε Αληηθείκελν ηεο παξνχζαο δηπισκαηηθήο εξγαζίαο είλαη ε αλάπηπμε εθαξκνγήο γηα ιεηηνπξγηθφ ζχζηεκα Android, ηε κέηξεζε ηνπ θαξδηαθνχ ξπζκνχ. Αξρηθά κειεηάηαη ν θαξδηαθφο ξπζκφο ζαλ ιεηηνπξγία ηνπ ζψκαηνο καο, παζήζεηο πνπ νθείινληαη ε κπνξνχλ λα αληρλεπηνχλ απφ απηφλ.γίλεηαη αλαθνξά ζηηο θνξεηέο ειεθηξνληθέο ζπζθεπέο γηα ηε κέηξεζε θαη ηηο δηαθνξεηηθέο ηερλνινγίεο πνπ ρξεζηκνπνηνχλ πξνθεηκέλνπ λα ηελ πξαγκαηνπνηήζνπλ. Τειηθά, αλαιχεηαη ε ηερληθή ηεο θσηνπιεζπζκνγξαθίαο. Έπεηηα παξνπζηάδεηαη ην ιεηηνπξγηθφ ζχζηεκα Android, αλαιχεηαη ε αξρηηεθηνληθή ηνπ θαζψο θαη ε αξρηηεθηνληθή ησλ εθαξκνγψλ πνπ αλαπηχζζνληαη γηα απηφ ην ινγηζκηθφ. Παξνπζηάδεηαη ε πιαηθφξκα αλάπηπμεο Eclipse θαζψο θαη νη επηπξφζζεηεο δπλαηφηεηεο πνπ απνθηά κε ηελ πξνζζήθε ηνπ παθέηνπ Android SDK. Τέινο παξνπζηάδεηαη βαζηθφ παξάδεηγκα εθαξκνγήο ψζηε λα κπνξεί ν αλαγλψζηεο λα εμνηθεησζεί κε βαζηθέο δνκέο πνπ ρξεζηκνπνηήζεθαλ γηα ηελ αλάπηπμε ηεο παξνχζαο εθαξκνγήο. Παξνπζηάδεηαη επίζεο ε ινγηθή ηεο εθαξκνγήο πνπ αλαπηχρζεθε. Βαζηθέο αξρέο γηα ηελ ςεθηαθή επεμεξγαζία ζήκαηνο φπσο απηέο ρξεζηκνπνηήζεθαλ γηα ηελ επεμεξγαζία ηνπ ζήκαηνο ηνπ θαξδηαθνχ ξπζκνπ πνπ αλαιχεηαη απηφκαηα απφ ηελ εθαξκνγή θαη ηέινο ν κεραληζκφο εμαγσγήο ηνπ ηειηθνχ ζπκπεξάζκαηνο, δειαδή ν ηξφπνο κε ηνλ νπνίν ε εθαξκνγή πξαγκαηνπνηεί ηελ ηειηθή ηεο κέηξεζε.

Κεθάιαην 1 Δηζαγσγή Καξδηαθόο ξπζκόο [5] Καξδηαθφο ξπζκφο νξίδεηαη σο νη ρηχπνη ηεο θαξδηάο ζηε κνλάδα ηνπ ρξφλνπ θαη ζπλήζσο εθθξάδεηαη αλά ιεπηφ (bpm). Ο θαξδηαθφο ξπζκφο είλαη κεηαβιεηφο θαη απηφ κπνξεί λα νθείιεηαη ζηηο δηαθνξεηηθέο αλάγθεο ηνπ ζψκαηνο γηα ιεηηνπξγίεο θαη θαηαζηάζεηο φπσο πξφζιεςε νμπγφλνπ, άζθεζεο, χπλνπ, αξξψζηηαο θαζψο θαη απφ εμσηεξηθνχο παξάγνληεο φπσο πξφζιεςε θαξκάθσλ θαη θαηξηθέο ζπλζήθεο. Τα δηεγεξηηθά ηνπ θεληξηθνχ λεπξηθνχ ζπζηήκαηνο, φπσο ε ακθεηακίλε, επζχλνληαη γηα ηελ αχμεζε ηνπ θαξδηαθνχ ξπζκνχ. Αληίζεην απνηέιεζκα έρνπλ ηα θαηαζηαιηηθά. Υπάξρνπλ πνιινί ηξφπνη επηηάρπλζεο ε επηβξάδπλζεο ηνπ θαξδηαθνχ ξπζκνχ. Σηνπο πεξηζζφηεξνπο εκπιέθνληαη νη ελδνξθίλεο θαη νξκφλεο πνπ απειεπζεξψλνληαη ζηνλ εγθέθαιν. Γηδνκέλνπ φηη φγθνο ηνπ αίκαηνο καο δελ είλαη κεηαβιεηφο, ν ηξφπνο κε ηνλ νπνίν κπνξεί ην ζψκα καο λα νμπγνλψζεη πεξηζζφηεξν φξγαλα πνπ ην ρξεηάδνληαη, είλαη απμάλνληαο ηνλ θαξδηαθφ ξπζκφ. Σε θαηάζηαζε εξεκίαο, ν ξπζκφο απηφο θπκαίλεηαη απφ 60 έσο 100 bpm. Βξαδπθαξδία νξίδεηαη σο ξπζκφο θάησ ησλ 60bpm θαη ηαρπθαξδία άλσ ησλ 100bpm. Βέβαηα ζηαζεξφο ξπζκφο ζε θαηάζηαζε εξεκίαο θαη θπξίσο θαηά ηελ δηάξθεηα ηνπ χπλνπ ζηελ πεξηνρή ησλ 80 κε 100bpm, κπνξεί λα είλαη έλδεημε ππεξζπξενεηδηζκνχ ε αλαηκίαο. Σξόπνη κέηξεζεο ηνπ θαξδηαθνύ ξπζκνύ Αξρηθά αλαθέξνπκε ελδεηθηηθά ζεκεία απφ ηα φπνηα κπνξνχκε λα πάξνπκε κεηξήζεηο ηνπ θαξδηαθνχ ξπζκνχ. Μεξηθά απφ απηά είλαη ν θαξπφο ηνπ ρεξηνχ (Arteria radialis), ν ιαηκφο (θαξσηίδα αξηεξία), πάλσ απφ ηελ θνηιία (θνηιηαθή αξηεξία) θαη ζην ζηήζνο ζην ζεκείν ηεο θαξδηάο ε νπνία κπνξεί θαη λα αθξναζζεί.

Μέηπηζη με μόνιηοπ καππού. Αηζζεηήξαο πίεζεο, αλαγλσξίδεη ηελ κεηαβνιή πνπ πξνθαιεί ν ρηχπνο ηεο θαξδηάο ζηελ επηθάλεηά ηνπ θαη έπεηηα απφ έλα ρξνληθφ δηάζηεκα απφ ηελ αξρή ηεο κέηξεζεο καο επηζηξέθεη ηνλ θαξδηαθφ ξπζκφ Μέηπηζη με ηην αθή Σε έλα απφ ηα πξναλαθεξζέληα ζεκεία ηνπ ζψκαηνο, αθνπκπάκε ηα δάρηπιά καο κέρξη λα αηζζαλζνχκε ηνλ παικφ θαη κεηξνχκε πφζνπο ρηχπνπο ζα λνηψζνπκε ζηελ δηάξθεηα ελφο ιεπηνχ. Απηή ε ηερληθή δελ πξέπεη λα εθαξκφδεηαη κε ηνλ αληίρεηξα κηαο θαη ν δπλαηφο παικφο ηνπ κπνξεί λα καο πξνθαιέζεη ζχγρπζε ζε ζρέζε κε ηνλ παικφ ηνπ εμεηαδφκελνπ πξνζψπνπ. Ηλεκηποκαπδιογπάθημα Μηα πην αθξηβήο κέζνδεο κέηξεζεο ηνπ θαξδηαθνχ ξπζκνχ, είλαη ην ειεθηξνθαξδηνγξάθεκα. Πηα είλαη κηα κέζνδνο ηελ νπνία ρξεζηκνπνηνχλ θιηληθέο γηα εμεηάζεηο ξνπηίλαο. Η κέηξεζε επηηπγράλεηαη απφ ην κεράλεκα κεηξψληαο ην R-R κεζνδηάζηεκα. Άλλοι ηπόποι Ομχκεηξα, ειεθηξφδηα θνιιεκέλα ζην ζηήζνο, ζεηζκνθαξδηνγξαθία. Τέινο, έρνπκε θαη ηελ ηερληθή ηεο θσηνπιεζπζκνγξαθίαο ζηελ νπνία θαη επηθεληξψλεηαη απηή ε εξγαζία θαη ζα ηελ αλαιχζνπκε εθηελέζηεξα παξαθάησ.

Φσηνπιεζπζκνγξαθία[6][10][11] Η θσηνπιεζπζκνγξαθία (ppg), εκθαλίζηεθε ην 1930, είλαη κηα ηερληθή κε επεκβαηηθή κέζσ ηεο νπνίαο ζε επηιεγκέλα ζεκεία ηνπ ζψκαηνο εληνπίδνληαη αιιαγέο ζηελ ξνε ηνπ αίκαηνο θαηά ηνλ θαξδηαθφ θχθιν (Hertzman 1938, Mendelson 1992). Οη θιηληθέο εθαξκνγέο ηεο ppg απαληψληαη ζηελ παξαηήξεζε πίεζεο, θαξδηαθνχ παικνχ θαη νμείδσζεο αίκαηνο, κέρξη θαη εληνπηζκφ πεξηθεξεηαθψλ θιεβηθψλ παζήζεσλ. Η ηερληθή απηή ιεηηνπξγεί σο εμήο. Φσηίδνπκε ην δέξκα κε δηαπεξαζηηθή θσηεηλή αθηηλνβνιία ε νπνία ζπλήζσο παξάγεηαη απφ LED θαη αληρλεχεηαη ην κεηαδηδφκελν ζήκα απφ έλα θσηναληρλεπηή ηνπνζεηεκέλν αθξηβψο απέλαληη απφ ηελ πεγή θσηφο ε εηδηθφηεξα ζηελ πεξίπησζε ηεο αλαθιαζηηθήο ppg αθξηβψο δίπια ζηελ πεγή (Harness and Marjanovic 1989, Stojanovic and Karadaglic 2007). Ο λφκνο Beer-Lambert ν νπνίνο ζπζρεηίδεη ηελ απνξξφθεζε θσηφο κε ηηο ηδηφηεηεο ελφο πιηθνχ, καο αξθεί γηα λα εμεγήζνπκε ηελ κνξθή ηεο ppg θπκαηνκνξθήο (Shelley 2007) ζε ζρέζε κε έλα ειεθηξνθαξδηνγξάθεκα.

Με αιια ινγηα, ε θσηνπιεζπζκνγξαθηα είλαη βαζηζκέλε ζηνλ πξνζδηνξηζκφ ησλ νπηηθψλ ηδηνηήησλ κηαο επηιεγκέλεο πεξηνρήο ηνπ δέξκαηνο. Γηα απηφλ ην ιφγν, έλα κε νξαηφ ππέξπζξν θσο εθπέκπεηαη ζην δέξκα. Τν θσο απνξξνθάηαη ιηγφηεξν ή πεξηζζφηεξν, αλάινγα κε ηνλ φγθν ηνπ αίκαηνο ζην δέξκα. Σπλεπψο, ην δηαρεφκελν θσο ερεη κηα αλαινγηα κε ηελ πνζνηεηα ηνπ αίκαηνο ζηελ πεξηνρε ηνπ ζσκαηνο ηελ νπνηα εμεηαδνπκε. Οη κεηαβνιέο ηνπ φγθνπ ηνπ αίκαηνο κπνξνχλ λα θαζνξηζηνχλ κε ηε

κέηξεζε ηνπ αληαλαθιαζζέληνο θσηφο θαη ηελ ρξεζηκνπνίεζε ησλ νπηηθψλ ηδηνηήησλ ηνπ ηζηνχ θαη ηνπ αίκαηνο. Μπνξείηε λα δείηε απηήλ ηελ επίδξαζε παξαζηαηηθά: ην δέξκα κε ην ιηγφηεξν αίκα θαίλεηαη άζπξν, ελψ ην δέξκα κε πεξηζζφηεξν αίκα θαίλεηαη ζθνηεηλφηεξν. Η θσηνπιεζπζκνγξαθηα θάλεη ζρεδφλ ην ίδην πξάγκα, αιιά κε πνιχ πςειφηεξε επαηζζεζία θαη αλάιπζε. Venous test Τν θιεβηθφ αληαλαθιαζηηθφ ηεζη (επίζεο απνθαινχκελν tip-toe-test ή muscle pump test), είλαη κηα δνθηκαζία άζθεζεο γηα ηνλ εληνπηζκφ ηεο αλεπάξθεηαο ησλ θιεβηθψλ βαιβίδσλ ζηα θάησ άθξα. Η θιεβηθή αλεπάξθεηα είλαη κηα πνιχ θνηλή θιεβηθή πάζεζε θαη κπνξεί επίζεο λα είλαη απνηέιεζκα ζξνκβψζεσλ (κεηαζξνκβσηηθφ ζχλδξνκν). Γηα λα εθηειεζηεί ε δνθηκαζία, ν αζζελήο πξέπεη λα είλαη ζε θαζηζηή ζέζε, ζε κία θαξέθια πνπ λα αληηζηνηρεί ζην χςνο ηνπ. Τα πφδηα πξέπεη λα επεθηαζνχλ ειαθξψο κπξνζηά (ζε γσλία 110 ). Καηά ηε δηάξθεηα ηνπ ηεζη, ν αζζελήο εθηειεί ηηο θηλήζεηο ησλ άθξσλ ησλ πνδψλ κεηά απφ κηα κεηξνλνκηθή ππαγφξεπζε, γηα λα αληιήζεη ην αίκα απφ ηηο θιέβεο. Γηα λα ην θάλεη απηφ, πξέπεη λα ιπγίζεη ην πφδη ηνπ πάλσ-θάησ 10 θνξέο. Καηά ηε δηάξθεηα απηήο ηεο άζθεζεο, ην αίκα απφ ηηο θιέβεο αληιείηαη πξνο ηελ θαξδηά ιφγσ ησλ ζπζηνιψλ ησλ κπψλ.

Μεηά ην πέξαο ηνπ ηεζη, ν αζζελήο πξέπεη λα πεξακείλεη αθίλεηνο, έσο φηνπ νινθιεξσζεί ε θαηαγξαθή ηεο θακπχιεο (ζεκαηνδνηνχκελε απφ έλαλ δηπιφ-ηφλν απφ ηελ ζπζθεπή). Καηά ηε δηάξθεηα απηήο ηεο πεξηφδνπ κεηξηέηαη ε επαλαπιήξσζε ηνπ αίκαηνο. Αλ νη θιεβηθέο βαιβίδεο δνπιεχνπλ θαιά θαη θιείλνπλ ζσζηά, ηφηε θαζφινπ αίκα δελ κπνξεί λα ξεχζεη πίζσ, θαη ε επαλαπιήξσζε πξαγκαηνπνηείηαη κφλν κέζσ ηεο αξηεξηαθήο εηζξνήο. Απηή ε επαλαπιήξσζε απαηηεί πην παξαηεηακέλν ρξφλν (πεξίπνπ 30 έσο 120 δεπηεξφιεπηα). Αλ ππάξρεη θιεβηθή αλεπάξθεηα, ην αίκα κπνξεί λα ξεχζεη πξνο ηα πίζσ θαη ε επαλαπιήξσζε πξαγκαηνπνηείηαη πνιχ γξεγνξφηεξα (γξεγνξφηεξα απφ 25 δεπηεξφιεπηα). Μία ζπληνκφηεξε επαλαπιήξσζε δείρλεη γεληθά έλαλ πςειφηεξν βαζκφ αλεπάξθεηαο.

Απηή ε θσηνπιεζπζκνγξαθηθή δνθηκαζία είλαη ηδηαίηεξα θαηάιιειε γηα κηα πξψηε εθηίκεζε ηεο θιεβηθήο ιεηηνπξγίαο. Τν ηεζη είλαη ηφζν εχθνιν, πνπ κπνξεί λα ρξεζηκνπνηεζεί αθφκε θαη ζηα θαξκαθεία γηα ηελ θιεβηθή δηαινγή (ζπγθξίζηκν κε ηελ κέηξεζε ηεο πίεζεο ηνπ αίκαηνο). Οη πην ιεπηνκεξείο εμεηάζεηο κπνξνχλ λα γίλνπλ απφ ηνπο εηδηθεπκέλνπο γηαηξνχο, ρξεζηκνπνηψληαο ηελ phlebodynamometry θαη ην αγγεηαθφ Doppler. Απηηπιακή θωηοπληθςζμογπαθια (Photopulse) Η θσηνπιεζπζκνγξαθηα κπνξεί λα δηαρσξίζεη ην αξηεξηαθφ θχκα ζθπγκνχ απφ ηηο κεηαβνιέο ηνπ φγθνπ ηνπ αίκαηνο. Υπάξρνπλ δχν δηαθνξεηηθνί ηχπνη ηεο PPG δνθηκαζίαο πνπ κπνξνχλ λα ρξεζηκνπνηεζνχλ γηα ηηο αξηεξηαθέο κεηξήζεηο: Έλεγχοι μεηάδοζης Σε απηνχο ηνπο ειέγρνπο, νη θσηναληρλεπηέο βξίζθνληαη ζηελ αληίζεηε πιεπξά ησλ θσην-εθπεκπφκελσλ κεξψλ. Ο ηζηφο βξίζθεηαη κεηαμχ ηνπο. Απηφ πεξηνξίδεη ηνλ ηνκέα ηεο εθαξκνγήο ζηηο ζέζεηο, φπνπ ην θσο κπνξεί λα δηαπεξάζεη φιν ηνλ ηζηφ (δάρηπια, απηηά). Σε αληίζεζε κε ηνλ έιεγρν αληαλάθιαζεο, νη θχξηεο πεγέο παικνχ πεξηέρνπλ επίζεο ηα κεγάια αγγεία θαζηζηψληαο απηνχο ηνπο αηζζεηήξεο ηδηαίηεξα ρξήζηκνπο γηα ηηο πεξηθεξηθέο κεηξήζεηο ηεο πίεζεο ηνπ αίκαηνο.

Η αξηεξηαθή photoplethysmography κεηξά θαη αμηνινγεί ην κέγεζνο θαη ηε κνξθή ησλ θπκάησλ ζθπγκνχ, παξφκνηα κε ηελ impedance plethysmography (ξενγξαθία). Η εχθνιε εθαξκνγή ζηα δάρηπια θαζηζηά απηήλ ηελ κέζνδν ηδηαίηεξα ρξήζηκε γηα: Τελ δηάγλσζε αξηεξηαθψλ παζήζεσλ ζηα δάρηπια. Απηφ είλαη δπλαηφ κε ηελ απιή παξαηήξεζε ηεο κνξθήο ησλ θακππιψλ. Τελ δηάγλσζε ησλ ιεηηνπξγηθψλ δηαηαξαρψλ ηεο ξνήο ηνπ αίκαηνο (ζχλδξνκν Raynould, λεθξφ δάρηπιν, ζχλδξνκν δφλεζεο) Γηα ηε δηάγλσζε ησλ ιεηηνπξγηθψλ δηαηαξαρψλ, παξαδείγκαηνο ράξηλ, ηα δάρηπια εθηίζεληαη ζην θξχν γηα κεξηθά ιεπηά θαη θαηφπηλ κεηξηέηαη ν ρξφλνο έσο φηνπ ην εχξνο ηνπ ζθπγκνχ γίλεη πάιη θαλνληθφ. Τελ δηάγλσζε ηνπ thoracic outlet syndrome Σηελ πεξίπησζε ηνπ thoracic outlet syndrome, ε ππνθιείδηνο αξηεξία θξάζζεηαη απφ κεξηθέο επεθηάζεηο ηνπ ψκνπ, ησλ βξαρηφλσλ ή ηνπ θεθαιηνχ. Με ηνλ έιεγρν ηνπ θχκαηνο ζθπγκνχ ζε έλα δάθηπιν, νη ζέζεηο φπνπ ε ππνθιείδηνο αξηεξία απνθξάζζεηαη κπνξνχλ λα βξεζνχλ. Τελ κέηξεζε ηεο πεξηθεξηθήο πίεζεο ηνπ αίκαηνο αθφκε θαη ζηα δάθηπια. Δηδηθά κε ηνπο ειέγρνπο κεηάδνζεο, είλαη πνιχ εχθνιν λα κεηξεζεί ε πεξηθεξηθή ζπζηνιηθή πίεζε ηνπ αίκαηνο. Οη PPG-εμεηάζεηο ρξεζηκνπνηνχληαη σο αηζζεηήξεο ηεο ξνήο ηνπ αίκαηνο (αληί ησλ δηαδεδνκέλσλ, αιιά δπζθνιφηεξα εθαξκφζηκσλ Doppler εμεηάζεσλ). Η πεξηρεηξίδα πίεζεο θνπζθψλεηαη πάλσ απφ ηελ ζπζηνιηθή πίεζε θαη κεηά μεθνπζθψλεηαη ζηγά. Η ζπζηνιηθή πίεζε ηνπ αίκαηνο, είλαη ε πίεζε ζηελ πεξηρεηξίδα, φηαλ ε PPG-εμέηαζε απιψο θαηαγξάθεη μαλά έλαλ ζθπγκηθφ θχκα. Με ηηο κηθξέο πεξηρεηξίδεο, αθφκε θαη κηα κέηξεζε ηεο πίεζεο ηνπ αίκαηνο ζηα δάθηπια είλαη δπλαηή (δείηε ηελ εηθφλα). Έλεγχοι ανηανάκλαζης Απηφο ν ηχπνο ειέγρνπ κπνξεί επίζεο λα ρξεζηκνπνηεζεί γηα ηε θιεβηθή δνθηκαζία. Σε απηή ηελ πεξηπησζε, ε εθπνκπή ηνπ θσηφο θαη ηα αηζζεηήξηα κέξε βξίζθνληαη δίπια-δίπια ζε έλα ηκήκα. Οη θσηναηζζεηήξεο αληρλεχνπλ ην θσο, ην νπνίν

δηαζθνξπίδεηαη απφ ηνλ ηζηφ ηνπ δέξκαηνο. Λφγσ ηεο αλαηνκίαο ηνπ ζψκαηνο, νη PPG αηζζεηήξεο κπνξνχλ λα αληρλεχζνπλ ηα θχκαηα ζθπγκνχ κφλν ζηηο πεξηνρέο πνπ πεξηέρνπλ πνιιέο αξηεξηνθιεβψδεηο αλαζηνκψζεηο, φπσο ηα δάρηπια ησλ ρεξηψλ θαη ησλ πνδηψλ, ηα απηηά, ή κεξηθέο πεξηνρέο ηνπ πξνζψπνπ. Απηέο είλαη δηαθνξεηηθέο ζέζεηο απφ εθείλεο πνπ ρξεζηκνπνηνχληαη γηα ην θιεβηθφ ηεζη κε ηνλ ίδην αηζζεηήξα πνπ πεξηγξάθεηαη αλσηέξσ. Η αλαθιαζηηθή κέζνδνο είλαη πην απνηειεζκαηηθή απφ ηελ δηαπεξαζηηθή ιφγν ηεο ξερήο εηζρψξεζεο ηεο νπηηθήο αθηηλνβνιίαο ρσξίο λα έρνπκε αιινίσζε ηνπ ηειηθνχ απνηειέζκαηνο. Smartphones θαη θσηνπιεζπζκνγξαθηα H θάκεξα ησλ smartphones επηηξέπεη ηελ κέηξεζε θαξδηαθνχ παικνχ κέζσ ppg. Ο θαξδηαθφο παικφο είλαη ζχλεζεο λα ιακβάλεηαη κέζσ ειεθηξνθαξδηνγξαθήκαηνο. Αζχξκαηα κφληηνξ απνζηέιινπλ ζηνλ ππνινγηζηή δεδνκέλα ζε πξαγκαηηθφ ρξφλν ζε θαηάζηαζε εξεκίαο, θαηά ηελ δηάξθεηα ή κεηά απφ θπζηθή θαηαπφλεζε. Απηά ηα κφληηνξ φκσο απαηηνχλ ηηο πεξηζζφηεξεο θνξέο ρξήζε ειεθηξνδίσλ ηνπνζεηεκέλσλ γχξσ απφ ηε ζσξαθηθή πεξηνρή. Λχζε απηνχ ηνπ πξνβιήκαηνο ζα κπνξνχζαλ λα απνηειέζνπλ ηα νμχκεηξα πνπ ηνπνζεηνχληαη ζην δάρηπιν θαη ζπιιέγνπλ δεδνκέλα κέζσ ppg αιιά είλαη θάπσο κε πξαθηηθά γηα ζπρλή θαζεκεξηλή ρξήζε. Πηα, ηα πεξηζζφηεξα smartphones πεξηιακβάλνπλ θάκεξεο, κε δπλαηφηεηα ιήςεο ppg. Σην παξειζφλ έγηλαλ επηδείμεηο φπνπ κε κεηέπεηηα επεμεξγαζία mpeg4 αξρείσλ πνπ είραλ ιεθζεί απφ θάκεξα θηλεηνχ ηειεθψλνπ, κπνξνχζακε λα εληνπίζνπκε κεηαβνιέο ηνπ ppg πξηλ θαη κεηά απφ άζθεζε. Τψξα πηα γίλεηαη έξεπλα γηα ην εάλ κπνξνχκε λα έρνπκε real-time ιήςε ηνπ θαξδηαθνχ παικνχ κε ρξήζε θηλεηνχ ζε ζπλδπαζκφ κε πξφγξακκα πνπ έρνπκε αλαπηχμεη ζε πεξηβάιινλ android. Σχκθσλα κε ηελ ηδέα ηεο θσηνπιεζπζκνγξαθίαο, δηάθνξα επίπεδα βάζνπο ηνπ δέξκαηνο θσηίδνληαη απφ ην θιαο ην νπνίν είλαη ελζσκαησκέλν ζην ηειεθψλνπ θαη νη εηθφλεο ζπιιέγνληαη απφ ηελ θάκεξα. Τν θσο δηαπεξλά ηνλ παιιφκελν ηξηρνεηδή ηζηφ θάησ απφ ηελ επηθάλεηα ηνπ δαρηχινπ θαη ε θάκεξα βιέπεη θαη κεηξά ηηο ελαιιαγέο θφθθηλνπ ρξψκαηνο νη νπνίεο νθείινληαη ζηνλ ρηχπν ηεο θαξδίαο καο. Αλαιπηηθφηεξα, ην δέξκα καο απνηειεί θίιηξν γηα ηελ θσηεηλή αθηηλνβνιία. Δπηηξέπεη ζηηο ζπρλφηεηεο ηνπ εξπζξνχ θαη ππέξπζξνπ λα ην δηαπεξάζνπλ ελψ απνθφπηεη φιεο ηηο άιιεο. Τν αίκα αληίζεηα δελ επηηξέπεη ζε θαλέλα ρξψκα λα πεξάζεη. Σαλ απνηέιεζκα ινηπφλ, έρνπκε ηελ αιιαγή ηνπ ηφλνπ (πην ζθνχξνπ) ηνπ θφθθηλνπ πνπ βιέπνπκε, φηαλ ε θαξδηά ζηείιεη αίκα πξνο ην δάρηπιφ καο. Καηά ηελ ζπζηνιή ηεο θαξδηάο ζα ζπκβεί ην αληίζεην. Απηφλ αθξηβψο ηνλ ξπζκφ ελαιιαγήο ηφλνπ θαη θσηεηλφηεηαο είλαη ζθνπφο καο λα κεηξήζνπκε Πξψηα έγηλε ζίγνπξν φηη ε θάκεξα ζα κπνξνχζε λα αληρλεχζεη ηα θαηάιιεια κήθε θχκαηνο θσηφο ηα νπνία απαηηνχληαη λα ζηαινχλ πξνο επεμεξγαζία. Σηε ζπλέρεηα ειέγρηεθε ε δπλαηφηεηα ηνπ ηειεθψλνπ λα επεμεξγαζηεί θαξέ-θαξέ ην ζήκα βίληεν ζε

ζχληνκν ρξνληθφ δηάζηεκα. Έγηλε ρξήζε ηεο nv21 YUV δηακφξθσζεο πξνθεηκέλνπ λα επηηξαπεί απνηειεζκαηηθή επεμεξγαζία ζε αιιαγέο ηφζν ρξσκαηηθήο φζν θαη θσηεηλήο έληαζεο. Έπεηηα απφ δνθηκέο επηιέρηεθε frame rate 20fps,176 x 144 dpi θαη focus mode infinity. Τν ηειεπηαίν βήκα ήηαλ λα πινπνηεζεί θψδηθαο πξνθεηκέλνπ λα εληνπηζηνχλ αιιαγέο ζηε ξνε ηνπ αίκαηνο, ειέγρνληαο κηα ζεηξά απφ θαξέ θαη ζπγθξίλνληαο ηα απνηειέζκαηα κε νμχκεηξν. ppg απεικόνιζη Αληηθαζηζηψληαο ηνλ θσηναληρλεπηή κε κηα θάκεξα, ε ηερληθή παχεη λα είλαη πεξηνξηζκέλε ζε single-point κεηξήζεηο θαη έηζη έρνπκε ζαλ απνηέιεζκα ηελ ppg απεηθφληζε. Η ppg απεηθφληζε απνηειεί έλαλ εμειηζζφκελν ηνκέα ν νπνίνο πξνζθέξεη ην πιενλέθηεκα ηεο βειηησκέλεο επαηζζεζίαο θαη ιήςε κεηξήζεσλ πξαγκαηηθνχ ρξφλνπ ζε κεγαιχηεξεο επηθάλεηεο. Δπίζεο βνεζά ζηελ εμέιημε θάπνησλ εθαξκνγψλ ραξηνγξάθεζεο (Zheng and Hu 2007,Verkruysse et al 2008). Πειπαμαηική διαδικαζία Έγηλε ρξήζε θηλεηνχ ηειέθσλνπ nokia E63. Η δηάηαμε απνηειείηαη απφ wled γηα θσηηζκφ θαη 2.0 megapixel θάκεξα. Έγηλε ιήςε βίληεν ζηα 15fps κε αλάιπζε 320x420 pixels. Έγηλε εγγξαθή έγρξσκνπ βίληεν ζε mpeg-4 format ζε θαηάζηαζε εξεκίαο, ειαθξάο άζθεζεο θαη άπλνηαο ηνπ εζεινληή. Τα αξρεία βίληεν κεηαθέξζεθαλ κέζσ Bluetooth ζε ειεθηξνληθφ ππνινγηζηή γηα πεξεηαίξσ αλάιπζε θαη κεηαηξάπεθαλ ζε ζεηξά jpeg frames. Μέζσ πξνγξάκκαηνο αλεπηπγκέλν ζε matlab, έγηλε ε εμαγσγή ηεο ppg θπκαηνκνξθήο. Δπηιέρηεθε θεληξηθή πεξηνρή (region of interest-roi) 10x 10 pixels γηα αλάιπζε. Τν ζήκα ppg πξφεθπςε σο εμήο PPG = MV(f, t) MINUS MV(dc) φπνπ MV(dc) ε κέζε έληαζε ηνπ ζσξνχ ROI θαη MV(f, t) ε κεκνλσκέλε κέζε έληαζε θάζε frame (f : frame No., t: frame time stamp). Σηελ θπκκαηνκνξθή πνπ πξφεθπςε έγηλε fast Fourier transformation θαη απφ ην κέγηζην ιάβακε ηνλ θαξδηαθφ παικφ ζε Hz.

Τα απνηειέζκαηα ηεο έξεπλαο ήηαλ φηη ην αλεπηπγκέλν πξφγξακκα ζε android καδί κε ηελ θάκεξα κπνξνχζε λα δψζεη έγθπξεο κεηξήζεηο θαξδηαθνχ παικνχ. Η εθαξκνγή απηή είλαη δπλαηφ λα επηζηξέθεη έγθπξεο κεηξήζεηο αθφκα θαη φηαλ είκαζηε ππφ ειαθξά ζσκαηηθή άζθεζε, αξθεί βέβαηα λα κελ ραζεί ε επαθή ηνπ δαρηχινπ κε ηελ θάκεξα. Η εθαξκνγή έρεη κεγάιε πξννπηηθή γηα ρξήζε ζε mobile-health πξνγξάκκαηα. Δπίζεο επηηξέπεη ηελ κέηξεζε θαη απνζήθεπζε ησλ κεηξήζεσλ ηνπ θαξδηαθνχ παικνχ ρσξίο ηε ρξήζε θαισδίσλ θαη ειεθηξνδίσλ ιχλνληαο ην πξφβιεκα πνπ πξναλαθέξζεθε.

Δηζαγσγή ζην Android Κεθάιαην 2 Σηα πιαίζηα απηήο ηεο πηπρηαθήο εξγαζίαο, κειεηήζεθαλ δηάθνξεο ηερλνινγίεο νη νπνίεο ζα κπνξνχζαλ λα ρξεζηκνπνηεζνχλ ζηνλ ζρεδηαζκφ θαη ηελ πινπνίεζε ελφο παηρληδηνχ γηα θηλεηέο ζπζθεπέο. Θα δνχκε ηα βαζηθά ραξαθηεξηζηηθά ηνπ Android, κηαο ζηνίβαο ινγηζκηθνχ γηα θηλεηέο ζπζθεπέο. Android[7][8] Έλαο απφ ηνπο πξσηαξρηθνχο ζθνπνχο ζε απηήλ ηελ εξγαζία, ήηαλ ε επηινγή κηαο πιαηθφξκαο, ε νπνία ζα κπνξνχζε λα ππνζηεξίμεη ηνλ ζρεδηαζκφ θαη ηελ πινπνίεζε ελφο game. Ταπηφρξνλα αλαδεηνχζακε θάηη ην θαηλνχξγην ζηνλ ρψξν πνπ ζα άμηδε ηελ κειέηε ηνπ θαη παξάιιεια ζα ήηαλ πνιιά ππνζρφκελν. Μέζα ζε ιίγα ιεπηά θαηαιήμακε ζε δχν ππνςήθηεο πιαηθφξκεο, ην iphone θαη ην Android. Οη δχν απηέο πιαηθφξκεο θαίλεηαη φηη ζα πξσηαγσληζηήζνπλ ζηνλ ρψξν ησλ έμππλσλ ηειεθψλσλ (smart phones), αθνχ δηαζέηνπλ εμαηξεηηθά ραξαθηεξηζηηθά θαη απίζηεπηεο δπλαηφηεηεο. Σηηο αξρέο Οθησβξίνπ 2009, ην iphone θαηείρε ηα ζθήπηξα ζηηο πσιήζεηο. Παξφια απηά κε ηελ ξαγδαία αλάπηπμε πνπ είρε πάξεη ην Android, νη εξεπλεηέο κηινχζαλ φηη ηα δεδνκέλα ζα έρνπλ αλαηξαπεί κέρξη ην 2012 ην γξεγνξφηεξν. Πξνο έθπιεμε αξθεηψλ, ηελ ψξα πνπ γξάθεηαη απηή ε εξγαζία (Μάηνο 2011), ην Android έρεη ήδε μεπεξάζεη πξνπνιινχ ζε πσιήζεηο ην iphone θαη ζπλερίδεη λα επεθηείλεηαη. Ωζηφζν είλαη κηα κάρε ε νπνία αλακέλεηε λα ζπλερηζηεί, κε ηηο δχν πιαηθφξκεο λα εθζπγρξνλίδνπλ αλά ηαθηά ρξνληθά δηαζηήκαηα ηα ραξαθηεξηζηηθά ηνπο. Φαξαθηεξηζηηθή ε έξεπλα πνπ αλαθνίλσζε ε Millennial Media. Τα απνηειέζκαηα είλαη ιίγν πνιχ αλακελφκελα, δειαδή ην Android OS θπξηαξρεί κε παξνπζία ζην 53% ησλ smartphones παγθνζκίσο, κε ην ios λα αθνινπζεί κε 28% θαη ην BlackBerry OS κε 16%. Δπίζεο ν Hugo Barra, Product Management Director ηνπ Android αλαθνίλσζε ζην πξφζθαην Google I/O πνπ έγηλε, 10 Μαΐνπ 2011, ζην San Francisco νξηζκέλα εληππσζηαθά ζηαηηζηηθά γηα ηελ πιαηθφξκα. Η Google δελ έραζε ηελ επθαηξία λα ξίμεη ηα θαξθηά ηεο ζε νπνηνδήπνηε ακθηζβεηεί ηελ θπξηαξρία ηνπ Android OS θαη

αλαθνίλσζε ηα ηιηγγηψδε ζηαηηζηηθά ζηνηρεία πνπ ζπλνδεχνπλ ην ππέξ-επηηπρεκέλν ιεηηνπξγηθφ ζχζηεκα. Κξαηεζείηε: 100 εθαη. ελεξγνπνηήζεηο απφ ηελ πξψηε εκέξα θπθινθνξίαο ηνπ Android OS 400.000 λέεο ελεξγνπνηήζεηο θάζε εκέξα 4.5 δηζεθαηνκκχξηα downloads εθαξκνγψλ 200.000 εθαξκνγέο ζην Android Market 36 θαηαζθεπαζηέο ζπζθεπψλ 215 πάξνρνη ζε 112 ρψξεο Απφ ηελ πξψηε ζηηγκή εκπηζηεπηήθακε ηηο δπλαηφηεηεο θαη ηηο πξννπηηθέο ηνπ Android θαη ην πξνηηκήζακε σο ηελ πιαηθφξκα αλάπηπμεο ηνπ παηρληδηνχ, έλαληη ηνπ ios. Γελ ζαο θξχβσ φκσο φηη κεγάιν ξφιν ζηελ απφθαζε απηή, έπαημε ην γεγνλφο φηη ην Android είλαη έλα πξφγξακκα αλνηθηνχ θψδηθα, θάηη ην νπνίν ζα καο πξφζθεξε ηελ δπλαηφηεηα εχθνιεο πξφζβαζεο ζε πεγαίν θψδηθα θαη εθαξκνγέο απηήο ηεο πιαηθφξκαο. Σε απηή ηελ εξγαζία ζα αξθεζηνχκε ζην λα δψζνπκε βαζηθά ραξαθηεξηζηηθά ηνπ Android, σο ηελ επηιερζείζα πιαηθφξκα θαη ζα απνθιείζνπκε απφ ηελ αλάιπζε καο ην iphone. Ση είλαη ην Android; Τν Android είλαη κηα ζηνίβα ινγηζκηθνχ γηα θηλεηέο ζπζθεπέο ε νπνία πεξηιακβάλεη ιεηηνπξγηθφ ζχζηεκα, ελδηάκεζν ινγηζκηθφ (middleware) θαη βαζηθέο εθαξκνγέο. Τν Android ηξέρεη ηνλ ππξήλα ηνπ ιεηηνπξγηθνχ Linux θαη κέζσ ηεο δηθηά ηνπ εξγαιεηνζήθεο αλάπηπμεο ζπζηήκαηνο ινγηζκηθνχ (Software Development Kit), επηηξέπεη ζηνπο θαηαζθεπαζηέο λα δεκηνπξγνχλ πξσηνπνξηαθέο εθαξκνγέο. Αξρηθά αλαπηχρζεθε απφ ηελ Google θαη αξγφηεξα ζπλερίζηεθε ζε ζπλεξγαζία κε ηελ Open Handset Alliance (OHA). Η πξψηε παξνπζίαζε ηεο πιαηθφξκαο Android έγηλε ζηηο 5 Ννεκβξίνπ 2007, παξάιιεια κε ηελ αλαθνίλσζε ηεο ίδξπζεο ηνπ νξγαληζκνχ OHA, κηαο θνηλνπξαμίαο 48 ηειεπηθνηλσληαθψλ εηαηξηψλ, εηαηξηψλ ινγηζκηθνχ θαζψο θαη θαηαζθεπήο πιηθνχ, νη νπνίεο είλαη αθηεξσκέλεο ζηελ αλάπηπμε θαη εμέιημε αλνηρηψλ πξνηχπσλ ζηηο ζπζθεπέο αλνηρηήο ηειεθσλίαο. Δλδεηθηηθά αλαθέξνπκε κεξηθά κέιε ηνπ νξγαληζκνχ απηνχ γηα λα δείμνπκε ηελ ηεξάζηηα πξννπηηθή πνπ δεκηνπξγείηαη: Sprint Nextel T-Mobile Motorola Samsung Sony Ericsson Vodafone Google Verizon

Texas Instruments Htc Η Google δεκνζίεπζε ην κεγαιχηεξν κέξνο ηνπ θψδηθα ηνπ Android, ππφ ηνπο φξνπο ηεο Apache License, κηαο ειεχζεξεο άδεηαο ινγηζκηθνχ. Ιζηοπικά - Δκδόζειρ και σαπακηηπιζηικά[1][3] Η πξψηε έθδνζε ηνπ Android SDK ηνλ Ννέκβξην ηνπ 2007, ραξαθηεξίζηεθε απφ ηνπο θαηαζθεπαζηέο ηνπ ζαλ κηα πξψηε καηηά ζην SDK ηνπ Android, θάηη ην νπνίν πνιινί παξάβιεςαλ θαη βηάζηεθαλ λα θαηαθξίλνπλ ην Android ζαλ έλα πξνβιεκαηηθφ ζχζηεκα. Σηελ νπζία φκσο ην Android δελ παξνπζίαδε πξνβιήκαηα ηα νπνία δελ παξνπζηάδεη νπνηνδήπνηε ζχζηεκα ζε ηέηνηα πξψηκε θάζε. Έηζη ην Σεπηέκβξην ηνπ 2008, ε T-Mobile αλαθνηλψλεη ηελ δηαζεζηκφηεηα ηνπ T-Mobile G1, ηνπ πξψηνπ έμππλνπ ηειεθψλνπ (smartphone), βαζηζκέλν ζηελ πιαηθφξκα ηνπ Android. Λίγεο κέξεο αξγφηεξα (Οθηψβξην 2008), ε Google αλαθνηλψλεη ηελ απειεπζέξσζε ηνπ SDK Release Candidate 1.0. Αθνινχζεζε ηνλ Φεβξνπάξην ηνπ 2009 ε έθδνζε 1.1 ζαλ κηα αλαλεσκέλε έθδνζε ηνπ 1.0. Μέρξη ηφηε ην Android δελ ππνζηήξηδε αθφκε ηελ ρξήζε θνπκπηψλ αθήο, παξά κφλν ηελ ρξήζε ησλ θιαζζηθψλ ζθιεξψλ θνπκπηψλ ηεο ζπζθεπήο. Android 1.5 Cupcake Η έθδνζε Cupcake, βαζηζκέλε ζην Linux Kernel 2.6.27, παξνπζηάζηεθε ζηηο 30 Απξηιίνπ ηνπ 2009. Υπνζηεξίδεη λέεο ιεηηνπξγίεο γηα ηελ θάκεξα ηηο ζπζθεπήο, φπσο ε θαηαγξαθή θαη παξαθνινχζεζε βίληεν απφ ηελ ιεηηνπξγία ηεο θάκεξαο θαη ε άκεζε κεηαθφξησζε ηνπ βίληεν αιιά θαη ησλ θσηνγξαθηψλ ζην Youtube θαη ην Picasa αληίζηνηρα απεπζείαο απφ ην ηειέθσλν. Έρεη λέν έμππλν πιεθηξνιφγην κε πξφβιεςε θεηκέλνπ. Υπνζηεξίδεη πξφηππν Bluetooth A2DP θαη AVRCP ελψ έρεη θαη ηελ ηθαλφηεηα λα ζπλδέεηαη απηφκαηα ζε κηθξνζπζθεπέο Bluetooth απφ κηα ζπγθεθξηκέλε απφζηαζε.

Αθφκα ζηελ έθδνζε απηή έρεη λέν γξαθηθφ πεξηβάιινλ κε θηλνχκελεο κεηαβάζεηο νζφλεο. Android 1.6 Donut Η έθδνζε Donut, βαζηζκέλε ζην Linux Kernel 2.6.29, παξνπζηάζηεθε ζηηο 15 Σεπηεκβξίνπ ηνπ 2009.Έρεη ηαρχηεξε απφθξηζε ζε ζρέζε κε ηελ πξνεγνχκελε έθδνζε. Υπνζηεξίδεηαη πιένλ ε επηινγή πνιιαπιψλ αξρείσλ ηαπηφρξνλα, έρεη αλαλεσκέλν γθάιεξη θαη θσηνγξαθηθή κεραλή, θαζψο θαη βειηησκέλν Android Market. Έρεη αλαλεσκέλε θσλεηηθή αλαδήηεζε, κε ηαρχηεξε απφθξηζε θαη βαζχηεξε νινθιήξσζε κε εγγελείο (native) εθαξκνγέο, ζπκπεξηιακβαλνκέλεο ηεο δπλαηφηεηαο θιήζεο επαθψλ. Γπλαηφηεηα αλαδήηεζεο ζειηδνδεηθηψλ, ηζηνξηθνχ, επαθψλ αιιά θαη ζην δηαδίθηπν απφ ηελ αξρηθή νζφλε. Υπνζηήξημε γηα αλάιπζε νζνλψλ WVGA. Αλαλεσκέλε ππνζηήξημε ηερλνινγηψλ γηα CDMA/EVDO, 802.1x, VPNs θαη κε κεραλή κεηαηξνπήο θεηκέλνπ ζε νκηιία (text-to- speech). Android 2.0/2.1 Eclair Η έθδνζε Eclair, βαζηζκέλε θαη απηή ζηνλ Linux Kernel 2.6.29, παξνπζηάζηεθε ζηηο 26

Οθησβξίνπ ηνπ 2009, ελψ ηνλ Ιαλνπάξην ηνπ 2010 επαλεθδφζεθε ζε Αndroid 2.1 Eclair (MR1).Σε απηή ηελ έθδνζε ππάξρεη αθφκα ηαρχηεξε απφθξηζε ηνπ πιηθνχ ζε ζρέζε κε ηηο δπν πξνεγνχκελεο θαη πιένλ ππνζηεξίδνληαη πεξηζζφηεξεο νζφλεο θαη αλαιχζεηο. Υπάξρεη λένο browser ν νπνίνο ππνζηεξίδεη ην πξφηππν HTML5, λέν User Interface, θαη βειηησκέλνη ράξηεο Google (Google Maps 3.1.2). Έρεη ελζσκαησζεί ε ππνζηήξημε θιαο γηα ηελ θάκεξα ε νπνία έρεη πιένλ θαη ςεθηαθφ zoom. Δπίζεο έρεη βειηησζεί ε θιάζε MotionEvent ψζηε λα ππάξρεη ε δπλαηφηεηα γηα γεγνλφηα πνιιαπιήο αθήο (multitouch events). Υπνζηεξίδεηαη Bluetooth 2.1 θαη έρεη βειηησζεί θαη ην πιεθηξνιφγην. Android 2.2 Froyo Η έθδνζε Froyo, βαζηζκέλε ζην Linux Kernel 2.6.32, παξνπζηάζηεθε ζηηο 20 Μαΐνπ ηνπ 2010. Υπάξρνπλ βειηηζηνπνηήζεηο ζηελ ηαρχηεηα γεληθά ηνπ ιεηηνπξγηθνχ ζπζηήκαηνο, ζηελ κλήκε θαη ζηελ απφδνζε. Έρεη ελζσκαησζεί ν κεραληζκφο JavaScript ηνπ Chrome V8 ζηνλ browser, ππάξρεη πιένλ Adobe Flash 10.1, ελψ ππνζηεξίδεηαη θαιχηεξα πιένλ ην Microsoft Exchange. Έρεη γίλεη αλαλέσζε ηνπ Android Market. Ο ρξήζηεο κπνξεί πιένλ λα ειέγρεη αλ ζα γίλεηαη ή φρη θίλεζε παθέησλ δεδνκέλσλ απφ ην δίθηπν θηλεηήο ηειεθσλίαο. Υπάξρεη ε δπλαηφηεηα εγθαηάζηαζεο εθαξκνγψλ ζηελ θάξηα κλήκεο θαη ε κεηαθνξά ηνπο εθεί απφ ηε κλήκε ηνπ ηειεθψλνπ. Δπίζεο ην ηειέθσλν πιένλ κπνξεί λα κεηαηξαπεί ζε WiFi hotspot. Android 2.3 Gingerbread

Η έθδνζε Gingerbread, βαζηζκέλε ζην Linux Kernel 2.6.35.7, παξνπζηάζηεθε ζηηο 6 Γεθεκβξίνπ ηνπ 2010, ελψ ηνλ Φεβξνπάξην ηνπ 2011 επαλεθδφζεθε ζε Android 2.3.3. Σηελ έθδνζε απηή ππάξρνπλ αιιαγέο ζην User Interface ην νπνίν έρεη γίλεη πην απιφ θαη ηαρχ, ελψ ππνζηεξίδνληαη πιένλ νζφλεο κεγάισλ κεγεζψλ θαη αλαιχζεσλ. Υπάξρεη πιένλ ην πξσηφθνιιν SIP γηα θιήζεηο κέζσ VoIP, ππνζηεξίδεηαη ν ηχπνο βίληεν WebM/VP8 θαη ν θσδηθνπνηεηήο AAC, έρεη βειηησζεί ν ήρνο θαζψο θαη νη ιεηηνπξγίεο απεηθφληζεο γηα ηελ αλάπηπμε παηρληδηψλ. Υπάξρεη ε δπλαηφηεηα γηα Copy-Paste ζε φιν ην ζχζηεκα θαη φρη κφλν ζηελ ίδηα εθαξκνγή. Υπνζηεξίδεηαη ην NFC (Near Field Communication) θαη ε χπαξμε πνιιαπιψλ θακεξψλ. Δπίζεο, έρεη βειηησζεί ε ελεξγεηαθή ππνζηήξημε θαη έρεη γίλεη κεηάβαζε απφ ην ζχζηεκα αξρείσλ YAFFS ζην ext4 ζηηο λέεο ζπζθεπέο. Android 3.0 Honeycomb Η έθδνζε Honeycomb, βαζηζκέλε ζην Linux Kernel 2.6.36, παξνπζηάζηεθε ζηηο 9 Μαΐνπ ηνπ 2011,κε ηελ ηδηαηηεξφηεηα φηη πξννξηδφηαλ απνθιεηζηηθά γηα tablets. Οη αιιαγέο πνπ έγηλαλ ζηελ έθδνζε απηή έρνπλ λα θάλνπλ θπξίσο κε ηε βειηίσζε ηεο ππνζηήξημεο ησλ tablets. Υπάξρεη έλα λέν, εληειψο δηαθνξεηηθφ, User Interface θαη ππνζηεξίδνληαη δηπχξελνη θαη ηεηξαπχξελνη επεμεξγαζηέο. Αθφκα, ερεη απινπνηεζεί ην multitasking έηζη ψζηε ν ρξήζηεο λα κπνξεί κε ηε ρξήζε ελφο πιήθηξνπ (recent apps) λα πεξλάεη απφ κηα εθαξκνγή ζε άιιε. Υπάξρεη ε δπλαηφηεηα γηα Video Chat κέζσ ηεο εθαξκνγήο Google Talk θαζψο ε αλάγλσζε βηβιίσλ κέζσ ηνπ Google ebooks. Δπηπιένλ, κπνξνχλ λα θξππηνγξαθεζνχλ φια ηα δεδνκέλα ρξήζηε.

Android 4.0 Ice Cream Sandwich Η έθδνζε Ice Cream Sandwich, βαζηζκέλε ζην Linux Kernel 3.0.1, παξνπζηάζηεθε ζηηο 19 Οθησβξίνπ ηνπ 2011. Γηα άιιε κηα θνξά έρεη βειηησζεί ε ηαρχηεηα θαη ε απφδνζε ηνπ ζπζηήκαηνο. Πιένλ ζην User Interface, ην νπνίν είλαη θαη πάιη δηαθνξεηηθφ, ππάξρνπλ εηθνληθά πιήθηξα ηα νπνία παίξλνπλ ηε ζέζε ησλ θπζηθψλ ή αθήο πνπ ππήξραλ ζηηο ζπζθεπέο. Βειηίσζε ηεο αζθάιεηα ηνπ ζπζηήκαηνο κε ηελ πξνζζήθε αλαγλψξηζεο πξνζψπνπ γηα λα μεθιεηδψζεη ε ζπζθεπή. Ο browser κπνξεί λα αλνίμεη ηαπηφρξνλα κέρξη θαη 16 θαξηέιεο. Υπάξρεη ε δπλαηφηεηα ν ρξήζηεο λα ηεξκαηίζεη εθαξκνγέο νη νπνίεο ηξέρνπλ ζην background, ελψ κπνξεί λα ζέζεη θαη φξηα ζηελ θίλεζε παθέησλ δεδνκέλσλ. Η εθαξκνγή Android Beam αμηνπνηεί πιένλ ην NFC αθνχ επηηξέπεη ηελ απνζηνιή δεδνκέλσλ απφ ηε ζπζθεπή ζε φζεο βξίζθνληαη εληφο κηαο κηθξήο αθηίλαο εκβέιεηαο. Αθφκα κε ηελ χπαξμε ηνπ Wi-Fi Direct ζπζθεπέο κπνξνχλ λα ζπλδεζνχλ κεηαμχ ηνπο αζχξκαηα ρσξίο ηελ κεζνιάβεζε θάπνηνπ access point. Τέινο, ππνζηεξίδεηαη ε εγγξαθή βίληεν ζε 1080p. Android 4.1 Jelly Bean

Η έθδνζε Jelly Bean παξνπζηάζηεθε ζηηο 9 Ινπιίνπ 2012. Τν Project Butter, απνηειεί ηελ ηειεπηαία θαηλνηνκία ζην Jelly Bean, ράξηλ ζηελ νπνία ηξηπιαζηάδεηαη ην buffering ησλ γξαθηθψλ (60fps), κε απνηέιεζκα νκαιφηεξε θαη ηαρχηεξε απεηθφληζε θαηά ηελ πινήγεζε ζην UI ηνπ ζπζηήκαηνο. Μεγάιε πξνζζήθε είλαη θαη ε ηερλνινγία Google Now, ε νπνία πξνζδίδεη εμππλάδα ζηε ζπζθεπή ζαο, βξίζθνληαο θαη αλαλεψλνληαο απηφκαηα πιεξνθνξίεο αλάινγα κε ηε ρξήζε, φπσο γηα παξάδεηγκα λέα γηα ηελ αγαπεκέλε ζαο νκάδα, παξνρή πιεξνθνξηψλ γηα ηηο κεηαθηλήζεηο ζαο (δχζθνια ζηελ Διιάδα ) ή πξνηάζεηο γηα θνληηλά εζηηαηφξηα. Αθφκε, ε Google παξνπζίαζε ηε ιεηηνπξγία Offline Voice Typing, ε νπνία δελ απαηηεί πιένλ ζχλδεζε ζην Internet γηα λα δίλεηε θαη λα αλαγλσξίδεη θσλεηηθέο εληνιέο. Δπίζεο, βειηηψζεθε ζεκαληηθά ε θσλεηηθή αλαδήηεζε, γηα ηαρχηεηα εκθάληζε εγθπξφηεξσλ απνηειεζκάησλ αλάινγα κε ηελ αλαδήηεζε πνπ πξαγκαηνπνηείηε. Σε φηη αθνξά ην ζχζηεκα εηδνπνηήζεσλ, ε Google έρεη πξνζζέζεη αξθεηέο λέεο επηινγέο. Τέινο, ελδηαθέξνπζα είλαη θαη ε λέα δπλαηφηεηα δηαρείξηζεο ηεο homescreen, κεηαθηλήζεηο ησλ widgets θαη απηφκαηε δηαξξχζκηζε ησλ εηθνληδίσλ. Έλα αθφκα ελδηαθέξνλ ζηαηηζηηθφ πνπ πξέπεη λα δνχκε είλαη ηα πνζνζηά ησλ android εθδφζεσλ πνπ είλαη εγθαηεζηεκέλεο ζε φιεο ηηο android ζπζθεπέο φπσο απηά αλαθνηλψζεθαλ γηα ηνλ Απξίιην ηνπ 2011

Πνζνζηά ησλ εγθαηεζηεκέλσλ εθδφζεσλ ζηηο android ζπζθεπέο Όπσο θαίλεηαη ζην ζρήκα πην πάλσ, ην Froyo είλαη εγθαηεζηεκέλν ζην κεγαιχηεξν κέξνο ησλ ζπζθεπψλ ζπγθεληξψλνληαο ην 65.9% απηψλ. Τν λεφηεξν Gingerbread ζπγθεληξψλεη κφιηο ην 3% ησλ ζπζθεπψλ ιφγσ ηνπ φηη δελ έρεη πεξάζεη πνιχο θαηξφο απφ ηελ επίζεκε θπθινθνξία ηνπ. Τν Honeycomb σο κηα έθδνζε απνθιεηζηηθά γηα ηακπιέηεο θαη νπζηαζηηθά κε κεδακηλφ ρξφλν θπθινθνξίαο βξίζθεηαη ζην 0.3%. Τέινο νη παιαηφηεξεο εθδφζεηο ηνπ Android (Cupcake, Donut, Eclair) κε ηνλ θαηξφ ζα ζπξξηθλψλνληαη φπσο είλαη ινγηθφ, παξφιν πνπ ην Eclair εμαθνινπζεί λα είλαη εγθαηεζηεκέλν ζην 24.5% ησλ Android ζπζθεπψλ. Τν Android έρεη θαηαπιεθηηθά ραξαθηεξηζηηθά θαη πνιιαπιέο δπλαηφηεηεο, ελψ ζπλερίδεη λα εθζπγρξνλίδεηαη. Δπηπξφζζεηα παξέρεη θαηαπιεθηηθά εξγαιεία γηα ηελ αλάπηπμε εθαξκνγψλ πνπ θάλνπλ ηελ δσή ηνπ θαηαζθεπαζηή πξαγκαηηθά πνιχ πην εχθνιε. Γηα λα θαηαλνήζνπκε ηελ πξσηνηππία απηήο ηεο πιαηθφξκαο, ζα δνχκε παξαθάησ ηελ βαζηθή ηεο αξρηηεθηνληθή θαη ζα ζπδεηήζνπκε γηαηί ην Android επθνιχλεη ηελ δσή ηνπ πξνγξακκαηηζηή ελψ ηαπηφρξνλα ηνπ παξέρεη πάκπνιιεο επηινγέο θαη δπλαηφηεηεο γηα ηελ δεκηνπξγία πξσηνπνξηαθψλ εθαξκνγψλ. Γιαηί Android Δλ θαηαθιείδη παξαζέηνπκε εδψ θάπνηα ζεκεία θαη ζθέςεηο, γηα ην Android, ζαλ κηα ηειεπηαία πξνζπάζεηα λα ζαο πείζνπκε γηα ηελ πξσηνπνξία ηνπ ζην ρψξν θαη ηελ ηζρπξή δπλακηθή ηνπ. Γηαηί Android ινηπφλ; Δίλαη κηα πξαγκαηηθά αλνηρηή, ειεχζεξε πιαηθφξκα αλάπηπμεο, βαζηζκέλε ζην Linux. Γηαζέηεη αξρηηεθηνληθή βαζηζκέλε ζε δνκηθά ζηνηρεία ηα νπνία κπνξνχλ λα ηξνπνπνηεζνχλ, λα νινθιεξσζνχλ θαη λα πξνζαξκνζηνχλ ζηηο αλάγθεο θάζε θαηαζθεπαζηή θαη θαηά ζπλέπεηα ρξήζηε. Πάκπνιιεο ελζσκαησκέλεο ππεξεζίεο πνπ κπνξνχλ λα θάλνπλ ηελ εκπεηξία ηνπ ρξήζηε κνλαδηθή, φπσο ππεξεζίεο βαζηζκέλεο ζηελ ηνπνζεζία, παλίζρπξε SQL βάζε δεδνκέλσλ, κεραλή αλαδήηεζεο θαη ράξηεο. Απηφκαηε δηαρείξηζε ηνπ θχθινπ δσήο κηαο εθαξκνγήο, κε πνιιαπιέο δηθιίδεο αζθαιείαο αλάκεζα ζηα πξνγξάκκαηα. Βειηηζηνπνηήζεηο ζηνλ ηνκέα δηαρείξηζεο κλήκεο θαη ρακειήο θαηαλάισζεο ζε ηέηνην βαζκφ πνπ δελ έρεη μαλαζπλαληεζεί ζε άιιν smartphone. Υςειήο πνηφηεηαο γξαθηθά θαη ήρνο.

Φνξεηφηεηα αλάκεζα ζε έλα επξχ θάζκα ήδε ππάξρνληνο πιηθνχ αιιά θαη κειινληηθνχ. Απηφ έξρεηαη ζαλ απφξξνηα ηνπ γεγνλφηνο φηη φια ηα πξνγξάκκαηα γξάθνληαη ζε Java θαη εθηεινχληαη απφ ηελ εηθνληθή κεραλή Dalvik. Δπηπξφζζεηα νη νζφλεο κπνξνχλ λα ηξνπνπνηεζνχλ θαηάιιεια γηα λα ππνζηεξίδνπλ νπνηαδήπνηε αλάιπζε, κέγεζνο θαη πξνζαλαηνιηζκφ νζφλεο. Απηνί είλαη κεξηθνί κφλν απφ ηνπο ιφγνπο γηα ηνπο νπνίνπο έγηλε ε επηινγή ηνπ Android σο πιαηθφξκα αλάπηπμεο ζε απηή ηελ πηπρηαθή εξγαζία. Όζνη δελ έρεηε πεηζηεί, δελ έρεηε παξά λα πάξεηε ζηα ρέξηα ζαο έλα ηειέθσλν ή κηα ηακπιέηα πνπ ηξέρεη ην ιεηηνπξγηθφ απηφ ζχζηεκα. Κινηηά ηηλέθωνα Android Η πξψηε ζπζθεπή πνπ έηξερε ην ιεηηνπξγηθφ ζχζηεκα Android ήηαλ ην HTC Dream, γλσζηφ θαη σο T-Mobile G1, πνπ έθαλε ηελ εκθάληζε ηνπ ζηα ξάθηα ησλ θαηαζηεκάησλ πξνο ην ηέινο ηνπ 2008. Σηε ζπλέρεηα, πνιιά λέα Android θηλεηά θάλνπλ ηελ εκθάληζε ηνπο κε λαπαξρίδα απηψλ, ην Motorola DROID (έθδνζε CDMA), ην νπνίν απφ ην Ννέκβξε ηνπ 2009 δηαηίζεηαη απνθιεηζηηθά απφ ηελ Ακεξηθαληθή εηαηξία ηειεπηθνηλσληψλ, Verizon, ελψ ε GSM έθδνζε ηνπ, ην Motorola Milestone, απφ δηάθνξνπο παξνρείο θηλεηήο ηειεθσλίαο αλά ηνλ θφζκν. Σηελ απγή ηνπ 2010, ε Google ηάξαμε ηα λεξά ζηνλ ρψξν ησλ ηειεπηθνηλσληψλ κε ηελ αλαθνίλσζε ηνπ Google Nexus One, κηαο θαηλνηφκνπ ζπζθεπήο πνπ ηξέρεη ηελ λεφηεξε έθδνζε ηνπ Android (2.1 πνπ ζεσξείηαη θπξίσο βειηίσζε ηεο 2.0 ή Eclair). Καηαζθεπαζκέλν απφ ηελ HTC, ην Nexus One μερσξίδεη γηα ηα Live Wallpapers (θηλνχκελα backgrounds λένπ ζρεδηαζκνχ πνπ αιιειεπηδξνχλ κε ηηο θηλήζεηο δαρηχινπ ηνπ ρξήζηε) θαη ηε λέα αλαβαζκηζκέλε Έθζεζε εηθφλσλ θαη βίληεν (gallery). Η ζπζθεπή έρεη, επίζεο, ην πιενλέθηεκα ηεο άκεζεο θαη απξνβιεκάηηζηεο ζπλεξγαζίαο κε φιεο ηηο ππεξεζίεο ηεο Google (Gmail, Google Contacts, Coogle Calendar θ.α.). Ταμπλέηερ Android Τη είλαη νη ηακπιέηεο; Μία ηακπιέηα είλαη έλαο ππνινγηζηήο πνπ αληί γηα πνληίθη θαη πιεθηξνιφγην, δηαζέηεη σο θχξηα κνξθή εηζαγσγήο δεδνκέλσλ κηα νζφλε αθήο. Οη ηακπιέηεο ππάξρνπλ απφ ην 2001, αιιά έγηλαλ δεκνθηιέζηεξεο κεηά ηελ έιεπζε ηνπ Apple ipad, θεξδίδνληαο έλα ζεκαληηθφ κεξίδην ηνπ ελδηαθέξνληνο ηνπ θνηλνχ. Δηδηθά κε ηελ έιεπζε ησλ Android ηακπιεηψλ, πνπ πιένλ θπξηαξρνχλ ζηελ αγνξά αλακέλεηαη ζην άκεζν κέιινλ λα αληηθαηαζηήζνπλ πιήξσο ηα netbooks, κπαίλνληαο γηα ηα θαιά ζηελ θαζεκεξηλφηεηά καο. Έξεπλα ηεο εηαηξίαο Strategy Analytics έδεημε πσο σο ην 2015 ε αγνξά ζα έρεη θέξδνο απφ ηηο πσιήζεηο ησλ tablets 49 δηζ. δνιάξηα. Η αγνξά ηακπιεηψλ ηειεπηαίαο

ηερλνινγίαο ζα είλαη ε ηξίηε ζε δχλακε αγνξά, κεηά απφ απηή ηεο ηειεφξαζεο θαη ησλ πξνζσπηθψλ ειεθηξνληθψλ ππνινγηζηψλ. Η εηαηξία εξεπλψλ αλέθεξε πσο, ζχκθσλα κε ηηο πξνβιέςεηο, ζα έρνπλ πνπιεζεί 149 εθαηνκκχξηα κνλάδεο σο ην 2015, δειαδή νη πσιήζεηο ζα απμεζνχλ θαηά 6,5 θνξέο απφ 2010. Σςμπεπάζμαηα Σε απηφ ην θεθάιαην, θάλακε κηα εηζαγσγή ζην ιεηηνπξγηθφ ζχζηεκα Android ηεο Google αλαθέξνληαο κεξηθά ηζηνξηθά ζπκβάληα πνπ αμίδνπλ λα ζεκεησζνχλ. Μειεηήζακε ηηο εθδφζεηο θαη ηα βαζηθά ραξαθηεξηζηηθά ηνπ. Αλαιχζακε ηνλ ηξφπν ιεηηνπξγίαο ηεο πιαηθφξκαο θαη ησλ εθαξκνγψλ ηεο. Τέινο θαηαιήμακε ζην γηαηί επηιέμακε ζηελ ζπγθεθξηκέλε πιαηθφξκα γηα ηελ αλάπηπμε ηεο εθαξκνγήο καο αλαθέξνληαο θάπνηα ζηνηρεία γηα ηα θηλεηά & ηακπιέηεο Android.

Αξρηηεθηνληθή ηνπ Android Όπσο πξναλέθεξα, ην Android είλαη κηα ζηνίβα ινγηζκηθνχ. Η ινγηθή πίζσ απφ απηήλ ηελ έθθξαζε θαη ζε φιε ηελ θηινζνθία ηνπ Android, θξχβεηαη ζην αθφινπζν δηάγξακκα κε ηα βαζηθά ζπζηαηηθά ηνπ. Σηελ ζηνίβα ηνπ Android, παξαηεξνχκε 4 επίπεδα. Αθνινχζσο ζα πεξηγξάςνπκε ζπλνπηηθά ηα βαζηθά απηά επίπεδα ρσξίο λα κπνχκε ζε ιεπηνκέξεηεο γηα φια ηα πεξηερφκελα ηνπ θάζε επηπέδνπ. Αλ ν αλαγλψζηεο επηζπκεί λα κάζεη πεξηζζφηεξα, κπνξεί λα επηζθεθζεί ηελ επίζεκε ηζηνζειίδα ηνπ Android γηα θαηαζθεπαζηέο (http://developer.android.com). Κάζε επίπεδν ζηελ αξρηηεθηνληθή απηή, ρξεζηκνπνηεί ηηο ππεξεζίεο πνπ ηνπ πξνζθέξνληαη απφ ηα πην θάησ επίπεδα. Αο δνχκε ηψξα απηά ηα επίπεδα μεθηλψληαο απφ ην πην ρακειφ. Πςπήναρ Linux (Linux kernel) Τν Android είλαη βαζηζκέλν ζηα γεξά ζεκέιηα ηνπ Linux. Ο ππξήλαο Linux είλαη δνθηκαζκέλνο, ζηαζεξφο θαη πεηπρεκέλνο θαη κπνξεί λα βξεζεί παληνχ, απφ ξνιφγηα ρεηξφο κέρξη ππεξππνινγηζηέο. Τν Linux παξέρεη ζην Android ην αθαηξεηηθφ επίπεδν πιηθνχ, επηηξέπνληάο ηνπ λα κπνξεί λα ρξεζηκνπνηεζεί ζε κεγάιε πνηθηιία πιαηθφξκσλ

ζην κέιινλ. Δηδηθφηεξα, ην Android ρξεζηκνπνηεί ηνλ ππξήλα Linux γηα ηελ δηαρείξηζε κλήκεο, ηελ δηαρείξηζε δηεξγαζηψλ, ηελ δηθηχσζε θαη άιιεο ππεξεζίεο ηνπ ιεηηνπξγηθνχ ζπζηήκαηνο. Δγγενήρ Βιβλιοθήκερ Native Libraries Σην ακέζσο ςειφηεξν επίπεδν βξίζθνπκε ηηο Native Libraries Δγγελήο Βηβιηνζήθεο. Όιεο απηέο είλαη γξακκέλεο ζηελ γιψζζα πξνγξακκαηηζκνχ C θαη C++ θαη κεηαγισηηίζηεθαλ γηα ηελ ζπγθεθξηκέλε αξρηηεθηνληθή πιηθνχ πνπ ρξεζηκνπνηείηαη απφ ην ηειέθσλν. Οη βηβιηνζήθεο απηέο δελ είλαη εθαξκνγέο πνπ κπνξνχλ λα ζηαζνχλ απφ κφλεο ηνπο. Υπάξρνπλ γηα λα κπνξνχλ λα θιεζνχλ απφ πξνγξάκκαηα πςειφηεξνπ επηπέδνπ. Απφ ηελ έθδνζε Donut θαη κεηά, νη θαηαζθεπαζηέο κπνξνχλ λα γξάθνπλ ηηο δηθέο ηνπο ηέηνηεο βηβιηνζήθεο κε ηελ ρξήζε ηεο Δξγαιεηνζήθεο NDK ( Native Development Kit ). Χπόνορ Δκηέλεζηρ Android Runtime Σην ίδην επίπεδν κε ηηο εγγελήο βηβιηνζήθεο, βξίζθνπκε θαη ηνλ ρξφλν εθηέιεζεο Android. Δδψ δνπλ βαζηθέο βηβιηνζήθεο ηεο Java θαη ε εηθνληθή κεραλή Dalvik. H Dalvik είλαη κηα βειηηζηνπνηεκέλε πινπνίεζε κηαο εηθνληθήο κεραλήο Java γηα θνξεηέο ζπζθεπέο απφ ηελ Google. Η Dalvik ηξέρεη.dex αξρεία, ηα νπνία είλαη bytecodes πνπ πξνέξρνληαη απφ αξρεία.class θαη.jar. Δλ αληηζέζεη φκσο κε ηα.class αξρεία, ηα.dex είλαη πνιχ πην ζπκπαγή θαη απνδνηηθά, γεγνλφο ζεκαληηθφ γηα ζπζθεπέο κε πεξηνξηζκέλε κλήκε θαη κπαηαξία. Τν Android πεξηιακβάλεη έλα ζχλνιν βαζηθψλ βηβιηνζεθψλ πνπ παξέρνπλ ηηο πεξηζζφηεξεο απφ ηηο δηαζέζηκεο ιεηηνπξγίεο ησλ βαζηθψλ βηβιηνζεθψλ ηεο Java. Κάπνηα παθέηα θαη θιάζεηο ππάξρνπλ θαη ζην Android θάπνηα άιια δελ ππνζηεξίδνληαη θαζφινπ, ελψ ηαπηφρξνλα ην Android παξέρεη θαη επηπξφζζεηα πξνζαξκνζκέλα ζηηο δηθέο ηνπ αλάγθεο Πλαίζιο Δθαπμογήρ Application Framework Πάλσ απφ ηηο εγγελήο βηβιηνζήθεο θαη ην ρξφλν εθηέιεζεο Android, είλαη ην πιαίζην εθαξκνγήο. Απηφ ην επίπεδν καο παξέρεη πςεινχ επηπέδνπ δνκηθέο κνλάδεο ηηο νπνίεο κπνξνχκε λα ρξεζηκνπνηνχκε γηα ηελ θαηαζθεπή ησλ εθαξκνγψλ καο. Απηφ ην πιαίζην είλαη πξν-εγθαηεζηεκέλν ζην Android, αιιά είλαη επεθηάζηκν, αθνχ ν θάζε θαηαζθεπαζηήο κπνξεί λα ην ζπκπιεξψζεη κε δηθά ηνπ θνκκάηηα. Τα ζεκαληηθφηεξα δνκηθά ζηνηρεία ηνπ πιαηζίνπ απηνχ είλαη:

ύζηεκα πξνβνιώλ (View System) απνηειεί έλα εθηελέο ζχλνιν απφ αληηθείκελα GUI ηα νπνία κπνξνχλ λα ρξεζηκνπνηεζνχλ θαηά ην ζρεδηαζκφ κηαο εθαξκνγήο. Παξαδείγκαηα πξνβνιψλ είλαη νη ιίζηεο (listview), ην πιέγκα (GridView), πεδία εηζαγσγήο θεηκέλνπ, θνπκπηά, θιπ Πάξνρνο Πεξηερνκέλνπ (Content Provider) δίλεη ηε δπλαηφηεηα ζηηο εθαξκνγέο λα κνηξάδνληαη ή λα αληαιιάζζνπλ δεδνκέλα κηαο ζπγθεθξηκέλεο κνξθήο ε νπνία νξίδεηαη απφ ηνλ πάξνρν. Παξαδείγκαηα δεδνκέλσλ, είλαη νη επαθέο ρξήζηε θαη νη βάζεηο δεδνκέλσλ ησλ εθαξκνγψλ. Γηαρεηξηζηήο Πόξσλ (Resource Manager) παξέρεη πξφζβαζε ζε πιηθφ ην νπνίν δελ είλαη ζε κνξθή θψδηθα φπσο πρ, εηθφλεο, αξρεία xml, πίλαθεο ραξαθηήξσλ, θιπ Γηαρεηξηζηήο Δηδνπνηήζεσλ (Notification Manager) δίλεη ζηηο εθαξκνγέο πξφζβαζε ζηηο ππεξεζίεο εηδνπνηήζεσλ ρξήζηε. Τέηνηεο είλαη νη εηδνπνηήζεηο ζηε notification bar, ηα toast κελχκαηα ζην θάησ κέξνο ηεο νζφλεο, ε δφλεζε ηνπ θηλεηνχ θαη ε ελεξγνπνίεζε ηεο νζφλεο, θιπ Γηαρεηξηζηήο Γξαζηεξηνηήησλ (Activity Manager) δηαρεηξίδεηαη ηνλ θχθιν δσήο ησλ δξαζηεξηνηήησλ θαη παξέρεη δπλαηφηεηα πινήγεζεο απφ δξαζηεξηφηεηα ζε δξαζηεξηφηεηα θξαηψληαο απνζεθεπκέλε ζηε κλήκε ηε ζεηξά εθηέιεζεο απηψλ. Σην ζρεδηάγξακκα (Δηθφλα 1.12) θαίλεηαη ιεπηνκεξψο ν θχθινο δσήο θάζε δξαζηεξηφηεηαο. Κύθινο δσήο κίαο Activity ηνπ Android Τν ιεηηνπξγηθφ ζχζηεκα Android επηηξέπεη ζε δηαθνξεηηθέο εθαξκνγέο λα εθηεινχληαη ηαπηφρξνλα,νη νπνίεο πεξηιακβάλνπλ δηαθνξεηηθέο δηεξγαζίεο εθφζνλ βέβαηα ππάξρεη επεμεξγαζηηθή ηζρχο θαη δηαζέζηκε κλήκε. Σην πξνζθήλην ζην ρξήζηε θάζε θνξά ππάξρεη νξαηή κφλν κία ελεξγή εθαξκνγή - Activity. Παξ φια απηά ζην παξαζθήλην κπνξνχλ λα ππάξρνπλ άιιεο δηεξγαζίεο θαη φηαλ ππάξρνπλ ζπκβάληα νη εθαξκνγέο κπνξνχλ λα παχνληαη θαη λα δηαθφπηνληαη, φπσο γηα παξάδεηγκα κ έλα εηζεξρφκελν κήλπκα. Όια ηα αληηθείκελα Activity παξαθνινπζνχληαη θαη ηνπνζεηνχληαη ζε κηα ζηνίβα απφ ην ιεηηνπξγηθφ ζχζηεκα Android.

Αλάζηξνθεο θιίζεηο κεζφδσλ πξνθαινχλ αιιαγέο θαηάζηαζεο κέζα ζηνλ θχθιν δσήο κίαο Activity. Οη πην βαζηθέο κέζνδνη γηα ηελ αλάζηξνθε θιήζε Activity είλαη: public class MyActivity extends Activity { protected void oncreate(bundle savedlnstancestate); protected void onstart(); protected void onrestart(); protected void onresume(); protected void onpause(); protected void onstop(); protected void ondestroy(); }

Δπεμήγεζε Καιείηαη ε κέζνδνο oncreate(), φηαλ κία Activity μεθηλά γηα πξψηε θνξά. Σε απηή ηελ θάζε πνπ κφιηο πξσηνμεθηλά ην Bundle, ην νπνίν έρεη ηελ ηηκή null είλαη ε κφλε παξάκεηξνο ηεο oncreate(). Σε πεξίπησζε πνπ γηα ιφγνπο απειεπζέξσζεο κλήκεο ζηακαηήζεη θαη αλαθηλεζεί ε Activity, ην Bundle ηεο πεξηέρεη πιεξνθνξίεο ηεο πξνεγνχκελεο θαηάζηαζεο πξνθεηκέλνπ λα κπνξεί λα μεθηλήζεη πάιη. Η ξχζκηζε παξακέηξσλ, φπσο γηα ηε ζχλδεζε δεδνκέλσλ θαη γηα ηε δηάηαμε θιήζεηο ζηε κέζνδν setcontentview() κπνξεί λα γίλεη ζηε κέζνδν oncreate(). Με ηελ onresume() γίλεηαη αξρηθνπνίεζε θαη αλάθηεζε δεδνκέλσλ δξαζηεξηνηήησλ θαη είλαη ην θαηάιιειν ζεκείν γηα έλαξμε βίληεν, ήρνπ θαη θηλήζεσλ. Με ηελ onpause() γίλεηαη δηαθνπή, απνζήθεπζε θαη απειεπζέξσζε δεδνκέλσλ δξαζηεξηνηήησλ.

Με ηελ κέζνδν αλάζηξνθεο θιήζεο onsaveinstancestate(), ε Activity κπνξεί λα απνζεθεχζεη πιεξνθνξίεο θαηάζηαζεο ζ έλα αληηθείκελν Bundle. Ωζηφζν, γηα νπζηαζηηθέο επηβνιέο δεδνκέλσλ πξέπεη λα ρξεζηκνπνηείηαη ε κέζνδνο onpause() θαζψο δελ είλαη εγγπεκέλε ζε φιεο ηηο πεξηπηψζεηο ε θιήζε ηεο onsaveinstancestate(). Με ηελ ondestroy() γίλεηαη θαηαζηξνθή ζηαηηθψλ δεδνκέλσλ δξαζηεξηφηεηαο δειαδή φηαλ ε Activity θαηαζηξέθεηαη, γίλεηαη θιήζε ηεο κεζφδνπ απηήο. Με ηηο κεζφδνπο startactivity() θαη finish() ν ρξήζηεο κπνξεί λα επηζηξέςεη ζε ζηηγκηφηππα Activity πνπ εκθαλίδνληαη θαη έπεηηα θαηαξγνχληαη κφληκα φηαλ εθηειείηαη ε δξαζηεξηφηεηα ηεο νζφλεο ρσξίο λα επαλεθθηλήζεη ηελ εθαξκνγή. Τέηνην παξάδεηγκα Activity είλαη ε νζφλε εθθίλεζεο ηεο εθαξκνγήο. Έλαο ηξφπνο γηα λα μεθηλήζνπκε δηάθνξεο δξαζηεξηφηεηεο είλαη κε ηελ κέζνδν startactivity(new Intent(getApplicationContext()), MyaDrawActivity.class). Αλαθνξηθά, δηαηίζεηαη ε δπλαηφηεηα, κέζσ Intent γηα παξάδεηγκα, εθθίλεζε κηαο δξαζηεξηφηεηαο πνπ αλήθεη ζε άιιε εθαξκνγή ελψ εθηειείηαη ε δηθηά καο. Δπίζεο ε εθαξκνγή καο ζα κπνξνχζε λα ζηέιλεη θαη λα αληρλεχεη αληηθείκελα Intent γηα ηελ ελεκέξσζε ηνπ γεληθφηεξνπ ζπζηήκαηνο, πρ ε κπαηαξία εμαληιείηαη, ήξζε έλα email. Δθαξκνγέο θαη Widgets Σην πςειφηεξν επίπεδν ηεο ζηνίβαο Android, θηγνπξάξνπλ νη εθαξκνγέο θαη ηα widgets. Απηφ είλαη πνπ βιέπνπλ νη ρξήζηεο ρσξίο λα γλσξίδνπλ ηελ φιε απφ θάησ δηαδηθαζία. Απηέο είλαη εθαξκνγέο πνπ γξάθνπλ νη θαηαζθεπαζηέο ινγηζκηθνχ, εθαξκνγέο πνπ ήδε είλαη εγθαηεζηεκέλεο ζην ηειέθσλν ή πνπ ν ρξήζηεο παίξλεη απφ ην Android Market. Οη εθαξκνγέο είλαη πξνγξάκκαηα πνπ θαηαιακβάλνπλ νιφθιεξε ηελ νζφλε θαη αιιειεπηδξνχλ κε ην ρξήζηε. Απφ ηελ άιιε ηα widget ιεηηνπξγνχλ ζε κηθξά ηεηξάγσλα κέζα ζηελ αξρηθή νζφλε εθαξκνγή. ην εζσηεξηθό κηαο εθαξκνγήο ηνπ Android Κάζε εθαξκνγή απνηειείηε απφ έλα ζχλνιν αξρείσλ θαη θαθέισλ δνκεκέλα ζε κνξθή project, ηα νπνία αθνχ γίλνπλ compiled κέζσ ηνπ Android SDK καο δίλνπλ ην αξρείν.apk. Τν αξρείν απηφ απνηειεί ηελ εθαξκνγή θαη κπνξνχκε λα εγθαηαζηήζνπκε ζηηο ζπζθεπέο καο. Ξεθηλψληαο, ε θάζε εθαξκνγή απνηειείηε φπσο είπακε απφ πνιιά αξρεία δνκεκέλα ζε θαθέινπο. Όιεο νη εθαξκνγέο πξέπεη λα έρνπλ έλα κνλαδηθφ φλνκα παθέηνπ (package name) ην νπνίν ρξεζηκνπνηείηε απφ ην ιεηηνπξγηθφ ζχζηεκα γηα

αλαγλψξηζε ηεο εθαξκνγήο. Μηα εθαξκνγή κπνξεί λα απνηειείηε απφ πνιιά ππνπαθέηα, εθφζνλ απηφ είλαη απαξαίηεην ιφγσ ηεο πνιππινθφηεηαο ηηο εθαξκνγήο, αιιά κφλν απφ έλα θχξην. Το απσείο AndroidManifest.xml Κάζε project εθαξκνγήο πεξηέρεη έλα αξρείν ζην νπνίν βξίζθνληαη θαηαρσξεκέλεο νη ζεκαληηθφηεξεο πιεξνθνξίεο ηεο εθαξκνγήο, θαη ην αξρείν απηφ νλνκάδεηαη AndroidManifest.xml. Πξφθεηηαη φπσο ιέεη θαη ην φλνκα ηνπ γηα έλα αξρείν xml κέζα ζην νπνίν ν πξνγξακκαηηζηήο θαηαρσξεί ηηο ζεκαληηθφηεξεο πιεξνθνξίεο ηεο εθαξκνγήο γηα ρξήζε απφ ην ιεηηνπξγηθφ ζχζηεκα. Κάπνηεο απφ απηέο ηηο πιεξνθνξίεο είλαη: Τν φλνκα ηνπ παθέηνπ ηεο εθαξκνγήο Τν θαλνληθφ ηεο φλνκα πνπ θαίλεηαη ζηνλ ρξήζηε Η έθδνζε ησλ APIs πνπ ρξεζηκνπνηνχληαη Ο αξηζκφο έθδνζεο ηεο εθαξκνγήο Οη άδεηεο ρξήζεο πνπ δεηάεη ε εθαξκνγή Όιεο νη δξαζηεξηφηεηεο, πάξνρνη πεξηερνκέλνπ, ππεξεζίεο, θιπ, πνπ πεξηέρεη θαη ρξεζηκνπνηεί ε εθαξκνγή. Όπσο αληηιακβαλφκαζηε πξφθεηηαη γηα πνιχ ζεκαληηθφ αξρείν θαη απνηειεί θχξην ζπζηαηηθφ θάζε εθαξκνγήο. Οι θάκελοι src & res Σηνλ θάθειν src (εθ ηνπ source) πεξηέρνληαη ηα αξρεία θιάζεο ηηο Java φισλ ησλ Activities, Services, Content Providers, βνεζεηηθά αξρεία, θιπ. Ο θάθεινο πεξηέρεη ην παθέην ή ηα παθέηα ηεο εθαξκνγήο ηα νπνία πεξηέρνπλ ηα αξρεία Java, θαη απνηειεί ηνλ κνλαδηθφ θάθειν ζην project ζηνλ νπνίν απνζεθεχνληαη ηα αξρεία ηνπ θψδηθα καο. Ο θάθεινο res (εθ ηνπ resources) πεξηέρεη φια ηα αξρεία εηθφλαο, θεηκέλνπ, xml layout, θιπ ηα νπνία ρξεζηκνπνηνχληαη απφ ηηο Activities πνπ βξίζθνληαη ζηνλ θάθειν src. Φπζηθά δελ βξίζθνληαη φια ηα αξρεία πφξσλ, ζε έλαλ θάθειν, αιιά είλαη ρσξηζκέλα θαη ηαμηλνκεκέλα ζε ππνθαθέινπο αλάινγα κε ην είδνο ηνπο. Σπλεζηζκέλνη ππνθάθεινη ηνπ θχξηνπ θαθέινπ res, είλαη ν θάθεινο drawable ν νπνίνο πεξηέρεη ηα αξρεία εηθφλαο (.png,.jpg,.gif) ηα νπνία ρξεζηκνπνηεί ε εθαξκνγή καο, ν θάθεινο layout ν νπνίνο πεξηέρεη φια ηα αξρεία xml ηα νπνία νξίδνπλ ηα δηάθνξα layouts πνπ ππάξρνπλ ζηελ εθαξκνγή, θαη ηέινο ν θάθεινο values ζηνλ νπνίν απνζεθεχνληαη φινη νη πφξνη θεηκέλνπ πνπ ρξεζηκνπνηνχληαη ζηελ εθαξκνγή.

Οι ςπόλοιποι θάκελοι ηος project Έλα project απνηειείηε απφ πεξηζζφηεξνπο απφ ηνπο 3 βαζηθνχο θαθέινπο, θάπνηνη απφ ηνπο νπνίνπο κπνξεί λα ζεσξεζνχλ θαη πεξηηηνί αλαιφγσο ηελ πεξίπησζε. Σην project ινηπφλ πεξηιακβάλνληαη θαη ν θάθεινο κε ηα δηαζέζηκα APIs αλαιφγσο ηελ έθδνζε πνπ έρνπκε επηιέμεη λα δνπιέςνπκε, ν θάθεινο κε ηηο δηαζέζηκεο βηβιηνζήθεο πνπ έρνπκε εηζάγεη ζην build path ηνπ project καο, θαη επίζεο πεξηιακβάλεη θαη ηηο δηαβαζκίζεηο ηνπ θαθέινπ res, φπσο είλαη νη θάθεινη drawable-hdpi, drawable-mdpi, layout-port, menu, θιπ. Σε απηνχο πεξηιακβάλνληαη ηα εηδηθά δηακνξθσκέλα αξρεία πφξσλ πνπ έρνπκε ηνπνζεηήζεη ψζηε λα είλαη δηαζέζηκα απφ ην ιεηηνπξγηθφ ζχζηεκα, αλαιφγσο ηελ πεξίζηαζε. Γνκηθά Μέξε κηαο Δθαξκνγήο Παξαπάλσ αλαθέξακε φηη φια ηα δνκηθά κέξε ηεο εθαξκνγήο πξέπεη λα αλαθέξνληαη αλαιπηηθά ζην αξρείν AndroidManifest.xml, πηα είλαη φκσο απηά ηα δνκηθά κέξε θαη πηα ε ιεηηνπξγία ηνπ θαζελφο; Γξαζηεξηφηεηεο (Activities) Πξφθεηηαη ίζσο γηα ην θχξην δνκηθφ ζηνηρείν κηαο εθαξκνγήο. Γξαζηεξηφηεηα είλαη κηα νζφλε δηεπαθήο ρξήζηε (GUI) θαη πξνβνιήο πιεξνθνξηψλ. Κάζε εθαξκνγή έρεη ηφζεο Activities φζεο θαη νη δηαθνξεηηθέο νζφλεο νη νπνίεο εκθαλίδνληαη ζηνλ ρξήζηε. Όιεο νη δξαζηεξηφηεηεο ζπλεξγάδνληαη κεηαμχ ηνπο γηα λα δψζνπλ ζηνλ ρξήζηε κηα ζπλνιηθή εκπεηξία ρξήζεο ηεο εθαξκνγήο. Πξνζέζεηο (Intents) Οη δξαζηεξηφηεηεο επηθνηλσλνχλ θαη ελαιάζνπλ ηελ ιεηηνπξγία ηνπο κέζσ ησλ Intents. Οπζηαζηηθά ηα Intents εμαζθαιίδνπλ ηελ κεηάβαζε απφ ηελ κία δξαζηεξηφηεηα ζε κηα άιιε θαη επίζεο ρξεζηκνπνηνχληαη γηα αληαιιαγή δεδνκέλσλ. Η αληαιιαγή δεδνκέλσλ, κπνξεί λα γίλεη είηε κεηαμχ ησλ Activities κηαο εθαξκνγήο, είηε απφ ηε κία εθαξκνγή ζηελ άιιε. Παξαδείγκαηνο ράξε κπνξνχκε κέζσ ελφο Intent λα εθθηλήζνπκε έλαλ browser ψζηε λα καο αλνίμεη απεπζείαο έλα url ην νπνίν έρνπκε παξέρεη εκείο κέζσ ελφο Intent. Υπεξεζίεο (Services) Πξφθεηηαη γηα ιεηηνπξγίεο ηεο εθαξκνγήο νη νπνίεο είλαη ζρεδηαζκέλεο λα ηξέρνπλ ζην παξαζθήλην θαη λα επηζηξέθνπλ απνηειέζκαηά αθφκε θαη φηαλ ε εθαξκνγή δελ είλαη ζην πξνζθήλην. Πρ κηα εθαξκνγή media player κπνξεί κέζσ κηαο ππεξεζίαο λα ζπλερίζεη λα παίδεη κνπζηθή αθφκε θαη φηαλ ην θχξην παξάζπξν ηεο εθαξκνγήο δελ βξίζθεηαη ζην πξνζθήλην. Πάξνρνο Πεξηερφκελνπ (Content Providers) - Η αληαιιαγή δεδνκέλσλ απφ κηα εθαξκνγή ζηελ άιιε φπσο είπακε παξαπάλσ κπνξεί λα γίλεη κέζσ ελφο Intent, έλαο πάξνρνο πεξηερνκέλνπ φκσο έρεη πην ζχλζεηε ιεηηνπξγία. Οη content providers κηαο εθαξκνγήο δηαρεηξίδνληαη ζπγθεθξηκέλα δεδνκέλα ηεο εθαξκνγήο ηα νπνία έρεη νξίζεη ν πξνγξακκαηηζηήο θαηά ηελ θαηαζθεπή ηνπ. Σπλεζηζκέλα δεδνκέλα ηα νπνία κνηξάδνληαη κέζσ Content Providers, είλαη νη βάζεηο δεδνκέλσλ SQLite κηαο εθαξκνγήο, θαη νη επαθέο ηνπ ρξήζηε.

Γέθηεο Μεηάδνζεο (Broadcast Receivers) Πξφθεηηαη γηα έλα είδνπο ππεξεζία ε νπνία αληηιακβάλεηαη θάπνηα γεγνλφηα ηνπ ζπζηήκαηνο θαη αλαιακβάλεη λα ελεκεξψζεη ην ζχζηεκα ε ηηο ππφινηπεο εθαξκνγέο. Ο ζθνπφο ηνπο είλαη δηπιφο θαζφηη κπνξνχλ θαη λα ελεκεξσζνχλ γηα θάπνην ζπκβάλ απφ άιιεο εθαξκνγέο, αιιά θαη λα εηδνπνηήζνπλ ηηο ππφινηπεο εθαξκνγέο θαη ην ζχζηεκα γηα θάπνην ζπκβάλ πνπ ηηο ελεξγνπνίεζε. Γελ έρνπλ γξαθηθφ πεξηβάιινλ αιιά κπνξνχλ λα πξνβάινπλ εηδνπνίεζε ζηνλ ρξήζηε κέζσ ηεο κπάξαο εηδνπνηήζεσλ. Σπλήζσο ρξεζηκνπνηνχληαη σο δηακεζνιαβεηέο κεηαμχ ησλ Activities θαη ησλ Servηces κηαο εθαξκνγήο. Αζθάιεηα ζην Android Τε ζηηγκή πνπ κηα εθαξκνγή εγθαζίζηαηαη ζηε ζπζθεπή, ιεηηνπξγεί απνθιεηζηηθά ζην δηθφ ηεο εηθνληθή κεραλή ε νπνία απνηειεί θαη ην πιαίζην αζθαιείαο (sandbox) ηεο εθαξκνγήο. Τν Android είλαη έλα ιεηηνπξγηθφ ζχζηεκα πνιιψλ ρξεζηψλ ζην νπνίν: Η θάζε εθαξκνγή αληηκεησπίδεηαη ζαλ δηαθνξεηηθφο ρξήζηεο Απφ πξνεπηινγή ην ζχζηεκα δίλεη έλαλ κνλαδηθφ αξηζκφ ID ν νπνίνο είλαη άγλσζηνο ζηελ εθαξκνγή. Τν ζχζηεκα αλαζέηεη ζπγθεθξηκέλεο άδεηεο ρξήζεο ζηα αξρεία ηεο εθαξκνγήο, θαη κφλν ε εθαξκνγή κε ην ζσζηφ ID κπνξεί λα έρεη πξφζβαζε ζε απηά. Κάζε εθαξκνγή ηξέρεη ζηελ δηθή ηεο εηθνληθή κεραλή (VM) απνκνλσκέλε απφ ηηο ππφινηπεο εθαξκνγέο. Η θάζε VM εθθηλείηε κφιηο δεηεζεί απφ ην ζχζηεκα θαη θιείλεη είηε επεηδή δελ ρξεζηκνπνηείηε πιένλ, είηε επεηδή ην ζχζηεκα ζέιεη λα ειεπζεξψζεη ηνπο πφξνπο ηεο κλήκεο γηα ρξήζε απφ άιιε εθαξκνγή. Με απηφ ηνλ ηξφπν ην Android ρξεζηκνπνηεί ηελ αξρή ησλ ειαρίζησλ δηθαησκάησλ. Η θάζε εθαξκνγή έρεη πξφζβαζε κέζσ ηνπ AndroidManifest κφλν ζε φζνπο πφξνπο ζπζηήκαηνο ρξεηάδεηαη θαη θαλέλαλ πεξηζζφηεξν. Οη πφξνη θαη ηα δηθαηψκαηα πνπ απαηηνχληαη απφ κία εθαξκνγή γίλνληαη γλσζηά ζηνλ ρξήζηε ηε ζηηγκή ηεο εγθαηάζηαζεο ηεο, θαη ν ρξήζηεο κπνξεί λα επηιέμεη λα κελ εγθαηαζηήζεη κηα εθαξκνγή εθφζνλ δελ ζπκθσλεί λα ηηο παξέρεη πξφζβαζε ζηνπο πφξνπο πνπ δεηάεη. Αλάπηπμε Δθαξκνγώλ ζην Android Κύκλορ Ανάπηςξηρ Δθαπμογήρ Η αλάπηπμε εθαξκνγψλ ζην Android είλαη κηα ζχλζεηε θαη ρξνλνβφξα δηαδηθαζία ε νπνία ζπλνςίδεηαη ζε 4 βαζηθά ζηάδηα, αιιά θαη αξθεηά επί κέξνπο, ηα νπνία ζα ζρνιηαζηνχλ κεηαμχ ησλ βαζηθψλ.

Δγκαηάζηαζη Λογιζμικού Σην πξψην ζηάδην ηεο αλάπηπμεο ν πξνγξακκαηηζηήο θαιείηε λα ζηήζεη ην πεξηβάιινλ εξγαζίαο ζην νπνίν ζα γίλεη ν ζρεδηαζκφο, ε αλάπηπμε, ν έιεγρνο, θαη ε ιεηηνπξγία ησλ εθαξκνγψλ. Μπνξεί λα επηιέμεη φπνην πεξηβάιινλ αλάπηπμεο (IDE) ηνλ εμππεξεηεί θαιχηεξα θαη λα ρξεζηκνπνηήζεη φια ηα εξγαιεία ηνπ Android SDK κεδελφο εμαηξνπκέλνπ. Σηε ζπλέρεηα ζα πξέπεη λα δεκηνπξγήζεη έλαλ αξηζκφ απφ εηθνληθέο ζπζθεπέο ζηελ δηαρείξηζε εηθνληθψλ ζπζθεπψλ (AVD) γηα λα δνθηκάζεη ηελ ιεηηνπξγία ηεο εθαξκνγήο ζε δηαθνξεηηθέο πξαγκαηηθέο ζπλζήθεο ιεηηνπξγίαο. Ιδαληθά ν developer ζα δηαζέηεη έλαλ αξηζκφ δηαθνξεηηθψλ θπζηθψλ ζπζθεπψλ ψζηε λα δνθηκάζεη ν ίδηνο πσο ζπκπεξηθέξεηαη ε εθαξκνγή ηνπ ζε θάζε πεξίπησζε, φκσο απηή ε πξαθηηθή κπνξεί λα απνδεηρζεί πνιπδάπαλε θαη ρξνλνβφξα. Δδψ αλαιακβάλνπλ δξάζε ε επειημία ησλ AVDs, γηα ηηο νπνίεο ζα γξάςνπκε πεξηζζφηεξα παξαθάησ. Ανάπηςξη Πηγαίος Κώδικα Δθαπμογήρ Πξφθεηηαη αλ κε ηη άιιν γηα ηε πην ρξνλνβφξα θαη πνιχπινθε δηαδηθαζία. Σε απηφ ην ζηάδην ν πξνγξακκαηηζηήο πξέπεη λα απνθαζίζεη γηα ηηο δπλαηφηεηεο θαη ην πεξηερφκελν πνπ ζα πεξηιακβάλεη ε εθαξκνγή, λα εληνπίζεη πνηεο απφ απηέο ηηο δπλαηφηεηεο είλαη εθηθηέο θαη πνηεο ζέινπλ παξαπάλσ έξεπλα γηα λα πξνζηεζνχλ ζην κέιινλ, λα ζρεδηάζεη ην layout κε γλψκνλα ηελ ιεηηνπξγηθφηεηα θαη λα απνθχγεη ππεξβνιέο ζην ζρεδηαζκφ, θαη ηέινο λα δέζεη αξκνληθά ηνλ θψδηθα κε ην layout γηα λα θέξεη ην ηειηθφ απνηέιεζκα. Η δηαδηθαζία μεθηλάεη κε έλα λέν Project ην νπνίν ζα πεξηέρεη ηνλ πεγαίν θψδηθα, ηηο εηθφλεο, ηα θείκελα θαη γεληθά φηη ρξεηάδεηαη ε εθαξκνγή γηα λα ηξέμεη σο νθείιεη. Σην project ηνπ ν developer ζα πξέπεη λα θξνληίζεη ψζηε ην πιηθφ ηνπ λα είλαη ηαθηνπνηεκέλν θαη ν θψδηθαο ηνπ επαλάγλσζηνο ψζηε λα αθνινπζήζεη ε δηαδηθαζία ηνπ Debugging.

Αποζθαλμάηωζη (Debugging) και Γοκιμαζηική Φάζη Δθαπμογήρ Η δηαδηθαζία ηνπ debugging είλαη εμίζνπ θξίζηκε θαη κεξηθέο θνξέο θαη εμίζνπ ρξνλνβφξα κε ηελ δηαδηθαζία αλάπηπμεο ηνπ πεγαίνπ θψδηθα ηεο εθαξκνγήο. Απνηειείηε απφ αξθεηά επί κέξνπο ζηάδηα ηα νπνία αλαιχνληαη παξαθάησ. Τν πξψην ζηάδην αθνξά ην αξρηθφ ρηίζηκν ηεο εθαξκνγήο θαη ε ιεηηνπξγία απηήο ζε debug mode. Γηα λα γίλεη ην compile ηεο εθαξκνγήο θπζηθά ηα πεξηζζφηεξα πεξηβάιινληα αλάπηπμεο (IDE) πξνυπνζέηνπλ φηη ν θψδηθαο δελ έρεη θαλέλα ζπληαθηηθφ ιάζνο, αιιηψο εηδνπνηνχλ ηνλ ρξήζηε λα ηα δηνξζψζεη. Αθνχ γίλεη ην compile ε εθαξκνγή κπνξεί λα δνθηκαζηεί είηε ζε εηθνληθή ζπζθεπή κέζσ ηνπ AVD Manager, είηε απεπζείαο ζε θπζηθή ζπζθεπή κέζσ ADB push εληνιήο. Γηα ην ADB ζα κηιήζνπκε εθηελψο παξαθάησ. Σην δεχηεξν ζηάδην ν πξνγξακκαηηζηήο θαιείηε λα αληηκεησπίζεη ηα ιεηηνπξγηθά θαη αηζζεηηθά πξνβιήκαηα ηεο εθαξκνγήο ηνπ, πξψηα εληνπίδνληαο ηα ζηελ ιεηηνπξγία ηεο ζπζθεπήο θαη κεηά δηνξζψλνληαο ηα θνκκάηηα ηνπ θψδηθα πνπ δεκηνπξγνχλ ηα ζθάικαηα. Τν θχξην εξγαιείν πνπ θάλεη απηή ηε δηαδηθαζία εθηθηή είλαη ην LogCat ην νπνίν καο επηζηξέθεη ην stack trace ηνπ θψδηθα ζην ζεκείν εθείλν πνπ ζπλέβε ην ζθάικα. Υπάξρνπλ θπζηθά θαη άιια εξγαιεία ηα νπνία ζα αλαιπζνχλ εθηελψο παξαθάησ. Σην ηξίην ζηάδην ν πξνγξακκαηηζηήο αθνχ έρεη ηειεηψζεη ηελ απνζθαικάησζε (debugging) επηζηξέθεη ζην βήκα έλα, δειαδή ζην compile θαη ηε δνθηκή ηεο εθαξκνγήο ζε εηθνληθή ε θπζηθή ζπζθεπή ψζηε λα δηαπηζηψζεη ηα απνηειέζκαηα ηνπ 2 βήκαηνο, ηεο απνζθαικάησζεο. Έλα πξναηξεηηθφ ζηάδην είλαη ε Γεκφζηα δνθηκαζηηθή θάζε ηεο εθαξκνγήο. Σε απηή ηε θάζε εζεινληέο πξνζθέξνληαη λα δνθηκάζνπλ ηηο ιεηηνπξγίεο ηεο εθαξκνγήο ζηηο ζπζθεπέο ηνπο θαη λα αλαθέξνπλ πξνβιήκαηα, παξαηεξήζεηο, πξνηάζεηο θαη άιια ζρφιηα πνπ κπνξεί πξνθχςνπλ απφ ηε ρξήζε ηεο εθαξκνγήο. Φπζηθά ε δηαδηθαζία ηνπ debugging είλαη ζαλ έλα βξφγρνο (loop) πνπ επαλαιακβάλεηαη ζπλέρεηα κέρξη λα εληνπηζηνχλ θαη λα δηνξζσζνχλ φια ηα ζθάικαηα ηεο εθαξκνγήο, θαη γηα απηφ ην ιφγν κπνξεί λα απνδεηρζεί εμαηξεηηθά ρξνλνβφξα.

Τελική έκδοζη και δημοζίεςζη ηηρ εθαπμογήρ ζηο κοινό Σην ηέηαξην θαη ηειεπηαίν ζηάδην ηεο αλάπηπμεο ν πξνγξακκαηηζηήο έρεη λα θάλεη κεξηθέο ηειεπηαίεο θηλήζεηο. Πξψηνλ πξέπεη λα έρεη δηνξζψζεη φια ηα ζθάικαηα πνπ πξνέθπςαλ απφ ηελ δηαδηθαζία απνζθαικάησζεο, λα θάλεη ηηο ηειεπηαίεο ξπζκίζεηο θαη tweaks ηεο εθαξκνγήο, θαη λα θάλεη ην ηειηθφ compile ηεο εθαξκνγήο ζε θαλνληθή ιεηηνπξγία απηή ηε θνξά θαη φρη debug. Σηε ζπλέρεηα αθνινπζεί ε δηάζεζε ηεο εθαξκνγήο κε ην κέζν ηεο επηινγήο ηνπ developer. Μπνξεί λα ηελ δηαζέζεη ζην Google Play, αθνχ πξψηα θάλεη ινγαξηαζκφ developer, ή λα ηελ δηαζέζεη ζε θάπνην ελαιιαθηηθφ market φπσο ην marketplace ηεο Amazon. Μπνξεί θαηά ηε δεκνζίεπζε ζε νπνηνδήπνηε λα νξίζεη ηηκή πψιεζεο ή λα δηαζέζεη ηελ εθαξκνγή δσξεάλ. Τε ζηηγκή πνπ γξάθνληαη απηέο νη γξακκέο δελ είλαη εθηθηφ αθφκε γηα ηνπο Έιιελεο Developers λα δηαζέζνπλ εθαξκνγέο επί πιεξσκή, κε ηελ Google λα κελ έρεη αλαθνηλψζεη αθφκε πφηε απηφ ζα γίλεη εθηθηφ. Δπίζεο άιιν έλα κέζν δηάζεζεο κπνξεί λα είλαη ε πξνζσπηθή ε εηαηξηθή ηζηνζειίδα ηνπ δεκηνπξγνχ. Τν κεηνλέθηεκα θπζηθά ζε απηή ηε πεξίπησζε είλαη ε έιιεηςε ειέγρνπ γηα updates ηεο εθαξκνγήο απφ έλαλ απηφκαην κεραληζκφ ειέγρνπ θαη ιήςεο φπσο είλαη ηα δηάθνξα marketplaces.

Android SDK To Android SDK (Software Developers Kit) απνηειεί κηα ζπιινγή εξγαιείσλ θαη βηβιηνζεθψλ πνπ θαζηζηνχλ εθηθηή ηελ αλάπηπμε εθαξκνγψλ ζην Android. Τη ζηηγκή πνπ γξάθνληαη απηέο νη γξακκέο, ην SDK έρεη θηάζεη ζηελ έθδνζε r21 ε νπνία ππνζηεξίδεη ην Android 4.2.2. To ινγηζκηθφ αλάπηπμεο ινηπφλ πεξηιακβάλεη κηα κεγάιε ιίζηα κε εξγαιεία αλάπηπμεο. Σε απηά πεξηιακβάλνληαη: Δξγαιεία Debugging ησλ εθαξκνγψλ Βηβιηνζήθεο Δμνκνησηήο ζπζθεπψλ (Android Virtual Machines) Documentation Γείγκαηα Κψδηθα Tutorials Τν SDK ππνζηεξίδεη πνιιά δεκνθηιή ιεηηνπξγηθά ζπζηήκαηα ζπκπεξηιακβαλνκέλσλ φισλ ησλ ζχγρξνλσλ δηαλνκψλ Linux, ην MAC OS X 10.4.9 θαη κεηαγελέζηεξα, θαη ηα Windows XP θαη ηηο κεηαγελέζηεξεο εθδφζεηο. Τν ινγηζκηθφ αλάπηπμεο απνηειείηε απφ παθέηα ηα νπνία βξίζθνληαη απνζεθεπκέλα ζε έλα επίζεκν repo ηεο Google, θαη ν πξνγξακκαηηζηήο κπνξεί λα θαηεβάζεη πέξαλ ησλ βαζηθψλ παθέησλ, θαη άιια ηα νπνία ππνζηεξίδνπλ παιαηφηεξεο εθδφζεηο ηνπ Android, ή άιιεο ζπζθεπέο εθηφο θηλεηψλ ζπζθεπψλ (πρ Google TV Addon). Όζνλ αθνξά ηελ ππνζηήξημε παιαηφηεξσλ εθδφζεσλ ηνπ Android, ην SDK θάλεη εθηθηή ηελ ππνζηήξημε ζε απηέο δίλνληαο ζηνλ πξνγξακκαηηζηή ηελ δπλαηφηεηα λα ζηνρεχζεη απηφο ζε πηα APIs ζα απεπζχλεηαη ε εθαξκνγή ηνπ. Απηφ είλαη αλαγθαίν ιφγσ ηνπ φηη πνιινί ρξήζηεο έρνπλ παιαηφηεξεο ιεηηνπξγηθέο ζπζθεπέο νη νπνίεο

θπθινθνξήζαλ κε παιαηφηεξεο εθδφζεηο ηνπ Android (πρ 1.6 ή 2.1), θαη ν θαηαζθεπαζηήο ηεο ζπζθεπήο δελ έρεη ή δελ πξφθεηηαη λα βγάιεη αλαβάζκηζε γηα ηελ ζπζθεπή ηνπο. Τν πξφβιεκα απηφ είλαη γλσζηφ ζαλ δηάζπαζε ηνπ Android (Android Fragmentation) θαη ζα αλαιπζεί εθηελψο παξαθάησ. Υξήζε ηνπ Eclipse IDE καδί κε ην ADT (Android Development Tools) Ο πξνγξακκαηηζκφο ζην Android βαζίδεηαη ζηελ γιψζζα Java θαη ν θάζε πξνγξακκαηηζηήο κπνξεί λα ρξεζηκνπνηήζεη έλαλ νπνηνλδήπνηε text editor γηα λα γξάςεη θψδηθα γηα λα επεμεξγαζηεί ηα αξρεία *.Java θαη *.XML θαη κεηέπεηηα λα ηα θάλεη compile κέζσ γξακκήο εληνιψλ ρξεζηκνπνηψληαο ην JDK (Java Development Kit). Ο ζπγθεθξηκέλνο ηξφπνο αλάπηπμεο δελ είλαη ηδηαίηεξα θηιηθφο ζηνλ ρξήζηε γη απηφ ζπλίζηαηαη ε ρξήζε ελφο IDE (Integrated Development Environment) πνπ λα ππνζηεξίδεη Java, φπσο ην Eclipse ή ην Netbeans. H Google ππνζηεξίδεη επίζεκα ην Eclipse θαη έρεη αλαπηχμεη εηδηθά γηα απηφ ην ADT plugin, ην νπνίν παξέρεη ζχλδεζε κε ην Android SDK κε φιεο ηηο δπλαηφηεηεο πνπ πεξηιακβάλεη απηφ. Δπίζεο ην plugin παξέρεη ζχλδεζε κε ηνλ AVD Manager, γηα δηαρείξηζε θαη εθθίλεζε απφ ην GUI ηνπ, εηθνληθψλ ζπζθεπψλ Android γηα δνθηκέο θαη debugging ησλ εθαξκνγψλ. Φπζηθά φπσο είπακε θαη παξαπάλσ, ν θάζε πξνγξακκαηηζηήο κπνξεί λα ρξεζηκνπνηήζεη ηνλ Text Editor ή IDE ηεο επηινγήο ηνπ γηα ηε δεκηνπξγία ηνπ θψδηθα θαη κεηέπεηηα λα ρξεζηκνπνηήζεη ηα εξγαιεία JDK θαη Apache Ant κέζσ γξακκήο εληνιψλ γηα λα θάλεη compile ηελ εθαξκνγή ηνπ ψζηε λα ηελ ηεζηάξεη κε φιεο ηηο δπλαηφηεηεο πνπ ηνπ παξέρεη ην Android SDK. Η επηινγή ελφο IDE πνπ θάλεη φιε ηελ πνιχπινθε δνπιεία γηα καο είλαη πξνθαλήο ινηπφλ. Δπίζεο ηα πεξηζζφηεξα παξαδείγκαηα θαη άξζξα γηα ην Android ζηεξίδνληαη ζην γεγνλφο φηη ε πιεηνλφηεηα ησλ developers ρξεζηκνπνηεί ην Eclipse καδί κε ην ADT plugin νπφηε μεθηλάλε κε απηφ ζαλ δεδνκέλν.

Η πιαηθόξκα αλάπηπμεο Eclipse.[1][2] Η αλαπηπμηαθή πιαηθφξκα Eclipse είλαη έλα πεξηβάιινλ αλάπηπμεο ινγηζκηθνχ δηαθφξσλ γισζζψλ πξνγξακκαηηζκνχ. Καηά θχξην ιφγσ είλαη αλεπηπγκέλν κε ρξήζε ηεο γιψζζαο πξνγξακκαηηζκνχ JAVA.Μπνξεί λα ρξεζηκνπνηεζεί γηα ηελ αλάπηπμε εθαξκνγψλ ζε JAVA, ελψ κε ηελ βνήζεηα δηαθφξσλ πξνζζέησλ πνπ παξέρεη είλαη δπλαηή ε αλάπηπμε εθαξκνγψλ ζε γιψζζα Ada, C, C++, COBOL, Fortran, Haskell, Perl, PHP, Python, R, Ruby, Scala, Clojure, Groovy, Scheme, and Erlang. Μπνξεί επίζεο λα ρξεζηκνπνηεζεί γηα ηελ αλάπηπμε παθέησλ γηα ην ινγηζκηθφ Mathematica. Η πιαηθφξκα Eclipse είλαη δνκεκέλε ζε δηάθνξα ππνζπζηήκαηα ηα νπνία εθαξκφδνληαη ζε κία ή πεξηζζφηεξεο επεθηάζεηο ηεο. Απηά ηα ππνζπζηήκαηα έρνπλ θαηαζθεπαζηεί ζηελ θνξπθή κίαο κηθξήο κεραλήο εθηέιεζεο. Τν παξαθάησ ζρήκα απεηθνλίδεη κία απινπνηεκέλε άπνςε απηήο. Έλα νπνηνδήπνηε πξντφλ βαζηζκέλν ζην Eclipse δνκείηαη ζαλ κία ζπιινγή απφ πξφζζεηα (plug-ins). Κάζε πξφζζεην πεξηέρεη ηνλ θψδηθά ν νπνίνο παξέρεη θάπνηεο απφ ηηο ιεηηνπξγίεο ηνπ πξντφληνο. Ο θψδηθαο θαη άιια αξρεία γηα ην πξφζζεην είλαη εγθαηεζηεκέλα ζηνλ ηνπηθφ ππνινγηζηή θαη ελεξγνπνηνχληαη απηφκαηα φηαλ ρξεηάδεηαη. Τα πξφζζεηα ελφο πξντφληνο είλαη θαηεγνξηνπνηεκέλα κέζα ζηα ραξαθηεξηζηηθά ηνπ πξντφληνο. Έλα ραξαθηεξηζηηθφ είλαη κία κνλάδα απφ κία μερσξηζηή ιεηηνπξγία.

Η ζεκειηψδεο ηξνπνπνηήζηκε θχζε ηεο πιαηθφξκαο Eclipse θαζηζηά επθνιφηεξε ηελ εγθαηάζηαζε πξφζζεησλ ραξαθηεξηζηηθψλ θαη πξνζζέησλ κέζα ζην πξντφλ πνπ βαζίδεηαη ζην Eclipse θαζψο θαη ηελ αλαβάζκηζε ησλ ήδε ππαξρφλησλ ραξαθηεξηζηηθψλ θαη πξνζζέησλ. Απηφ κπνξεί λα γίλεη εθηθηφ απφ ηελ πιαηθφξκα εγθαηάζηαζεο θαη αλαβάζκηζεο πνπ ππάξρεη ζην κελνχ «Βνήζεηα». Τν Eclipse επηηξέπεη ηελ αλεχξεζε, ηε κεηαθφξησζε θαη ηελ εγθαηάζηαζε λέσλ ραξαθηεξηζηηθψλ θαη πξνζζέησλ απφ κία εηδηθή δηαδηθηπαθή βάζε πνπ πεξηέρεη φιεο ηηο ηζηνζειίδεο κε πξνγξάκκαηα πνπ βαζίδνληαη ζε απηή ηελ πιαηθφξκα. Τα κεγάια πξντφληα πνπ βαζίδνληαη ζην Eclipse κπνξνχλ λα νξγαλψλνπλ ηα ραξαθηεξηζηηθά ηνπο ζε δέληξα μεθηλψληαο απφ ην ραξαθηεξηζηηθφ root ην νπνίν πεξηγξάθεη νιφθιεξν ην πξντφλ. Απηφ ην ραξαθηεξηζηηθφ πεξηέρεη κηθξφηεξα ηκήκαηα ησλ ιεηηνπξγηψλ. Η δπλαηφηεηα λα θαηεγνξηνπνηνχληαη ηα ραξαθηεξηζηηθά ηεξαξρηθά επηηξέπεη ζηα πξντφληα λα είλαη δνκεκέλα σο εμήο, έλα κεγαιχηεξν πξντφλ ρηίδεηαη πάλσ ζε έλα κηθξφηεξν, ελζσκαηψλνληαο πεξηζζφηεξεο ιεηηνπξγίεο. Μεξηθά ελζσκαησκέλα ραξαθηεξηζηηθά ηεο πιαηθφξκαο κπνξεί λα είλαη ρξήζηκα πξφζζεηα αιιά λα κελ είλαη απαξαίηεηα γηα ηε ιεηηνπξγία ηνπ πξντφληνο. Οη παξνρείο ησλ πξντφλησλ θάλνπλ κία δεχηεξε θαηεγνξηνπνίεζε ησλ πξφζζεησλ ζαλ απαξαίηεηα θαη πξναηξεηηθά. Τα πξναηξεηηθά δελ είλαη απαξαίηεηα γηα ηελ εγθαηάζηαζε ηνπ πξντφληνο θαη επίζεο κπνξνχλ λα εγθαηαζηαζνχλ αξγφηεξα αθνχ ην βαζηθφ ηκήκα ηνπ πξντφληνο είλαη ήδε εγθαηεζηεκέλν.

Πεπιβάλλον Δπγαζίαρ (Workbench) Ο φξνο Workbench αλαθέξεηαη ζην πεξηβάιινλ αλάπηπμεο. Τν πεξηβάιινλ απηφ απνζθνπεί λα επηηχρεη ηελ απξφζθνπηε ελζσκάησζε ησλ δηαθφξσλ εξγαιείσλ θαη ην ειεγρφκελν άλνηγκά ηνπο πξνζθέξνληαο έλα θνηλφ πξφηππν γηα ηε δεκηνπξγία, ηνλ έιεγρν θαη ηελ πεξηήγεζε ζηα δεδνκέλα ηνπ ρψξνπ εξγαζίαο. Κάζε παξάζπξν ηνπ πεξηβάιινληνο απηνχ πεξηέρεη κία ή θαη πεξηζζφηεξεο πξννπηηθέο. Κάζε πξννπηηθή πεξηέρεη δηάθνξεο πξνβνιέο, επεμεξγαζηέο γηα ηνπο δηάθνξνπο ηχπνπο αξρείσλ θαη έρεη ηε δπλαηφηεηα λα ειέγρεη ηί ζα εκθαλίδεηαη ζηηο γξακκέο εξγαιείσλ θαη ζηα δηάθνξα κελνχ.

Βαζικόρ οδηγόρ σπήζηρ ηος λογιζμικού Eclipse Σ απηφ ην ζεκείν παξαηίζεηαη έλαο ζπλνπηηθφο νδεγφο, γηα ηελ εμνηθείσζε ηνπ ρξήζηε κε ηα δηάθνξα ζηνηρεία ηνπ πεξηβάιινληνο εξγαζίαο. Γεληθά ην πεξηβάιινλ εξγαζίαο πεξηέρεη: 1) Γηάθνξεο Πξννπηηθέο

Μία πξννπηηθή είλαη έλα ζχλνιν πξνβνιψλ θαη επεμεξγαζηψλ ζε έλα παξάζπξν ηνπ πεξηβάιινληνο εξγαζίαο. Μία πξνβνιή ή θαη πεξηζζφηεξεο κπνξνχλ λα πεξηέρνληαη ζε έλα πεξηβάιινλ εξγαζίαο. Κάζε πξννπηηθή πεξηέρεη κία ή πεξηζζφηεξεο πξνβνιέο θαζψο επίζεο έλαλ ή πεξηζζφηεξνπο επεμεξγαζηέο. Μέζα ζην ίδην παξάζπξν κπνξνχλ λα ππάξρνπλ δηαθνξεηηθά παθέηα πξνβνιψλ αιιά φιεο νη πξννπηηθέο κνηξάδνληαη ην ίδην παθέην επεμεξγαζηψλ. 2) Γηάθνξεο Πξνβνιέο Μία πξνβνιή είλαη έλα νπηηθά ζηνηρείν κέζα ζην πεξηβάιινλ εξγαζίαο. Απηέο ζπλήζσο ρξεζηκνπνηνχληαη είηε γηα λα κπνξεί ν ρξήζηεο λα πεξηεγεζεί ζηηο δηάθνξεο πιεξνθνξίεο ηνπ πεξηβάιινληνο εξγαζίαο, φπσο είλαη νη πεγέο πνπ ρξεζηκνπνηνχληαη ζην ζπγθεθξηκέλν πεξηβάιινλ εξγαζίαο είηε γηα λα απεηθνλίζεη ηηο ηδηφηεηεο ηνπ ελεξγνχ επεμεξγαζηή. Κάζε αιιαγή πνπ πξαγκαηνπνηείηε ζηελ πξνβνιή απνζεθεχεηαη άκεζα. 3) Δπεμεξγαζηέο γηα ηνπο δηάθνξνπο ηύπνπο αξρείσλ. Έλαο επεμεξγαζηήο είλαη έλα νπηηθφ ζηνηρείν ζην πεξηβάιινλ εξγαζίαο. Απηφο ζπλήζσο ρξεζηκνπνηείηε είηε γηα ηελ επεμεξγαζία κηαο πεγήο είηε γηα ηελ εκθάληζή ηεο. Η νπηηθή παξνπζίαζε κπνξεί λα είλαη είηε κε ηε κνξθή θεηκέλνπ είηε κε ηε κνξθή δηαγξάκκαηνο. Έλα παξάδεηγκα ησλ δχν απηψλ εηδψλ επεμεξγαζηψλ είλαη ην παξαθάησ.

Δγθαηάζηαζε ηνπ Android SDK Μεηαθόξησζε ηνπ πξόζζεηνπ ADT Γηα ηελ εγθαηάζηαζε απηνχ ηνπ πξφζζεηνπ αθνινπζνχκε ηα παξαθάησ βήκαηα: o Σηε γξακκή κελνχ ηνπ Eclipse αλνίγνπκε ην κελνχ Βνήζεηα θαη επηιέγνπκε ην «Δγθαηάζηαζε λένπ ινγηζκηθνχ» o Σην παξάζπξν πνπ εκθαλίδεηαη επηιέγνπκε ην «Πξνζζήθε»(Add) o Με ην πάηεκα ηνπ Add εκθαλίδεηαη ην παξαθάησ παξάζπξν:

o Πιεθηξνινγνχκε γηα φλνκα, ην «ADT Plugin» θαη ζην πεδίν «Γηεχζπλζε» (Location) πιεθηξνινγνχκε https://dl-ssl.google.com/android/eclipse/ Καη παηάκε ΟΚ. o Έπεηηα παηάκε ην Next. o Σην λέν παξάζπξν πνπ εκθαλίδεηαη ππάξρεη ιίζηα κε φια ηα εξγαιεία πνπ είλαη γηα κεηαθφξησζε θαη εγθαηάζηαζε. o Απνδερφκαζηε εάλ ζπκθσλνχκε ηελ άδεηα ρξήζεο, θαη παηάκε Τέινο. Όηαλ ηειεηψζεη ε εγθαηάζηαζε, ην Eclipse επαλεθθηλεί απηφκαηα.

Σξνπνπνίεζε ηνπ ADT Plugin Μεηά ηελ επαλεθθίλεζε ηνπ Eclipse πξέπεη λα θαζνξηζηεί ε αθξηβήο ηνπνζεζία ηνπ Android SDK. Γηα λα γίλεη απηό: 1. Σην παξάζπξν πνπ εκθαλίδεηαη κε ηίηιν «Welcome to Android Development» επηιέγνπκε ην «Use existing SDKs 2. Έπεηηα βξίζθνπκε θαη επηιέγνπκε ηελ αθξηβή ηνπνζεζία ηνπ Android SDK πνπ πξφζθαηα έρνπκε εγθαηαζηήζεη. Καη παηάκε ην «Next» ü Σώξα ην Eclipse είλαη έηνηκν γηα αλάπηπμε εθαξκνγώλ Android.

Έρνπκε ηε δπλαηφηεηα λα πξνζζέζνπκε λέα εξγαιεία αλαβαζκίδνληαο ηελ πιαηθφξκα ηνπ SDK θαζψο επίζεο θαη λα πξνζζέζνπκε λέεο πιαηθφξκεο Android. Δπηιέγνληαο απφ ηε γξακκή κελνχ ην «Window» θαη έπεηηα ην «Android SDK Manager» κπνξνχκε λα εγθαηαζηήζνπκε νηηδήπνηε είλαη δηαζέζηκν γηα ηελ αλάπηπμε εθαξκνγψλ. Δπίζεο ζα πξέπεη λα αλαθεξζεί φηη ην Android SDK πξνζζέηεη έλα αθφκα δηαζέζηκν εξγαιείν γηα ηνλ πξνγξακκαηηζηή, πνπ είλαη έλαο πξνζνκνησηήο θηλεηνχ ηειεθψλνπ ή tablet pc. Τα δε ραξαθηεξηζηηθά απηνχ, φπσο είλαη ε εζσηεξηθή ηνπ

κλήκε, ε κλήκε SD, ε έθδνζε ηνπ android πνπ είλαη εγθαηεζηεκέλε ζηνλ πξνζνκνησηή είλαη πιήξσο παξακεηξνπνηήζηκα απφ ηνλ πξνγξακκαηηζηή. Γεκηνπξγία ελόο Android Project

Σε απηή ηελ ελφηεηα θαηαγξάθνληαη ηα βαζηθά βήκαηα γηα ηελ δεκηνπξγία ελφο Android Project. Υπάξρνπλ πνιινί ηξφπνη λα δεκηνπξγήζεη θαλείο έλα ηέηνην project, έρεη επηιερζεί ε παξνπζίαζε ηεο δεκηνπξγίαο κίαο ηέηνηαο εξγαζίαο κε ηε ρξήζε ηεο γξακκήο κελνχ κηαο θαη απηφο είλαη ν πην δηαδεδνκέλνο ηξφπνο. 1. Δπηιέγνπκε ζηελ γξακκή κελνχ ηελ επηινγή File > New > Project. Δκθαλίδεηαη ην παξαθάησ παξάζπξν. 2. Δπηιέγνπκε Android > Android Application Project. Τφηε εκθαλίδεηαη έλα άιιν παξάζπξν ην νπνίν δεηάεη νξηζκέλεο πιεξνθνξίεο γηα ην project πνπ ζέινπκε λα δεκηνπξγήζνπκε. Όπσο ην φλνκά ηεο εθαξκνγήο, ην φλνκα ηνπ project

θαζψο θαη απαηηεί λα νξηζηνχλ ζπγθεθξηκέλεο πιεξνθνξίεο γηα ηε ζπκβαηφηεηα ηεο εθαξκνγήο γηα ηηο δηάθνξεο εθδφζεηο ηνπ ιεηηνπξγηθνχ Android. Αθνχ πξψηα εηζάγνπκε φιεο ηηο απαξαίηεηεο πιεξνθνξίεο. Δπηιέγνπκε ην «Next» 3. Σην ζεκείν απηφ επηιέγεηαη ην εηθνλίδην πνπ ζα έρεη ε εθαξκνγή. Η επηινγή κπνξεί λα γίλεη κεηαμχ ελζσκαησκέλσλ εηθνληδίσλ, αξρείσλ εηθφλαο πνπ ν πξνγξακκαηηζηήο θαηέρεη θαη θεηκέλνπ. Μεηά ηελ επηινγή ηνπ εηθνληδίνπ επηιέγνπκε ην «Next».

4. Έπεηηα επηιέγεηαη ε κνξθνινγία ηεο εθαξκνγήο. Σηελ παξαθάησ εηθφλα παξνπζηάδεηαη έλα ηέηνην παξάζπξν ην νπνίν πεξηέρεη 5 είδε κνξθνινγηψλ. Θα πξέπεη λα ηνληζηεί ζε απηφ ην ζεκείν φηη νη δηαζέζηκεο κνξθνινγίεο δηαθέξνπλ αλάινγα κε ην πνηα εξγαιεία ηνπ Android SDK είλαη εγθαηεζηεκέλα ζηνλ ππνινγηζηή πνπ ζα πξαγκαηνπνηεζεί ε αλάπηπμε ηεο εθαξκνγήο.

Δπηιέγνληαο ηελ επηινγή «Next», ν νδεγφο δεκηνπξγίαο ελφο Android Project θηάλεη ζηελ ηειηθή θάζε. 5. Σηε θάζε απηή δεηείηαη ε εηζαγσγή ηνπ νλφκαηνο ηεο βαζηθήο θιάζεο ηεο εθαξκνγήο. Καζψο θαη ην φλνκα ηνπ αξρείνπ πνπ ζα πεξηέρεη ην γξαθηθφ πεξηβάιινλ ηεο εθαξκνγήο. Πξέπεη λα ζεκεησζεί φηη ην φλνκα ηεο εθαξκνγήο πξέπεη λα έρεη ηνπιάρηζηνλ ην πξψην γξάκκα θεθαιαίν, δηαθνξεηηθά δελ γίλεηαη απνδεθηφ.

6. Δπηιέγνληαο ην «Finish» νινθιεξψλεηαη ε δηαδηθαζία δεκηνπξγίαο ηνπ Android Project θαη ην πξφγξακκα εκθαλίδεη ην παξαθάησ παξάζπξν.

Κεθάιαην 3 Αλάπηπμε εθαξκνγήο Android γηα γηα ηε κέηξεζε ησλ ρηύπσλ ηεο θαξδίαο Αιγόξηζκνο Θα αλαιχζνπκε ηψξα ηνλ γεληθφ ηξφπν ζθέςεο κε ηνλ νπνίν πξνζεγγίζηεθε ην πξφβιεκα πινπνίεζεο ηεο εθαξκνγήο γηα ηε κέηξεζε ησλ ρηχπσλ ηεο θαξδηάο. Βήμα 1 Βήμα 2 Αθνινπζνχλ ηα βήκαηα απηνχ ηνπ αιγνξίζκνπ. Αλακεηάδνζε ηεο εηθφλαο ηεο θάκεξαο, ζηελ νζφλε. Λακβάλνπκε ηηο παξακέηξνπο ηεο θάκεξαο (δηαζηάζεηο εηθφλαο) πξνθεηκέλνπ λα κπνξέζνπκε λα θάλνπκε ηελ απαηηνχκελε επεμεξγαζία ζηα frames, ηα απνηειέζκαηα ηεο νπνίαο ζα ρξεζηκνπνηεζνχλ ζηνπο ππνινγηζκνχο πνπ ζα δνχκε παξαθάησ. Βήμα 3 Δπεμεξγαζία ησλ frames πνπ πξνβάιινληαη ζηελ νζφλε. πξνθεηκέλνπ λα καο επηζηξαθεί ν κέζνο φξνο θφθθηλνπ αλά δεδνκέλε ζηηγκή γηα λα γίλεη ρξήζε ηνπ αξγφηεξα. Βήμα 3.1 Βξίζθνπκε ηνλ κέζν φξν θφθθηλνπ πνπ πεξηέρεηαη ζε θάζε frame κε ρξήζε ηνπ format YUV420 κέζσ ηνπ νπνίνπ αλαιχεηαη ε εθάζηνηε εηθφλα ζε rgb ζεηξά bytes. Δκείο επηθεληξσλφκαζηε ζην θαλάιη r (red). Βήμα 3.2 Αθνχ βξνχκε ην άζξνηζκα θφθθηλνπ νιφθιεξεο ηεο πξνβαιιφκελεο εηθφλαο αλαιχνληαο θάζε pixel - δηαηξψληαο κε ην «εκβαδφ» ηνπ frame,ηηο δηαζηάζεηο ηνπ νπνίνπ ιάβακε πην πξηλ- βξίζθνπκε ελ ηέιεη ηνλ απαηηνχκελν κέζν.

Βήμα 4 Σχγθξηζε ελαιιαγψλ έληαζεο θφθθηλνπ πξνθεηκέλνπ λα θαζνξηζηεί αλ ζα απμεζεί ε ηηκή ηεο beats (έζησ beats ε κεηαβιεηή-counter ησλ ρηχπσλ). Βήμα 5 Υπνινγηζκφο ηνπ θαξδηαθνχ ξπζκνχ, βαζηζκέλνπ ζην πιήζνο ησλ ρηχπσλ θαη ηνλ ρξφλν ν νπνίνο έρεη πεξάζεη φζν γίλεηαη ε κέηξεζε. Ταπηφρξνλα κε ην Βήκα 4 θαη 5, εθηεινχκε ηηο παξαθάησ δηαδηθαζίεο. Βήμα 6 Σχλδεζε ησλ εηθνληδίσλ πξάζηλεο θαη θφθθηλεο θαξδίαο ζε κεηαβιεηέο γηα ρξήζε ηνπο παξαθάησ θαη πξνβνιή ηνπο φηαλ απαηηείηαη. Βήμα 7 Απνζηέιινληαη δεδνκέλα έληαζεο θφθθηλνπ πξνθεηκέλνπ λα έρνπκε ηελ εκθάληζε ηεο ελαιιαγήο θφθθηλεο-πξάζηλεο θαξδηάο πνπ αθνινπζεί ηνλ ρηχπν ηεο θαξδηάο καο βάζεη ηεο ζχγθξηζεο ζην Βήκα 4. Σην παξάξηεκα πνπ αθνινπζεί ζα δνχκε ηελ πινπνίεζε απηνχ ηνπ αιγνξίζκνπ ζην πεξηβάιινλ Eclipse, κε ρξήζε βηβιηνζεθψλ Android 4.2.2. Έρνπλ πξνεγεζεί φια φζα αλαιχζακε γηα ηελ δεκηνπξγία κηαο εθαξκνγήο Android.

Παξάξηεκα Directories

HeartRateMonitor Γήισζε κεηαβιεηψλ θαη εηζαγσγή βηβιηνζήθεο

Έπεηηα, πξνγξακκαηίδνπκε ηνλ θχθιν δσήο ηεο εθαξκνγήο καο αθινπζψληαο ηελ αθφινπζε ζεηξά. Μέζνδνο oncreate. Μαο επηηξέπεη λα μεθηλήζνπκε ην Activity, θαη θαινχκε ηελ SetContentView(int) κε πφξν απφ ην layout πνπ νξίδεη ην πεξηβάιινλ ρξήζηε (UI). Με ηελ findviewbyid(int) επηζηξέθνληαη ηα ζηνηρεηά ηνπ UI ηα νπνία ρξεηαδφκαζηε ζηελ ζπλέρεηα ηνπ θψδηθα

Μέζνδνο onresume. Η κέζνδνο απηή επηηξέπεη ηελ αξρή αιιειεπίδξαζεο κε ηνλ ρξήζηε. Δδψ είλαη έλα θαιφ ζεκείν λα μεθηλήζνπλ animations ηεο εθαξκνγήο ε λα αλνίμνπλ ζπζθεπέο απνθιεηζηηθήο ρξήζεο, φπσο ζηελ πξνθεηκέλε πεξίπησζε, ε θάκεξα. Μέζνδνο onpause. Καιείηαη φηαλ κηα Activity πεξλά ζην παξαζθήλην αιιά δελ παχεη λα ιεηηνπξγεί. Η κέζνδνο απηή απνηειεί ην «ηαίξη» ηεο onresume. Μέζσ ηεο PreviwCallback, γίλεηαη δηακνηξαζκφο ζην πξφγξακκα γηα πεξεηαίξσ επεμεξγαζία ησλ frames πνπ πξνβάιινληαη ζηελ νζφλε. Έπεηηα, απηά ηα frames ζηέιλνληαη ζηελ θιάζε ImageProcessing πξνθεηκέλνπ λα καο επηζηξαθεί ν κέζνο φξνο θφθθηλνπ αλά δεδνκέλε ζηηγκή γηα λα γίλεη ρξήζε ηνπ αξγφηεξα.

Σχγθξηζε ελαιιαγψλ έληαζεο θφθθηλνπ πξνθεηκέλνπ λα θαζνξηζηεί αλ ζα απμεζεί ε ηηκή ηεο beats. Με ηελ παξαθάησ κέζνδν πνπ ηελ είδακε ζηελ αξρηθνπνίεζε, απνζηέιινληαη δεδνκέλα ζηελ HeartBeatView πξνθεηκέλνπ λα έρνπκε ηειηθά ηελ εκθάληζε ηεο ελαιιαγήο θφθθηλεο-πξάζηλεο θαξδηάο πνπ αθνινπζεί ηνλ ρηχπν ηεο θαξδηάο καο.

Τειηθφο ππνινγηζκφο ηνπ θαξδηαθνχ ξπζκνχ, βαζηζκέλνπ ζην πιήζνο ησλ ρηχπσλ θαη ηνλ ρξφλν ν νπνίνο έρεη πεξάζεη φζν γίλεηαη ε κέηξεζε.

SurfaceHolder.Callback. απηφ ην Interface εηζάγεηαη πξνθεηκέλνπ λα ιεθζνχλ πιεξνθνξίεο γηα αιιαγέο ζηελ επηθάλεηα ηεο εθαξκνγήο. Η επηθάλεηα ε νπνία θξαηείηαη, είλαη δηαζέζηκε γηα θιήζε ζηηο κεζφδνπο surfacecreated(surfaceholder) θαη surfacedestroyed(surfaceholder). Αλαιπηηθφηεξα, Η public void surfacecreated (SurfaceHolder holder) θαιείηαη ακέζσο αθνχ δεκηνπξγεζεί γηα πξψηε θνξά ε επηθάλεηα. Η public void surfacechanged (SurfaceHolder holder, int format, int width, int height) θαιείηαη αθνχ γίλνπλ δνκηθέο αιιαγέο ζηελ επηθάλεηα (format ε κέγεζνο). Τέινο ε public void surfacedestroyed (SurfaceHolder holder) θαιείηαη αθνχ θιείζεη ε επηθάλεηα. Δπηζηξέθνληαο απφ ηελ θιήζε απηήο ηεο κεζφδνπ δελ πξέπεη λα πξνζπαζήζνπκε λα απνθηήζνπκε μαλά πξφζβαζε ζηελ επηθάλεηα.

Τέινο, ιακβάλνπκε ηηο παξακέηξνπο ηεο θάκεξαο (δηαζηάζεηο εηθφλαο) πξνθεηκέλνπ ε θιάζε ImageProcessing λα κπνξέζεη λα θάλεη ηελ απαηηνχκελε επεμεξγαζία ζηα frames, ηα απνηειέζκαηα ηεο νπνίαο ζα ρξεζηκνπνηεζνχλ ζηνπο ππνινγηζκνχο πνπ είδακε παξαπάλσ.

HeartbeatView Γήισζε κεηαβιεηψλ θαη εηζαγσγή βηβιηνζήθεο Σχλδεζε ησλ εηθνληδίσλ πξάζηλεο θαη θφθθηλεο θαξδίαο ζε κεηαβιεηέο γηα ρξήζε ηνπο παξαθάησ θαη πξνβνιή ηνπο φηαλ απαηηείηαη.

Τειηθή πξνβνιή ζηελ νζφλε ηεο εθαξκνγήο ζχκθσλα κε ην πψο νξίδεηαη απφ ηελ HeartRateMonitor πνπ αλαιχζακε παξαπάλσ.

ImageProcessing Δπεμεξγαζία ησλ ιεθζέλησλ frames απφ ηελ Previewcallback. Δδψ βξίζθνπκε ηνλ κέζν φξν θφθθηλνπ πνπ πεξηέρεηαη ζε θάζε frame κε ρξήζε ηνπ format YUV420 κέζσ ηνπ νπνίνπ αλαιχεηαη ε εθάζηνηε εηθφλα ζε rgb ζεηξά bytes. Δκείο επηθεληξσλφκαζηε ζην θαλάιη r (red).

Αθνχ βξνχκε ην άζξνηζκα θφθθηλνπ νιφθιεξεο ηεο πξνβαιιφκελεο εηθφλαο αλαιχνληαο θάζε pixel, δηαηξψληαο κε ην «εκβαδφ» ηνπ frame,ηηο δηαζηάζεηο ηνπ νπνίνπ ιάβακε πην πξηλ, βξίζθνπκε ελ ηέιεη ηνλ απαηηνχκελν κέζν. Layout Παξαθάησ παξνπζηάδεηαη ν θψδηθαο.xml ην απνηέιεζκα ηνπ νπνίνπ εκθαλίδεηαη ζηελ νζφλε. Μέζσ απηήο, πξνζθέξεηαη έλα γξαθηθφ πεξηβάιινλ ζηνλ ρξήζηε κε ην νπνίν κπνξεί λα αιιειεπηδξάζεη θαη λα ιάβεη πιεξνθνξίεο.

Τν απνηέιεζκα ηνπ παξαπάλσ θψδηθα.

Manifest Τέινο, έρνπκε ην Android Manifest, ζην νπνίν δειψλνληαη ηα Activities θαη ιακβάλνπκε ηα δηθαηψκαηα ρξήζεο ηεο θάκεξαο θαη ηνπ θιαο.