1、Android Q新增的ACCESS_BACKGROUND_LOCATION权限是干什么的?使用时有什么需要注意的地方?


腾讯Android Q进一步细化定位权限,用户可以选择只有在使用应用时(应用在前台)app才能使用定位权限,或者无论何时都可以定位。在清单文件中申请该权限,同时在代码中动态申请该权限,系统会弹窗提示用户是否选择始终允许。

只要应用运行在Android Q的设备上,这套机制就是有效的。区别在于应用的target,如果target是Q,那么需要手动在manifest中添加ACCESS_BACKGROUND_LOCATION权限,再在应用中动态申请该权限。如果target <= P,那么系统会在应用安装时自动配置ACCESS_BACKGROUND_LOCATION权限,动态请求时也会看到弹窗提示用户是只允许前台定位还是全局定位。


2、Android Q严格限制了读取设备的硬件标识,这对使用SDK有影响吗?


IMEI,IMSI,SN,MAC等常用用户标识符将无法拿到。之前拿这几个值我们需要READ_PHONE_STATE,现在READ_PRIVILEGED_PHONE_STATE这个权限属于系统权限,我们无法拿到。针对这项改动,SDK专门做了适配,不会对使用造成影响。


3、Android Q对无线扫描做了严格限制,这对SDK有什么影响?


网络定位依赖用户上报的wifi和基站信息为用户提供定位服务。建议使用定位服务时提示用户打开wifi开关,同时确保拿到ACCESS_FINE_LOCATION权限。否则在没有gps的情况下将无法为用户提供定位服务。其中WifiManager.setWifiEnabled方法失效,Android官方推荐settings panel提示用户手动开启。


4、什么是腾讯手机地图定位SDK?


腾讯地图定位SDK是一套基于Android 4.1及以上版本设备的应用程序接口,通过该接口,您可以轻松的使用腾讯地图定位服务,构建LBS应用程序。

定位SDK包括GPS定位与网络定位,实现了经纬度坐标偏转与当前位置的POI名称、地址或者行政区划的查询。采用了移动缓存策略,节省流量与电量。

5、UnsatisfiedLinkError引起程序崩溃


DDMS下可以看到类似日志。错误原因是程序运行时无法加载 libtencentloc.so文件,请确认目标工程中存在lib/armeabi/libtencentloc.so 文件。

E/AndroidRuntime(6804): FATAL EXCEPTION: main…

E/AndroidRuntime(6804): Caused by: java.lang.UnsatisfiedLinkError: Couldn’t load tencent_loc: findLibrary returned null


6、为何定位SDK设置请求级别无效?


如果是7.2.4版本,请您确保TencentLocationManager.getInstance()方法务必优先于LocationRequest构造调用。


7、如何解决定位频次过高,超过业务应有范围的问题?


如开发者在已经降低定位获取频率后,依旧遇到定位频次过高,超过业务应有范围的问题反馈,可以调用getLastKnownLocation接口,使用缓存的定位信息进行定位,从而降低定位相关敏感字段的获取频次。此接口适用于对定位精度要求不高的场景,请开发者合理使用。


8、为何用户位置没有变但是定位返回的点有变化?


因为定位本身是有精度误差的,有新的点进来就会返回新的信息,有时候会不准确可能是如下原因:

1.网络定位依赖于周边检测到的基站和wifi信息,而这些信息有受各种因素的影响发生变化或者采集有误,导致定位的偏差。

2.定位本身也有一定精度范围随机误差,从几十米到上公里都是正常的情况,如果使用GPS定位,相对来说是定位比较精确的方式,但受限制一般只能在室外使用,且卫星信号容易受气象,遮挡等因素影响,而且手机自身GPS芯片的质量,也会对最终定位的的精准度有直接的影响。


9、如何判断命中了哪种作弊?


1.常规作弊校验方式通过getFakeReason获取作弊码,把作弊码转成二进制,然后1的位置就是命中的作弊原因,比如作弊码32转成二进制是100000对应的就是作弊表格中的1<<5(通过对室内外的判断, 结合定位来源是卫星定位, 判断作弊的可能性)。

2.作弊可能性允许多个存在,比如作弊码33转成的二进制就是100001,对应的结果就是1<<5+1,也就是同时满足1和5两种条件。 更详细的作弊原因可以工单咨询


10、为何返回的定位点和逆地址信息对不上?


定位sdk如果发现是作弊点就不会返回地址信息,但是SDK会对外回调之前的逆地址信息。


11、为何升级新版本后定位一直不数据?


Android定位SDK自7.4.6版本起增加了隐私合规接口,在构造TencentLocationManager以及使用定位功能前,需要先设置同意定位SDK的隐私政策(TencentLocationManager.setUserAgreePrivacy(true)),否则所有定位SDK相关功能不可用。