Upload
jomar-tigcal
View
127
Download
0
Tags:
Embed Size (px)
DESCRIPTION
My talk at the GDG DevFest Bacolod 2012 (November 5, 2012)
Citation preview
Location-Based Services on Android
Jomar TigcalGDG DevFest Bacolod 2012
November 5, 2012
Jomar Tigcal
● Community Manager of GDG Philippines● Mobile Apps Developer● Software Engineer at Stratpoint
Technologies, Inc.● One of the developers of Moochfood
http://[email protected]
@jomartigcal
MoochfoodMoochfood is an Android application that allows you to record, rate and share dining experiences.
http://www.moochfood.com/
Location
Challenges
● Obtaining user location can consume a lot of battery
● Getting location takes some time● Because the user location changes, you
must account for movement by re-estimating user location every so often.
● Location estimates from each source may not be accurate.
android.location
Android provides a location framework that your application can use to determine the device's location and bearing and register for updates.
http://developer.android.com/reference/android/location/package-summary.html
Android Permissions
● ACCESS_COARSE_LOCATION -> Network Provider: cell tower and Wi-Fi signals
● ACCESS_FINE_LOCATION-> GPS Provider
Android Permissions
Note: If you are using both NETWORK_PROVIDER and GPS_PROVIDER, then you need to request only the ACCESS_FINE_LOCATION permission, because it includes permission for both.
Android Location API
● LocationA class representing a geographic location sensed at a particular time.
● LocationManagerThis class provides access to the system location services.
● LocationListenerInterface used for receiving notifications from the LocationManager when the location has changed.
Image Source: http://evalblog.com/2011/06/06/where-am-i/
Getting User Location
Getting User Location
● Create an instance of LocationManagerLocation locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
● Check Location Providerfinal boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
Getting User Location
● Start listening for location updateslocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
● Stop listening for location updateslocationManager.removeUpdates(this);
Getting User Location
Getting User Location
Getting User Location
What's next?
Commonly used APIs
Image Sources: http://developer.foursquare.com and http://thegreasywiener.com/
Google Places API (https://developers.google.
com/places/)
Google Places API ● Place Searches return a list of Places based on
a user's location or search string.● Place Details requests return more detailed
information about a specific Place, including user reviews.
● Place Actions allow you to supplement the data in Google's Places Database with data from your application. You can schedule Events, add and remove Places, or weight Place rankings from user activity with Place Bumps.
Google Places API ● Places Autocomplete can be used to provide
autocomplete functionality for text-based geographic searches, by returning Places as you type.
● Query Autocomplete can be used to provide a query prediction service for text-based geographic searches, by returning suggested queries as you type.
Getting API Key
● Go to Google APIs console (http://code.google.com/apis/console)
● Create an API Project● Select Services● Turn on Places API
Places Search
● Nearby Searchby location (latitude, longitude)
● Text Searchby search query (e.g. "pizza in Bacolod")
Nearby Search Syntax
Syntax:https://maps.googleapis.com/maps/api/place/nearbysearch/output?parameters
Output: Either json or xml
Nearby Search Required Parameters
● keyAPI Key
● location latitude, longitude● radius
distance in meters, maximum of 50, 000 m● sensor (true/false)
if request came from location sensor (GPS)
Nearby Search Optional Parameters
keyword - content
language - language code
name - name
rankby - prominence or distance*if rankby=distance, radius should not be included
types
pagetoken
Place Search Types
Separated by |
Examples:food restaurant convenience_storehospital school grocery_or_supermarket
More at:https://developers.google.com/places/documentation/supported_types
Example
● Place Search:https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=loc_here&sensor=true&radius=500&key=key_here● Type=foodhttps://maps.googleapis.com/maps/api/place/nearbysearch/json?location=loc_here&sensor=true&radius=500&types=food&key=key_here
Foursquare API (https://developer.foursquare.
com)
Foursquare API
Core API: Check in, view their history, see where their friends are, create tips and lists, search for and learn more about venues, and access specials and recommendations.
Real-time API: Venue push API notifies venue managers when users check in to their venues, and our user push API notifies developers when their users check in anywhere.
Foursquare API
Merchant Platform: Allows developers to write applications that help registered venue owners manage their foursquare presence and specials.
Venues Platform: Search for places and access a wealth of information about them, including addresses, popularity, tips, and photos.
Foursquare Venues Search
Search Foursquare database and find information including tips, photos, check-in counts, and here now
Syntax:
https://api.foursquare.com/v2/venues/search
Venues Search Parameters
Required Parameters:
● ll (latitude, longitude) - user's locationor
● near (text) - place where to search
● v (YYYYMMDD) indicates that the client is up to date as of the specified date
Venues Search Parameters
Optional Parameters:
● query - name of place to search● limit - number of results (max is 50)● radius - distance in meters (max is 10,000)● categoryId - comma-separated categories to
limit search
Foursquare Demo
HTTP Request:https://api.foursquare.com/v2/venues/search?ll=40.7,-74&oauth_token=0445ZMNU5XS4JDAURLRE3MARL222RVJITL2XBKF0CR1C2EWR&v=20121102
Android Project:* Sample Android Project is available at https://github.com/jomartigcal/lbs-android-sample
Foursquare Demo
Deadline: November 30, 2012
Google Places API Challenge 2012http://developers.google.com/places/challenge/
December 1, 2012
Foursquare Hack Day Philippineshttp://hackday.webgeek.ph/
Resources
● http://developer.android.com/reference/android/location/package-summary.html
● http://developer.android.com/guide/topics/location/index.html
● https://developers.google.com/places/
● https://developer.foursquare.com
● https://github.com/jomartigcal/lbs-android-sample
Thank you very much!
Location-Based Services on Android
Jomar TigcalGDG DevFest Bacolod 2012
November 5, 2012