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

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

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

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

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

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

网络定位依赖用户上报的wifi和基站信息为用户提供定位服务。建议使用定位服务时提示用户打开wifi开关,同时确保拿到ACCESS_FINE_LOCATION权限。否则在没有gps的情况下将无法为用户提供定位服务。

其中WifiManager.setWifiEnabled方法失效,Android官方推荐settings panel提示用户手动开启。

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

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

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

使用需要注册吗?

不需要注册,您只要接受并认可 《腾讯地图API使用条款》 ,并按照 参考手册 进行开发,即可直接调用。

是否免费? 调用有次数限制吗?

目前腾讯定位SDK完全免费,且没有单日调用上限的限制。

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

WGS84坐标下返回结果中看不到地名

按照国家测绘局对地理信息保密要求,我们无法提供这样的功能。如果您需要地名信息,请使用GCJ02坐标。

无法定位成功

  1. 首先请检查您的程序编写正确。可使用我们提供的 Demo 进行对比验证。
  2. 请确保是在真机上运行程序。
  3. 请确保网络连接可用,即3G或WiFi正常(不要求必须开启GPS)。可使用不同的网络环境进行对比验证。
  4. 请确定您的 Key 是否正确。
  5. 受限于基站和WiFi热点分布范围及更新速度,无法 100% 保证网络定位成功。建议将设备移动到 500~800 米外重新测试。

如果仍然无法定位成功,请到 反馈建议 平台中查看类似问题或直接提问,会有专人为您解答。

问题反馈和技术交流

我们非常乐意不断地改进和完善我们的定位服务。有问题可反馈到 反馈建议 平台或加入腾讯地图API讨论群 42043129,与更多的开发者交流讨论。