Você está na página 1de 82

Climbing Mount Android

Rajesh Vasa, 2011


Twitter: @rvasa
http://www.rvasa.com

1
Mobile Eco-System

Content Providers
(Music/Video/Books)

Ad Networks App.
Distribution

Platform
Billing

Telephone Handset Cloud


Networks OEMs Infrastructure

2 R. Vasa, 2011
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
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)
developmentInfrastructure
perspective
Samsung, HTC, Motorola, Sony ...

4 R. Vasa, 2011
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
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
Android Device User Interaction

Android devices have


three key buttons
Menu

Back Home

7 R. Vasa, 2011
Vendors can add additional buttons

8 R. Vasa, 2011
There are variations in physical form

But all phones have Home, Menu, & Back Buttons


9 R. Vasa, 2011
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
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
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
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
Tablet Menu Icon Visibility is contextual
Menu

Sadly, menu position is not mandated (yuk?)


14 R. Vasa, 2011
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
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
Android
Programming languages: Java, C/C++

Image Source: http://developer.android.com


17 R. Vasa, 2011
Android is a bi-lingual platform
C/C++ Java

Image Source: http://www.tbray.org


18 R. Vasa, 2011
Most Android Code is in Java (but...)


Android Java is not 100% Sun Java
19 R. Vasa, 2011
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
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
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
Eclipse IDE

23 R. Vasa, 2011
Eclipse IDE - Graphical UI Editor

24 R. Vasa, 2011
Android Emulator

Permits checking Portrait


and Landscape views

25 R. Vasa, 2011
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.)

• Itevents
however offers ways to simulate these

• make a phone call to it


So, I can send an SMS to the emulator or

26 R. Vasa, 2011
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 checking against rel. 1.6 of


the O/S easily + closer to phone hardware

• Emulators and Simulators cannot mimic real


CPU speed, disk speed, network speed etc.
(yet!)

27 R. Vasa, 2011
If your Java is rusty

Free e-Book: http://www.mindview.net/Books/TIJ/

28 R. Vasa, 2011
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
The Android Way

Convention

Configuration

Development is organised around a few conventions


30 R. Vasa, 2011
Android Project Structure (convention)
•Source code (src)
•Generated code (gen)
•Resources (res)
•Images (drawable)
•Layout of app (layout)
•Constants/Strings (values)

31 R. Vasa, 2011
Needs Resources @Multiple Resolutions
Convention

High

Low

Medium

32 R. Vasa, 2011
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
A Simple Android App.

34 R. Vasa, 2011
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
Each Screen is an Activity
• Android app. is made up of Activities

Activity

36 R. Vasa, 2011
Views are Android’s Key UI Building Block
• We need two views on the Activity

TextView

ImageView

37 R. Vasa, 2011
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
Android App. - Building Blocks

Activity Layout Views


(View Group)

39 R. Vasa, 2011
Separation of Concerns in Android

Presentation Functionality

Layout Definition Activity Class


(main.xml)
Event Handling, I/O ...

40 R. Vasa, 2011
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
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
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
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
Resources

Resources in “res”

Convention
45 R. Vasa, 2011
Resources are given a unique ID

A unique reference id
to resources is
generated by the
Android SDK tools

Convention
46 R. Vasa, 2011
Resources and Generated IDs

Generated Code

static final int australia=0x7f020000;

47 R. Vasa, 2011
A Reference to Layout also Generated

All References are Integers

48 R. Vasa, 2011
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
Layout is Referred to from Java Code
Activity Activity Class (Java)

View Group
(Layout)

Layout Definition
(main.xml)

50 R. Vasa, 2011
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
Activity Creation

Method called (by Application Launcher)


when App is first launched

52 R. Vasa, 2011
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
What is the “root” Activity?
• How does Android know which Activity to
create first?

Answer: Application Manifest File

54 R. Vasa, 2011
Application Manifest File
Application Icon Reference

Activity Name Category


55 R. Vasa, 2011
Application Manifest File

Category indicates that it can be launched


56 R. Vasa, 2011
Application Manifest File

Main action indicates that it is the starting point


57 R. Vasa, 2011
Layouts and String Information
• How did we set the text to “Australia”

String constant

58 R. Vasa, 2011
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
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
@ 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
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
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
Building an App with Simple Interaction
• Temperature Conversion (C -> F)

64 R. Vasa, 2011
Views

TextView

EditText
Button

TextView

4 Views (UI components) using a Linear Layout


65 R. Vasa, 2011
Linear Layout (View Group)

main.xml
(Layout)

66 R. Vasa, 2011
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
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
UI Interaction Handling Pattern
The View identifiers
are defined in XML

69 R. Vasa, 2011
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
Wiring up Multiple Activities
Contact List Activity Contact Details

Select

Back

71 R. Vasa, 2011
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
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
Async. messaging called “Intents”
intent
Contact List Contact Details

Activities communicate with each other via Intents

74 R. Vasa, 2011
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
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
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
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
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
A Short Plug!!!

80 R. Vasa, 2011
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 -- there is a strong
conceptual foundation (prepare you to learn)

Teaching material will be available openly shortly


81 R. Vasa, 2011
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

Você também pode gostar