利用百度sdk定位五分钟入门

这两天做一个android的天气预报项目,要通过定位拿到所在城市。准备通过百度sdk来获取,研究了一下写了个小例子成功完成需求, 这里记录下简单步骤以供日后参考。

1. 首先当然然是下载百度sdk. 官网下载最新版本4.2: 百度定位sdk4.2

2. 然后开始在项目使用之前,还必须先在百度lbs开放平台上登陆自己的账号(没有就注册一个)并创建一个服务密钥。至于怎么创建,请看官网说明书--点我

3. 创建好密钥之后就可以开始在项目上开工了(没有的话就新建一个空项目, 或者直接下载下面的示例项目)。首先导入你下载的sdk文件,分两步:

1) 将liblocSDK4.so文件拷贝到libs/armeabi目录下

2) 将locSDK4.2.jar文件拷贝到工程的libs目录下, 并添加到build path

4. 然后是使用百度定位sdk所需要的配置:

1) 配置service

<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
</service>

2) 配置权限

<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!—SD卡读取权限,用户写入离线定位数据-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
<!--允许应用读取低级别的系统日志文件 -->
<uses-permission android:name="android.permission.READ_LOGS"></uses-permission>


5. 配置百度服务AccessKey, 就是前面第2步中生成的key。

<meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="key" />//key:开发者申请的key


6. 实现一个位置信息监听器,后面通过百度定位服务得到的位置信息会在这里进行处理。

public class MyLocationListener implements BDLocationListener {
<span style="white-space:pre">	</span>@Override
	public void onReceiveLocation(BDLocation location) {
		if (location == null)
		        return ;
			
		// 获取时间
		String time = location.getTime();
		// 获取经纬度
		double latitude = location.getLatitude();
		double longitude = location.getLongitude();
		// 获取位置信息描述
		String addrStr = location.getAddrStr();
		// 获取所在省,城市
		String province = location.getProvince();
		String city = location.getCity();
	}
}

7. 在要进行定位的Activity中初始化并配置一个LocationClient, 然后调用start方法启动client, 再用requestLocation方法发送位置信息请求。这里发出去的位置请求是异步的,返回的请求结果会由我们前面设置的监听器进行处理。最后再得到位置处息后根据需要考虑是否调用stop方法停止LocationClient。

mLocationClient = new LocationClient(getApplicationContext());     //声明LocationClient类
mLocationClient.registerLocationListener( myListener );    //注册监听函数
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Battery_Saving);//设置定位模式
option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02
option.setScanSpan(5000);//设置发起定位请求的间隔时间为5000ms
option.setIsNeedAddress(true);//返回的定位结果包含地址信息
mLocationClient.setLocOption(option);
mLocationClient.start();
int result = mLocationClient.requestLocation();


通过以上几步基本上就能完成位置信息的获取,根据自己的需要将代码实现在要获取位雷信息的地方。下面附上一个最简单的例子供参考:示例代码



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值