∆ιάλεξη 4 αρουσιάσεις/2016...android manifest file (1/2)...

57
∆ιάλεξη 4 Εισαγωγή σε Android ∆οµή αρχείων σε Android Projects Activity Intent Άλλες σηµαντικές κλάσεις Sensors Τµήµα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισµικού Χειµερινό Εξάµηνο 2016-2017 1 ∆ιάλεξη 4 1

Upload: others

Post on 05-Sep-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

∆ιάλεξη 4

Εισαγωγή σε Android

∆οµή αρχείων σε Android Projects

ActivityIntentΆλλες σηµαντικές κλάσεις

Sensors

Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Ανάπτυξη Λογισµικού

Χειµερινό Εξάµηνο 2016-2017

1∆ιάλεξη 4 1

Page 2: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

� Εισαγωγή σε Android

� ∆οµή αρχείων σε Android Projects

� Activity

� Intent

� Άλλες σηµαντικές κλάσεις

� Sensors

Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Ανάπτυξη Λογισµικού

Χειµερινό Εξάµηνο 2016-2017

2∆ιάλεξη 4 2

Page 3: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Τι είναι το Android

� Μια στοίβα λογισµικού για κινητές συσκευέςπου περιλαµβάνει� Λειτουργικό σύστηµα� Middleware� Βασικές εφαρµογές

� Χρησιµοποιεί Linux για να παρέχειυπηρεσίες συστήµατος� Ασφάλεια� ∆ιαχείριση µνήµης� ∆ιαχείριση διεργασιών� ∆ιαχείριση ενέργειας� Drivers υλικού

Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Ανάπτυξη Λογισµικού

Χειµερινό Εξάµηνο 2016-2017

3∆ιάλεξη 4 3

Page 4: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Αρχιτεκτονική 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πουπαρέχει

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πουπαρέχει

ΑρχιτεκτονικήAndroid

6

� Κάθε εφαρµογή τρέχειστη δική της διαδικασίαLinux

� Κάθε διαδικασία έχει τηδική της Dalvik VM

� Σε κάθε εφαρµογήδίνεται ένα µοναδικόLinux ID

� Τα Permissions καθορίζονται ώστε µιαεφαρµογή να έχειπρόσβαση σεσυγκεκριµένα αρχεία

∆ιάλεξη 4

Page 7: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

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πουπαρέχει

ART vs Dalvik

Page 9: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Βασικά ∆οµικά Συστατικά 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πουπαρέχει

Βασικά ∆οµικά Συστατικά 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πουπαρέχει

Εγκατάσταση 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πουπαρέχει

Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Ανάπτυξη Λογισµικού

Χειµερινό Εξάµηνο 2016-2017

12∆ιάλεξη 4 12

� Εισαγωγή σε Android

� ∆οµή αρχείων σε Android Projects

� Activity

� Intent

� Άλλες σηµαντικές κλάσεις

� Sensors

Page 13: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

∆οµή αρχείων σε 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πουπαρέχει

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πουπαρέχει

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πουπαρέχει

Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Ανάπτυξη Λογισµικού

Χειµερινό Εξάµηνο 2016-2017

16∆ιάλεξη 4 16

� Εισαγωγή σε Android

� ∆οµή αρχείων σε Android Projects

� Activity

� Intent

� Άλλες σηµαντικές κλάσεις

� Sensors

Page 17: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Κλάση 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πουπαρέχει

Απλή Κλάση 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πουπαρέχει

Απλό 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πουπαρέχει

Απλό αρχείο 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πουπαρέχει

Κλάση 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πουπαρέχει

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πουπαρέχει

Αρχείο string resources (Παράδειγµα)

Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Ανάπτυξη Λογισµικού

Χειµερινό Εξάµηνο 2016-2017

23∆ιάλεξη 4 23

Page 24: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Εκτέλεση στον Emulator (Παράδειγµα)

Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Ανάπτυξη Λογισµικού

Χειµερινό Εξάµηνο 2016-2017

24∆ιάλεξη 4 24

Page 25: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

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πουπαρέχει

∆ιάλεξη 4 Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Ανάπτυξη Λογισµικού

Χειµερινό Εξάµηνο 2016-2017

26

� Εισαγωγή σε Android

� ∆οµή αρχείων σε Android Projects

� Activity

� Intent

� Άλλες σηµαντικές κλάσεις

� Sensors

Page 27: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Η κλάση 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πουπαρέχει

Η κλάση Intent

28

MainActivity

HelloActivity

∆ηµιουργία Intent∆ηµιουργία Intent

Προσθήκη δεδοµένωνστο Intent

Προσθήκη δεδοµένωνστο Intent

ΠροσπέλασηIntent

ΠροσπέλασηIntent

Προσπέλασηδεδοµένων από το

Intent

Προσπέλασηδεδοµένων από το

Intent

∆ιάλεξη 4

Page 29: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Εκτέλεση στον Emulator (Intent)

29

Press Button

Back Button

∆ιάλεξη 4

Page 30: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Παράδειγµα 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πουπαρέχει

Η κλάση PendingIntent

� Η κλάση PendingIntent δίνει τη δυνατότηταεκτέλεσης µίας διαδικασίας από άλληεφαρµογή όπως� NotificationManager� AlarmManager� HomeScreen AppWidgetManager

� Επιτρέπει στην άλλη εφαρµογή να εκτελέσειτη διαδικασία µε τα δικαιώµατα της δικήςµας εφαρµογής

� Αντιθέτως µε το Intent όπου η διαδικασίαθα εκτελεστεί µε τα δικαιώµατα της άλληςεφαρµογής

∆ιάλεξη 4 31

Page 32: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

∆ιάλεξη 4 Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Ανάπτυξη Λογισµικού

Χειµερινό Εξάµηνο 2016-2017

32

� Εισαγωγή σε Android

� ∆οµή αρχείων σε Android Projects

� Activity

� Intent

� Άλλες σηµαντικές κλάσεις

� Sensors

Page 33: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Η κλάση 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πουπαρέχει

Η κλάση 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πουπαρέχει

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πουπαρέχει

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πουπαρέχει

BroadcastReceiver – Παράδειγµα

∆ιάλεξη 7 37

WifiReceiver

Page 38: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Η κλάση 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πουπαρέχει

Η κλάση 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πουπαρέχει

Η κλάση Log

∆ιάλεξη 7 40

HelloActivity

LogCat

Page 41: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Ειδοποιήσεις (Notifications) (1)

� ∆ηµιουργία ειδοποιήσεων στο Android

� Τριών ειδών ειδοποιήσεις

� Toast

� AlertDialog

� Notification

41∆ιάλεξη 4

Page 42: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Ειδοποιήσεις (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πουπαρέχει

Ειδοποιήσεις (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πουπαρέχει

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πουπαρέχει

Slide 44

G1 µπορει και να µπερδεψει λιγο αλλα δειχνει την αντιστοιχια µε τα activities.George, 12/02/2014

Page 46: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

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πουπαρέχει

Fragments(2)

∆ιάλεξη 4 46

Page 48: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

ViewPager

� Layout διαχειριστής, επιτρέπει στον χρήστη να πλοηγείται «δεξιά -αριστερά» σε διαφορετικές οθόνες δεδοµένων.

� Η χρήση του ViewPager προϋποθέτει τον ορισµό του PageAdapter. ΟPageAdapter είναι υπεύθυνος για την δηµιουργία των οθονών τουViewPager.

� Συνδυαστική χρήση µε Fragment µε σκοπό την βέλτιστη διαχείριση τουκύκλου ζωής της εκάστοτε σελίδας.

∆ιάλεξη 4 47

G2

G3

Page 49: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Slide 47

G2 στα αγγλικα οριζεται ως page αλλα δεν µου κολλαγεGeorge, 12/02/2014

G3 αντιστοιχαGeorge, 12/02/2014

Page 50: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

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πουπαρέχει

∆ιάλεξη 4 Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Ανάπτυξη Λογισµικού

Χειµερινό Εξάµηνο 2016-2017

49

� Εισαγωγή σε Android

� ∆οµή αρχείων σε Android Projects

� Activity

� Intent

� Άλλες σηµαντικές κλάσεις

� Sensors

Page 52: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

Αισθητήρες - Sensors

� Τι είναι αισθητήρας;� Συσκευή που ανιχνεύει και αποκρίνεται σε

κάποιου είδους εξωτερικό ερέθισµα

� Τύποι αισθητήρων

� Κίνησης (π.χ. επιταχυνσιόµετρο, γυροσκόπιο)� Περιβάλλοντος (π.χ. θερµοκρασίας, φωτισµού)� Τοποθεσίας (π.χ. προσανατολισµού,

µαγνητόµετρο)

Page 53: ∆ιάλεξη 4 αρουσιάσεις/2016...Android manifest file (1/2) ΚάθεεφαρµογήέχειένααρχείοAndroidManifest.xmlπουπαρέχει

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πουπαρέχει

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πουπαρέχει

Καλές πρακτικές

� 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πουπαρέχει

Αναφορές

� 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πουπαρέχει

Αναφορές

� 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