public final class TencentLocationManager
extends java.lang.Object
注意, 使用腾讯定位服务前, 应确保:
| 限定符和类型 | 字段和说明 |
|---|---|
static int |
COORDINATE_TYPE_GCJ02
坐标系标识, 国测局坐标(火星坐标).
|
static int |
COORDINATE_TYPE_WGS84
坐标系标识, WGS84坐标(GPS坐标, 地球坐标).
|
static int |
DR_TYPE_BIKE |
static int |
DR_TYPE_WALK |
static int |
NTRIP_REQUEST_MODE_OUTER |
static int |
NTRIP_REQUEST_MODE_STANDARD |
static int |
NTRIP_REQUEST_MODE_TENCENT |
static int |
SIGN_IN_SCENE
签到场景,单次定位,第一次会优先返回精度较高的结果,定位速度可能会延迟1~3S
|
static int |
SPORT_SCENE
运动场景,高精度连续定位,适用于步行或骑行定位,第一次会优先返回精度较高的结果
|
static int |
TRANSPORT_SCENE
出行场景,高精度连续定位,适用于室外出行场景,优先使用卫星定位结果,卫星定位成功之后网络定位不再返回,卫星信号断开之后一段时间才会返回网络结果
首次定位或卫星定位丢失后,默认等待超时时间8s,超时无卫星定位将返回网络定位结果
|
| 限定符和类型 | 方法和说明 |
|---|---|
void |
addLocationListener(TencentLocationListener listener)
添加定位监听
添加定位监听前请先请求连续定位,request与Looper配置与连续定位一致
|
void |
changeCallbackInterval(long callbackInterval)
修改 sdk 内部的 gps 回调频率, 会影响 app 请求手机位置信息的次数
会同时修改
TencentLocationRequest.setInterval(long) 设置的频率, 并保持一致
如未设置用或未同意隐私政策,该方法不生效. |
void |
disableForegroundLocation(boolean removeNotification)
关闭前台定位服务
如未设置用或未同意隐私政策,该方法不生效.
|
void |
enableForegroundLocation(int notificationId,
android.app.Notification notification)
开启前台定位服务
如未设置用或未同意隐私政策,该方法不生效.
|
java.lang.String |
getBuild() |
int |
getCoordinateType()
获取当前使用的坐标系.
|
TencentLocation |
getDrPosition()
传出计算出的实时位置,调用
startDrEngine(int)成功后才可能有值
如未设置用或未同意隐私政策,直接返回null. |
static TencentLocationManager |
getInstance(android.content.Context context)
获取腾讯定位服务实例,该方法需要在带有looper的线程调用,SDK会保证无耗时操作并立即返回。
|
TencentLocation |
getLastKnownLocation()
返回最近一次的位置, 可能为 null.
|
java.lang.String |
getOaid()
获取设备oaid
|
static boolean |
getUserAgreePrivacy()
获取用户是否同意隐私政策协议
设置用户隐私后,可通过该接口判断用户隐私状态
|
java.lang.String |
getVersion() |
boolean |
isDrSupport()
是否支持DR引擎
|
void |
removeLocationListener(TencentLocationListener listener)
移除定位监听
移除通过addLocationListener增加的监听器
requestLocationUpdates的监听请使用removeUpdates移除
|
void |
removeUpdates(TencentLocationListener listener)
移除位置监听器并停止定位.
|
int |
requestLocationUpdates(TencentLocationRequest request,
TencentLocationListener listener)
请求定位, 位置更新将通过 listener 回调通知.
|
int |
requestLocationUpdates(TencentLocationRequest request,
TencentLocationListener listener,
android.os.Looper looper)
请求(在与 looper 关联的线程中)定位, 位置更新将通过 listener 回调通知.
|
int |
requestLocationWithScene(int scene,
TencentLocationListener listener)
根据场景请求定位,简化定位相关配置
如未设置用或未同意隐私政策,该方法不生效.
|
int |
requestSingleFreshLocation(TencentLocationRequest request,
TencentLocationListener listener,
android.os.Looper looper)
获取当前单次定位,才方法可在未启动周期性回调时获取一次最新位置
也可以在启动周期性回调时,强制刷新得到一次最新的位置信息
该接口在单次定位时,获取位置结果为1号定位接口,在启动周期性回调时,
结果跟随TencentLocationRequest中设置的定位接口号码。
|
void |
setCoordinateType(int coordinateType)
设置坐标系.
|
void |
setDebuggable(boolean debuggable)
已过时。
该方法已废弃,由
setSDKLogListener(TencentLocationLogListener)代替
设置是否允许内部进入Debug模式[默认为false]。
如果开发者遇到问题,在请求定位前设置为true,内部会将运行日志上传到腾讯服务器,将手机IMEI和当前时间提供给我们,可以分析出现问题的原因。
如未设置用或未同意隐私政策,该方法不生效. |
void |
setDeviceID(android.content.Context context,
java.lang.String deviceID)
Android Q开始,无法正常读取设备唯一标识,此接口用于配置设备唯一标识
deviceID长度限制为1~63,超过63将选择前63位,只允许字母、数字、下划线的组合
如未设置用或未同意隐私政策,该方法不生效.
|
void |
setExtraData(java.lang.String key,
java.lang.String value) |
void |
setMockEnable(boolean switcher)
是否允许mockGps数据
设置为true后将不对mockGps进行过滤
如未设置用或未同意隐私政策,该方法不生效.
|
void |
setSDKLogListener(com.tencent.map.geolocation.TencentLocationLogListener logListener)
设置接收SDK内部运行时的日志接口
如未设置用或未同意隐私政策,该方法不生效.
|
void |
setSystemCacheEnable(boolean switcher)
是否允许在定位失败情况下返回系统缓存位置
如未设置用或未同意隐私政策,该方法不生效.
|
static void |
setUserAgreePrivacy(boolean isAgree)
设置用户是否同意隐私协议政策
调用其他接口前必须首先调用此接口进行用户是否同意隐私政策的设置,传入true后才能正常使用定位功能
|
int |
startDrEngine(int type)
启动DR引擎。
|
boolean |
startIndoorLocation()
已过时。
|
boolean |
stopIndoorLocation()
已过时。
|
void |
stopLocationWithScene(int scene,
TencentLocationListener listener)
根据场景停止定位, 与requestLocationWithScene对应
目标场景为
SPORT_SCENE或TRANSPORT_SCENE时需要调用停止定位;
SIGN_IN_SCENE为单次定位,无需调用此接口
如未设置用或未同意隐私政策,该方法不生效. |
void |
terminateDrEngine()
停止DR引擎。
|
void |
triggerCodeGuarder(boolean trigger) |
public static int DR_TYPE_WALK
public static int DR_TYPE_BIKE
public static final int COORDINATE_TYPE_GCJ02
public static final int COORDINATE_TYPE_WGS84
public static final int SIGN_IN_SCENE
public static final int SPORT_SCENE
public static final int TRANSPORT_SCENE
首次定位或卫星定位丢失后,默认等待超时时间8s,超时无卫星定位将返回网络定位结果
public static final int NTRIP_REQUEST_MODE_TENCENT
public static final int NTRIP_REQUEST_MODE_STANDARD
public static final int NTRIP_REQUEST_MODE_OUTER
public static void setUserAgreePrivacy(boolean isAgree)
调用其他接口前必须首先调用此接口进行用户是否同意隐私政策的设置,传入true后才能正常使用定位功能
isAgree - 是否同意隐私政策public static boolean getUserAgreePrivacy()
设置用户隐私后,可通过该接口判断用户隐私状态
public static TencentLocationManager getInstance(android.content.Context context) throws java.lang.NullPointerException, java.lang.IllegalArgumentException
context - Activity, Service, ApplicationContext 等各种 Contextjava.lang.NullPointerException - context 为 nulljava.lang.IllegalArgumentException - 没有在带有线程调用该方法public void enableForegroundLocation(int notificationId,
android.app.Notification notification)
throws java.lang.IllegalArgumentException
如未设置用或未同意隐私政策,该方法不生效.
notificationId - notifation设置唯一idnotification - 自定义的通知java.lang.IllegalArgumentException - 非法的的坐标类型,notificationId必须大于0,且notification不为null,否则抛出该异常public void disableForegroundLocation(boolean removeNotification)
如未设置用或未同意隐私政策,该方法不生效.
removeNotification - 是否移除通知栏通知public void setDebuggable(boolean debuggable)
setSDKLogListener(TencentLocationLogListener)代替
设置是否允许内部进入Debug模式[默认为false]。
如果开发者遇到问题,在请求定位前设置为true,内部会将运行日志上传到腾讯服务器,将手机IMEI和当前时间提供给我们,可以分析出现问题的原因。
如未设置用或未同意隐私政策,该方法不生效.
debuggable - 是否允许内部进入Debug模式[默认为false]public void setSDKLogListener(com.tencent.map.geolocation.TencentLocationLogListener logListener)
logListener - 日志接口,当设为null时内部将重置public void setCoordinateType(int coordinateType)
如未设置用或未同意隐私政策,该方法不生效.
coordinateType - 合法的坐标系只包括 COORDINATE_TYPE_GCJ02 和
COORDINATE_TYPE_WGS84java.lang.IllegalArgumentException - 非法的坐标类型java.lang.IllegalStateException - 未取消位置监听器(定位仍在进行)的情况下调用本方法public int getCoordinateType()
public void changeCallbackInterval(long callbackInterval)
会同时修改 TencentLocationRequest.setInterval(long) 设置的频率, 并保持一致
如未设置用或未同意隐私政策,该方法不生效.
目前, 仅在开启连续定位后, 调用此方法才生效
callbackInterval - 修改 sdk 内部的 gps 回调频率, 需大于 0, 推荐大于 1000, 单位: 毫秒public void setExtraData(java.lang.String key,
java.lang.String value)
public int requestLocationWithScene(int scene,
TencentLocationListener listener)
如未设置用或未同意隐私政策,该方法不生效.
scene - 目标场景 包括 SIGN_IN_SCENE、SPORT_SCENE 和 TRANSPORT_SCENErequestLocationUpdates(TencentLocationRequest, TencentLocationListener) 返回值
startDrEngine(int) 返回值
java.lang.IllegalArgumentException - 非法的使用场景public void stopLocationWithScene(int scene,
TencentLocationListener listener)
目标场景为SPORT_SCENE或TRANSPORT_SCENE时需要调用停止定位;
SIGN_IN_SCENE为单次定位,无需调用此接口
如未设置用或未同意隐私政策,该方法不生效.
scene - 目标场景 包括 SPORT_SCENE 和 TRANSPORT_SCENEjava.lang.IllegalArgumentException - 非法的使用场景public int requestLocationUpdates(TencentLocationRequest request, TencentLocationListener listener)
强烈建议在主线程中调用本方法, 定位完成后(无论定位成功或失败)都应尽快移除 listener, 否则可能不必要地消耗较多电量.
request - 定位请求listener - 位置监听器java.lang.NullPointerException - request 或 listener 为 nullpublic int requestLocationUpdates(TencentLocationRequest request, TencentLocationListener listener, android.os.Looper looper)
强烈建议在主线程中调用本方法, 定位完成后(无论定位成功或失败)都应尽快移除 listener, 否则可能不必要地消耗较多电量.
注意: 由于回调方法在新线程中调用, 回调方法中*不应*执行某些必须在主线程中完成的操作, 比如更新UI.
request - 定位请求listener - 位置监听器looper - looperjava.lang.NullPointerException - request, listener 或者 looper 为 nullpublic int requestSingleFreshLocation(TencentLocationRequest request, TencentLocationListener listener, android.os.Looper looper)
listener,回调完成后,sdk中会置null释放指向,防止内存泄漏 - @Deprecated public boolean startIndoorLocation()
@Deprecated public boolean stopIndoorLocation()
public TencentLocation getLastKnownLocation()
如未设置用或未同意隐私政策,直接返回null.
public void removeUpdates(TencentLocationListener listener)
定位完成后应尽快通过本方法移除 listener 否则可能消耗较多电量.
如未设置用或未同意隐私政策,直接返回null.
listener - 位置监听器。注意:传入null时,会强制停止定位引擎并移除所有监听。public void addLocationListener(TencentLocationListener listener)
添加定位监听前请先请求连续定位,request与Looper配置与连续定位一致
listener - 位置监听器requestLocationUpdates(TencentLocationRequest, TencentLocationListener, Looper)public void removeLocationListener(TencentLocationListener listener)
移除通过addLocationListener增加的监听器 requestLocationUpdates的监听请使用removeUpdates移除
listener - 位置监听器public java.lang.String getBuild()
public java.lang.String getVersion()
public java.lang.String getOaid()
public void triggerCodeGuarder(boolean trigger)
public void setDeviceID(android.content.Context context,
java.lang.String deviceID)
如未设置用或未同意隐私政策,该方法不生效.
context - deviceID - 设备IDpublic void setMockEnable(boolean switcher)
如未设置用或未同意隐私政策,该方法不生效.
switcher - public void setSystemCacheEnable(boolean switcher)
如未设置用或未同意隐私政策,该方法不生效.
switcher - public TencentLocation getDrPosition()
startDrEngine(int)成功后才可能有值
如未设置用或未同意隐私政策,直接返回null.
public int startDrEngine(int type)
removeUpdates(TencentLocationListener)时传入null}
注意:请确保调用之前已获取位置权限
Manifest.permission.ACCESS_COARSE_LOCATION
Manifest.permission.ACCESS_FINE_LOCATIONtype - 运动类型 目前支持DR_TYPE_BIKE和DR_TYPE_WALKpublic void terminateDrEngine()
startDrEngine(int)可能导致启动不成功。
如未设置用或未同意隐私政策,该方法不生效.
public boolean isDrSupport()