重拾百度定位之踩坑篇

源码传送门【若你不小心点击进入GitHub了捎带给个star( ^_^ )】


前言

最近更新项目中用的百度定位SDK时遇见了一个奇葩的问题。当升级SDK后百度定位一直返回505,通过百度定位官网查看该码表示AK非法或者不存在。很纠结,于是自己又写了一个demo来研究一下百度定位以及大家使用百度定位经常出现的问题,特此记录。这篇文章我先将百度定位的实现也介绍一下,最后再分析遇到的问题及解决方案。

定位分析

目前百度定位提供了WIFI,基站,GPS等多种定位方式,适用于室内、室外多种定位场景,具有出色的定位性能:定位精度高(其实我是想吐槽的)、覆盖率广、网络定位请求流量小、定位速度快。图片来自百度官网

集成定位SDK

现在官网提供的最新的定位SDK版本是v7.0,官网SDK下载地址请戳 定位SDK,可根据自己的需要下载,在这里我进入全部下载,只下载了全量定位。在新版本V7.0中百度将定位对开发包实现了分离
(1)基础定位:开发包体积最小,但只包含基础定位能力(GPS/WiFi/基站)、基础位置描述能力;
(2)离线定位:在基础定位能力基础之上,提供离线定位能力,可在网络环境不佳时,进行精准定位;
(3)室内定位:在基础定位能力基础之上,提供室内高精度定位能力,精度可达1-3米;
(4)全量定位:包含离线定位、室内高精度定位能力,同时提供更人性化的位置描述服务;
对于这四种类型定位开发包是互斥的,一个应用中只需集成一种定位开发包即可。下载成功之后,将jar包和.so文件放到对应的文件下即可。

申请秘钥

使用百度定位,我们需要在官网申请一个AK,项目定位时需要使用这个Ak,一个应用对于一个AK,AK申请时需要提供包名及SHA1值。具体方式
可去官网查看。在这里我简单介绍下SHA1获取方式。在申请Ak时,页面填写发布版SHA1和开发版SHA1。下面我提供两种方式获取SHA1值。

AndroidStudio Terminal获取

上面是获取密钥库信息的