page.title=Location @jd:body
The Android SDK includes two packages that provide Android's primary support for building location-based services: {@link android.location} and {@link-fixme com.google.android.maps}. Please read on below for a brief introduction to each package.
This package contains several classes related to location services in the Android platform. Most importantly, it introduces the {@link android.location.LocationManager} service, which provides an API to determine location and bearing if the underlying device (if it supports the service). The LocationManager should not be instantiated directly; rather, a handle to it should be retrieved via {@link android.content.Context#getSystemService(String) getSystemService(Context.LOCATION_SERVICE)}.
Once your application has a handle to the LocationManager, your application will be able to do three things:
However, during initial development, you may not have access to real data from a real location provider (Network or GPS). So it may be necessary to spoof some data for your application, with some mock location data.
Note: If you've used mock LocationProviders in previous versions of the SDK (m3/m5), you can no longer provide canned LocationProviders in the /system/etc/location directory. These directories will be wiped during boot-up. Please follow the new procedures below.
When testing your application on the Android emulator, there are a couple different ways to send it some spoof location data: with the DDMS tool or the "geo" command.
With the DDMS tool, you can simulate location data a few different ways:
For more information on using DDMS to spoof location data, see the Using DDMS guide.
Launch your application in the Android emulator and open a terminal/console in
your SDK's /tools
directory. Now you can use:
geo fix
to send a fixed geo-location.
This command accepts a longitude and latitude in decimal degrees, and an optional altitude in meters. For example:
geo fix -121.45356 46.51119 4392
geo nmea
to send an NMEA 0183 sentence.
This command accepts a single NMEA sentence of type '$GPGGA' (fix data) or '$GPRMC' (transit data). For example:
geo nmea $GPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,011.3,E*62
This package introduces a number of classes related to rendering, controlling, and overlaying customized information on your own Google Mapified Activity. The most important of which is the {@link-fixme com.google.android.maps.MapView} class, which automagically draws you a basic Google Map when you add a MapView to your layout. Note that, if you want to do so, then your Activity that handles the MapView must extend {@link-fixme com.google.android.maps.MapActivity}.
Also note that you must obtain a MapView API Key from the Google Maps service, before your MapView can load maps data. For more information, see Obtaining a MapView API Key.
Once you've created a MapView, you'll probably want to use {@link-fixme com.google.android.maps.MapView#getController()} to retrieve a {@link-fixme com.google.android.maps.MapController}, for controlling and animating the map, and {@link-fixme com.google.android.maps.ItemizedOverlay} to draw {@link-fixme com.google.android.maps.Overlay}s and other information on the Map.
This is not a standard package in the Android library. In order to use it, you must add the following node to your Android Manifest file, as a child of the
<application>
element:
<uses-library android:name="com.google.android.maps" />