mobile application development framework

40
1 Mobile Application Development Framework 4/16/2009 Richard Yang

Upload: luigi

Post on 21-Jan-2016

46 views

Category:

Documents


4 download

DESCRIPTION

Mobile Application Development Framework. 4/16/2009 Richard Yang. Recap. What are the major considerations in developing a software environment and application framework for mobile wireless applications? Handle heterogeneous devices/configurations Efficient (memory, battery, …) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Mobile Application Development Framework

1

Mobile Application Development Framework

4/16/2009

Richard Yang

Page 2: Mobile Application Development Framework

2

Recap

What are the major considerations in developing a software environment and application framework for mobile wireless applications? Handle heterogeneous devices/configurations Efficient (memory, battery, …) Easy programming for event-driven

programming …

Page 3: Mobile Application Development Framework

Recap: TinyOS

Software componentsprovide commands andrequire callback hooks

A configuration linkscomponents and uses only necessary components

Two threads one for event one for task

3

ADC.nc

interface ADC {

async command result_t getdata(); 

async command result_t getContinuousData(); 

event result_t dataReady(uint 16_t data);

} configuration SenseTask { // this module does not provide any interfaces}implementation{ components Main, SenseTaskM, LedsC, TimerC, DemoSensorC as Sensor;

Main.StdControl -> TimerC; Main.StdControl -> Sensor; Main.StdControl -> SenseTaskM;

SenseTaskM.Timer -> TimerC.Timer[unique("Timer")]; SenseTaskM.ADC -> Sensor; SenseTaskM.Leds -> LedsC;}

Page 4: Mobile Application Development Framework

4

Recap: J2ME/.NetCF

Scale down a popular programming environment to ease learning

Use virtual machines to mask device heterogeneity

Use versioning to handle configuration heterogeneity and avoid using lowest common denominator

Provide classes to support user-interface driven applications

Page 5: Mobile Application Development Framework

Application Framework (Android): Key Concepts

Activity Visible screen for user interaction

Service Background services

Content provider Shared data

Service/Event discovery Broadcast receivers: Receive and react to

broadcast events Intent and Intent Filter

5

Page 6: Mobile Application Development Framework

Andriod Features

Linux kernel as foundation

Java based framework (J2SE not J2ME)

Dalvik Virtual machine

6

Page 7: Mobile Application Development Framework

Andriod

7

Page 8: Mobile Application Development Framework

Activity (Visual User Interaction)

8

Page 9: Mobile Application Development Framework

Discussion: Key Issues in Designing Activity Support in Mobile Env. Constrained display screen

Solution: specially simple display components Need “smart” layout management Event handling of UI

Lifecycle support May need frequent resource (memory)

release/acquisition Fast switch between activities/screens Frozen app. Management Persistent state management

9

Page 10: Mobile Application Development Framework

10

MIDP: GUI

Implementations control the look and layout of screen components

Title

High-level Components

Ticker tape (Optional; device manufacturer can place it at the top or bottom of the screen)

Page 11: Mobile Application Development Framework

MIDP: Visual Display Management

Display the manager of the display and input devices Each MIDP has one instance of Display

• Display.getDisplay(this) to get the manager• At any instance of time at most one Displayable

object can be shown on the display device and interact with user– display.setCurrent(<Displayable object>)

11

Page 12: Mobile Application Development Framework

12

Lists Text Boxes Alerts Forms Form Items

Labels Image Items String Items Text Fields Date Fields Gauges Choice Groups

Similar to J2SE GUI but reduced

MIDP: GUI

Page 13: Mobile Application Development Framework

MIDP: Visual Display

Displayable Canvas

• GameCanvas

Screen• Alert, List, TextBox, Form

Form can contain multiple form items for organization Labels, Image Items, String Items, Text Fields, Date

Fields, Gauges, Choice Groups

13

Page 14: Mobile Application Development Framework

MIDP: User Interaction

Displayable objects can declare commands and declare a command listener: addCommand(Command cmd) addCommandListener()

Command(<label>, <type>, <priority>) Type: BACK, CANCEL, EXIT, HELP, ITEM, OK, SCREEN, and STOP

14

Page 15: Mobile Application Development Framework

15

MIDP: Lifecycle

MIDlets move from state to state in the lifecycle, as indicated

start – acquire resources and start executing

pause – release resources and become quiescent (wait)

destroy – release all resources, destroy threads, and end all activity

Pause

Active

Destroyed

startApp

destroyApp

pauseApp

destroyApp

Page 16: Mobile Application Development Framework

Example

See HelloMIDlet.java

16

Page 17: Mobile Application Development Framework

Check on MIDP

Constrained display screen Display components Layout management Event handling of UI

Lifecycle support May need frequent resource (memory)

release/acquisition Fast switch between activities/screens Frozen app. Management Persistent state management

17

Page 18: Mobile Application Development Framework

MIDP: Persistent State

Record store defined in javax.microedition.rms

Record store identified by name: recordStore =

RecordStore.openRecordStore("scores", true); recordId = addRecord(byte[] data, int offset,

int numBytes); getRecord(int recordId);

18

Page 19: Mobile Application Development Framework

Android Activity Life cycle

19

Page 20: Mobile Application Development Framework

Android Service Life Cycle

void onCreate()

void onStart(Intent intent)

void onDestroy()

20

Page 21: Mobile Application Development Framework

Android: Visual Display

Similar to J2SE

Interesting feature: using xml resources for GUI management

21

Page 22: Mobile Application Development Framework

Example

22

http://developer.android.com/guide/tutorials/views/hello-

tablelayout.html

see tablelayout.xml

Page 23: Mobile Application Development Framework

Example: Calculator

23

Page 24: Mobile Application Development Framework

Check on Android

Constrained display screen Display components Layout management Event handling of UI

Lifecycle support May need frequent resource (memory)

release/acquisition Fast switch between activities/screens Frozen app. Management Persistent state management

24

Page 25: Mobile Application Development Framework

Persistent Data Storage

Preference store and retrieve key-value pairs of primitive

data types, e.g., font, greeting See preference.java

File

SQL

25

Page 26: Mobile Application Development Framework

Inter-Activity Data Exchange

26

Page 27: Mobile Application Development Framework

MIDP

Uses Record Store static String[] listRecordStores()

27

Page 28: Mobile Application Development Framework

Android: Content Provider

Each provider can expose its data as a simple table on a database model

Each content provider exposes a public URI that uniquely identifies its data set:

android.provider.Contacts.Phones.CONTENT_URI android.provider.Contacts.Photos.CONTENT_URI android.provider.CallLog.Calls.CONTENT_URI android.provider.Calendar.CONTENT_URI

28

Page 29: Mobile Application Development Framework

Android: Content Provider

29

See ContentProvider for query example

Page 30: Mobile Application Development Framework

Inter-Activity Service/Event Discovery

30

Page 31: Mobile Application Development Framework

Intent

<Component name> [optional] Action

Data, e.g., mpeg Category, e.g., browserable

31

Page 32: Mobile Application Development Framework

Intent

An Intent object is passed to Context.startActivity() or Activity.startActivityForResult() to launch an activity or get an existing activity to do something new.

An Intent object is passed to Context.startService() to initiate a service or deliver new instructions to an ongoing service. Similarly, an intent can be passed to Context.bindService() to establish a connection between the calling component and a target service. It can optionally initiate the service if it's not already running.

Intent objects passed to any of the broadcast methods (such as Context.sendBroadcast(), Context.sendOrderedBroadcast(), or Context.sendStickyBroadcast()) are delivered to all interested broadcast receivers. Many kinds of broadcasts originate in system code.

32

Page 33: Mobile Application Development Framework

Intent Resolution

Explicit intents: component identified

Implicit intents System matches an intent object to the intent

filters of others

33

Page 34: Mobile Application Development Framework

Intent filter

34

action

category

data

Page 35: Mobile Application Development Framework

Android: Broadcast Receiver

Sending a broadcast: Context.sendBroadcast(Intent intent, String receiverPermission)

Context.sendOrderedBroadcast()

Receiving broadcast: Intent registerReceiver (BroadcastReceiver receiver, IntentFilter filter)

35

Page 36: Mobile Application Development Framework

Recap: Application Framework (Android) Key Concepts

Activity Visible screen for user interaction

Service Background service

Content provider Shared data

Service/event discovery Intent and Intent Filter: publish/subscription Broadcast receivers: receive and react to

broadcast events

36

Page 37: Mobile Application Development Framework

Intent

<Component name> [optional] Action

Data, e.g., mpeg Category, e.g., browserable

37

Page 38: Mobile Application Development Framework

Intent Resolution

Explicit intents: component identified

Implicit intents System matches an intent object to the intent

filters of others

38

Page 39: Mobile Application Development Framework

Intent filter

39

action

category

data

Example: Home

Page 40: Mobile Application Development Framework

Big Picture

40

Foundational Primitives: Communications, Location, Service Discovery,

UI/Media, Power Management, Security

Application Development Framework

Applications