/* * Copyright ThinkTank Maths Limited 2006 - 2008 * * This file is free software: you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with this file. If not, see <http://www.gnu.org/licenses/>. */ package com.openlapi; /** * The LocationListener represents a listener that receives events associated with a * particular LocationProvider. Applications implement this interface and register it with * a LocationProvider to obtain regular position updates. * <p> * When the listener is registered with a LocationProvider with some update period, the * implementation shall attempt to provide updates at the defined interval. If it isn't * possible to determine the location, e.g. because of the LocationProvider being * TEMPORARILY_UNAVAILABLE or OUT_OF_SERVICE or because the update period is too frequent * for the location method to provide updates, the implementation can send an update to * the listener that contains an 'invalid' Location instance. * <p> * The implementation shall use best effort to post the location updates at the specified * interval, but this timing is not guaranteed to be very exact (i.e. this is not an exact * timer facility for an application). * <p> * The application is responsible for any possible synchronization needed in the listener * methods. * <p> * The listener methods MUST return quickly and should not perform any extensive * processing. The method calls are intended as triggers to the application. Application * should do any necessary extensive processing in a separate thread and only use these * methods to initiate the processing. */ public interface LocationListener { /** * Called by the LocationProvider to which this listener is registered. This method * will be called periodically according to the interval defined when registering the * listener to provide updates of the current location. * * @param provider * the source of the event * @param location * the location to which the event relates, i.e. the new position * providerStateChanged */ public void locationUpdated(LocationProvider provider, Location location); /** * Called by the LocationProvider to which this listener is registered if the state of * the LocationProvider has changed. These provider state changes are delivered to the * application as soon as possible after the state of a provider changes. The timing * of these events is not related to the period of the location updates. * <p> * If the application is subscribed to receive periodic location updates, it will * continue to receive these regardless of the state of the LocationProvider. If the * application wishes to stop receiving location updates for an unavailable provider, * it should de-register itself from the provider. * * @param provider * the source of the event * @param newState * the new state of the LocationProvider. This value is one of the * constants for the state defined in the LocationProvider class. */ public void providerStateChanged(LocationProvider provider, int newState); }