∆ιάλεξη 4 αρουσιάσεις/2016...android manifest file (1/2)...
TRANSCRIPT
∆ιάλεξη 4
Εισαγωγή σε Android
∆οµή αρχείων σε Android Projects
ActivityIntentΆλλες σηµαντικές κλάσεις
Sensors
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
1∆ιάλεξη 4 1
� Εισαγωγή σε Android
� ∆οµή αρχείων σε Android Projects
� Activity
� Intent
� Άλλες σηµαντικές κλάσεις
� Sensors
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
2∆ιάλεξη 4 2
Τι είναι το Android
� Μια στοίβα λογισµικού για κινητές συσκευέςπου περιλαµβάνει� Λειτουργικό σύστηµα� Middleware� Βασικές εφαρµογές
� Χρησιµοποιεί Linux για να παρέχειυπηρεσίες συστήµατος� Ασφάλεια� ∆ιαχείριση µνήµης� ∆ιαχείριση διεργασιών� ∆ιαχείριση ενέργειας� Drivers υλικού
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
3∆ιάλεξη 4 3
Αρχιτεκτονική 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
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
ΑρχιτεκτονικήAndroid
6
� Κάθε εφαρµογή τρέχειστη δική της διαδικασίαLinux
� Κάθε διαδικασία έχει τηδική της Dalvik VM
� Σε κάθε εφαρµογήδίνεται ένα µοναδικόLinux ID
� Τα Permissions καθορίζονται ώστε µιαεφαρµογή να έχειπρόσβαση σεσυγκεκριµένα αρχεία
∆ιάλεξη 4
Android RunTime (ART)
� Default από Android Lolipop (5.0)
� Ahead Of Time (AOT) compilation
� Καλύτερο garbage collection
� Καλύτερο περιβάλλον ανάπτυξης καιdebugging
ART vs Dalvik
Βασικά ∆οµικά Συστατικά Android
� Activity� Το στρώµα παρουσίασης της εφαρµογής� Μια εφαρµογή µπορεί να έχει περισσότερα του ενός activities για διαχείριση
διαφορετικών φάσεων του προγράµµατος� Κάθε activity είναι υπεύθυνο να αποθηκεύει την δική του κατάσταση
� Intent� Μηχανισµός που καθορίζει ποια συγκεκριµένη ενέργεια (action) πρέπει να
εκτελεστεί� Σε android σχεδόν ΟΛΕΣ οι αλληλοεπιδράσεις γίνονται µέσω intents
� Service� ∆ιεργασία που τρέχει στο παρασκήνιο χωρίς τη παρέµβαση του χρήστη.� ∆εν παρέχει UI στο χρήστη� Παρόµοιο µε Unix daemon� Υπάρχουν πολλά built-in services σε Android
� Content Providers� Επιτρέπουν σε µια εφαρµογή να έχει πρόσβαση σε δεδοµένα άλλων
εφαρµογών (π.χ. Contacts)� Επιτρέπουν σε µια εφαρµογή να διαµοιράζει τα δεδοµένα που παράγει σε
άλλες εφαρµογές
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
9∆ιάλεξη 4 9
Βασικά ∆οµικά Συστατικά 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
Εγκατάσταση 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
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
12∆ιάλεξη 4 12
� Εισαγωγή σε Android
� ∆οµή αρχείων σε Android Projects
� Activity
� Intent
� Άλλες σηµαντικές κλάσεις
� Sensors
∆οµή αρχείων σε Android Projects
13
Source code
Source code
Auto-generated
code
Auto-generated
code
UI layoutUI layout
Stringconstants
Stringconstants
ConfigurationConfiguration
FilesFiles
ImagesImages
∆ιάλεξη 4
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
Android manifest file (2)
Application permissions
Application permissions
ActivitiesActivities
IntentsIntents
SDK versionsSDK versions
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
15∆ιάλεξη 4 15
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
16∆ιάλεξη 4 16
� Εισαγωγή σε Android
� ∆οµή αρχείων σε Android Projects
� Activity
� Intent
� Άλλες σηµαντικές κλάσεις
� Sensors
Κλάση Activity
� Κάθε διεπαφή χρήστη αναπαρίσταται απόµία κλάση Activity
� Κάθε activity έχει το δικό του κύκλο ζωής� Μία εφαρµογή έχει ένα ή περισσότερα
activities και µία διεργασία Linux που ταπεριέχει
� ∆ιεργασία != Εφαρµογή� Μία εφαρµογή µπορεί να είναι «ζωντανή» ακόµα
και αν δεν ισχύει το ίδιο για τη διεργασία της
� extends Activity� override onCreate
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
17∆ιάλεξη 4 17
Απλή Κλάση Activity
UI Layout activity_main.xml
UI Layout activity_main.xml
/src/gr/uoa/di/helloandroid/MainActivity.java
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
18∆ιάλεξη 4 18
Απλό UI Layout XML
TextViewComponent
TextViewComponent
/res/layout/activity_main.xml
String hello_wordString hello_word
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
19∆ιάλεξη 4 19
Απλό αρχείο string resources
/res/values/strings.xmlString hello_wordString hello_word
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
20∆ιάλεξη 4 20
Κλάση 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
UI Layout XML (Παράδειγµα)
22
TextViewComponent
TextViewComponent
EditTextComponent
EditTextComponent
Κουµπί button_helloΚουµπί button_hello
String button_helloString button_hello
Όνοµα µεθόδουπου θα κληθεί
όταν πατηθεί τοκουµπί
Όνοµα µεθόδουπου θα κληθεί
όταν πατηθεί τοκουµπί
∆ιάλεξη 4
Αρχείο string resources (Παράδειγµα)
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
23∆ιάλεξη 4 23
Εκτέλεση στον Emulator (Παράδειγµα)
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
24∆ιάλεξη 4 24
Activity Lifecycle
�
Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
25∆ιάλεξη 4 25
Καλείται όταν το activity πρωτοξεκινά. Μπορεί να χρησιµοποιηθεί για αρχικοποίησητης διεπαφής χρήστη. Παίρνει µία παράµετρο null ή πληροφορίες κατάστασης πουείχαν αποθηκευτεί από την µέθοδο onSaveInstanceState()
Το activity είναι έτοιµο για εµφάνιση προς το χρήστη
Καλείται όταν το activity είναι έτοιµο να αλληλεπιδρά µε τονχρήστη.
Καλείται όταν το activity καταστρέφεται
Καλείται όταν το activity δεν είναι ορατό πλέονστο χρήστη
Εκτελείται όταν το activity είναι έτοιµο να πάειστο παρασκήνιο (background), συνήθως
επειδή ένα άλλο activity ξεκινάει. Εδώ πρέπεινα αποθηκεύονται όποιες αλλαγές έχει κάνει το
πρόγραµµα.
∆ιάλεξη 4 Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
26
� Εισαγωγή σε Android
� ∆οµή αρχείων σε Android Projects
� Activity
� Intent
� Άλλες σηµαντικές κλάσεις
� Sensors
Η κλάση 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
Η κλάση Intent
28
MainActivity
HelloActivity
∆ηµιουργία Intent∆ηµιουργία Intent
Προσθήκη δεδοµένωνστο Intent
Προσθήκη δεδοµένωνστο Intent
ΠροσπέλασηIntent
ΠροσπέλασηIntent
Προσπέλασηδεδοµένων από το
Intent
Προσπέλασηδεδοµένων από το
Intent
∆ιάλεξη 4
Εκτέλεση στον Emulator (Intent)
29
Press Button
Back Button
∆ιάλεξη 4
Παράδειγµα Intent – Εκκίνηση Εφαρµογής1
∆ιάλεξη 4 301 http://coltf.blogspot.gr/p/android-os-processes-and-zygote.html
Πάτηµα κουµπιού εφαρµογής
Ειδοποίηση τουActivityManager σχετικά µετην ενέργεια που επιθυµεί ο
χρήστης
Έλεγχος και δηµιουργία∆ιεργασίας για την εφαρµογή
που εκκίνησε ο χρήστης
∆ηµιουργία του Activity πουέχει δηλωθεί ως αρχικό στοAndroid Manifest xml αρχείο
της εφαρµογής
Η κλάση PendingIntent
� Η κλάση PendingIntent δίνει τη δυνατότηταεκτέλεσης µίας διαδικασίας από άλληεφαρµογή όπως� NotificationManager� AlarmManager� HomeScreen AppWidgetManager
� Επιτρέπει στην άλλη εφαρµογή να εκτελέσειτη διαδικασία µε τα δικαιώµατα της δικήςµας εφαρµογής
� Αντιθέτως µε το Intent όπου η διαδικασίαθα εκτελεστεί µε τα δικαιώµατα της άλληςεφαρµογής
∆ιάλεξη 4 31
∆ιάλεξη 4 Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
32
� Εισαγωγή σε Android
� ∆οµή αρχείων σε Android Projects
� Activity
� Intent
� Άλλες σηµαντικές κλάσεις
� Sensors
Η κλάση Service
� Η βασική κλάση για διαδικασίες πουεκτελούνται στο παρασκήνιο� extends Service� override onCreate
� ∆εν έχει γραφική διεπαφή� Από default δεν είναι µια ξεχωριστή
διεργασία ούτε ένα ξεχωριστό thread. Αποτελεί τµήµα του main thread.� Αν επιθυµούµε µπορούµε να
καθορίσουµε ότι θα τρέχει σε ξεχωριστήδιεργασία
� Παραδείγµατα χρήσης� network downloading� Αναπαραγωγή µουσικής στο παρασκήνιο� TCP/UDP Server
33∆ιάλεξη 4
Η κλάση BroadcastReceiver
� Λαµβάνει ανακοινώσεις broadcast και αντιδράκατάλληλα� extends BroadcastReceiver� implements onReceive()
� Οι ανακοινώσεις broadcast µπορεί να� Παράγονται από το λειτουργικό (OS-generated)
π.χ. χαµηλή στάθµη µπαταρίας, αποκατάστασησύνδεσης Wifi, πάτηµα του πλήκτρου τηςφωτογραφικής
� Παράγονται από το χρήστη (User-generated) π.χ. έναρξη ή τερµατισµός µια διαδικασίας, ενεργοποίηση ενός χαρακτηριστικού
34∆ιάλεξη 4
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
BroadcastReceiver – Παράδειγµα
� Παράδειγµα χρήσης BroadcastReceiver γιαανάκτηση πληροφοριών σχετικά µε το Wifi
36
Manifest File
Activity
WifiReceiver extends BroadcastReceiver
WifiReceiver extends BroadcastReceiver
∆ιάλεξη 4
BroadcastReceiver – Παράδειγµα
∆ιάλεξη 7 37
WifiReceiver
Η κλάση IntentService
� Χρησιµοποιείται� Για διαδικασίες που απαιτούν πολύ χρόνο.
� Συνήθως δεν απαιτείται επικοινωνία µε το main thread� Αν χρειαστεί επικοινωνία µε το main thread, γίνεται µε
τη βοήθεια handler ή broadcast intents
� Όταν απαιτείται callback (intent)
� Καλείται µέσω intent µόνο από το main Thread� Εκτελείται σε ξεχωριστό νήµα (worker thread)� ∆ΕΝ µπορεί να εκτελέσει πράγµατα παράλληλα� Πολλαπλά intents δηµιουργούν ουρά εκτελέσεων
στο ίδιο worker thread
∆ιάλεξη 4 38
Η κλάση 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
Η κλάση Log
∆ιάλεξη 7 40
HelloActivity
LogCat
Ειδοποιήσεις (Notifications) (1)
� ∆ηµιουργία ειδοποιήσεων στο Android
� Τριών ειδών ειδοποιήσεις
� Toast
� AlertDialog
� Notification
41∆ιάλεξη 4
Ειδοποιήσεις (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
Ειδοποιήσεις (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
Fragments
� Ανεξάρτητο component το οποίο χρησιµοποιείται απόactivities. Για τα fragments ορίζεται κύκλος ζωήςαντίστοιχος του κύκλου ζωής ενός activity.
� ∆υναµικός και στατικός ορισµός(on application running).
� Θεωρείται ως ένα είδος sub-activity.
� Μια κλάση ορίζεται ως Fragment� extend Fragment,ListFragment,DialogFragment,PreferenceFragment
� Override onCreateView().
� Γενικά µας δίνει την δυνατότητα να επαναχρησιµοποιούµεcomponents σε διαφορετικά layouts.
∆ιάλεξη 4 44
G1
Slide 44
G1 µπορει και να µπερδεψει λιγο αλλα δειχνει την αντιστοιχια µε τα activities.George, 12/02/2014
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 πλέον δεν είναι ορατό στονχρήστη.
Fragments(2)
∆ιάλεξη 4 46
ViewPager
� Layout διαχειριστής, επιτρέπει στον χρήστη να πλοηγείται «δεξιά -αριστερά» σε διαφορετικές οθόνες δεδοµένων.
� Η χρήση του ViewPager προϋποθέτει τον ορισµό του PageAdapter. ΟPageAdapter είναι υπεύθυνος για την δηµιουργία των οθονών τουViewPager.
� Συνδυαστική χρήση µε Fragment µε σκοπό την βέλτιστη διαχείριση τουκύκλου ζωής της εκάστοτε σελίδας.
∆ιάλεξη 4 47
G2
G3
Slide 47
G2 στα αγγλικα οριζεται ως page αλλα δεν µου κολλαγεGeorge, 12/02/2014
G3 αντιστοιχαGeorge, 12/02/2014
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
∆ιάλεξη 4 Τµήµα Πληροφορικής και Τηλεπικοινωνιών
Ανάπτυξη Λογισµικού
Χειµερινό Εξάµηνο 2016-2017
49
� Εισαγωγή σε Android
� ∆οµή αρχείων σε Android Projects
� Activity
� Intent
� Άλλες σηµαντικές κλάσεις
� Sensors
Αισθητήρες - Sensors
� Τι είναι αισθητήρας;� Συσκευή που ανιχνεύει και αποκρίνεται σε
κάποιου είδους εξωτερικό ερέθισµα
� Τύποι αισθητήρων
� Κίνησης (π.χ. επιταχυνσιόµετρο, γυροσκόπιο)� Περιβάλλοντος (π.χ. θερµοκρασίας, φωτισµού)� Τοποθεσίας (π.χ. προσανατολισµού,
µαγνητόµετρο)
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
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)
Καλές πρακτικές
� 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
Αναφορές
� 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
Αναφορές
� 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