2. Mobile Eco-System
Content Providers
(Music/Video/Books)
Ad Networks App.
Distribution
Platform
Billing
Telephone Handset Cloud
Networks OEMs Infrastructure
2 R. Vasa, 2011
3. Android Eco-System
Content Providers
(Music/Video/Books) Google, Amazon
App.
Ad Networks ** Distribution
Google, Double Click
Platform Google Checkout
Android Billing
Google, Amazon
Telephone Handset Cloud
Networks (OEMs) Infrastructure
Samsung, HTC, Motorola, Sony ...
3 R. Vasa, 2011
4. Focus of this talk...
Content Providers
(Music/Video/Books) Google, Amazon
App.
Ad Networks ** Distribution
Google, Double Click Android Google Checkout
Platform Billing
Google, Amazon
Telephone Handset Cloud
ThisNetworks
talk will present a(OEMs)
development perspective
Infrastructure
Samsung, HTC, Motorola, Sony ...
4 R. Vasa, 2011
5. Talk Overview
• Devices
• What is Android?
• Development Tools
• The Android Way
• Anatomy of a Simple Android Application
• An Interactive Android Application
• Dealing with Multiple Activities
• Activity Life Cycle (the odd thing)
5 R. Vasa, 2011
6. Roadmap - Where are we?
• Devices
• What is Android?
• The Android Way
• Anatomy of a Simple Android Application
• An Interactive Android Application
• Dealing with Multiple Activities
• Activity Life Cycle (the odd thing)
6 R. Vasa, 2011
7. Android Device User Interaction
Android devices have
three key buttons
Menu
Back Home
7 R. Vasa, 2011
9. There are variations in physical form
But all phones have Home, Menu, & Back Buttons
9 R. Vasa, 2011
10. Home Button...
• Typically, this will take you back to the Home
Screen of the phone
• Default behaviour ~ iPhone / iPad button
Home
10 R. Vasa, 2011
11. Back Button
• This will take you back to the previous screen
• If app. has only one screen, this will exit app.
Personal Opinion:
Back iPhone / iPad should
borrow this button
11 R. Vasa, 2011
12. Menu Button
• Shows a contextual menu (if one is available)
• Developers can write their own menus
• Quite handy (but, causes Usability issues)
• Low Discoverability
Menu (as open)
12 R. Vasa, 2011
13. Android for tablets is slightly different...
Action Bar
Where is the menu button?
Back, Home
(Buttons need not be physical in Android)
13 R. Vasa, 2011
14. Tablet Menu Icon Visibility is contextual
Menu
Sadly, menu position is not mandated (yuk?)
14 R. Vasa, 2011
15. Roadmap - Where are we?
• Devices
• What is Android?
• Development Tools
• The Android Way
• Anatomy of a Simple Android Application
• An Interactive Android Application
• Dealing with Multiple Activities
• Activity Life Cycle (the odd thing)
15 R. Vasa, 2011
16. What is Android?
• Android is a platform
• Operating System (with primitive API)
• Frameworks (incl. components and libraries)
Applications
Frameworks
Android
API
Operating System
(Customised Linux Kernel)
16 R. Vasa, 2011
18. Android is a bi-lingual platform
C/C++ Java
Image Source: http://www.tbray.org
18 R. Vasa, 2011
19. Most Android Code is in Java (but...)
≠
Android Java is not 100% Sun Java
19 R. Vasa, 2011
20. Android Java is different (in many ways)
No RMI
No Bytecode
No AWT / Swing UI
Different 2D/3D libs
Different Class Load Mechanism
20 R. Vasa, 2011
21. Roadmap - Where are we?
• Devices
• What is Android?
• Development Tools
• The Android Way
• Anatomy of a Simple Android Application
• An Interactive Android Application
• Dealing with Multiple Activities
• Activity Life Cycle (the odd thing)
21 R. Vasa, 2011
22. Development Tools
• Android SDK (Compiler and Emulator)
• Eclipse IDE + Android Plug-in
• Powerful debugger
• Visual UI Builder
• Ant (Build System)
Download from http://developer.android.com
22 R. Vasa, 2011
25. Android Emulator
Permits checking Portrait
and Landscape views
25 R. Vasa, 2011
26. Emulator is nice .. but phone is better
• The emulator runs the Android O/S (you can
run any version: 1.6 to 3.0)
• Emulates the phone hardware (like VM Ware)
• Emulator does not have sensors (e.g. GPS,
Gyro, Accelerometer, Cell phone etc.)
• It however offers ways to simulate these
events
• make a phone call to it
So, I can send an SMS to the emulator or
26 R. Vasa, 2011
27. Emulators Vs Simulator
• iOS offers a simulator
• Android has gone down the emulator path
• Trade-offs (pros and cons),
• Simulators start-up faster, good enough
• Emulators allow closer to phone hardwareof
the O/S easily +
checking against rel. 1.6
• Emulators and Simulators cannot mimic real
CPU speed, disk speed, network speed etc.
(yet!)
27 R. Vasa, 2011
28. If your Java is rusty
Free e-Book: http://www.mindview.net/Books/TIJ/
28 R. Vasa, 2011
29. Roadmap - Where are we?
• Devices
• What is Android?
• Development Tools
•The Android Way
• Anatomy of a Simple Android Application
• An Interactive Android Application
• Dealing with Multiple Activities
• Activity Life Cycle (the odd thing)
29 R. Vasa, 2011
30. The Android Way
Convention
Configuration
Development is organised around a few conventions
30 R. Vasa, 2011
33. Roadmap - Where are we?
• Devices
• What is Android?
• Development Tools
• The Android Way
• Anatomy of a Simple Android Application
• An Interactive Android Application
• Dealing with Multiple Screens (Activities)
• Activity Life Cycle (interesting design choice)
33 R. Vasa, 2011
35. What is involved?
• Place UI controls (Text and Image)
• Layout the controls
• Centre text
• Make text large font
• Display Image to take up all space
35 R. Vasa, 2011
36. Each Screen is an Activity
• Android app. is made up of Activities
Activity
36 R. Vasa, 2011
37. Views are Android’s Key UI Building Block
• We need two views on the Activity
TextView
ImageView
37 R. Vasa, 2011
38. Views are Placed inside a View Group
• Different types of pre-defined layouts
• Linear, Relative, Table, Frame etc..
View Group
a.k.a Layout
38 R. Vasa, 2011
39. Android App. - Building Blocks
Activity Layout Views
(View Group)
39 R. Vasa, 2011
40. Separation of Concerns in Android
Presentation Functionality
Layout Definition Activity Class
(main.xml)
Event Handling, I/O ...
40 R. Vasa, 2011
41. UI (Layout) Definition
• Layout definition is generally in an XML file
• Hand coded or Visual Editor
• Can be also be done in Java Code (yuk!)
Layout Definition XML File
41 R. Vasa, 2011
42. Android Offers a number of UI Controls
• Offers all standard controls and lot more...
Progress
These are
a small
subset of
available
controls
42 R. Vasa, 2011
43. View Groups and Layouts
• Android offers the following View Groups,
• Linear Layout (Horizontal or Vertical)
• Absolute Layout (You set X, Y for each View)
• Table Layout (Rows and Columns)
• Relative Layout ( )
Position relative to other Views
• Frame Layout (Show only one view at a time)
• Scroll View (Permits scrolling of the screen)
•View Groups can be nested
43 R. Vasa, 2011
44. Generated Code, Layout & Resources
• How did Australia image get into the App.?
• How did we set the text to “Australia”?
• Conventions
• Layout Defined in /layout/main.xml
• Resources Placed in /res/drawable-*
• String values defined in/values/strings.xml
44 R. Vasa, 2011
45. Resources
Resources in “res”
Convention
45 R. Vasa, 2011
46. Resources are given a unique ID
A unique reference id
to resources is
generated by the
Android SDK tools
Convention
46 R. Vasa, 2011
47. Resources and Generated IDs
Generated Code
static final int australia=0x7f020000;
47 R. Vasa, 2011
48. A Reference to Layout also Generated
All References are Integers
48 R. Vasa, 2011
49. Identifiers are used to access resources
This is the Activity Class
Reference to the layout
(Android Runtime will Render this Layout)
49 R. Vasa, 2011
50. Layout is Referred to from Java Code
Activity Activity Class (Java)
View Group
(Layout)
Layout Definition
(main.xml)
50 R. Vasa, 2011
51. Who writes the Activity code?
This block of code is created by IDE/SDK
when we create new Android project
You can also write you own
51 R. Vasa, 2011
52. Activity Creation
Method called (by Application Launcher)
when App is first launched
52 R. Vasa, 2011
53. Activity Creation - Layout Rendering
Method call will pass the reference to the layout
that needs to be rendered on the screen
(“Rendering” is a two-pass process: measure and draw)
53 R. Vasa, 2011
54. What is the “root” Activity?
• How does Android know which Activity to
create first?
Answer: Application Manifest File
54 R. Vasa, 2011
58. Layouts and String Information
• How did we set the text to “Australia”
String constant
58 R. Vasa, 2011
59. Using Graphical Resources
• How did the Australia image get into layout?
Layout can refer to resources
@drawable is a special tag
59 R. Vasa, 2011
60. What is it with the @ tag?
• Constant Resources in Android can be
referred using the “@” tag in XML layout
• Example: @drawable, @string ...
@drawable/australia
@drawable/bots
60 R. Vasa, 2011
61. @ Tag and Multiple Screen Resolutions
• Dealing with multiple screen resolutions
@drawable/icon
Android Runtime decides best resource to use based on
hardware capabilities
R. Vasa, 2011
62. Significance of hdpi/ldpi/mdpi
Different resolution images
High-Res, 240 dpi screen
Low-Res, 120 dpi screen
Med-Res, 160 dpi screen
62 R. Vasa, 2011
63. Roadmap - Where are we?
• Devices
• What is Android?
• Development Tools
• The Android Way
• Anatomy of a Simple Android Application
• An Interactive Android Application
• Dealing with Multiple Screens (Activities)
• Life Cycle & interesting design choices
63 R. Vasa, 2011
64. Building an App with Simple Interaction
• Temperature Conversion (C -> F)
64 R. Vasa, 2011
65. Views
TextView
EditText
Button
TextView
4 Views (UI components) using a Linear Layout
65 R. Vasa, 2011
67. View Identifiers
• We need a way to identify components that
we created in the layout
• E.g. To read input data from the field
@+id TAG creates new identifiers
67 R. Vasa, 2011
68. UI Interaction Handling Pattern
• Component.setOn......Listener ( handler )
• E.g. button.setOnClickListener
• Handler is an anonymous inner class
• On...Listener handler = new On....Listener() {}
68 R. Vasa, 2011
70. Roadmap - Where are we?
• Devices
• What is Android?
• Development Tools
• The Android Way
• Anatomy of a Simple Android Application
• An Interactive Android Application
• Dealing with Multiple Screens (Activities)
• Life Cycle & interesting design choices
70 R. Vasa, 2011
71. Wiring up Multiple Activities
Contact List Activity Contact Details
Select
Back
71 R. Vasa, 2011
72. Activities are Stacked in Android
• All current activities are placed on a Stack
• Newly started activities come into foreground
Foreground/Active
Contact Details
Back button will
Background/
pop top most starts
Paused
activity from stack Contact List
72 R. Vasa, 2011
73. Activities are like mini-processes
• Android activities have their own life cycle
• Asynchronous Messaging
Communication between Activities is done by
message
Contact List Contact Details
73 R. Vasa, 2011
74. Async. messaging called “Intents”
intent
Contact List Contact Details
Activities communicate with each other via Intents
74 R. Vasa, 2011
75. Async. messaging called “Intents”
Activity-X Photo Viewer
view photo
intent
You can send a general purpose message (intent), all
applications capable of handling that Intent will respond
Framework prescribes conventions for common intents
75 R. Vasa, 2011
76. Roadmap - Where are we?
• Devices
• What is Android?
• Development Tools
• The Android Way
• Anatomy of a Simple Android Application
• An Interactive Android Application
• Dealing with Multiple Screens (Activities)
•Life Cycle (& interesting design choices)
76 R. Vasa, 2011
77. Android Activities are Managed by O/S
Application
Activities have a
parent application
Activity-A
Activity-B
Activity-C
Activity has Life Cycle
Application is NOT managed
directly by the O/S
Life Cycle is Managed by Android Framework
77 R. Vasa, 2011
78. Android Activity Life Cycle
Activity is re-started when
orientation changes
Developers have to save
and retrieve state if
orientation changes
78 R. Vasa, 2011
79. Security -- Android Devices
has
User UID (User ID)
also has determines
Android File System Access
Application Permissions
The UID is generated at install time based on
the signature and package name
79 R. Vasa, 2011
81. Mobile Development @ Swinburne
• HIT8328 - Software Development for
Mobile Devices
• Android focused
• HIT8329 - Creating Data Driven Mobile
Applications
We Offer
• iOS focused Options to Study
• Portfolio Based Assessments Just One Subject
• We do not just cover API -- thereyoua to learn)
conceptual foundation (prepare
is strong
Teaching material will be available openly shortly
81 R. Vasa, 2011
82. Mobile Development @ Swinburne
• HIT8328 - Software Development for
Mobile Devices
•Applications
HIT8329 - Creating Data Driven Mobile
Teaching material will be available
under an open license shortly
Follow @rvasa or @swinfict for update
82 R. Vasa, 2011