Cosc 5/4730 GPS/Location Blackberry JSR-179: javax.microedition.location and android.location.

Slides:



Advertisements
Similar presentations
Android Application Development Tutorial. Topics Lecture 4 Overview Overview of Sensors Programming Tutorial 1: Tracking location with GPS and Google.
Advertisements

Introducing to Location in Android LOCATION IS EVERYTHING Kamil Lelonek Kamil Lelonek
Object Oriented Programming in Java. Object Oriented Programming Concepts in Java Object oriented Programming is a paradigm or organizing principle for.
Cosc 5/4730 Input Keyboard, touch, and Accelerometer.
Sensors. Point your phone at the sky, and Google Sky Map tells you which stars you’re looking at. Tilt your phone, and you can control the game you’re.
Location & Maps.  Mobile applications can benefit from being location-aware, e.g.,  Routing from a current to a desired location  Searching for stores.
Location Aware Devices  Location information can lead to creative applications  GPS hardware  cell tower positioning.
JSR-179 API exploitation and philosophy Francesca Bellanca Paolo Rodolà.
© 2009 Research In Motion Limited Introduction to GPS and Wi-Fi technology on BlackBerry smartphones.
Copyright : Hi Tech Criminal Justice, Raymond E. Foster Police Technology Police Technology Chapter Five Police Technology Geographic Information.
Android wifi-based localization. Localization types Android allows (location providers) – GPS (GPS_PROVIDER) – Cell tower + wifi (NETWORK_PROVIDER) You.
SMS. Short Message Service – Primarily text messages between mobile phones – First one sent December 3, 1982 “Merry Christmas” – In 2008 Approximately.
11 Obtaining the User’s Position Dr. Miguel A. Labrador Department of Computer Science & Engineering
Cosc 5/4730 GPS/Location android.location. Simulator notes All the simulators can simulator GPS/location information – Android DDMS commands (geo) to.
CS378 - Mobile Computing Location (Location, Location, Location)
CS378 - Mobile Computing Location.
Map Applications.
Android Sensors & Async Callbacks Jules White Bradley Dept. of Electrical and Computer Engineering Virginia Tech
Route Tracker App Android How to Program © by Pearson Education, Inc. All Rights Reserved.
CS5103 Software Engineering Lecture 08 Android Development II.
Location-Based API 1. 2 Location-Based Services or LBS allow software to obtain the phone's current location. This includes location obtained from the.
Location Services: Part 1 (Location and Geocoding)
Location based services Using Google Maps v2 etc. in Android apps 1Location based services.
Mobile Programming Lecture 9 Bound Service, Location, Sensors, IntentFilter.
1 Localization and Sensing Nilanjan Banerjee Mobile Systems Programming (Acknowledgement: Jules White) University of Arkansas Fayetteville, AR
Location based services
CSS216 MOBILE PROGRAMMING Android, Chapter 8 Book: “Professional Android™ 2 Application Development” by Reto Meier, 2010 by: Andrey Bogdanchikov (
INTRODUCTION TO HTML5 Geolocation. Display a Specific Location with Google Maps  You can use the Google Maps API to display a custom map on your own.
Android Accessing GPS Ken Nguyen Clayton State University 2012.
1 Object-Oriented Software Engineering CS Interfaces Interfaces are contracts Contracts between software groups Defines how software interacts with.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
Investigation in the development of Standalone Location Based Services Nkululeko Gojela Supervisor: Dr Hannah Thinyane FINAL PROJECT PRESENTATIONS.
1 CMSC 628: Introduction to Mobile Computing Nilanjan Banerjee Introduction to Mobile Computing University of Maryland Baltimore County
Context Aware Location Nasrullah. Location Basics LocationManager—Class providing access to Android system location services LocationListener—Interface.
Android Boot Camp for Developers Using Java, 3E
Customizing ArcReader to support GPS Kelly Johnston Indiana Department of Environmental Management.
Location. GPS Global Positioning System – At least 4 satellites typically used 3 required extra for error detection and altitude typically accurate within.
Maps Dr. David Janzen Except as otherwise noted, the content of this presentation is licensed under the Creative Commons Attribution 2.5 License.
Chapter 6 Introduction to Defining Classes. Objectives: Design and implement a simple class from user requirements. Organize a program in terms of a view.
LocationListener in Android Nasrullah. The LocationManager provides access to the system location services The LocationListener is used for receiving.
Android - Location Based Services. Google Play services facilitates adding location awareness to your app with automated location tracking Geo fencing.
Phonegap Bridge – Device, Network, Console, Geolocation API’s CIS 136 Building Mobile Apps 1.
 In the java programming language, a keyword is one of 50 reserved words which have a predefined meaning in the language; because of this,
Sensors – Part 2 SE 395/595. Location in Android LocationManager class – Configure providers and their listeners LocationListener class – Handles update.
Cosc 4735 LocationAware API. Previous on … Before we looked at GPS location. – d-gpslocation.pptx
Event-driven design will set you free The Observer Pattern 1.
Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 1 Chapter 15 Abstract Classes and Interfaces.
Location Based Services. Android location APIs make it easy for you to build location-aware applications, without needing to focus on the details of the.
Phonegap Bridge –Geolocation and Google maps CIS 136 Building Mobile Apps 1.
Lecture 5: Location Topics: Google Play Services, Location API Date: Feb 16, 2016.
Android Fundamentals. What is Android Software stack for mobile devices Software stack for mobile devices SDK provides tools and APIs to develop apps.
How to develop a VoIP softphone in C# that enables SIP Instant Messaging (IM) This presentation describes how to create a softphone in C# that allows you.
Garmin 60CSx How To Use The Available Features Photos by IN-TF1 Technical Search, Stephen Bauer Written by IN-TF1 Technical Search, Jean Seibert.
CS378 - Mobile Computing Location (Location, Location, Location)
1. 2 Android location services Determining a device’s current location Tracking device movements Proximity alerts.
CS499 – Mobile Application Development Fall 2013 Location & Maps.
Tracking device movements
AnDroid GoogleMaps API
Extensions, System Outline and Correlation Modes and
Android Location Based Services
Sensors, maps and fragments:
CIS 470 Mobile App Development
Location (Location, Location, Location)
Proposed Solution To Parts Of
Chapter 12 Abstract Classes and Interfaces
OO Design with Inheritance
CIS 470 Mobile App Development
Lecture 5: Location Topics: Google Play Services, Location API.
CS378 - Mobile Computing Location and Maps.
Maps, Geocoding, and Location-Based Services.
Presentation transcript:

Cosc 5/4730 GPS/Location Blackberry JSR-179: javax.microedition.location and android.location

Simulator notes All the simulators can simulator GPS/location information – Blackberry (simulator) Simulate-> gps location – Android DDMS commands (geo) to the emulator.

BLACKBERRY

java.microedition.Location API Provides Latitude and Longitude coordinates in a position response, along with the time it was determined and measure of accuracy. – If possible in hardware may include orientation (compass, pitch, roll) of the device the speed at which the device is traveling Street address – provides additional feature access to a system-wide database of landmarks and positions of those landmarks. – User specified. Blackberry uses the same package – and extends with net.rim.device.api.gps BlackBerryCriteria, BlackBerryLocation, BlackBeryLocationProvider

javax.microedition.location package LocationProvider – Hardware or software module, which provides a static factory method to return a specific LocationProvider – This is the starting point for applications using this API and represents a source of the location information. Criteria – The criteria used for the selection of the location provider is defined by the values in this class. desired accuracy and cost to the user Location – The Location class represents the standard set of basic location information, includes timestamp, coordinates, accuracy, etc… Coordinates – The Coordinates class represents coordinates as latitude-longitude-altitude values. Provides methods to interconvert between floating-point and human-readable textual representations of coordinates. QualifiedCoordinates – The QualifiedCoordinates class represents coordinates as latitude-longitude-altitude values that are associated with an accuracy value. Subclass of Coordinates

javax.microedition.location package(2) AddressInfo – The AddressInfo class holds textual address information about a location. Orientation – The Orientation class represents the physical orientation of the device. Landmark – The Landmark class represents a landmark, i.e. a known location with a name. User's landmarks, but there is always a default landmark store. LandmarkStore – The LandmarkStore class provides methods to store, delete and retrieve landmarks from a persistent landmark store.

javax.microedition.location package(3) There are also two listeners LocationListener – The LocationListener represents a listener that receives events associated with a particular LocationProvider. – Gives your application a means to regularly receive position reports – implement the locationUpdated and providerStateChanged method ProximityListener – This interface represents a listener to events associated with detecting proximity to some registered coordinates. – Called when the device is within/reached a predetermined location – implement proximityEvent and monitoringStateChanged method

Using the Location API Establish the criteria for the location request Obtain a LocationProvider instance that meets your criteria Determine the positions location. Criteria cr= new Criteria(); // Get an instance of the provider LocationProvider lp= LocationProvider.getInstance(cr); // Request the location, setting a one-minute timeout Location l = lp.getLocation(60); Coordinates c = l.getQualifiedCoordinates(); if(c != null ) { // Use coordinate information }

Criteria UnitsDefault ValueSetterAccessor Horizontal accuracy Meters NO_REQUIREMENT setHorizontalAccura cy getHorizontalAccur acy Vertical accuracyMeters NO_REQUIREMENT setVerticalAccuraygetVerticalAccuracy Preferred response time Milliseconds NO_REQUIREMENT setPreferredRespon seTime getPreferredRespon seTime Power consumption int NO_REQUIREMENT setPreferredPowerC onsumption getPreferredPower Consumption Cost allowedboolean true (allowed to cost) setCostAllowedisAllowedToCost Speed and course required boolean false (not required) setSpeedAndCourse Required getSpeedAndCours eRequired Altitude requiredboolean false (not required) setAltitudeRequiredgetAltitudeRequire d Address requiredboolean false (not required) setAddressInfoRequ ired getAddressInfoRequ ired Note: NO_REQUIREMENT, POWER_USAGE_LOW, POWER_USAGE_MEDIUM, POWER_USAGE_HIGH are field constants

BlackBerryCriteria Inherits everything from Criteria – Adds GPS modes, and failover in case the GPS mode spec’d fails. – Adds requires Requirements for number of satellites, signal quality, etc. GPSINFO, GPSettings, SatelliteInfo – These three classes require a signed app.

Location methods boolean isValid() – Returns whether this Location instance represents a valid location with coordinates or an invalid one where all the data, especially the latitude and longitude coordinates, may not be present. QualifiedCoordinates getQualifiedCoordinates() – Returns the coordinates of this location and their accuracy. AddressInfo getAddressInfo() – Returns the AddressInfo associated with this Location object. long getTimestamp() – Returns the time stamp at which the data was collected. float getCourse() – Returns the heading in degrees relative to true north. float getSpeed() – Returns the terminal's current ground speed in meters per second at the time of measurement.

Location methods (2) int getLocationMethod() – Returns information about the location method used. String getExtraInfo(String mimetype) – Returns extra information about the location.

Coordinates float getAltitude() – Returns the altitude component of this coordinate. double getLatitude() – Returns the latitude component of this coordinate. double getLongitude() – Returns the longitude component of this coordinate. void setAltitude(float altitude) – Sets the geodetic altitude for this point. void setLatitude(double latitude) – Sets the geodetic latitude for this point. void setLongitude(double longitude) – Sets the geodetic longitude for this point.

Coordinates (2) static double convert(String coordinate) – Converts a String representation of a coordinate into the float representation as used in this API. float distance(Coordinates to) – Calculates the geodetic distance between the two points according to the ellipsoid model of WGS84.

AddressInfo String getField(int field) – Returns the value of an address field. void setField(int field, String value) – Sets the value of an address field. – Mostly for use with landmarks fields: – BUILDING_FLOOR, BUILDING_NAME, BUILDING_ROOM, BUILDING_ZONE – STREET, CITY, COUNTRY, POSTAL_CODE – STATE, COUNTY, DISTRICT, PHONE_NUMBER – EXTENSION like an apartment or house number. – COUNTRY_CODE Address field denoting country as a two-letter ISO code. – CROSSING1 Address field denoting a street in a crossing. – CROSSING2 Address field denoting a street in a crossing. – URL Address field denoting a URL for this place.

listener For the LocationProvider addProximityListener(ProximityListener listener, Coordinates coordinates, float proximityRadius) – Adds a ProximityListener for updates when proximity to the specified coordinates is detected. removeProximityListener(ProximityListener listener) – Removes a ProximityListener from the list of recipients for updates. setLocationListener(LocationListener listener, int interval, int timeout, int maxAge) – Adds a LocationListener for updates at the defined interval.

Lastly Get the last known location, wiout doing much. Note the data maybe out of date. – Location l = LocationProvider.getLastKnownLocation(); int getState(), provides the state of the location service – LocationProvider.AVAILABLE, OUT_OF_SERVICE TEMPORARILY_UNAVAILABLE

Example code The example code on the website is very simple to provide a feel for the location. – You can use default locations to test – Default Route will also change The points along a route.

ANDROID

Android Very similar to JSR-179 Get a LocationManger from the system Choose a provider with Criteria or just a provider – providers: gps, network, etc… get the Location and use the data. There is a LocationListener

Permissions Add them to the AndroidManifest.xml – Maybe needed for some things, but needed the mapactivity. – GPS location – Cell_ID or WiFI location There maybe other needed as well – ACCESS_LOCATION_EXTRA_COMMANDS, ACCESS_MOCK_LOCATION – See CN/reference/android/Manifest.permission.html for all permissions.

android.location package Address – A class representing an Address, i.e, a set of Strings describing a location. Criteria – A class indicating the application criteria for selecting a location provider. Geocoder – A class for handling geocoding and reverse geocoding. GpsSatellite – This class represents the current state of a GPS satellite. GpsStatus – This class represents the current state of the GPS engine. Location – A class representing a geographic location sensed at a particular time (a "fix"). LocationManager – This class provides access to the system location services. LocationProvider – An abstract superclass for location providers.

android.location package (2) Listeners GpsStatus.Listener – Used for receiving notifications when GPS status has changed. GpsStatus.NmeaListener – Used for receiving NMEA sentences from the GPS. LocationListener – Used for receiving notifications from the LocationManager when the location has changed. A addProximityAlert(double latitude, double longitude, float radius, long expiration, PendingIntent intent) can be added to the LocationManger – Sets a proximity alert for the location given by the position (latitude, longitude) and the given radius.

LocationManager This is the factory class to get location information – You do not instantiate this class directly, retrieve it through Context.getSystemService(Context.LOCATION_SERVIC E) – Now you can get a Location information with getLastKnownLocation(String Provider); – and more information about the provider with LocationProvider getProvider(String name) Providers are found in a couple of ways

Providers List getProviders(Boolean enabledOnly) – get a list of providers, true for ones that are working String getBestProvider(Criteria criteria, boolean enabledOnly) – get a provider based on Criteria (similar what was already covered) List getAllProviders() – Returns a list of all providers – You can use boolean isProvidersEnabled(String) to determine if it is enabled or not.

LocationProvider Information about the Provider int getAccuracy(), int getPowerRequirement(), boolean hasMonetaryCost() boolean meetsCriteria(Criteria criteria) boolean requiresCell() – Returns true if the provider requires access to an appropriate cellular network (e.g., to make use of cell tower IDs), false otherwise. boolean requiresNetwork() – Returns true if the provider requires access to a data network (e.g., the Internet), false otherwise. boolean requiresSatellite() – Returns true if the provider requires access to a satellite-based positioning system (e.g., GPS), false otherwise. boolean supportsAltitude() – Returns true if the provider is able to provide altitude information, false otherwise. boolean supportsBearing() – Returns true if the provider is able to provide bearing information, false otherwise. boolean supportsSpeed() – Returns true if the provider is able to provide speed information, false otherwise.

Location Has a standard set of getters you would expect – double getLatitude(), double getLongitude(), float getSpeed(), double getAltitude() – long getTime() Returns the UTC time of this fix, in milliseconds since January 1, – float getAccuracy() Returns the accuracy of the fix in meters. – float getBearing() Returns the direction of travel in degrees East of true North. – Returns true if has X hasAltitude(), hasBearing(), hasSpeed(), hasAccuracy()

Location (2) float bearingTo(Location dest) – Returns the approximate initial bearing in degrees East of true North when traveling along the shortest path between this location and the given location. static void distanceBetween(double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results) – Computes the approximate distance in meters between two locations, and optionally the initial and final bearings of the shortest path between them. float distanceTo(Location dest) – Returns the approximate distance in meters between this location and the given location.

Example code get a location LocationManager myL = (LocationManager) getBaseContext().getSystemService(Context.LOCATION_SERVICE); //or use (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE); Location loc = myL.getLastKnownLocation("gps"); if (loc != null ) { double sLatitude = loc.getLatitude(); double sLongitude = loc.getLongitude(); String location = sLatitude+","+sLongitude; } else { //No location can be found with gps }

LocationListener Create a LocationListener or implement LocationListener in a class The following methods must be implemented – void onLocationChanged(Location location) Called when the location has changed. – void onProviderDisabled(String provider) Called when the provider is disabled by the user. – void onProviderEnabled(String provider) Called when the provider is enabled by the user. – void onStatusChanged(String provider, int status, Bundle extras) Called when the provider status changes. Status can be OUT_OF_SERVICE, TEMPORARILY_UNAVAILABLE, AVAILABLE

LocationListener added to your LocationManger LocationManager myL = (LocationManager) getBaseContext().getSystemService(Context.LOCATION_SERVICE); myL.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, myLocationListener); – here Use a GPS provider, could be NETWORK_PROVIDER – minTime the minimum time interval for notifications, in milliseconds. This field is only used as a hint to conserve power, and actual time between location updates may be greater or lesser than this value. Here set to 0 – minDistance the minimum distance interval for notifications, in meters. Again set to 0 here. – myLocationListener is a the LocationListener to be called.

Example code A simple android program is provided on the website. It will display location information in a TextView. It also has a LocationListener. Use the ddms.bat in the tools directory to change the location info.

References JavaDocs – – Select location in the packages window J2ME and Location-Based Services – Course Book, Chapter 17 Finding Your Way Android (many links have mapactivity as well, skipped in lecture) – – – api/ – Controlling the android emulator – CN/guide/developing/tools/ddms.html#emulator-control

Q A &