public class LocationManager
extends Object
java.lang.Object | |
↳ | android.location.LocationManager |
该课程提供对系统位置服务的访问。 这些服务允许应用程序定期更新设备的地理位置,或者在设备进入特定地理位置附近时触发应用程序指定的Intent
。
你不直接实例化这个类; 相反,通过Context.getSystemService(Context.LOCATION_SERVICE)
检索它。
除非指出,否则所有Location API方法都需要ACCESS_COARSE_LOCATION
或ACCESS_FINE_LOCATION
权限。 如果您的应用程序只具有粗略权限,那么它将无法访问GPS或被动位置提供程序。 其他提供程序仍然会返回位置结果,但更新速率将受到限制,精确位置将被模糊处理为粗略的准确性级别。
Constants |
|
---|---|
String |
GPS_PROVIDER GPS位置提供商的名称。 |
String |
KEY_LOCATION_CHANGED 当使用PendingIntent广播位置更改时,用于Bundle额外的保留位置值的密钥。 |
String |
KEY_PROVIDER_ENABLED 当使用PendingIntent广播供应商启用/禁用事件时,用于捆绑额外的键用于保持布尔状态值。 |
String |
KEY_PROXIMITY_ENTERING 用于Bundle额外的键,用于保存指示接近警报是进入(true)还是退出(false)的布尔值。 |
String |
KEY_STATUS_CHANGED 当使用PendingIntent广播状态更改时,该键用于保持整数状态值的Bundle额外值。 |
String |
MODE_CHANGED_ACTION
|
String |
NETWORK_PROVIDER 网络位置提供商的名称。 |
String |
PASSIVE_PROVIDER 用于接收位置的特殊位置提供商,无需实际启动位置定位。 |
String |
PROVIDERS_CHANGED_ACTION 配置的位置提供者更改时的广播意图操作。 |
Public methods |
|
---|---|
boolean |
addGpsStatusListener(GpsStatus.Listener listener) 此方法在API级别24中已弃用。 |
boolean |
addNmeaListener(OnNmeaMessageListener listener, Handler handler) 添加一个NMEA监听器。 |
boolean |
addNmeaListener(OnNmeaMessageListener listener) 添加一个NMEA监听器。 |
boolean |
addNmeaListener(GpsStatus.NmeaListener listener) 此方法在API级别24中已弃用。 |
void |
addProximityAlert(double latitude, double longitude, float radius, long expiration, PendingIntent intent) 根据位置(纬度,经度)和给定半径设置接近警报。 |
void |
addTestProvider(String name, boolean requiresNetwork, boolean requiresSatellite, boolean requiresCell, boolean hasMonetaryCost, boolean supportsAltitude, boolean supportsSpeed, boolean supportsBearing, int powerRequirement, int accuracy) 创建一个模拟位置提供程序并将其添加到一组活动提供程序中。 |
void |
clearTestProviderEnabled(String provider) 删除与给定提供者关联的任何启用模拟值。 |
void |
clearTestProviderLocation(String provider) 删除与给定提供者关联的任何模拟位置。 |
void |
clearTestProviderStatus(String provider) 删除与给定提供者相关的任何模拟状态值。 |
List<String> |
getAllProviders() 返回所有已知位置提供者的名称列表。 |
String |
getBestProvider(Criteria criteria, boolean enabledOnly) 返回最符合给定条件的提供者的名称。 |
GpsStatus |
getGpsStatus(GpsStatus status) 检索有关GPS引擎当前状态的信息。 |
Location |
getLastKnownLocation(String provider) 返回一个位置,指示从给定提供者获取的最后一次已知位置定位的数据。 |
LocationProvider |
getProvider(String name) 返回与给定名称的位置提供程序关联的信息,如果该名称不存在提供程序,则返回null。 |
List<String> |
getProviders(Criteria criteria, boolean enabledOnly) 返回满足给定条件的LocationProviders的名称列表,如果没有,则返回null。 |
List<String> |
getProviders(boolean enabledOnly) 返回位置提供者的名称列表。 |
boolean |
isProviderEnabled(String provider) 返回给定提供者的当前启用/禁用状态。 |
boolean |
registerGnssMeasurementsCallback(GnssMeasurementsEvent.Callback callback, Handler handler) 注册GPS测量回调。 |
boolean |
registerGnssMeasurementsCallback(GnssMeasurementsEvent.Callback callback) 注册GPS测量回调。 |
boolean |
registerGnssNavigationMessageCallback(GnssNavigationMessage.Callback callback, Handler handler) 注册GNSS导航消息回调。 |
boolean |
registerGnssNavigationMessageCallback(GnssNavigationMessage.Callback callback) 注册GNSS导航消息回调。 |
boolean |
registerGnssStatusCallback(GnssStatus.Callback callback) 注册GNSS状态监听器。 |
boolean |
registerGnssStatusCallback(GnssStatus.Callback callback, Handler handler) 注册GNSS状态监听器。 |
void |
removeGpsStatusListener(GpsStatus.Listener listener) 此方法在API级别24中已弃用。 |
void |
removeNmeaListener(OnNmeaMessageListener listener) 删除NMEA侦听器。 |
void |
removeNmeaListener(GpsStatus.NmeaListener listener) 此方法在API级别24中已弃用。 |
void |
removeProximityAlert(PendingIntent intent) 使用给定的PendingIntent删除接近警报。 |
void |
removeTestProvider(String provider) 删除具有给定名称的模拟位置提供程序。 |
void |
removeUpdates(LocationListener listener) 删除指定LocationListener的所有位置更新。 |
void |
removeUpdates(PendingIntent intent) 删除指定的待处理意图的所有位置更新。 |
void |
requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener) 使用指定的提供程序注册位置更新以及待定的意图。 |
void |
requestLocationUpdates(long minTime, float minDistance, Criteria criteria, LocationListener listener, Looper looper) 使用Criteria注册位置更新,并在指定的Looper线程上进行回调。 |
void |
requestLocationUpdates(long minTime, float minDistance, Criteria criteria, PendingIntent intent) 使用标准和待定意图注册位置更新。 |
void |
requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener, Looper looper) 使用指定的提供程序注册位置更新,并在指定的Looper线程上进行回调。 |
void |
requestLocationUpdates(String provider, long minTime, float minDistance, PendingIntent intent) 使用指定的提供程序注册位置更新以及待定的意图。 |
void |
requestSingleUpdate(String provider, PendingIntent intent) 使用指定提供者和待定意图注册一个位置更新。 |
void |
requestSingleUpdate(String provider, LocationListener listener, Looper looper) 使用指定的提供程序和回调注册一个位置更新。 |
void |
requestSingleUpdate(Criteria criteria, LocationListener listener, Looper looper) 使用Criteria和回调注册一个位置更新。 |
void |
requestSingleUpdate(Criteria criteria, PendingIntent intent) 使用条件和待定意图注册单个位置更新。 |
boolean |
sendExtraCommand(String provider, String command, Bundle extras) 将其他命令发送给位置提供者。 |
void |
setTestProviderEnabled(String provider, boolean enabled) 为给定提供者设置一个启用模拟值。 |
void |
setTestProviderLocation(String provider, Location loc) 为给定提供者设置模拟位置。 |
void |
setTestProviderStatus(String provider, int status, Bundle extras, long updateTime) 为给定提供者设置模拟状态值。 |
void |
unregisterGnssMeasurementsCallback(GnssMeasurementsEvent.Callback callback) 取消注册GPS测量回调。 |
void |
unregisterGnssNavigationMessageCallback(GnssNavigationMessage.Callback callback) 取消注册GNSS导航消息回调。 |
void |
unregisterGnssStatusCallback(GnssStatus.Callback callback) 删除一个GNSS状态监听器。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
String GPS_PROVIDER
GPS位置提供商的名称。
该提供商使用卫星确定位置。 根据条件,此提供程序可能需要一段时间才能返回定位修复。 需要许可ACCESS_FINE_LOCATION
。
GPS位置提供商的附加软件包可以包含以下键/值对:
常数值:“gps”
String KEY_LOCATION_CHANGED
当使用PendingIntent广播位置更改时,用于Bundle额外的保留位置值的密钥。
常数值:“位置”
String KEY_PROVIDER_ENABLED
当使用PendingIntent广播供应商启用/禁用事件时,用于捆绑额外的键用于保持布尔状态值。
常量值:“providerEnabled”
String KEY_PROXIMITY_ENTERING
用于Bundle额外的键,用于保存指示接近警报是进入(true)还是退出(false)的布尔值。
常数值:“进入”
String KEY_STATUS_CHANGED
当使用PendingIntent广播状态更改时,该键用于保持整数状态值的Bundle额外值。
常数值:“状态”
String MODE_CHANGED_ACTION
LOCATION_MODE
更改时的广播意图操作。 用于LOCATION_MODE
API。 如果您正在与isProviderEnabled(String)
交互,请isProviderEnabled(String)
使用PROVIDERS_CHANGED_ACTION
。 将来,可能会有模式更改不会导致PROVIDERS_CHANGED_ACTION
广播。
常量值:“android.location.MODE_CHANGED”
String NETWORK_PROVIDER
网络位置提供商的名称。
该提供商根据小区塔和WiFi接入点的可用性来确定位置。 通过网络查找检索结果。
常数值:“网络”
String PASSIVE_PROVIDER
用于接收位置的特殊位置提供商,无需实际启动位置定位。
当其他应用程序或服务请求它们时,此提供程序可用于被动接收位置更新,而无需实际请求您自己的位置。 该提供者将返回由其他提供者生成的位置。 您可以查询getProvider()
方法以确定位置更新的来源。 需要许可ACCESS_FINE_LOCATION
,但如果GPS未启用,则此提供程序可能只返回粗略修正。
恒定值:“被动”
String PROVIDERS_CHANGED_ACTION
配置的位置提供者更改时的广播意图操作。 用于isProviderEnabled(String)
。 如果您正在与LOCATION_MODE
API进行交互,请LOCATION_MODE
使用MODE_CHANGED_ACTION
。
常量值:“android.location.PROVIDERS_CHANGED”
boolean addGpsStatusListener (GpsStatus.Listener listener)
此方法在API级别24中已弃用。
改为使用registerGnssStatusCallback(GnssStatus.Callback)
。
添加一个GPS状态监听器。
Parameters | |
---|---|
listener |
GpsStatus.Listener : GPS status listener object to register |
Returns | |
---|---|
boolean |
true if the listener was successfully added |
Throws | |
---|---|
SecurityException |
if the ACCESS_FINE_LOCATION permission is not present |
boolean addNmeaListener (OnNmeaMessageListener listener, Handler handler)
添加一个NMEA监听器。
Parameters | |
---|---|
listener |
OnNmeaMessageListener : a OnNmeaMessageListener object to register |
handler |
Handler : the handler that the listener runs on. |
Returns | |
---|---|
boolean |
true if the listener was successfully added |
Throws | |
---|---|
SecurityException |
if the ACCESS_FINE_LOCATION permission is not present |
boolean addNmeaListener (OnNmeaMessageListener listener)
添加一个NMEA监听器。
Parameters | |
---|---|
listener |
OnNmeaMessageListener : a OnNmeaMessageListener object to register |
Returns | |
---|---|
boolean |
true if the listener was successfully added |
Throws | |
---|---|
SecurityException |
if the ACCESS_FINE_LOCATION permission is not present |
boolean addNmeaListener (GpsStatus.NmeaListener listener)
此方法在API级别24中已弃用。
改为使用addNmeaListener(OnNmeaMessageListener)
。
添加一个NMEA监听器。
Parameters | |
---|---|
listener |
GpsStatus.NmeaListener : a GpsStatus.NmeaListener object to register |
Returns | |
---|---|
boolean |
true if the listener was successfully added |
Throws | |
---|---|
SecurityException |
if the ACCESS_FINE_LOCATION permission is not present |
void addProximityAlert (double latitude, double longitude, float radius, long expiration, PendingIntent intent)
根据位置(纬度,经度)和给定半径设置接近警报。
当设备检测到它已经进入或退出该位置周围的区域时,将使用给定的PendingIntent来创建要被触发的意图。
被触发的意图将有一个布尔额外添加键KEY_PROXIMITY_ENTERING
。 如果该值为真,则设备正在进入邻近区域; 如果错误,则退出。
由于位置估算的近似性质,如果设备短暂通过给定区域,可能不会发射Intent。 同样,如果设备经过非常靠近给定区域但实际上并未进入,则可以触发意图。
在过期参数给定的毫秒数之后,位置管理器将删除该近似警报并且不再监视它。 值为-1表示不应该有到期时间。
在内部,该方法同时使用 NETWORK_PROVIDER
和 GPS_PROVIDER
。
在API版本17之前,此方法可以与ACCESS_FINE_LOCATION
或ACCESS_COARSE_LOCATION
一起使用。 从API版本17开始,此方法需要ACCESS_FINE_LOCATION
权限。
Parameters | |
---|---|
latitude |
double : the latitude of the central point of the alert region |
longitude |
double : the longitude of the central point of the alert region |
radius |
float : the radius of the central point of the alert region, in meters |
expiration |
long : time for this proximity alert, in milliseconds, or -1 to indicate no expiration |
intent |
PendingIntent : a PendingIntent that will be used to generate an Intent to fire when entry to or exit from the alert region is detected |
Throws | |
---|---|
SecurityException |
if ACCESS_FINE_LOCATION permission is not present |
void addTestProvider (String name, boolean requiresNetwork, boolean requiresSatellite, boolean requiresCell, boolean hasMonetaryCost, boolean supportsAltitude, boolean supportsSpeed, boolean supportsBearing, int powerRequirement, int accuracy)
创建一个模拟位置提供程序并将其添加到一组活动提供程序中。
Parameters | |
---|---|
name |
String : the provider name |
requiresNetwork |
boolean
|
requiresSatellite |
boolean
|
requiresCell |
boolean
|
hasMonetaryCost |
boolean
|
supportsAltitude |
boolean
|
supportsSpeed |
boolean
|
supportsBearing |
boolean
|
powerRequirement |
int
|
accuracy |
int
|
Throws | |
---|---|
SecurityException |
if mock location app op is not set to allowed for your app. |
IllegalArgumentException |
if a provider with the given name already exists |
void clearTestProviderEnabled (String provider)
删除与给定提供者关联的任何启用模拟值。
Parameters | |
---|---|
provider |
String : the provider name |
Throws | |
---|---|
SecurityException |
if mock location app op is not set to allowed for your app. |
IllegalArgumentException |
if no provider with the given name exists |
void clearTestProviderLocation (String provider)
删除与给定提供者关联的任何模拟位置。
Parameters | |
---|---|
provider |
String : the provider name |
Throws | |
---|---|
SecurityException |
if mock location app op is not set to allowed for your app. |
IllegalArgumentException |
if no provider with the given name exists |
void clearTestProviderStatus (String provider)
删除与给定提供者相关的任何模拟状态值。
Parameters | |
---|---|
provider |
String : the provider name |
Throws | |
---|---|
SecurityException |
if mock location app op is not set to allowed for your app. |
IllegalArgumentException |
if no provider with the given name exists |
List<String> getAllProviders ()
返回所有已知位置提供者的名称列表。
所有提供者都会返回,包括那些不允许被调用活动访问或当前被禁用的提供者。
Returns | |
---|---|
List<String> |
list of Strings containing names of the provider |
String getBestProvider (Criteria criteria, boolean enabledOnly)
返回最符合给定条件的提供者的名称。 只有被允许被调用活动访问的提供者才会被返回。 如果有几家提供商符合标准,则返回最准确的标准。 如果没有提供者符合标准,则标准按以下顺序排列:
请注意,在此过程中不会消除对货币成本的要求。
Parameters | |
---|---|
criteria |
Criteria : the criteria that need to be matched |
enabledOnly |
boolean : if true then only a provider that is currently enabled is returned |
Returns | |
---|---|
String |
name of the provider that best matches the requirements |
GpsStatus getGpsStatus (GpsStatus status)
检索有关GPS引擎当前状态的信息。 这应该只从onGpsStatusChanged(int)
回调中调用,以确保数据以原子方式复制。 调用者可以传递一个GpsStatus
对象来设置最新的状态信息,或者传递null来创建一个新的GpsStatus
对象。
Parameters | |
---|---|
status |
GpsStatus : object containing GPS status details, or null. |
Returns | |
---|---|
GpsStatus |
status object containing updated GPS status. |
Location getLastKnownLocation (String provider)
返回一个位置,指示从给定提供者获取的最后一次已知位置定位的数据。
这可以在不启动提供者的情况下完成。 请注意,此位置可能已过时,例如,如果设备已关闭并移至其他位置。
如果提供者当前被禁用,则返回null。
Parameters | |
---|---|
provider |
String : the name of the provider |
Returns | |
---|---|
Location |
the last known location for the provider, or null |
Throws | |
---|---|
SecurityException |
if no suitable permission is present |
IllegalArgumentException |
if provider is null or doesn't exist |
LocationProvider getProvider (String name)
返回与给定名称的位置提供程序关联的信息,如果该名称不存在提供程序,则返回null。
Parameters | |
---|---|
name |
String : the provider name |
Returns | |
---|---|
LocationProvider |
a LocationProvider, or null |
Throws | |
---|---|
IllegalArgumentException |
if name is null or does not exist |
SecurityException |
if the caller is not permitted to access the given provider. |
List<String> getProviders (Criteria criteria, boolean enabledOnly)
返回满足给定条件的LocationProviders的名称列表,如果没有,则返回null。 只有被允许被调用活动访问的提供者才会被返回。
Parameters | |
---|---|
criteria |
Criteria : the criteria that the returned providers must match |
enabledOnly |
boolean : if true then only the providers which are currently enabled are returned. |
Returns | |
---|---|
List<String> |
list of Strings containing names of the providers |
List<String> getProviders (boolean enabledOnly)
返回位置提供者的名称列表。
Parameters | |
---|---|
enabledOnly |
boolean : if true then only the providers which are currently enabled are returned. |
Returns | |
---|---|
List<String> |
list of Strings containing names of the providers |
boolean isProviderEnabled (String provider)
返回给定提供者的当前启用/禁用状态。
如果用户在设置菜单中启用了此提供程序,则返回true,否则返回false
LOCATION_MODE
者应改为使用 LOCATION_MODE
除非他们依赖于提供者特定的API,例如 requestLocationUpdates(String, long, float, LocationListener)
。
在API版本 LOLLIPOP
之前,如果位置权限不足以使用指定的提供程序,则此方法将抛出 SecurityException
。
Parameters | |
---|---|
provider |
String : the name of the provider |
Returns | |
---|---|
boolean |
true if the provider exists and is enabled |
Throws | |
---|---|
IllegalArgumentException |
if provider is null |
boolean registerGnssMeasurementsCallback (GnssMeasurementsEvent.Callback callback, Handler handler)
注册GPS测量回调。
Parameters | |
---|---|
callback |
GnssMeasurementsEvent.Callback : a GnssMeasurementsEvent.Callback object to register. |
handler |
Handler : the handler that the callback runs on. |
Returns | |
---|---|
boolean |
true if the callback was added successfully, false otherwise. |
boolean registerGnssMeasurementsCallback (GnssMeasurementsEvent.Callback callback)
注册GPS测量回调。
Parameters | |
---|---|
callback |
GnssMeasurementsEvent.Callback : a GnssMeasurementsEvent.Callback object to register. |
Returns | |
---|---|
boolean |
true if the callback was added successfully, false otherwise. |
boolean registerGnssNavigationMessageCallback (GnssNavigationMessage.Callback callback, Handler handler)
注册GNSS导航消息回调。
Parameters | |
---|---|
callback |
GnssNavigationMessage.Callback : a GnssNavigationMessage.Callback object to register. |
handler |
Handler : the handler that the callback runs on. |
Returns | |
---|---|
boolean |
true if the callback was added successfully, false otherwise. |
boolean registerGnssNavigationMessageCallback (GnssNavigationMessage.Callback callback)
注册GNSS导航消息回调。
Parameters | |
---|---|
callback |
GnssNavigationMessage.Callback : a GnssNavigationMessage.Callback object to register. |
Returns | |
---|---|
boolean |
true if the callback was added successfully, false otherwise. |
boolean registerGnssStatusCallback (GnssStatus.Callback callback)
注册GNSS状态监听器。
Parameters | |
---|---|
callback |
GnssStatus.Callback : GNSS status listener object to register |
Returns | |
---|---|
boolean |
true if the listener was successfully added |
Throws | |
---|---|
SecurityException |
if the ACCESS_FINE_LOCATION permission is not present |
boolean registerGnssStatusCallback (GnssStatus.Callback callback, Handler handler)
注册GNSS状态监听器。
Parameters | |
---|---|
callback |
GnssStatus.Callback : GNSS status listener object to register |
handler |
Handler : the handler that the callback runs on. |
Returns | |
---|---|
boolean |
true if the listener was successfully added |
Throws | |
---|---|
SecurityException |
if the ACCESS_FINE_LOCATION permission is not present |
void removeGpsStatusListener (GpsStatus.Listener listener)
此方法在API级别24中已弃用。
改为使用unregisterGnssStatusCallback(GnssStatus.Callback)
。
删除GPS状态监听器。
Parameters | |
---|---|
listener |
GpsStatus.Listener : GPS status listener object to remove |
void removeNmeaListener (OnNmeaMessageListener listener)
删除NMEA侦听器。
Parameters | |
---|---|
listener |
OnNmeaMessageListener : a OnNmeaMessageListener object to remove |
void removeNmeaListener (GpsStatus.NmeaListener listener)
此方法在API级别24中已弃用。
改为使用removeNmeaListener(OnNmeaMessageListener)
。
删除NMEA侦听器。
Parameters | |
---|---|
listener |
GpsStatus.NmeaListener : a GpsStatus.NmeaListener object to remove |
void removeProximityAlert (PendingIntent intent)
使用给定的PendingIntent删除接近警报。
在API 17之前,此方法可以与ACCESS_FINE_LOCATION
或ACCESS_COARSE_LOCATION
一起使用。 从API版本17开始,此方法需要ACCESS_FINE_LOCATION
权限。
Parameters | |
---|---|
intent |
PendingIntent : the PendingIntent that no longer needs to be notified of proximity alerts |
Throws | |
---|---|
IllegalArgumentException |
if intent is null |
SecurityException |
if ACCESS_FINE_LOCATION permission is not present |
void removeTestProvider (String provider)
删除具有给定名称的模拟位置提供程序。
Parameters | |
---|---|
provider |
String : the provider name |
Throws | |
---|---|
SecurityException |
if mock location app op is not set to allowed for your app. |
IllegalArgumentException |
if no provider with the given name exists |
void removeUpdates (LocationListener listener)
删除指定LocationListener的所有位置更新。
在此调用之后,此侦听器不再进行更新。
Parameters | |
---|---|
listener |
LocationListener : listener object that no longer needs location updates |
Throws | |
---|---|
IllegalArgumentException |
if listener is null |
void removeUpdates (PendingIntent intent)
删除指定的待处理意图的所有位置更新。
在此通话之后,更新将不再用于此未决意图。
Parameters | |
---|---|
intent |
PendingIntent : pending intent object that no longer needs location updates |
Throws | |
---|---|
IllegalArgumentException |
if intent is null |
void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)
使用指定的提供程序注册位置更新以及待定的意图。
有关如何使用此方法的更多详细信息,请参阅 requestLocationUpdates(long, float, Criteria, PendingIntent)
。
Parameters | |
---|---|
provider |
String : the name of the provider with which to register |
minTime |
long : minimum time interval between location updates, in milliseconds |
minDistance |
float : minimum distance between location updates, in meters |
listener |
LocationListener : a LocationListener whose onLocationChanged(Location) method will be called for each location update |
Throws | |
---|---|
IllegalArgumentException |
if provider is null or doesn't exist on this device |
IllegalArgumentException |
if listener is null |
RuntimeException |
if the calling thread has no Looper |
SecurityException |
if no suitable permission is present |
void requestLocationUpdates (long minTime, float minDistance, Criteria criteria, LocationListener listener, Looper looper)
使用Criteria注册位置更新,并在指定的Looper线程上进行回调。
有关如何使用此方法的更多详细信息,请参阅 requestLocationUpdates(long, float, Criteria, PendingIntent)
。
Parameters | |
---|---|
minTime |
long : minimum time interval between location updates, in milliseconds |
minDistance |
float : minimum distance between location updates, in meters |
criteria |
Criteria : contains parameters for the location manager to choose the appropriate provider and parameters to compute the location |
listener |
LocationListener : a LocationListener whose onLocationChanged(Location) method will be called for each location update |
looper |
Looper : a Looper object whose message queue will be used to implement the callback mechanism, or null to make callbacks on the calling thread |
Throws | |
---|---|
IllegalArgumentException |
if criteria is null |
IllegalArgumentException |
if listener is null |
SecurityException |
if no suitable permission is present |
void requestLocationUpdates (long minTime, float minDistance, Criteria criteria, PendingIntent intent)
使用标准和待定意图注册位置更新。
requestLocationUpdates()
和 requestSingleUpdate()
注册当前活动,由指定的提供程序定期更新,或由提供程序与指定的 Criteria
匹配,并提供位置和状态更新。
接收第一个位置更新可能需要一段时间。 如果需要立即位置,应用程序可以使用getLastKnownLocation(String)
方法。
位置更新通过 LocationListener
回调或广播意向到 PendingIntent
。
如果主叫方提供了未决意图,则使用 KEY_LOCATION_CHANGED
和 Location
值的密钥发送位置更新。
位置更新间隔可以使用minTime参数进行控制。 位置更新之间的时间间隔永远不会小于minTime,但它可能更多取决于位置提供程序的实施和其他应用程序请求的更新间隔。
为minTime选择合理的值对于延长电池寿命非常重要。 每个位置更新都需要GPS,WIFI,蜂窝和其他无线电的电源。 尽可能选择尽可能高的minTime值,同时提供合理的用户体验。 如果您的应用程序不在前台并向用户显示位置,则应用程序应避免使用活动提供程序(例如NETWORK_PROVIDER
或GPS_PROVIDER
),但如果您坚持,请选择5 * 60 * 1000(5分钟)的minTime或更大。 如果您的应用程序处于前台并向用户显示位置,则选择更快的更新间隔是适当的。
minDistance参数也可以用来控制位置更新的频率。 如果它大于0,则位置提供者只会在位置至少改变minDistance米时发送更新,并至少经过minTime毫秒。 然而,定位提供商使用minDistance参数节省功耗更为困难,所以minTime应该是节省电池寿命的主要工具。
如果您的应用程序想要被动地观察由其他应用程序触发的位置更新,但是不会消耗任何额外的功能,那么请使用PASSIVE_PROVIDER
此提供程序不会主动打开或修改活动位置提供程序,因此您无需谨慎操作minTime和minDistance。 但是,如果您的应用程序在位置更新(如网络活动)上执行繁重的工作,那么您应该为minTime和/或minDistance选择非零值来限制更新频率,以防另一个应用程序以极快的速度启用位置提供程序更新。
如果提供者被用户禁用,则更新将停止,并且将发送提供者可用性更新。 一旦提供程序再次启用,位置更新将立即恢复并发送提供程序可用性更新。 提供者还可以随时发送状态更新,并附加特定于提供者的更新。 如果回调供给则状态和可用性更新是通过onProviderDisabled(String)
, onProviderEnabled(String)
或者onStatusChanged(String, int, Bundle)
。 或者,如果提供了待处理的意图,则状态和可用性更新是具有KEY_PROVIDER_ENABLED
或KEY_STATUS_CHANGED
额外密钥的广播意图。
如果使用LocationListener
,但没有指定Looper,则调用线程必须已经是Looper
线程,例如调用Activity的主线程。 如果使用LocationListener
指定了Looper,则在提供的Looper线程上进行回调。
在Jellybean之前,minTime参数只是一个提示,一些位置提供程序实现忽略了它。 从Jellybean开始,Android兼容设备必须同时观察minTime和minDistance参数。
Parameters | |
---|---|
minTime |
long : minimum time interval between location updates, in milliseconds |
minDistance |
float : minimum distance between location updates, in meters |
criteria |
Criteria : contains parameters for the location manager to choose the appropriate provider and parameters to compute the location |
intent |
PendingIntent : a PendingIntent to be sent for each location update |
Throws | |
---|---|
IllegalArgumentException |
if criteria is null |
IllegalArgumentException |
if intent is null |
SecurityException |
if no suitable permission is present |
void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener, Looper looper)
使用指定的提供程序注册位置更新,并在指定的Looper线程上进行回调。
有关如何使用此方法的更多详细信息,请参阅 requestLocationUpdates(long, float, Criteria, PendingIntent)
。
Parameters | |
---|---|
provider |
String : the name of the provider with which to register |
minTime |
long : minimum time interval between location updates, in milliseconds |
minDistance |
float : minimum distance between location updates, in meters |
listener |
LocationListener : a LocationListener whose onLocationChanged(Location) method will be called for each location update |
looper |
Looper : a Looper object whose message queue will be used to implement the callback mechanism, or null to make callbacks on the calling thread |
Throws | |
---|---|
IllegalArgumentException |
if provider is null or doesn't exist |
IllegalArgumentException |
if listener is null |
SecurityException |
if no suitable permission is present |
void requestLocationUpdates (String provider, long minTime, float minDistance, PendingIntent intent)
使用指定的提供程序注册位置更新以及待定的意图。
有关如何使用此方法的更多详细信息,请参阅 requestLocationUpdates(long, float, Criteria, PendingIntent)
。
Parameters | |
---|---|
provider |
String : the name of the provider with which to register |
minTime |
long : minimum time interval between location updates, in milliseconds |
minDistance |
float : minimum distance between location updates, in meters |
intent |
PendingIntent : a PendingIntent to be sent for each location update |
Throws | |
---|---|
IllegalArgumentException |
if provider is null or doesn't exist on this device |
IllegalArgumentException |
if intent is null |
SecurityException |
if no suitable permission is present |
void requestSingleUpdate (String provider, PendingIntent intent)
使用指定提供者和待定意图注册一个位置更新。
有关如何使用此方法的更多详细信息,请参阅 requestLocationUpdates(long, float, Criteria, PendingIntent)
。
Parameters | |
---|---|
provider |
String : the name of the provider with which to register |
intent |
PendingIntent : a PendingIntent to be sent for the location update |
Throws | |
---|---|
IllegalArgumentException |
if provider is null or doesn't exist |
IllegalArgumentException |
if intent is null |
SecurityException |
if no suitable permission is present |
void requestSingleUpdate (String provider, LocationListener listener, Looper looper)
使用指定的提供程序和回调注册一个位置更新。
有关如何使用此方法的更多详细信息,请参阅 requestLocationUpdates(long, float, Criteria, PendingIntent)
。
Parameters | |
---|---|
provider |
String : the name of the provider with which to register |
listener |
LocationListener : a LocationListener whose onLocationChanged(Location) method will be called when the location update is available |
looper |
Looper : a Looper object whose message queue will be used to implement the callback mechanism, or null to make callbacks on the calling thread |
Throws | |
---|---|
IllegalArgumentException |
if provider is null or doesn't exist |
IllegalArgumentException |
if listener is null |
SecurityException |
if no suitable permission is present |
void requestSingleUpdate (Criteria criteria, LocationListener listener, Looper looper)
使用Criteria和回调注册一个位置更新。
有关如何使用此方法的更多详细信息,请参阅 requestLocationUpdates(long, float, Criteria, PendingIntent)
。
Parameters | |
---|---|
criteria |
Criteria : contains parameters for the location manager to choose the appropriate provider and parameters to compute the location |
listener |
LocationListener : a LocationListener whose onLocationChanged(Location) method will be called when the location update is available |
looper |
Looper : a Looper object whose message queue will be used to implement the callback mechanism, or null to make callbacks on the calling thread |
Throws | |
---|---|
IllegalArgumentException |
if criteria is null |
IllegalArgumentException |
if listener is null |
SecurityException |
if no suitable permission is present |
void requestSingleUpdate (Criteria criteria, PendingIntent intent)
使用条件和待定意图注册单个位置更新。
有关如何使用此方法的更多详细信息,请参阅 requestLocationUpdates(long, float, Criteria, PendingIntent)
。
Parameters | |
---|---|
criteria |
Criteria : contains parameters for the location manager to choose the appropriate provider and parameters to compute the location |
intent |
PendingIntent : a PendingIntent to be sent for the location update |
Throws | |
---|---|
IllegalArgumentException |
if provider is null or doesn't exist |
IllegalArgumentException |
if intent is null |
SecurityException |
if no suitable permission is present |
boolean sendExtraCommand (String provider, String command, Bundle extras)
将其他命令发送给位置提供者。 可用于支持位置管理器API的提供者特定扩展
Parameters | |
---|---|
provider |
String : name of the location provider. |
command |
String : name of the command to send to the provider. |
extras |
Bundle : optional arguments for the command (or null). The provider may optionally fill the extras Bundle with results from the command. |
Returns | |
---|---|
boolean |
true if the command succeeds. |
void setTestProviderEnabled (String provider, boolean enabled)
为给定提供者设置一个启用模拟值。 该值将用于提供者的任何实际值。
Parameters | |
---|---|
provider |
String : the provider name |
enabled |
boolean : the mock enabled value |
Throws | |
---|---|
SecurityException |
if mock location app op is not set to allowed for your app. |
IllegalArgumentException |
if no provider with the given name exists |
void setTestProviderLocation (String provider, Location loc)
为给定提供者设置模拟位置。
这个位置将被用来代替提供者的任何实际位置。 根据Location
类的文档,位置对象的最小数量的字段必须设置为有效的LocationProvider位置。
Parameters | |
---|---|
provider |
String : the provider name |
loc |
Location : the mock location |
Throws | |
---|---|
SecurityException |
if mock location app op is not set to allowed for your app. |
IllegalArgumentException |
if no provider with the given name exists |
IllegalArgumentException |
if the location is incomplete |
void setTestProviderStatus (String provider, int status, Bundle extras, long updateTime)
为给定提供者设置模拟状态值。 这些值将被用来代替提供者的任何实际值。
Parameters | |
---|---|
provider |
String : the provider name |
status |
int : the mock status |
extras |
Bundle : a Bundle containing mock extras |
updateTime |
long : the mock update time |
Throws | |
---|---|
SecurityException |
if mock location app op is not set to allowed for your app. |
IllegalArgumentException |
if no provider with the given name exists |
void unregisterGnssMeasurementsCallback (GnssMeasurementsEvent.Callback callback)
取消注册GPS测量回调。
Parameters | |
---|---|
callback |
GnssMeasurementsEvent.Callback : a GnssMeasurementsEvent.Callback object to remove. |
void unregisterGnssNavigationMessageCallback (GnssNavigationMessage.Callback callback)
取消注册GNSS导航消息回调。
Parameters | |
---|---|
callback |
GnssNavigationMessage.Callback : a GnssNavigationMessage.Callback object to remove. |
void unregisterGnssStatusCallback (GnssStatus.Callback callback)
删除一个GNSS状态监听器。
Parameters | |
---|---|
callback |
GnssStatus.Callback : GNSS status listener object to remove |