Location API for Java ME

The Location API for Java ME is a compact and generic Java 2 ME API that produces information about the device's present physical location to Java applications. This API can be optionally supported by mobile phone and PDA manufacturers, with the minimum Java platform required for this API being CLDC v1.1.

The Location API was developed under the Java Community Process as JSR 179, released in September 2003 and updated to version 1.0.1 in March 2006. Nokia is the main author and maintainer of this JSR.

OpenLAPI is an LGPL implementation for use in emulator environments where the Nokia reference implementation does not exist and for devices which can access a GPS device over Bluetooth.

Features
The Location API is designed to work with many different positioning methods. Generic interfaces lets application developers implement systems that can retrieve location data from multiple sources, based on their availability on the device. It has advantages over a single means of tracking, including fail-over, indoor/outdoor transparency, and a choice between the speed and accuracy trade-offs between GPS, cellular, or other positioning methods. The API supports:
 * Current location - current latitude, longitude, altitude, direction, and speed of the phone, and methods to convert it to text.
 * Landmark proximity - a store of landmarks can be stored on the phone's memory, and the current location can be added as a landmark.
 * Address data - the nearest landmark's textual details, such as postal address, phone number, country, and the building and its URL.
 * Location listeners - for dynamic location-based applications that will be triggered by when the current location changes.

The Location API does not support:
 * Topological data - which is usually derived from the shapes of cell site coverage.
 * Location-based queries - although the current location of the device can be calculated.

Device independence
Previously, location service implementations were provider specific. The aim of this API was to provide a common API for retrieving the location information on a variety of devices.

OpenLAPI supports several back-ends: along with device specific wrappers.
 * GPS over Bluetooth
 * NMEA logfile (for development)
 * KML (Keyhole Markup Language) (for development)
 * random entry from a persistent landmark store (for development)

Support
Since many providers choose not to implement this optional JSR, the goal of universality has still not happened and developers are often required to create custom builds for different devices.

The Location API is available to Java applications on some BlackBerry and Windows Mobile devices, recent Motorola and Sony Ericsson devices, and all Nokia Series 60 3rd Edition devices.