16
Mobile Applications Case Mobile Applications Case Studies Studies David Tipper Associate Professor Associate Professor Department of Information Science and Telecommunications University of Pittsburgh [email protected] [email protected] http://www.sis.pitt.edu/~dtipper/2727.html Slides 13 Slides 13 INFSCI 1073/Telcom 2727 2 Application Development Tools Examined three basic architectures – Messaging – Thick/Smart Client – Thin Client Variety of software application development platforms/tools – Messaging with embedded content – J2ME, C# – cHTML, WML, XHTML-MP, VoiceXML Consider some example applications

Mobile Applications Case Studies

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Mobile Applications Case Studies

Mobile Applications Case Mobile Applications Case StudiesStudies

David TipperAssociate ProfessorAssociate Professor

Department of Information Science and Telecommunications

University of Pittsburgh

[email protected]@tele.pitt.eduhttp://www.sis.pitt.edu/~dtipper/2727.html

Slides 13Slides 13

INFSCI 1073/Telcom 27272

Application Development Tools

• Examined three basic architectures– Messaging– Thick/Smart Client– Thin Client

• Variety of software application development platforms/tools – Messaging with embedded content – J2ME, C#– cHTML, WML, XHTML-MP, VoiceXML

• Consider some example applications

Page 2: Mobile Applications Case Studies

INFSCI 1073/Telcom 27273

The Cellular Market in USA

Semi-WalledSemi-WalledWalledOpenDeployment

WAP2.0J2ME

C#

WAP 2.0BREW

WAP2.0J2ME

C#

WAP 2.0J2ME

C#

ApplicationDevelopment

Platforms

66628444HandsetsSupported

GSM/GPRS/EDGE/UMTS

CDMA 1x-rtt /EVDO

CDMA 1x-rtt/EVDO

GSM/GPRS/EDGE

Network Technology

67.4 56.85527Subscribers

INFSCI 1073/Telcom 27274

Handset Market• Top Ten Phones in US during 1/01-10/30/07

– Motorola RAZR V3 – Motorola RAZR V3m – LG VX8300 – Apple iPhone– LG Chocolate VX8550/8500 – Motorola MOTOKRZR K1m – Samsung SGH-A707 – LG VX5300 – Sanyo Katana II – Motorola V323i/V325i

• Still a wide variety of phones and capabilities –high end PDA type phones minority

Page 3: Mobile Applications Case Studies

INFSCI 1073/Telcom 27275

MVNOs

• Mobile Virtual Network Operators (MVNOs)– Resellers of airtime on a service providers network – Typically don’t own network infrastructure

• Some own service control points/HLR/SMSC/etc.- view service providers as a bit pipe

– Branding/marketing/billing – MVNOs own the customer relationship

– Some MVNOs in US• Tracfone• Cricket• Helio• Boost Mobile• Virgin Mobile• Disney Mobile closing in 12/07• ESPN Mobile closed in12/06

INFSCI 1073/Telcom 27276

MVNOs• Business argues that MVNOs need to be in a position to

offer some sort of value added features or content -True?• Most successful are using niche approach

– Tracfone: owned by Movil (largest cellular network in latin America (AT&T reseller)

• lowend market – prepaid service only – originaly focused on Hispanic market– sold at Family dollar, Safeway, Sam’s Club, Walmart, etc.

– Virgin Mobile (resells Sprint)• Part of Virgin Group (airlines, retail music + clothing,) • Lowend youth market 14-35 focus – prepaid and monthly

pricing ~ 4.8 million customers• Exclusive MTV content, lots of games, ringtones, apps, etc.

• Tracfone and Virgin combine for about 37% or prepaid market

Page 4: Mobile Applications Case Studies

INFSCI 1073/Telcom 27277

MVNOs

– Boost Mobile (Sprint-Nextel reseller)• Premium youth market 14-25 focus• Lots of games ringtones and music downloads, walkie-talkie

mode ~ 4.3 million customers

• In order to provide market differentiation MVNOs more willing then operators to deploy new applications – For example compare Virgin Mobile or Boost Mobile with Sprint

INFSCI 1073/Telcom 27278

Simple Application Example

• SMS2.0 application– Basically a reply all to multiple recipients

of SMS– Also enables sms to/from facebook

website – Currently deployed on Virgin Mobile

Page 5: Mobile Applications Case Studies

INFSCI 1073/Telcom 27279

Anthem

• Anthem – social network portal/platform to allow operator to brand/interface with social network sites – depolyedon Virgin Mobile, AT&T, 3, Boost Mobile, etc.

Combo of XHTML-MPand j2ME

INFSCI 1073/Telcom 272710

Web App Example• Rolling Store Mobile web site• Example of Clickstream (serires of clicks to get to info – want to minimize!)

Page 6: Mobile Applications Case Studies

INFSCI 1073/Telcom 272711

Location Based Appications

• Most Service providers and MVNOsprovide some type of location based applications – Mobile Mapquest – web app– Livesearch Mobile

• WAP version• Blackberry version• Windows Mobile C# version

INFSCI 1073/Telcom 272712

Mobile GMAPS on J2ME enabled Devices

http://www.mgmaps.com/

Mobile GMaps is a FREE application that displays Google Maps, Yahoo! Maps, Windows Live Local (MSN Virtual Earth) and Ask.com Maps and satellite imagery on Java J2ME-enabled mobile phones, PDAs and other devices. MGMaps can connect to a GPS receiver over Bluetooth or use internal GPS features on some phones in order to automatically display the map for your current position.

Page 7: Mobile Applications Case Studies

INFSCI 1073/Telcom 272713

Location API – JSR 179• The JSR 179 Location API are the J2ME tools

for building LBS services• Are available for

– CDC – CLDC 1.1 (Floating Point required)

• The main classes are:– LocationProvider

– Location and LocationListener– Coordinates and PromixityListener– LandMark and LandMarkStore

INFSCI 1073/Telcom 272714

LocationProvider Class• Abstract Factory Class that build

concrete LocationProviderobjects satisfying some Criteria passed in the construction

• Criteria are encapsulated in a Criteria object

• getLocation(int timeout)provides information about user Location within a timeout(exception otherwise)

• It can be in following states– AVAILABLE– OUT_OF_SERVICE– TEMPORARILY_UNAVAILABLE

• LocationListener and the PromixityListener can listen to events send by aLocationProvider

createLocationProvider

«abstract»

LocationProviderImpl

static getInstance(Criteria criteria)

getLocation(int timeout)Location«abstract»

LocationImplreturns

Page 8: Mobile Applications Case Studies

INFSCI 1073/Telcom 272715

Criteria Class

• Information that describes the requirements that a particular instance of LocationProvider must satisfy

• The requirement regard aspect like:– Horizontal accuracy– Vertical accuracy– Response time– Max consumption of service– Eventual cost– Info on speed or direction needed– Info on altitude needed – Info related to addresses needed

• Is not mandatory that a LocationProvider must satisfy all the requirements

INFSCI 1073/Telcom 272716

Location Class• Can be obtained using the getLocation(int

timeout) method of LocationProvider• It provides info about

– Associated address– Coordinates – Speed– Direction– Timestamp of acquired position

• It can be valid or invalid: isValid()– If valid we can get QualifiedCoordinates by

using getQualifiedCoordinates()– An invalid Location object doesn't have valid

coordinates, but the extra info that is obtained from the getExtraInfo() method can provide information about the reason why it was not possible to provide a valid Location.

Location«abstract»

getAddressInfo()float getCourse()String getExtraInfo(String mimeType)int getLocationMethod()float getSpeed()long getTimestamp()getQualifiedCoordinates()boolean isValid()

Page 9: Mobile Applications Case Studies

INFSCI 1073/Telcom 272717

AddressInfo Class

• Is obtained by using the method getAddressInfo() of Location

• By using the getField() method is possible to have various information some of them provided by the following constants– CITY– COUNTRY– POSTAL_CODE– STATE– STREET– PHONE_NUMBER– BUILDING_NAME

AddressInfo

String getField(int field)

setField(int field, String value)

INFSCI 1073/Telcom 272718

Coordinates Class• Is obtained from Location using the

getQualifiedCoordinates() method if theLocation object is valid (isValid() = true)

• Extend the Coordinates class, adding accuracy information

• Coordinates are expressed in the WGS84 (World Geodetic System 1984) standard.

• static String convert(double coords,

outType) converts a double representation of a coordinate with decimal degrees into a string representation. For example, for the double value of the coordinate 61.51d, the corresponding syntax 1 string is "61:30:36" and the corresponding syntax 2 string is "61:30.6"

• static double convert(String coords)converts a String representation of a coordinate into the double representation as used in this API.

Coordinates

float getAltitude() double geLatitude()double getLongitude

float azimuthTo(Coordinates to)static String convert(double coords, outType)static double convert(String coords)float distance(Coordinates to)

QualifiedCoordinates

float horizontalAccuracyfloat verticalAccuracy

void setAltitude(float a) void setLatitude(float l)void setLongitude(float l)

Page 10: Mobile Applications Case Studies

INFSCI 1073/Telcom 272719

Example: Obtain the Location of the Device...

// Set criteria for selecting a location provider:

// accurate to 500 meters horizontallyCriteria cr= new Criteria();

cr.setHorizontalAccuracy(500);

// Get an instance of the providerLocationProvider lp= LocationProvider.getInstance(cr);

// Request the location, setting a one-minute timeoutLocation l = lp.getLocation(60); //if it is not obtained in 60 s

//a LocationException is raised

Coordinates c = l.getQualifiedCoordinates();

if(c != null ) {

// Use coordinate information

double lat = c.getLatitude();double lon = c.getLongitude();

}

...

INFSCI 1073/Telcom 272720

Coordinate Alert Program• To get the co-ordinates of current location we basically follow three logical

steps1. Set the criteria of the location provider2. Get the location provider instance according to set criteria3. Get the location object from the location provider4. Get the co-ordinates from the returned location object

• This program pops an alert message showing your current location• The essence of the location extraction is in the following lines (inside the

givePositionAlert() function):

Criteria cr = new Criteria();cr.setHorizontalAccuracy(500);LocationProvider lp = LocationProvider.getInstance(cr);Location l = lp.getLocation(60);Coordinates c = l.getQualifiedCoordinates();

Page 11: Mobile Applications Case Studies

INFSCI 1073/Telcom 272722

ProximityListener Class– Is possible to associate a group of ProximityListener to a LocationProvider specifying:

• The coordinates to be registered• Proximity radius – in meters to

be used as threshold for being in the proximity

– The ProximityListenerreceives notification about

• Proximity monitoring status changes (true=active, false=is down)

• Points of interest (coords) is inside the proximity radius (device is at location).

LocationProvider«abstract»

static addPromixityListener(PromixityListener listener,Coordinates coords, float radius)

static removePromixityListener(PromixityListener listener)

ProximityListener«interface»

monitoringStateChanged(boolean isMonitoringActive)

promixityEvent(Coordinates coords, Location location)

1

*

INFSCI 1073/Telcom 272723

Handling Landmarks• Landmarks are of prime importance for

developing LBS application• Any point with a specific latitude and longitude

can act as a landmark• The location API comes with a built-in Landmark

class to hold name, description, position and any other relevant info

• Applications such as Point of Interest locators(finding hotels, restaurants, petrol pumps etc.), or routing (route from one place to another) use the concept of Landmark.

Page 12: Mobile Applications Case Studies

INFSCI 1073/Telcom 272724

Landmark Class

– A Landmark is a know location with a name

– It contains information related to:

• Address• Description• Name• Coordinates with

accuracy information

– It can be made persistent using a LandmarkStore

Landmark

AddressInfo getAddressInfo()String getDescription()String getName()QualifiedCoordinates getQualifiedCoordinates()… and corresponding set methods

INFSCI 1073/Telcom 272726

LandmarkStore Class– It’s a class for storing, deleting

and retrieving Landmark from a persistent store

– It allows to organize Landmark in categories

– It has some methods for access and search the Landmark using category and location information

– It is shared between all the J2ME device applications.

LandmarkStorestatic createLandmarkStore(String storeName)static deleteLandmarkStore(String storeName)static String[] listLandmarkStore()static LandmarkStore getInstance(String storeName)

addCategory(String categoryName)addLandMark(Landmark landmark, String category)deleteCategory(String categoryName)deleteLandmark(Landmark landmark)

Enumeration getCategories()Enumeration getLandmarks()Enumeration getLandMarks(String category, String name)Enumeration getLandmarks(String category, double minLat,

double maxLat, double minLong, double maxLong)

removeLandmarkFromCategory(Landmark lm, String cat)updateLandmark(Landmark landmark)

Page 13: Mobile Applications Case Studies

INFSCI 1073/Telcom 272727

Getting Landmarks• The LandmarkStore class contains a set of landmark

management methods• Enumeration of Landmark objects can be obtained

with one of the three getLandmarks() methods– getLandmarks() : all landmarks– getLandmarks(String category, String name) : all

landmarks with given category and name– getLandmarks(String category, double minLat, double maxLat, double min Long, double maxLong): all landmarks in a category a given area.

INFSCI 1073/Telcom 272728

Orientation– It can be available in devices with a

compass– It represent the physical orientation of

the device and provides information about:

Orientation

float getCompassAzimuth()float getPitch()float getRoll()static Orientation getOrientation()boolean isOrientationMagnetic()

Azimuth Pitch Roll

Page 14: Mobile Applications Case Studies

INFSCI 1073/Telcom 272730

Mobility LBS Demo • http://www.netbeans.org/kb/50/mobility-lbs-demo.html

This demo showcases Java support for JSR 179location-based services (LBS). Location-based services provide users of mobile devices personalized services tailored to their current location.

Lab like instructions with downloads

Note Suns WTK has LBS testing

INFSCI 1073/Telcom 272731

AddressInfo Class

• Is obtained by using the method getAddressInfo() of Location

• By using the getField() method is possible to have various information some of them provided by the following constants– CITY– COUNTRY– POSTAL_CODE– STATE– STREET– PHONE_NUMBER– BUILDING_NAME

AddressInfo

String getField(int field)

setField(int field, String value)

Page 15: Mobile Applications Case Studies

INFSCI 1073/Telcom 272732

Coordinates Class• Is obtained from Location using the

getQualifiedCoordinates() method if the Location object is valid (isValid() = true)

• Extend the Coordinates class, adding accuracy information

• Coordinates are expressed in the WGS84 (World Geodetic System 1984) standard.

• static String convert(double

coords, outType) converts a double representation of a coordinate with decimal degrees into a string representation. For example, for the double value of the coordinate 61.51d, the corresponding syntax 1 string is "61:30:36" and the corresponding syntax 2 string is "61:30.6"

• static double convert(Stringcoords) converts a String representation of

Coordinates

float getAltitude() double geLatitude()double getLongitude

float azimuthTo(Coordinates to)static String convert(double coords, outType)static double convert(String coords)float distance(Coordinates to)

QualifiedCoordinates

float horizontalAccuracyfloat verticalAccuracy

outputType - identifier of the type of the string representation wanted for output The constant DD_MM_SS identifies the syntax 1 and the constant DD_MM identifies the syntax 2.

void setAltitude(float a) void setLatitude(float l)void setLongitude(float l)

INFSCI 1073/Telcom 272733

The WTK simulator to test LBSC:\WTK25\docs\UserGuide.pdf Ch. 13

You can specify the simulated location of the emulator while it is running. To do this, choose MIDlet > External Events from the emulator window’s menu. Click the Location tab.

In the Location area of the tab, you can fill in values for the latitude, longitude, altitude, speed, and course.

Applications that use the Location API can retrieve these values as the location of the emulator.

Can also write scripts to change location with time!

Page 16: Mobile Applications Case Studies

INFSCI 1073/Telcom 272734

Info on J2ME location apps

• MIDP Location API Developer’s Guide– http://sw.nokia.com/id/175bf8e6-a1f5-4d3d-a591-

6fc936506a6b/MIDP_Location_API_Developers_Guide_v2_0_en.pdf– http://www.forum.nokia.com/info/sw.nokia.com/id/f1957ea1-5a79-406e-be49-306cfd15d2da.html

• Using the Location API (ch. 13 of WTK 2.5 doc)– C:\WTK25\docs\UserGuide.pdf Ch. 13

• The Java Location API (ddj article)– http://www.ddj.com/dept/java/184406388

• JSR 179 - Location API JavaDoc– http://mobilezoo.biz/jsr/179/index.html

• Lots of information about Location API, GPS– http://www.trekbuddy.net/