| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjavax.microedition.location.LocationProvider
This is the starting point for applications using this API and 
 represents a source of the location information. A 
 LocationProvider represents a location-providing module, generating
 Locations.
 
 Applications obtain LocationProvider instances (classes 
 implementing the actual functionality by extending this abstract class)
 by calling the factory method. 
 It is the responsibility of the implementation to return the correct 
 LocationProvider-derived object.
 
 Applications that need to specify criteria for the location provider 
 selection, must first create a Criteria object, 
 and pass it to the factory method.
 The methods that access the location related information shall
 throw SecurityException if the application does not have the 
 relevant permission to access the location information.
| Field Summary | |
| static int | AVAILABLEAvailability status code: the location provider is available. | 
| static int | OUT_OF_SERVICEAvailability status code: the location provider is out of service. | 
| static int | TEMPORARILY_UNAVAILABLEAvailability status code: the location provider is temporarily unavailable. | 
| Constructor Summary | |
| protected  | LocationProvider()Empty constructor to help implementations and extensions. | 
| Method Summary | |
| static void | addProximityListener(ProximityListener listener,
                     Coordinates coordinates,
                     float proximityRadius)Adds a ProximityListenerfor updates when proximity
 to the specified coordinates is detected. | 
| static LocationProvider | getInstance(Criteria criteria)This factory method is used to get an actual 
 LocationProviderimplementation based on the defined criteria. | 
| static Location | getLastKnownLocation()Returns the last known location that the implementation has. | 
| abstract  Location | getLocation(int timeout)Retrieves a Locationwith the constraints given 
 by theCriteriaassociated with this class. | 
| abstract  int | getState()Returns the current state of this LocationProvider. | 
| static void | removeProximityListener(ProximityListener listener)Removes a ProximityListenerfrom the list of recipients
 for updates. | 
| abstract  void | reset()Resets the LocationProvider. | 
| abstract  void | setLocationListener(LocationListener listener,
                    int interval,
                    int timeout,
                    int maxAge)Adds a LocationListenerfor updates at the defined interval. | 
| Methods inherited from class java.lang.Object | 
| equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
public static final int AVAILABLE
public static final int TEMPORARILY_UNAVAILABLE
TEMPORARILY_UNAVAILABLE and AVAILABLE.
public static final int OUT_OF_SERVICE
| Constructor Detail | 
protected LocationProvider()
| Method Detail | 
public abstract int getState()
LocationProvider.
 The return value shall be one of the availability status code
 constants defined in this class.
LocationProvider
public static LocationProvider getInstance(Criteria criteria)
                                    throws LocationException
 LocationProvider implementation based on the defined criteria. 
 The implementation chooses the
  LocationProvider so that it best fits the defined 
 criteria, taking into account also possible implementation 
 dependent preferences of the end user.
 If no concrete 
 LocationProvider could be created that typically can 
 match the defined criteria but 
 there are other location providers not meeting the criteria
 that could be returned for a more relaxed criteria,
 null is returned to indicate this. 
 The LocationException is  thrown, if all supported 
 location providers are out of service.
 A LocationProvider instance is returned if there is 
 a location provider meeting the criteria in either the available 
 or temporarily unavailable state. Implementations should try to 
 select providers in the available state before providers in 
 temporarily unavailable state, but this can't be always
 guaranteed because the implementation may not always know the state 
 correctly at this point in time.
 If a LocationProvider meeting the criteria can be supported
 but is currently out of service, it shall not be 
 returned. 
 
When this method is called with a Criteria that has
 all fields set to the default values (i.e. the least restrictive
 criteria possible), the implementation shall return a 
 LocationProvider if there is any provider that
 isn't in the out of service state. Passing null as the 
 parameter is equal to passing a Criteria that has
 all fields set to the default values, i.e. the least restrictive
 set of criteria.
 
This method only makes the selection of the provider based on the criteria and is intended to return it quickly to the application. Any possible initialization of the provider is done at an implementation dependent time and MUST NOT block the call to this method.
This method may, depending on the implementation, return
 the same LocationProvider instance as has been
 returned previously from this method to the calling application,
 if the same instance can be used to fulfil both defined criteria.
 Note that there can be only one LocationListener
 associated with a LocationProvider instance. 
 
criteria - the criteria for provider selection or null 
 to indicate the least restrictive criteria with default values
LocationProvider meeting the defined criteria
         or null if a LocationProvider that meets the 
         defined criteria can't be returned but there are other 
         supported available or temporarily unavailable providers that 
         do not meet the criteria.
LocationException - if all LocationProviders are
         currently out of serviceCriteria
public abstract Location getLocation(int timeout)
                              throws LocationException,
                                     java.lang.InterruptedException
Location with the constraints given 
 by the Criteria associated with this class. If no result 
 could be retrieved, a LocationException is thrown.
 If the location can't be determined within the timeout period
 specified in the parameter, the method shall throw a 
 LocationException. 
 If the provider is temporarily unavailable, the implementation
 shall wait and try to obtain the location until the timeout
 expires. If the provider is out of service, then the 
 LocationException is thrown immediately.
 
Note that the individual Location returned might not 
 fulfil exactly the criteria used for selecting this 
 LocationProvider.
 The Criteria is used to select a location provider 
 that typically is able to meet the defined criteria, but not 
 necessarily for every individual location measurement.
 
timeout - a timeout value in seconds. -1 is used to indicate
                that the implementation shall use its default
                timeout value for this provider.
Location object
LocationException - if the location couldn't be retrieved
                           or if the timeout period expired
java.lang.InterruptedException - if the operation is interrupted
                              by calling reset()
                              from another thread
java.lang.SecurityException - if the calling application
                    does not have a permission to query 
                    the location information
java.lang.IllegalArgumentException - if the timeout = 0 or timeout < -1
public abstract void setLocationListener(LocationListener listener,
                                         int interval,
                                         int timeout,
                                         int maxAge)
LocationListener for updates at the defined interval.
 The listener will be called with updated location at the defined
 interval. The listener also gets updates when the availablilty
 state of the LocationProvider changes.
 Passing in -1 as the interval selects the default interval which is dependent on the used location method. Passing in 0 as the interval registers the listener to only receive provider status updates and not location updates at all.
 Only one listener can be registered with each LocationProvider 
  instance. Setting the listener replaces any possibly previously
 set listener. Setting the listener to null cancels the 
 registration of any previously set listener.
 
The implementation shall initiate obtaining the first location
 result immediately when the listener is registered and provide
 the location to the listener as soon as it is available. Subsequent
 location updates will happen at the defined interval after the 
 first one. If the specified update interval is smaller than the time
 it takes to obtain the first result, the listener shall receive
 location updates with invalid Locations at the 
 defined interval until the first location result is available. 
 Note that prior to getting the first valid
 location result, the timeout parameter has no effect. 
 When the first valid location result is obtained, the implementation
 may return it to the application immediately, i.e. before the 
 next interval is due. This implies that in the beginning when starting
 to obtain location results, the listener may first get updates with
 invalid location results at the defined interval and when the first
 valid location result is obtained, it may be returned to the listener
 as soon as it is available before the next interval is due. 
 After the first valid location result is delivered to the application
 the timeout parameter is used and the next update is delivered between
 the time defined by the interval and time interval+timeout after the 
 previous update.
 
The timeout parameter determines a timeout that is used if
 it's not possible to obtain a new location result when the update
 is scheduled to be provided. This timeout value indicates how many
 seconds the update is allowed to be provided late compared to the 
 defined interval. If it's not possible to get a new location 
 result (interval + timeout) seconds after the previous update,
 the update will be made and an invalid Location instance 
 is returned. This is also done if the reason for the inability
 to obtain a new location result is due to the provider being
 temporarily unavailable or out of service. 
 For example, if the interval is 60 seconds and the 
 timeout is 10 seconds, the update must be delivered at most 70 seconds
 after the previous update and if no new location result is available
 by that time the update will be made with an invalid 
 Location instance.
 
The maxAge parameter defines how old the location result is allowed to be provided when the update is made. This allows the implementation to reuse location results if it has a recent location result when the update is due to be delivered. This parameter can only be used to indicate a larger value than the normal time of obtaining a location result by a location method. The normal time of obtaining the location result means the time it takes normally to obtain the result when a request is made. If the application specifies a time value that is less than what can be realized with the used location method, the implementation shall provide as recent location results as are possible with the used location method. For example, if the interval is 60 seconds, the maxAge is 20 seconds and normal time to obtain the result is 10 seconds, the implementation would normally start obtaining the result 50 seconds after the previous update. If there is a location result otherwise available that is more recent than 40 seconds after the previous update, then the maxAge setting to 20 seconds allows to return this result and not start obtaining a new one.
The requirements for the intervals hold while the application is executing. If the application environment or the device is suspended so that the application will not execute at all and then the environment is later resumed, the periodic updates MUST continue at the defined interval but there may be a shift after the suspension period compared to the original interval schedule.
listener - the listener to be registered. If set to 
 null the registration of any previously set listener
 is cancelled.interval - the interval in seconds. -1 is used for the default 
               interval of this provider.
               0 is used to indicate that the application wants to 
               receive only provider status updates and not location
               updates at all.timeout - timeout value in seconds, must be greater than 0. 
                if the value is -1, 
                the default timeout for this provider is used. 
                Also, if the interval is -1 to indicate the default,
                the value of this parameter has no effect and the 
                default timeout for this provider is used.
                If timeout == -1 and interval > 0 
                and the default timeout of the provider is greater than 
                the specified interval, then the timeout parameter is handled 
                as if the application had passed the same value as 
                timeout as the interval (i.e. timeout is considered 
                to be equal to the interval).
                If the interval is 0, this parameter has
                no effect.maxAge - maximum age of the returned location in seconds,
               must be greater than 0 or equal to -1 to indicate that the 
               default maximum age for this provider is used.
               Also, if the interval is -1 to indicate the default,
               the value of this parameter has no effect and the 
               default maximum age for this provider is used.