40
1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

  • View
    215

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

1

Mini Course

Programming Context-aware Mobile Phones

Thomas Bodin

IT University of Copenhagen

Page 2: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

2

Week agenda

09.00 - 12.00: Lectures in AUD 3

13.00 - 16.00: Exercises in room 3A52

Homepage: http://lacomoco.itu.dk/minicourse/

Page 3: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

3

Monday agenda

Context-aware computing There is more to Context than Location On location models for ubiquitous computing Positioning Technologies Mobility Lab

Introduction to week exercise The afternoon exercises will lead to a small distributed system

consisting of a client-side covering the j2ME/JSR 82 API and a server-side covering the BlipNet API.

Introduction to server-side programming Design Patterns Distributed system

Page 4: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

4

Context-aware computing

There is more to Context than Location December 1999

On location models for ubiquitous computing 25 August 2004

Page 5: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

5

There is more to Context than Location

Mobile computing vs. ultra-mobile computing Ultra-mobile devices (PDA, mobile phones, wearable computers) Related Work

Active Badge System (sensing locality of mobile users) Stick-e-notes (time and location tagging)

Observation Lack of context definition Location sensing is dominant Lack of sensor employment

Page 6: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

6

There is more to Context than Location

Context model proposal Describes the situation/environment a device/user is in Identified by a unique name that goes into two general categories

Human factors Physical environment

For each context a set of features is relevant For each relevant feature a range of values is determined by the

context Applying context in two general ways

Changes in the environment (e.g. walking tour) Improvement of the user interface (e.g. light-sensitive display and

orientation-sensitive user interface)

Page 7: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

7

There is more to Context than Location

Three application domains Adaptive user interfaces (interaction styles and display modes) Context-aware communication (filter, reroute and deliver messages

and streams in accordance with context) Proactive application scheduling (ad hoc style of interaction)

Page 8: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

8

There is more to Context than Location

Sensor technology Optical/Vision (photo-diode, color sensor, IR, UV-sensor etc.)

Main color, motion detection (low processing) Detection of objects, landmarks, people, gestures etc. (high processing)

Audio (microphone and electronics) Determination of loudness, background noise and base frequency Speaker identification

Motion (mercury switches, angular sensors and accelerometers) Detection of stationary vs. moving

Location (GPS, GSM, Wi-Fi, Bluetooth etc)

Page 9: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

9

There is more to Context than Location

Sensor technology (continued) Bio-Sensors (pulse, skin resistance, blood pressure etc.)

Emotional state can be estimated Specialized sensors (touch, temperature, air pressure etc.)

Specialized applications Security systems

Page 10: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

10

There is more to Context than Location

Sensor fusion Physical/logical sensors Cues: abstraction from physical/logical sensors

Ex 1: Artificial light, stationary or walking, room temperature, dry Ex 2: Natural light (clody or sunny), walking or running, dry or raining,

high pulse Context: description of a current situation

Ex 1: In the office Ex 2: Jogging

Scripting: including context in application

Page 11: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

11

On location models for ubiquitous computing

Crucial for location-based or context-aware applications Supporting position, nearest neighbor and range queries No location model satisfies all identified requirements (choose

location models carefully with respect to the required spatial reasoning and the involved modeling effort).

Geometric coordinates (Global Positioning System (GPS), active bat system)

Symbolic coordinates (Global System for Mobile Communications (GSM), active badge system based on infrared signals (IR) or radio frequency identification (RFID))

Page 12: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

12

On location models for ubiquitous computing

The system model consists of three kinds of components:

Applications

The location model

Positioning systems

Page 13: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

13

On location models for ubiquitous computing

Use cases for location models Position queries

Geometric position (global and local coordinate reference systems) Symbolic position (cell IDs)

Nearest Neighbor queries Searching for the n objects closest to a certain position Distance function required

Page 14: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

14

On location models for ubiquitous computing

Use cases for location models (continued) Navigation

The topological relation connected to (finding the shortest/fastest path

Range queries The topological relation contained in

Page 15: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

15

Positioning Technologies

WLAN WiFi Positioning Bluetooth Positioning

GSM GPS RFID

Page 16: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

16

WLAN

IEEE (Institute of Electrical and Electronics Engineers) is a non-profit organization that develops, defines, and reviews electronics and computer science standards.

Wireless Local Area Network (WLAN) Working Group (802.11) IEEE 802.11b – Wireless Fidelity (WiFi) providing 11 Mbps data rate

in 2.4 GHz ISM band Wireless Personal Area Network (WPAN) Working Group

(802.15) IEEE 802.15.1 – Bluetooth providing 1 Mbps data rate and 10 – 100

meter range in the 2.4 GHz ISM band

Page 17: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

17

WLAN – WiFi Positioning

A calibration model is used to calculate the device location based on the received signal strengths.

Page 18: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

18

WLAN – Bluetooth Positioning

Page 19: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

19

GSM

GSM (Global System for Mobile Communications) has become the most successful global mobile technology for mobile phones and digital cellular networks with more than one billion subscribers.

GPRS (general packet radio service) is used as a data service upgrade to the GSM network with transmission bit rates from 9.6 Kbps to more than 150 Kbps. It supplements the SMS (Short Message Service).

The new EDGE air interface has been developed specifically to meet the bandwidth needs of 3G.

Page 20: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

20

GSM

Page 21: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

21

GPS

GPS (Global Positioning System) is a satellite navigational system formed by 24 satellites making two complete orbits every 24 hours

By using three satellites, GPS can calculate the longitude and latitude of the receiver based on where the three spheres intersect (cf. triangulation).

Developed and operated by the U.S. Department of Defense. Galileo will be Europe’s own global navigation satellite system,

providing a highly accurate, guaranteed global positioning service under civilian control. It will be inter-operable with GPS and GLONASS, the two other global satellite navigation systems

Page 22: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

22

RFID

RFID (Radio Frequency Identification) A technology similar in theory to bar code identification Transmission ranges of more than 90 feet

Page 23: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

23

Mobility Lab

Page 24: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

24

Mobility Lab - Support

Webpage: http://mobilitylab.itu.dk/ Opening hours according to personal support and equipment

registration: Monday-Friday 13.00 - 14.00 Newsgroup: it-c.mobilitylab Mailinglist: [email protected]

Page 25: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

25

Introduction to week exercise

The afternoon exercises will lead to a small distributed system consisting of a client-side covering the j2ME/JSR 82 API and a server-side covering the BlipNet API.

Initially, the overall functionality will be to exchange small visiting cards with name, phone number, current location etc. Also, this information exchange may include messages attached to certain locations of mobile devices. Technologically, the exchange service will rely on a certain Bluetooth profile (supported by the mobile phone), and the location of a mobile device is achieved through a Bluetooth access point (cf. cell id).

Page 26: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

26

Introduction to week exercise

Page 27: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

27

Introduction to week exercise

The SPP Server contains 4 main classes SppServer

Handles the connection to the BlipServer Spawns an SppServerSession object when a connection to a mobile

phone (cf. terminal) has been made SppServerSession

Management of input-/output stream Implementation of application protocol

SppServerDatabase Management of the JDBC in order to register terminals (bluetooth

address, name, phonenumber) SppServerException

Page 28: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

28

Introduction to week exercise

The SPP MIDlet contains 8 main classes SppMIDlet

Initializes the MIDlet SppDiscovery

Discovers the connected BlipNodes (cf. inquiry) SppBlipNodeList

Appends the BlipNodes (discovered by the SppDiscovery) to the mobile phone display

SppStream Management of input-/output stream Implementation of application protocol

Page 29: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

29

Introduction to week exercise

The SPP MIDlet contains 8 main classes (continued) SppCardForm

Handles the exchange of visiting card data (bluetooth address, name, phonenumber)

SppCardPositionForm Handles the name and area exchange (e.g. the user requests the server

with a username, and the responds with an area, if the username is registered by the server)

SppStore Handles the persistence of data (bluetooth address, name, phonenumber

and area) on the mobile phone SppException

Page 30: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

30

Introduction to week exercise

The database ’spp’ contains 3 tables The ’area’ table contains 2 columns: ’area_id’, ’type’ The ’card’ table contains 3 columns: ’card_id’, ’bluetooth_address’,

’name’, ’phonenumber’ card_position contains 3 columns: ’card_id’, ’area_id’, ’timestamp’

Page 31: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

31

Introduction to server-side programming

Design patterns Singleton pattern Observer pattern

Distributed System Application Protocol Database connectivity (JDBC)

Page 32: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

32

Design patterns

The idea behind object-oriented programming is that a computer program is composed of a collection of individual units, or objects, as opposed to a traditional view in which a program is a list of instructions to the computer. Each object is capable of receiving messages, processing data, and sending messages to other objects.

Abstraction, encapsulation, polymorphism and inheritance are key concepts in object-oriented programming

Page 33: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

33

Design patterns

Observer pattern

Page 34: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

34

Design patterns

Observer pattern UML Minimal coupling between the Subject and the Observer Support for event broadcasting

Page 35: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

35

Design patterns

Singleton pattern UML Controlled access to sole instance Permits a variable number of instances

Page 36: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

36

Design patterns

public class SppServerDatabase { private static SppServerDatabase database;

private SppServerDatabase() throws SppServerException { try { Class.forName(“org.gjt.mm.mysql.Driver”); connection = DriverManager.getConnection(“jdbc:mysql://localhost/spp”, “root”, “ml”); System.out.println(“Connection successful!”); } catch(ClassNotFoundException cnf) { throw new SppServerException(cnf.getMessage()); } catch(SQLException sqle) { throw new SppServerException(sqle.getMessage()); } }

public synchronized static SppServerDatabase getSppServerDatabase() throws SppServerException { if(database == null) database = new SppServerDatabase(); return database; }

(…)

Page 37: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

37

Distributed System

A distributed system is defined as one in which hardware or software components located at networked computers communicate and coordinate their actions only by passing messages.

This mini course focuses on the client-server model communicating over the Serial Port Profile (cf. Bluetooth).

Page 38: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

38

Distributed System

Application Protocol (server-side)

public void run() { while(true) { try { byte[] flag = new byte[1]; is.read(flag, 0, 1); int i = (int)flag[0]; switch(i) { case CARD: readCard(); break; case CARD_POSITION: break; } } catch(IOException ioe) {} }}

Page 39: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

39

Distributed System

Application Protocol (client-side)

public void sendCard(String bluetoothAddress, String name, String phonenumber) throws SppException { byte[] flag = new byte[4]; flag[0] = (byte)CARD; flag[1] = (byte)bluetoothAddress.getBytes().length; flag[2] = (byte)name.getBytes().length; flag[3] = (byte)phonenumber.getBytes().length; try { os.write(flag); os.write(bluetoothAddress.getBytes()); os.write(name.getBytes()); os.write(phonenumber.getBytes()); os.flush(); } catch(IOException ioe) { System.out.println("IO Exception!"); }}

Page 40: 1 Mini Course Programming Context-aware Mobile Phones Thomas Bodin IT University of Copenhagen

40

Distributed System

Database connectivity (JDBC)

public void setCardId(String btAddress, String name, String phonenumber) throws SppServerException {

String query = "insert into card values (null, '” + btAddress + "','" + name + "','" + phonenumber + "')";

try {

Statement statement = connection.createStatement();

statement.execute(query);

ResultSet resultSet = statement.getResultSet();

}

catch(SQLException sqle) {

throw new SppServerException(sqle.getMessage());

}

}