Mobile Applications Case Studiesdtipper/2727/2727_Slides14.pdf · • Lots of games ringtones and...
Transcript of Mobile Applications Case Studiesdtipper/2727/2727_Slides14.pdf · • Lots of games ringtones and...
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
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
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
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
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!)
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.
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
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()
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)
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();
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.
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)
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
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)
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!
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/