Location API and programming practicesIntroduction toprogramming using Location API Amrit Sanjeev Bangalore Android User Group
What’s on the agenda today ?Introduction Challenges Best to LBS practices Let go and find where our users are
Introduction to LBSThings to keep in mind before you create your world changing LBS
What is a location based service ? ―A location-based service (LBS) is an information or entertainment service, which is accessible with mobile devices through the mobile network and which uses information on the geographical position of the mobile device.‖
Is it the hot tech of today ??• Not really !!! But there is a lot of potential• Gartner (2009) identifies the LBS will be the #2 mobile application for 2012 because of its perceived high user value and its influence on user loyalty.
Some interesting stats • people where 63% aware of LBS • report having 52% used LBS • 32% use it every month • 10% use it every day • thought it was 94% valuable • 18% tell others their location • Expose location without consent 84% • Identity theft 84% • expressed 52% concerns • Loss of privacy 84%
Why is LBS so important Need for services on the move . Better Availability data of networks hardware LBS popularity GPS Better hardware batteries in more devices
LBS Growth Factors Success of new Growth of mobile digital business advertising. models. Increasing Increased speeds and smartphone broader adoption. coverage of Growth mobile networks. of LBS
Challenges in deployingLBS Things that are slowing it down
LBS : Aspects to work on Control (Legal) Security Trust (Technolo gical) LBS (Social) Privacy (Ethical)
Obstacles in LBS adoption Privacy concerns. Security concerns Two-thirds of advertising companies aren’t using LBS (2011 data). General awareness is only around 30%. Device user experience
Best PracticesThings that you might wanna try in your application
Decide on your app location requirements upfront How often do you need updates? What happens when GPS and WIFI are disabled ? How accurate do u need to be ? What is the impact on battery life ? What happens when location jumps ?
Best practices• Use criteria to select a location provider• Specify the criteria – Allowable power drain – Required accuracy – Need for additional parameters like altitude, bearing , speed etc• Find the best location provider based on your criteria• Relax requirement till you find a provider• Can limit to only active providers• Can use all matching providers
Best practicesCriteria criteria = new Criteria() ;criteria.setAccuracy(Criteria.ACCURACY_FINE);criteria.setAltitudeRequired(false);criteria.setBearingRequired(false);criteria.setCostAllowed(true);criteria.setPowerRequirement(Criteria.POWER_LOW);String provider = locationManager.getBestProvider(criteria, true);
Some best practices• Reduce the latency for getting your first location fix by retrieving the last known location from the Location Manager each time the app is resumed.• If there is one or more locations available from within the allowed latency, return the most accurate one. If not, we simply return the most recent result.
Best practices• Implement a back off pattern – Use multiple location providers • Fine and course • High and low frequency /distance• Remove listeners as accuracy improves• Monitor battery and reduce functionality to save power . – Change frequency of updates – Disable location change receivers
Best practices• Network location provider — tend to return results faster than the more accurate options• Requesting location updates (particularly using the GPS) while your app isn’t in the foreground is poor practice, as it can significantly impact battery life.• Register Passive Location Changed Receiver that allows you to receive background updates even when the application has been killed by the system to free resources.