Android 百度定位SDK配置和实现当前位置定位

来源:互联网 发布:同学录制作软件 编辑:程序博客网 时间:2024/05/21 07:53

因为毕设要做到对当前位置实时定位,并计算距离附近的自动售货机的实时位置,因为主要是在大陆地区,所以研究了Android 百度定位SDK

定位SDK会根据设备当前的实际情况(如是否开启GPS,是否连接网络,是否扫描到Wi-Fi信息等)生成定位依据,并根据开发者设置的实际定位策略(包括三种:高精度模式,低功耗模式,仅用设备模式)进行定位。

NOTICE: 百度现在把地图SDK和定位SDK分开,如只需要实现定位功能,不需要使用地图SDK

关于百度SDK更详细的定位原理可以参考百度的文档:http://developer.baidu.com/map/geosdk.htm

步骤:

  1. 注册百度账号成为开发者后,去http://developer.baidu.com/map/geosdk.htm页面,左下角“相关下载”下载版本,本文采用Android定位SDKv4.1(这里吐槽一句,新版本还存在很多问题,官方提供的demo也有很多bug,程序无法定位,一直显示error code:602
  2. 点击获取秘钥,根据网页提示获取属于你当前应用的访问应用(ak)
  3. 在下载的库文件中,将liblocSDK4.so文件拷贝到libs/armeabi目录下。将locSDK4.1.jar文件拷贝到工程的libs目录下,并在工程属性->Java Build Path->Libraries中选择“Add JARs”,选定locSDK4.1.jar,确定后返回。这样您就可以在程序中使用百度地理围栏SDK了。
  4. 设置AndroidManifest.xml
  • 在Application标签中声明service组件,每个app拥有自己单独的定位service

  • 声明使用权限

 

配置完后,既可以在MainActivity.java中写代码,代码如下:

代码说明:
1. 虽然在AndroidManifest.xml里面添加了AK,但是在程序运行中仍然会出现问题,所以在代码中也添加一行

2. 官方文档给的demo中,onCreate缺少start(),需要补充,具体见53行高亮代码:

3. 写到这里的时候运行程序,既可以得到你当前的地址,经纬度等其他信息,定位的效果如下:

Android 百度定位SDK配置和实现当前位置定位

也可以单独获取省市信息:

1
2
3
4
5
6
7
8
9
10
11
12
sb.append("\n省份 : ");
sb.append(location.getProvince());
sb.append("\n城市 : ");
sb.append(location.getCity());
sb.append("\n区/县 : ");
sb.append(location.getDistrict());
sb.append("\n街道: ");
sb.append(location.getStreet());
sb.append("\n街道号码: ");
sb.append(location.getStreetNumber());
sb.append("\n地址 : ");
sb.append(location.getAddrStr());
0 0