文档管理中心
API参考定位服务Androidcom.huawei.hms.locationClass SummaryFusedLocationProviderClient

FusedLocationProviderClient

展开

Class Info

public class FusedLocationProviderClient

融合定位,程序定位交互接入类。在调用LocationServices类的getFusedLocationProviderClient(Activity activity)方法时会返回一个该类型的实例。

获取FusedLocationProviderClient实例对象的示例代码如下:
Java
Kotlin
收起
自动换行
深色代码主题
复制
  1. private FusedLocationProviderClient fusedLocationProviderClient;
  2. fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
收起
自动换行
深色代码主题
复制
  1. private lateinit var mFusedLocationProviderClient: FusedLocationProviderClient
  2. mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)

Public Field Summary

展开

Qualifier and Type

Field and Description

static final String

KEY_MOCK_LOCATION

Location对象中的mExtras字段,包含一组键值对,其中键是KEY_MOCK_LOCATION,值为布尔值。通过该字段可以判断当前Location对象是否是模拟位置。

static final String

KEY_VERTICAL_ACCURACY

预留字段,暂时不支持该能力。

Public Method Summary

展开

Qualifier and Type

Method Name and Description

Task<Void>

disableBackgroundLocation()

移除后台服务。

说明

Location kit 6.0.0版本新增方法,仅HMS Core非预装场景时支持使用,用于部分厂商或机型在持续定位的过程中,应用进入后台或者息屏场景下,因系统省电策略导致停止位置回调,开启后台定位后,该场景下仍能持续提供定位能力。

Task<Void>

enableBackgroundLocation(int id, Notification notification)

开启后台服务。

说明

Location kit 6.0.0版本新增方法,仅HMS Core非预装场景时支持使用,用于部分厂商或机型在持续定位的过程中,应用进入后台或者息屏场景下,因系统省电策略导致停止位置回调,开启后台定位后,该场景下仍能持续提供定位能力。

Task<Void>

flushLocations()

刷新当前正在处理的位置。

Task<Location>

getLastLocation()

返回最后一次请求的可用位置。

Task<HWLocation>

getLastLocationWithAddress(LocationRequest request)

返回最后一次请求的可用位置,包括详细地址信息。如果某个位置不可用,则返回null。

Task<LocationAvailability>

getLocationAvailability()

返回位置数据的可用性。

Task<Void>

removeLocationUpdates(LocationCallback callback)

移除指定回调信息的位置更新。针对同一个callback重复请求时,不需要调用此方法做移除操作。

Task<Void>

removeLocationUpdates(PendingIntent callbackIntent)

移除指定PendingIntent的位置更新。

注意

1.非华为手机暂不支持此功能。

Task<Void>

requestLocationUpdates(LocationRequest request, LocationCallback callback, Looper looper)

请求位置更新,并在指定的Looper线程上回调。

Task<Void>

requestLocationUpdates(LocationRequest request, PendingIntent callbackIntent)

请求方使用PendingIntent的方式,持续请求位置更新。

注意

1.非华为手机暂不支持此功能。

Task<Void>

requestLocationUpdatesEx(LocationRequest request, LocationCallback callback, Looper looper)

扩展的位置信息服务接口,当前支持室外高精度和室内定位,并兼容普通定位接口。

注意
  1. 使用室外高精度能力的开发者需要遵守国家法律法规与华为公司共同向国家有关部门申请高精度偏转插件的使用许可。
  2. 室外高精度能力当前仅支持中国大陆地区的部分城市:深圳市、广州市、苏州市、杭州市、重庆市、成都市、天津市、东莞市(持续增加中),海外暂不支持。

Task<Void>

setMockLocation(Location mockLocation)

设置具体的模拟位置。

Task<Void>

setMockMode(boolean isMockMode)

设置位置提供者是否使用位置模拟模式。

Public Fields

KEY_MOCK_LOCATION

展开

Fields

public static final String KEY_MOCK_LOCATION

Location对象中的mExtras字段,包含一组键值对,其中键是KEY_MOCK_LOCATION,值为布尔值。通过该字段可以判断当前Location对象是否是模拟位置。

使用方式:location.getExtras().getBoolean(FusedLocationProviderClient.KEY_MOCK_LOCATION)。

KEY_MOCK_LOCATION:“mockLocation”,其余常量值请参阅:Constant-values

Public Method

disableBackgroundLocation

说明

Location kit 6.0.0版本新增方法,仅HMS Core非预装场景时支持使用,用于部分厂商或机型在持续定位的过程中,应用进入后台或者息屏场景下,因系统省电策略导致停止位置回调,开启后台定位后,该场景下仍能持续提供定位能力。

展开

Method

public Task<Void> disableBackgroundLocation()

移除后台服务。

Returns

展开

Type

Description

Task<Void>

任务。通过addOnSuccessListener()和addOnFailureListener()添加监听,然后通过onSuccess()和onFailure()方法获取任务执行结果。

enableBackgroundLocation(int id, Notification notification)

说明

Location kit 6.0.0版本新增方法,仅HMS Core非预装场景时支持使用,用于部分厂商或机型在持续定位的过程中,应用进入后台或者息屏场景下,因系统省电策略导致停止位置回调,开启后台定位后,该场景下仍能持续提供定位能力。

展开

Method

public Task<Void> enableBackgroundLocation(int id, Notification notification)

开启后台服务。

Parameters

展开

Name

Description

id

通知id,此id不能为0。

notification

通知。

Returns

展开

Type

Description

Task<Void>

任务。通过addOnSuccessListener()和addOnFailureListener()添加监听,然后通过onSuccess()和onFailure()方法获取任务执行结果。

flushLocations

展开

Method

public Task<Void> flushLocations()

刷新当前正在处理的位置。

Returns

展开

Type

Description

Task<Void>

任务。通过addOnSuccessListener()和addOnFailureListener()添加监听,然后通过onSuccess()和onFailure()方法获取任务执行结果。

说明

当前版本并未提供flushLocations()功能,SDK中为空实现。

getLastLocation

展开

Method

public Task<Location> getLastLocation()

返回最后一次请求的可用位置。该接口并不会主动请求位置,将使用上一次请求的缓存位置。

以下场景可能导致返回null:

  • 从未使用过定位功能。

  • 位置开关关闭。

  • 恢复出厂设置。

如果对位置的实时性有较高要求,推荐主动调用requestLocationUpdates替代调用getLastLocation。如果只想收到一次位置信息,可以将LocationRequest中numUpdates参数设置为1。

Returns

展开

Type

Description

Task<Location>

任务。通过addOnSuccessListener()和addOnFailureListener()添加监听,然后通过onSuccess()和onFailure()方法获取任务执行结果。

getLastLocationWithAddress

展开

Method

public Task<HWLocation> getLastLocationWithAddress(LocationRequest request)

返回最后一次请求的可用位置,包括详细地址信息。如果某个位置不可用,则返回null。

Parameters

展开

Name

Description

request

位置请求对象。

Returns

展开

Type

Description

Task<HWLocation>

任务。通过addOnSuccessListener()和addOnFailureListener()添加监听,然后通过onSuccess()和onFailure()方法获取任务执行结果。

getLocationAvailability

展开

Method

public Task<LocationAvailability> getLocationAvailability()

返回位置数据的可用性。

Returns

展开

Type

Description

Task<LocationAvailability>

任务。通过添加addOnSuccessListener()和addOnFailureListener()监听,然后通过onSuccess()和onFailure()方法获取任务执行结果。

失败的情况下,需要将抛出的Exception对象强转为ApiException对象,再调用ApiException对象的getStatusCode()方法确定返回码:

  • 0:成功
  • 1:失败
  • 404:找不到资源
  • 500:内部错误

removeLocationUpdates(LocationCallback callback)

展开

Method

public Task<Void> removeLocationUpdates(LocationCallback callback)

移除指定回调信息的位置更新。针对同一个callback重复请求时,不需要调用此方法做移除操作。

Parameters

展开

Name

Description

callback

要移除的回调信息。

Returns

展开

Type

Description

Task<Void>

任务。通过addOnSuccessListener()和addOnFailureListener()添加监听,然后通过onSuccess()和onFailure()方法获取任务执行结果。

removeLocationUpdates(PendingIntent callbackIntent)

展开

Method

public Task<Void> removeLocationUpdates(PendingIntent callbackIntent)

移除指定PendingIntent的位置更新。

Parameters

展开

Name

Description

callbackIntent

要移除的PendingIntent对象。

Returns

展开

Type

Description

Task<Void>

任务。通过addOnSuccessListener()和addOnFailureListener()添加监听,然后通过onSuccess()和onFailure()方法获取任务执行结果。

requestLocationUpdates(LocationRequest request,LocationCallback callback,Looper looper)

展开

Method

public Task<Void> requestLocationUpdates(LocationRequest request,LocationCallback callback,Looper looper)

请求位置更新,并在指定的Looper线程上回调。该方法要求请求方进程存在才能持续回调。如进程终止后仍然希望能够持续收到回调,请参见requestLocationUpdates(LocationRequest request,PendingIntent callbackIntent)。

此接口请求成功的结果是在TaskaddOnSuccessListener()的onSuccess()中,位置回调的结果是在LocationCallbackonLocationResult()中,这两种回调是并发任务,无法保证onSuccess()和onLocationResult()回调时序。

Parameters

展开

Name

Description

request

位置请求对象。

callback

位置更新的回调。

looper

指定线程的looper对象。

说明

6.4.0.300及以后版本不支持looper为null。

Returns

展开

Type

Description

Task<Void>

任务。通过addOnSuccessListener()和addOnFailureListener()添加监听,然后通过onSuccess()和onFailure()方法获取任务执行结果。

requestLocationUpdates(LocationRequest request,PendingIntent callbackIntent)

展开

Method

public Task<Void> requestLocationUpdates(LocationRequest request,PendingIntent callbackIntent)

请求方使用PendingIntent的方式,持续请求位置更新,HMS Core把位置更新的结果LocationResultLocationAvailability封装到Intent中,调用传入的PendingIntent的send()发送给请求方。如果请求方进程终止,使用此方法,依然能够持续回调。

此接口请求成功的结果是在TaskaddOnSuccessListener()的onSuccess()中,位置回调的结果是在PendingIntent对应的广播接收器中接收的,这两种回调是并发任务,无法保证onSuccess()和广播接收器收到位置回调的时序。

Parameters

展开

Name

Description

request

位置请求对象。

callbackIntent

每个位置请求更新关联的PendingIntent,构造PendingIntent时需设置Class、Action,不能构造空Intent。

Returns

展开

Type

Description

Task<Void>

任务。通过addOnSuccessListener()和addOnFailureListener()添加监听,然后通过onSuccess()和onFailure()方法获取任务执行结果。

requestLocationUpdatesEx(LocationRequest request,LocationCallback callback,Looper looper)

注意
  1. 使用室外高精度能力的开发者需要遵守国家法律法规与华为公司共同向国家有关部门申请高精度偏转插件的使用许可。
  2. 室外高精度能力当前仅支持中国大陆地区的部分城市:深圳市、广州市、苏州市、杭州市、重庆市、成都市、天津市、东莞市(持续增加中),海外暂不支持。
展开

Method

public Task<Void> requestLocationUpdatesEx(LocationRequest request,LocationCallback callback,Looper looper)

扩展的位置信息服务接口,当前支持室外高精度和室内定位,并兼容普通定位接口。

  1. 如果设备不支持室外高精度或者应用没有请求室外高精度权限,会返回普通位置信息,效果同requestLocationUpdates接口。

    此接口请求成功的结果是在TaskaddOnSuccessListener()的onSuccess()中,位置回调的结果是在LocationCallbackonLocationResult()中,这两种回调是并发任务,无法保证onSuccess()和onLocationResult()回调时序。

  2. 如果设备所在区域不支持室内定位或者应用没有请求室内定位的权限,会返回普通位置信息,效果同requestLocationUpdates接口。

    在返回的location对象中可以通过getExtras().getBoolean("isHdNlpLocation", false)获取判断标记,如果标记为true,表示返回的是室内定位数据,此时getExtras()中会一并返回楼层等信息;如果是false,表示返回的是室外定位数据。此接口请求成功的结果是在TaskaddOnSuccessListener()的onSuccess()中,位置回调的结果是在LocationCallbackonLocationResult()中,这两种回调是并发任务,无法保证onSuccess()和onLocationResult()回调时序。

Parameters

展开

Name

Description

request

位置请求对象。

callback

位置更新的回调。

looper

指定线程的looper对象。

说明

6.4.0.300及以后版本不支持looper为null。

Returns

展开

Type

Description

Task<Void>

任务。通过addOnSuccessListener()和addOnFailureListener()添加监听,然后通过onSuccess()和onFailure()方法获取任务执行结果。

setMockLocation

展开

Method

public Task<Void> setMockLocation(Location mockLocation)

设置具体的模拟位置。必须在调用此方法之前调用setMockMode(boolean)并设置为true。

Parameters

展开

Name

Description

mockLocation

模拟位置。此类为Android原生类,具体介绍请参见Android开发文档。

Returns

展开

Type

Description

Task<Void>

任务。通过addOnSuccessListener()和addOnFailureListener()添加监听,然后通过onSuccess()和onFailure()方法获取任务执行结果。

setMockMode

展开

Method

public Task<Void> setMockMode(boolean isMockMode)

设置位置提供者是否使用位置模拟模式。为true时,将不再使用GNSS或网络位置,最终直接返回通过setMockLocation(Location)设置的位置信息。

Parameters

展开

Name

Description

isMockMode

如果为true,则位置提供者将设置为模拟模式。如果为false,它将返回到正常状态。

Returns

展开

Type

Description

Task<Void>

任务。通过addOnSuccessListener()和addOnFailureListener()添加监听,然后通过onSuccess()和onFailure()方法获取任务执行结果。

在 API参考 中进行搜索
请输入您想要搜索的关键词