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 文件。

03-04 16:12:49.259: E/AndroidRuntime(6804): FATAL EXCEPTION: main…

03-04 16:12:49.259: 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接口,使用缓存的定位信息进行定位,从而降低定位相关敏感字段的获取频次。此接口适用于对定位精度要求不高的场景,请开发者合理使用。