∆ιάλεξη 4 αρουσιάσεις/2016...android manifest file (1/2)...
TRANSCRIPT
![Page 1: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/1.jpg)
∆ιάλεξη 4
Εισαγωγή σε Android
∆οµή αρχείων σε Android Projects
ActivityIntentΆλλες σηµαντικές κλάσεις
Sensors
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
1∆ιάλεξη 4 1
![Page 2: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/2.jpg)
� Εισαγωγή σε Android
� ∆οµή αρχείων σε Android Projects
� Activity
� Intent
� Άλλες σηµαντικές κλάσεις
� Sensors
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
2∆ιάλεξη 4 2
![Page 3: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/3.jpg)
Τι είναι το Android
� Μια στοίβα λογισµικού για κινητές συσκευέςπου περιλαµβάνει� Λειτουργικό σύστηµα� Middleware� Βασικές εφαρµογές
� Χρησιµοποιεί Linux για να παρέχειυπηρεσίες συστήµατος� Ασφάλεια� ∆ιαχείριση µνήµης� ∆ιαχείριση διεργασιών� ∆ιαχείριση ενέργειας� Drivers υλικού
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
3∆ιάλεξη 4 3
![Page 4: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/4.jpg)
Αρχιτεκτονική Android
Android Native Libraries written in C/C++
APIs used for Android development
Εφαρµογές πουαλληλεπιδρούν µε τον
χρήστη
Android Runtime Environment
hardware drivers, process and memory management,
network and power management
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
4∆ιάλεξη 4 4
![Page 5: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/5.jpg)
Dalvik VMDalvik VM
Executable filesExecutable files
Compile timeCompile time
Dalvik Virtual Machine� Μεταγλώττιση κώδικα σε machine-independent εντολές
(bytecodes) executed by the Dalvik VM on the mobile device.� Βελτιστοποιηµένο JVM µε χαµηλές απαιτήσεις µνήµης� Βασισµένο στο Linux Kernel για
� Threading� Low-level διαχείριση µνήµης
� ∆υνατότητα πολλαπλών VM στιγµιοτύπων που επωφελούνται απότο Linux OS για αποµόνωση ασφάλειας και διεργασιών
.dexfiles
.dexfiles
.class files
.class files
.jar files
.jar files
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
5∆ιάλεξη 4 5
![Page 6: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/6.jpg)
ΑρχιτεκτονικήAndroid
6
� Κάθε εφαρµογή τρέχειστη δική της διαδικασίαLinux
� Κάθε διαδικασία έχει τηδική της Dalvik VM
� Σε κάθε εφαρµογήδίνεται ένα µοναδικόLinux ID
� Τα Permissions καθορίζονται ώστε µιαεφαρµογή να έχειπρόσβαση σεσυγκεκριµένα αρχεία
∆ιάλεξη 4
![Page 7: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/7.jpg)
Android RunTime (ART)
� Default από Android Lolipop (5.0)
� Ahead Of Time (AOT) compilation
� Καλύτερο garbage collection
� Καλύτερο περιβάλλον ανάπτυξης καιdebugging
![Page 8: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/8.jpg)
ART vs Dalvik
![Page 9: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/9.jpg)
Βασικά ∆οµικά Συστατικά Android
� Activity� Το στρώµα παρουσίασης της εφαρµογής� Μια εφαρµογή µπορεί να έχει περισσότερα του ενός activities για διαχείριση
διαφορετικών φάσεων του προγράµµατος� Κάθε activity είναι υπεύθυνο να αποθηκεύει την δική του κατάσταση
� Intent� Μηχανισµός που καθορίζει ποια συγκεκριµένη ενέργεια (action) πρέπει να
εκτελεστεί� Σε android σχεδόν ΟΛΕΣ οι αλληλοεπιδράσεις γίνονται µέσω intents
� Service� ∆ιεργασία που τρέχει στο παρασκήνιο χωρίς τη παρέµβαση του χρήστη.� ∆εν παρέχει UI στο χρήστη� Παρόµοιο µε Unix daemon� Υπάρχουν πολλά built-in services σε Android
� Content Providers� Επιτρέπουν σε µια εφαρµογή να έχει πρόσβαση σε δεδοµένα άλλων
εφαρµογών (π.χ. Contacts)� Επιτρέπουν σε µια εφαρµογή να διαµοιράζει τα δεδοµένα που παράγει σε
άλλες εφαρµογές
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
9∆ιάλεξη 4 9
![Page 10: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/10.jpg)
Βασικά ∆οµικά Συστατικά Android
� Views� Lists, grids, text boxes, buttons ακόµα και ένας embeddable web browser
� Activity Manager� ∆ιαχειρίζεται τον κύκλο ζωής (life cycle) των εφαρµογών και παρέχει ένα
κοινό τρόπο προσπέλασης
� Notification Manager� Επιτρέπει στις εφαρµογές να παρουσιάζουν µηνύµατα συναγερµών (alerts)
στην γραµµή κατάστασης (status bar)
� Resource Manager� Παρέχει στην εφαρµογή πρόσβαση σε αρχεία εκτός των αρχείων κώδικα, π.χ.
localized strings, graphics, layout files
� Data storage� Παρέχει τα δεδοµένα στην εφαρµογή και µπορεί να διαµοιραστεί µεταξύ
διαφορετικών εφαρµογών. Βάσεις δεδοµένων, αρχεία και preferences (hash map) µπορούν να προσπελαστούν από οµάδες εφαρµογών
� Broadcast receivers� Προκαλούν την δηµιουργία intents που µπορούν προκαλέσουν την εκτέλεση
κώδικα
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
10∆ιάλεξη 4 10
![Page 11: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/11.jpg)
Εγκατάσταση Android SDK
� Λήψη του Android SDK.
� Εγκατάσταση plugin ανάλογα µε τοπεριβάλλον IDE� Android Studio
� ADT plugin για Eclipse
� NBAndroid plugin για Netbeans
� Λήψη SDK tools and platforms µέσωτου SDK Manager.
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
11∆ιάλεξη 4 11
![Page 12: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/12.jpg)
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
12∆ιάλεξη 4 12
� Εισαγωγή σε Android
� ∆οµή αρχείων σε Android Projects
� Activity
� Intent
� Άλλες σηµαντικές κλάσεις
� Sensors
![Page 13: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/13.jpg)
∆οµή αρχείων σε Android Projects
13
Source code
Source code
Auto-generated
code
Auto-generated
code
UI layoutUI layout
Stringconstants
Stringconstants
ConfigurationConfiguration
FilesFiles
ImagesImages
∆ιάλεξη 4
![Page 14: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/14.jpg)
Android manifest file (1/2)� Κάθε εφαρµογή έχει ένα αρχείο AndroidManifest.xml που παρέχει
σηµαντικές πληροφορίες για την εφαρµογή στο OS� ∆ίνει όνοµα στο Java πακέτο για την εφαρµογή το οποίο αποτελεί µοναδικό
αναγνωριστικό για την εφαρµογή� Περιγράφει τα components της εφαρµογής (activities, services, content
providers κλπ.)� Καθορίζει τα δικαιώµατα που πρέπει να έχει η εφαρµογή για να έχει
πρόσβαση σε προστατευόµενα κοµµάτια του API και να αλληλεπιδρά µε άλλεςεφαρµογές καθώς επίσης και τα δικαιώµατα που πρέπει να έχουν άλλεςεφαρµογές για να αλληλεπιδρούν µε αυτή
� Κατά την ανάπτυξη και τον έλεγχο της εφαρµογής το αρχείο αυτό περιέχει τιςInstrumentation κλάσεις που παρέχουν δυνατότητα monitoring τωναλληλεπιδράσεων του συστήµατος µε την εφαρµογή. Όταν δηµοσιοποιείται ηεφαρµογή τότε αφαιρούνται αυτές από το αρχείο.
� Καθορίζει το ελάχιστο επίπεδο Android API που απαιτείται από την εφαρµογή� Περιέχει λίστα µε τις βιβλιοθήκες µε τις οποίες πρέπει να συνδεθεί η
εφαρµογή.
� Περισσότερες πληροφορίες:� http://developer.android.com/guide/topics/manifest/manifest-intro.html
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
14∆ιάλεξη 4 14
![Page 15: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/15.jpg)
Android manifest file (2)
Application permissions
Application permissions
ActivitiesActivities
IntentsIntents
SDK versionsSDK versions
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
15∆ιάλεξη 4 15
![Page 16: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/16.jpg)
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
16∆ιάλεξη 4 16
� Εισαγωγή σε Android
� ∆οµή αρχείων σε Android Projects
� Activity
� Intent
� Άλλες σηµαντικές κλάσεις
� Sensors
![Page 17: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/17.jpg)
Κλάση Activity
� Κάθε διεπαφή χρήστη αναπαρίσταται απόµία κλάση Activity
� Κάθε activity έχει το δικό του κύκλο ζωής� Μία εφαρµογή έχει ένα ή περισσότερα
activities και µία διεργασία Linux που ταπεριέχει
� ∆ιεργασία != Εφαρµογή� Μία εφαρµογή µπορεί να είναι «ζωντανή» ακόµα
και αν δεν ισχύει το ίδιο για τη διεργασία της
� extends Activity� override onCreate
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
17∆ιάλεξη 4 17
![Page 18: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/18.jpg)
Απλή Κλάση Activity
UI Layout activity_main.xml
UI Layout activity_main.xml
/src/gr/uoa/di/helloandroid/MainActivity.java
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
18∆ιάλεξη 4 18
![Page 19: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/19.jpg)
Απλό UI Layout XML
TextViewComponent
TextViewComponent
/res/layout/activity_main.xml
String hello_wordString hello_word
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
19∆ιάλεξη 4 19
![Page 20: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/20.jpg)
Απλό αρχείο string resources
/res/values/strings.xmlString hello_wordString hello_word
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
20∆ιάλεξη 4 20
![Page 21: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/21.jpg)
Κλάση Activity (Παράδειγµα)
UI Layout activity_main.xml
UI Layout activity_main.xml
References to components of
activity_main.xml
References to components of
activity_main.xml
Μέθοδος πουκαλείται όταν
πατηθεί το κουµπί
Μέθοδος πουκαλείται όταν
πατηθεί το κουµπί
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
21∆ιάλεξη 4 21
![Page 22: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/22.jpg)
UI Layout XML (Παράδειγµα)
22
TextViewComponent
TextViewComponent
EditTextComponent
EditTextComponent
Κουµπί button_helloΚουµπί button_hello
String button_helloString button_hello
Όνοµα µεθόδουπου θα κληθεί
όταν πατηθεί τοκουµπί
Όνοµα µεθόδουπου θα κληθεί
όταν πατηθεί τοκουµπί
∆ιάλεξη 4
![Page 23: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/23.jpg)
Αρχείο string resources (Παράδειγµα)
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
23∆ιάλεξη 4 23
![Page 24: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/24.jpg)
Εκτέλεση στον Emulator (Παράδειγµα)
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
24∆ιάλεξη 4 24
![Page 25: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/25.jpg)
Activity Lifecycle
�
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
25∆ιάλεξη 4 25
Καλείται όταν το activity πρωτοξεκινά. Μπορεί να χρησιµοποιηθεί για αρχικοποίησητης διεπαφής χρήστη. Παίρνει µία παράµετρο null ή πληροφορίες κατάστασης πουείχαν αποθηκευτεί από την µέθοδο onSaveInstanceState()
Το activity είναι έτοιµο για εµφάνιση προς το χρήστη
Καλείται όταν το activity είναι έτοιµο να αλληλεπιδρά µε τονχρήστη.
Καλείται όταν το activity καταστρέφεται
Καλείται όταν το activity δεν είναι ορατό πλέονστο χρήστη
Εκτελείται όταν το activity είναι έτοιµο να πάειστο παρασκήνιο (background), συνήθως
επειδή ένα άλλο activity ξεκινάει. Εδώ πρέπεινα αποθηκεύονται όποιες αλλαγές έχει κάνει το
πρόγραµµα.
![Page 26: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/26.jpg)
∆ιάλεξη 4 Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
26
� Εισαγωγή σε Android
� ∆οµή αρχείων σε Android Projects
� Activity
� Intent
� Άλλες σηµαντικές κλάσεις
� Sensors
![Page 27: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/27.jpg)
Η κλάση Intent� Ο ρόλος ενός intent είναι να ειδοποιηθεί το
ActivityManagerService ότι ο χρήστης επιθυµεί να γίνεικάποια ενέργεια.
� Ένα intent είναι ένα αντικείµενο της κλάσης Intent το οποίοπεριέχει κάποιο περιεχόµενο (το µήνυµα του intent)
� Μέσω των intents µπορούµε να ξεκινήσουµε την εκτέλεσητων Activities, των Services και των Broadcast Receivers� Ένα activity µπορεί να εκτελεστεί µε χρήση των
� Context.startActivity(Intent intent) � Activity.startActivityForResult(Intent intent, int RequestCode)
� Ένα service µπορεί να εκτελεστεί µε χρήση της� Context.startService(Intent service)
� Μια εφαρµογή µπορεί να δηµιουργήσει ένα broadcast µήνυµα µεχρήση του Intent � Context.sendBroadcast(Intent intent),� Context. sendOrderedBroadcast(Intent intent, String
receiverPermission)� Context. sendStickyBroadcast(Intent intent)
∆ιάλεξη 4 27
![Page 28: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/28.jpg)
Η κλάση Intent
28
MainActivity
HelloActivity
∆ηµιουργία Intent∆ηµιουργία Intent
Προσθήκη δεδοµένωνστο Intent
Προσθήκη δεδοµένωνστο Intent
ΠροσπέλασηIntent
ΠροσπέλασηIntent
Προσπέλασηδεδοµένων από το
Intent
Προσπέλασηδεδοµένων από το
Intent
∆ιάλεξη 4
![Page 29: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/29.jpg)
Εκτέλεση στον Emulator (Intent)
29
Press Button
Back Button
∆ιάλεξη 4
![Page 30: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/30.jpg)
Παράδειγµα Intent – Εκκίνηση Εφαρµογής1
∆ιάλεξη 4 301 http://coltf.blogspot.gr/p/android-os-processes-and-zygote.html
Πάτηµα κουµπιού εφαρµογής
Ειδοποίηση τουActivityManager σχετικά µετην ενέργεια που επιθυµεί ο
χρήστης
Έλεγχος και δηµιουργία∆ιεργασίας για την εφαρµογή
που εκκίνησε ο χρήστης
∆ηµιουργία του Activity πουέχει δηλωθεί ως αρχικό στοAndroid Manifest xml αρχείο
της εφαρµογής
![Page 31: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/31.jpg)
Η κλάση PendingIntent
� Η κλάση PendingIntent δίνει τη δυνατότηταεκτέλεσης µίας διαδικασίας από άλληεφαρµογή όπως� NotificationManager� AlarmManager� HomeScreen AppWidgetManager
� Επιτρέπει στην άλλη εφαρµογή να εκτελέσειτη διαδικασία µε τα δικαιώµατα της δικήςµας εφαρµογής
� Αντιθέτως µε το Intent όπου η διαδικασίαθα εκτελεστεί µε τα δικαιώµατα της άλληςεφαρµογής
∆ιάλεξη 4 31
![Page 32: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/32.jpg)
∆ιάλεξη 4 Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
32
� Εισαγωγή σε Android
� ∆οµή αρχείων σε Android Projects
� Activity
� Intent
� Άλλες σηµαντικές κλάσεις
� Sensors
![Page 33: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/33.jpg)
Η κλάση Service
� Η βασική κλάση για διαδικασίες πουεκτελούνται στο παρασκήνιο� extends Service� override onCreate
� ∆εν έχει γραφική διεπαφή� Από default δεν είναι µια ξεχωριστή
διεργασία ούτε ένα ξεχωριστό thread. Αποτελεί τµήµα του main thread.� Αν επιθυµούµε µπορούµε να
καθορίσουµε ότι θα τρέχει σε ξεχωριστήδιεργασία
� Παραδείγµατα χρήσης� network downloading� Αναπαραγωγή µουσικής στο παρασκήνιο� TCP/UDP Server
33∆ιάλεξη 4
![Page 34: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/34.jpg)
Η κλάση BroadcastReceiver
� Λαµβάνει ανακοινώσεις broadcast και αντιδράκατάλληλα� extends BroadcastReceiver� implements onReceive()
� Οι ανακοινώσεις broadcast µπορεί να� Παράγονται από το λειτουργικό (OS-generated)
π.χ. χαµηλή στάθµη µπαταρίας, αποκατάστασησύνδεσης Wifi, πάτηµα του πλήκτρου τηςφωτογραφικής
� Παράγονται από το χρήστη (User-generated) π.χ. έναρξη ή τερµατισµός µια διαδικασίας, ενεργοποίηση ενός χαρακτηριστικού
34∆ιάλεξη 4
![Page 35: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/35.jpg)
System Events
Event Description
Intent.ACTION_BOOT_COMPLETED Το boot έγινε µε επιτυχία .Απαιτείται η άδεια, android.permission.RECEIVE_BOOT_COMPLETED.
Intent.ACTION_POWER_CONNECTED Έγινε σύνδεση του φορτιστή στην συσκευή.
Intent.ACTION_POWER_DISCONNECTED Έγινε αποσύνδεση του φορτιστή από την συσκευή.
Intent.ACTION_BATTERY_LOW Η στάθµη της µπαταρίας είναι χαµηλή. Χρησιµοποιείται για την εξοικονόµηση ενέργειας απόεφαρµογές που καταναλώνουν πολύ.
Intent.ACTION_BATTERY_OKAY Η στάθµη της µπαταρίας είναι σε καλό επίπεδο.
∆ιάλεξη 4 35
![Page 36: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/36.jpg)
BroadcastReceiver – Παράδειγµα
� Παράδειγµα χρήσης BroadcastReceiver γιαανάκτηση πληροφοριών σχετικά µε το Wifi
36
Manifest File
Activity
WifiReceiver extends BroadcastReceiver
WifiReceiver extends BroadcastReceiver
∆ιάλεξη 4
![Page 37: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/37.jpg)
BroadcastReceiver – Παράδειγµα
∆ιάλεξη 7 37
WifiReceiver
![Page 38: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/38.jpg)
Η κλάση IntentService
� Χρησιµοποιείται� Για διαδικασίες που απαιτούν πολύ χρόνο.
� Συνήθως δεν απαιτείται επικοινωνία µε το main thread� Αν χρειαστεί επικοινωνία µε το main thread, γίνεται µε
τη βοήθεια handler ή broadcast intents
� Όταν απαιτείται callback (intent)
� Καλείται µέσω intent µόνο από το main Thread� Εκτελείται σε ξεχωριστό νήµα (worker thread)� ∆ΕΝ µπορεί να εκτελέσει πράγµατα παράλληλα� Πολλαπλά intents δηµιουργούν ουρά εκτελέσεων
στο ίδιο worker thread
∆ιάλεξη 4 38
![Page 39: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/39.jpg)
Η κλάση Log
� Η εκτύπωση στη standard έξοδο(System.out.println) ∆ΕΝ δουλεύει
� Χρήση της κλάσης Log για debugging� Ενεργοποίηση του LogCat: Window-> Show
View -> Other -> Android-> Logcat
� H κλάση Log παρέχει αρκετές static µεθόδουςγια εκτύπωση µηνυµάτων διαφορετικήςσηµασίας για το λειτουργικό σύστηµα:� Log.e( ): Errors
� Log.w( ): Warnings
� Log.i( ): Information
� Log.d( ): Debugging
� Log.v( ): Verbose
39∆ιάλεξη 4
![Page 40: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/40.jpg)
Η κλάση Log
∆ιάλεξη 7 40
HelloActivity
LogCat
![Page 41: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/41.jpg)
Ειδοποιήσεις (Notifications) (1)
� ∆ηµιουργία ειδοποιήσεων στο Android
� Τριών ειδών ειδοποιήσεις
� Toast
� AlertDialog
� Notification
41∆ιάλεξη 4
![Page 42: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/42.jpg)
Ειδοποιήσεις (Notifications) (2)
� ToastToast toast = Toast.makeText(this,”Notification",Toast.LENGTH_SHORT);
toast.show();
� NotificationNotificationCompat.Builder mBuilder = new
NotificationCompat.Builder(this) .setSmallIcon(R.drawable.notification_icon)
.setContentTitle("New notification")
.setContentText("Hello Android!");
42∆ιάλεξη 4
![Page 43: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/43.jpg)
Ειδοποιήσεις (Notifications) (3)
� AlertDialog
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());builder.setMessage("Do you like to exit now?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int id) {
// Exit code}
}).setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {// Return code
}});
AlertDialog dialog = builder.create();
43∆ιάλεξη 4
![Page 44: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/44.jpg)
Fragments
� Ανεξάρτητο component το οποίο χρησιµοποιείται απόactivities. Για τα fragments ορίζεται κύκλος ζωήςαντίστοιχος του κύκλου ζωής ενός activity.
� ∆υναµικός και στατικός ορισµός(on application running).
� Θεωρείται ως ένα είδος sub-activity.
� Μια κλάση ορίζεται ως Fragment� extend Fragment,ListFragment,DialogFragment,PreferenceFragment
� Override onCreateView().
� Γενικά µας δίνει την δυνατότητα να επαναχρησιµοποιούµεcomponents σε διαφορετικά layouts.
∆ιάλεξη 4 44
G1
![Page 45: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/45.jpg)
Slide 44
G1 µπορει και να µπερδεψει λιγο αλλα δειχνει την αντιστοιχια µε τα activities.George, 12/02/2014
![Page 46: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/46.jpg)
Fragments(1)
∆ιάλεξη 4 45
Method Description
onAttach() Το instance του fragment συσχετίζεται µετο instance του activity.
onCreate() ∆ηµιουργία το fragment
onCreateView() Το instance του fragment δηµιουργεί τηνιεραρχία παρουσίασης(view hierarchy) του.Η ιεραρχία αυτή γίνεται µέλος τηςιεραρχίας του activity στο όποιο έχειοριστεί το fragment.
onActivityCreated() Το activity και το fragment έχουνδηµιουργήσει τα instances τους µε βάσητα view hierarchy τους. Πλέον υπάρχειπρόσβαση σε αυτά µε την µέθοδοfindViewbyId().
onResume() Το fragment είναι πλέον ενεργό και ορατόστον χρήστη.
onPause() Το fragment είναι ορατό αλλά όχι ενεργό,πχ κάποιο άλλο activity χρησιµοποιεί τοσυγκεκριµένο fragment.
onStop() Το fragment πλέον δεν είναι ορατό στονχρήστη.
![Page 47: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/47.jpg)
Fragments(2)
∆ιάλεξη 4 46
![Page 48: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/48.jpg)
ViewPager
� Layout διαχειριστής, επιτρέπει στον χρήστη να πλοηγείται «δεξιά -αριστερά» σε διαφορετικές οθόνες δεδοµένων.
� Η χρήση του ViewPager προϋποθέτει τον ορισµό του PageAdapter. ΟPageAdapter είναι υπεύθυνος για την δηµιουργία των οθονών τουViewPager.
� Συνδυαστική χρήση µε Fragment µε σκοπό την βέλτιστη διαχείριση τουκύκλου ζωής της εκάστοτε σελίδας.
∆ιάλεξη 4 47
G2
G3
![Page 49: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/49.jpg)
Slide 47
G2 στα αγγλικα οριζεται ως page αλλα δεν µου κολλαγεGeorge, 12/02/2014
G3 αντιστοιχαGeorge, 12/02/2014
![Page 50: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/50.jpg)
TabHost
� Αποτελείται από δύο «παιδιά» : Ένα σύνολο από tab labels τα οποία ο χρήστης επιλέγει ώστε να διαλέξει ένασυγκεκριµένο tab καθώς και ένα FrameLayout µεπληροφορίες για το περιεχόµενο του κάθε tab.
� Κάποιες βασικές µέθοδοι της κλάσης TabHost είναι :� Α) addTab()
� B) getCurrentTab()
� C) getTabContentView() : Επιστρέφει το FrameLayout το οποίο έχειαποθηκευµένο το περιεχόµενο του tab.
� D) setup() : Καλείται πριν την addTab() σε περίπτωση που το tabέχει γίνει load µε την χρήση της findViewById().
� mTabHost = (TabHost) findViewById(R.id.tabhost);mTabHost.setup();mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1");
∆ιάλεξη 4 48
![Page 51: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/51.jpg)
∆ιάλεξη 4 Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
49
� Εισαγωγή σε Android
� ∆οµή αρχείων σε Android Projects
� Activity
� Intent
� Άλλες σηµαντικές κλάσεις
� Sensors
![Page 52: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/52.jpg)
Αισθητήρες - Sensors
� Τι είναι αισθητήρας;� Συσκευή που ανιχνεύει και αποκρίνεται σε
κάποιου είδους εξωτερικό ερέθισµα
� Τύποι αισθητήρων
� Κίνησης (π.χ. επιταχυνσιόµετρο, γυροσκόπιο)� Περιβάλλοντος (π.χ. θερµοκρασίας, φωτισµού)� Τοποθεσίας (π.χ. προσανατολισµού,
µαγνητόµετρο)
![Page 53: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/53.jpg)
Android Sensors API
� Sensor Manager� System service; gives access to
hardware sensors
� Sensor� Representation of a sensor in a device
� SensorEventListener� Interface providing callbacks
� SensorEvent� Data structure with event information
![Page 54: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/54.jpg)
Sensor Rates
� SensorManager.SENSOR_DELAY_NORMAL (delay 200000 microseceonds) (default value)
� SensorManager.SENSOR_DELAY_GAME (delay 20000 microseconds)
� SensorManager.SENSOR_DELAY_UI(delay 60000 microseconds)
� SensorManager.SENSOR_DELAY_FASTEST (delay 0 microseconds)
![Page 55: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/55.jpg)
Καλές πρακτικές
� Unregister sensor listeners
� Don't block the onSensorChanged() method
� Avoid using deprecated methods or sensor types
� Verify sensors before you use them
� Choose sensor delays carefully
![Page 56: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/56.jpg)
Αναφορές
� Android Official Training:
http://developer.android.com/training/
� Android Documentation: http://developer.android.com/reference/packages.html
� Android Permissions
http://developer.android.com/guide/topics/security/permissions.html
� Android Sensor Overview
https://developer.android.com/guide/topics/sensors/sensors_overview.html
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
54∆ιάλεξη 4 54
![Page 57: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει](https://reader035.vdocuments.site/reader035/viewer/2022063022/5fe6a6eef9979d534550fde4/html5/thumbnails/57.jpg)
Αναφορές
� Log documentation: http://developer.android.com/reference/android/util/Log.html
� Android Web Services: http://mobileorchard.com/android-app-development-calling-web-services/
� Android Tab Layout with Swipeable Views :
http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/
� Fragments :
http://developer.android.com/guide/components/fragments.html
� ViewPager :
http://developer.android.com/reference/android/support/v4/view/ViewPager.html
55∆ιάλεξη 4