Android Location-Based Apps

In this course we cover the wide range of location capabilities of the Android platform including determining user location, power management, translating location data into human-readable street addresses, and much more.
Course info
Rating
(113)
Level
Intermediate
Updated
Mar 11, 2013
Duration
3h 33m
Table of contents
Android Location Basics
Android Location Providers
Android Location Management and Threading
Controlling Android Location Frequency
Human-Readable Location Information
Description
Course info
Rating
(113)
Level
Intermediate
Updated
Mar 11, 2013
Duration
3h 33m
Description

Virtually all Android devices now include the ability to determine the user’s location. The overwhelming majority of apps can benefit from incorporating location information as knowing a user’s location allows your app to better personalize the user experience. In this course we cover the wide range of location capabilities of the Android platform including the different ways to determine the user’s location, the performance and power usage implications of different location strategies, how to translate the raw location coordinates into meaningful street addresses, and much more.

About the author
About the author

Jim Wilson is president of JW Hedgehog, Inc., a consulting firm specializing in solutions for the Android, iOS, and Microsoft platforms. Jim has over 30 years of software engineering experience, with the past 15 years heavily focused on creating mobile device and location-based solutions.

More from the author
More courses by Jim Wilson
Section Introduction Transcripts
Section Introduction Transcripts

Android Location Basics
Welcome to this module on Android Location Basics. My name is Jim Wilson. The first thing we're going to look at is how do you access the location system on the Android platform. We're then going to look at the different kinds of location providers and security requirements for each. We'll look at how do you handle location information, what do you receive, what is the details of information that are inside of there? How do you begin the process of receiving ongoing location updates? And then finally, how do you get just a single location value, and look specifically at the issue of how do I get a value very quickly versus how do I get an accurate value?

Android Location Providers
Welcome to this module on Managing Android Location Providers. My name is Jim Wilson. The first thing we're going to look at in this module is providers and understanding individual provider characteristics. The next thing we're going to look at is rather than selecting a specific provider by name, being able to identify the behaviors that are important to you then have the appropriate provider automatically selected. Then we're going to look at provider availability and influences. One thing you have to be careful about is that a provider can technically be enabled, but many things it relies on aren't actually there. So even as it's enabled, it doesn't work as well as you'd like. So, we're going to talk about those issues and how to deal with them. Look at enabling location-related features. So your application determines that something you need isn't available, how do you get the users turn it on for you. Look at accessing underlying GPS information. If you work with GPS devices as much as any other, there's a lot more going on than just latitude and longitude. So we're going to look at just quickly how do you get that very detailed information that is available only from the GPS provider. And then, finally, we're going to look at something called the passive location provider, a way to get location information without actually starting up any hardware.

Android Location Management and Threading
Welcome to this module on Location Management and Threading. My name is Jim Wilson. Now, this module's one of our more coding intensive modules. We touch on just a few subjects. We spend a lot of time in the code around implementing those topics. So things we're going to talk about in this module, first of all is the challenges of doing location processing is the fault threading behavior; in other words, if you just kind of use it as it comes out of the box, one of the problems with doing that. Then we look at well, how do we get past those problems by moving our location processing off of the main thread and understanding why that's important. When we move our location processing off the main thread, we run into issues with the user interface as we do in many cases with threading. So we look at the ways we deal with those, not just in terms of what's the simple way to hand off and so forth, but actually how do you manage state across location processing and so forth, in the environment like Android, where things like your activities are being created and destroyed dynamically and so forth. And then finally we finish up with the issue of background tracking, that if you have an application where you need to continue gathering location information, even when the user's off in another app, how do we go about doing that?

Controlling Android Location Frequency
Welcome to this module in Controlling Location Frequency on the Android Platform. My name is Jim Wilson. The first thing we'll look at in this module is what are the issues related to reducing the frequency of location updates and why is that important? We'll then briefly look at the different ways we're going to receiving location updates. Look at a location and then impending intents and how those two things work together. We'll then look at the implementation details of using impending intents that work with location. And we'll finish up with proximity alerts.

Human-Readable Location Information
Jim Wilson: Welcome to this module on android and human-readable location information. My name is Jim Wilson. In this module, first we'll look at the issue of computer representation of location information and how it differs from that of people and what android provides for dealing with that. We'll then look at the Geocoder class, which provides a mechanism for translating between those two representations. We'll then look under the hood of the Geocoder class and understand how it's implemented so we know the kind of issues we have to deal with in our programs, and we'll finish up by looking at the issues of the UI thread in the Geocoder class and how to use it effectively to not interfere with our user interface.