我的工具太少了-百度地图定位功能!
2015-12-17 14:46
453 查看
1.为什么要写这个呢?
因为用的地方多啊,这个还用说!但网上的不是太老,就是太复杂了,包含很多不需要的东西!
2.本demo有哪些干货?
只有一个功能:就是定位,定位到当前城市!
1.第一步:当然是下载相关sdk啊,我只需要定位功能,不想做的太臃肿!如图:
下载下来大概只有372KB,解压出来后有一个jar文件,其他的都是各种处理器的.so文件,如果是eclipse:全部放在libs下面即可!
如果你和我一样使用的是Android Studio1.5正式版的话,就先要把jar包引入,再把.so文件引入~!
jar包引入大家都懂,.so文件引入不得不说Android Studio就要麻烦一些,需要在当前项目的build.gradle里面加入如下配置:
这就是第一步啦,下载sdk并引入相关jar和所有.so文件~!
2.第二步:得到appkey并配置
在百度开放平台的里面创建相关应用,完成后就可以得到key值了,
a.然后在application里面加入相关配置
第二步,也就完成了,下面开始最后一步~!
3.第三步:写代码,我是单独提出来的一个类,用的时候实例化这个类并监听就可以得到相关定位信息了~! 代码如下:
到这里百度地图定位的使用就写完了,如何使用呢:在需要定位的Activity中加入如下代码:
mCity就是当前定位的城市啦,想获得更多信息,如坐标,具体位置等信息,从location里面获取就可以啦~!
其实也不复杂,就三步就可以实现定位功能的使用,官方文档还加入service什么的,对我没用,我只需要定位到当前城市就可以了!
希望对也是这个需求的同学有一点帮助,大家多多交流~!
因为用的地方多啊,这个还用说!但网上的不是太老,就是太复杂了,包含很多不需要的东西!
2.本demo有哪些干货?
只有一个功能:就是定位,定位到当前城市!
1.第一步:当然是下载相关sdk啊,我只需要定位功能,不想做的太臃肿!如图:
下载下来大概只有372KB,解压出来后有一个jar文件,其他的都是各种处理器的.so文件,如果是eclipse:全部放在libs下面即可!
如果你和我一样使用的是Android Studio1.5正式版的话,就先要把jar包引入,再把.so文件引入~!
jar包引入大家都懂,.so文件引入不得不说Android Studio就要麻烦一些,需要在当前项目的build.gradle里面加入如下配置:
这就是第一步啦,下载sdk并引入相关jar和所有.so文件~!
2.第二步:得到appkey并配置
在百度开放平台的里面创建相关应用,完成后就可以得到key值了,
a.然后在application里面加入相关配置
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="你得到的AK说" />b.并加入相关权限
<!-- 这个权限用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 这个权限用于访问GPS定位 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 --> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 用于读取手机当前的状态 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 访问网络,网络定位需要上网 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- SD卡读取权限,用户写入离线定位数据 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" />
第二步,也就完成了,下面开始最后一步~!
3.第三步:写代码,我是单独提出来的一个类,用的时候实例化这个类并监听就可以得到相关定位信息了~! 代码如下:
package com.cq.cake.baidu; import android.content.Context; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; /** * Created by Small Cake on 2015/12/16. */ public class MyBaiduLocation { private LocationClient client;// 百度定位客户端 private LocationEndListener listener; private static MyBaiduLocation mBaiduLocation; private MyBaiduLocation(Context context){ initBaiDuMapLocation(context); } /** * 获取实例 * @return */ public static MyBaiduLocation getInstance(Context context){ if (mBaiduLocation!=null){ return mBaiduLocation; }else{ mBaiduLocation = new MyBaiduLocation(context); return mBaiduLocation; } } public interface LocationEndListener{ void endLocation(BDLocation location); } public void setLocationEndListener(LocationEndListener listener){ this.listener = listener; } /** * 百度地图定位 */ private void initBaiDuMapLocation(Context context) { //1.申明百度定位客户端 client = new LocationClient(context.getApplicationContext()); // 2.申明和注册监听函数 client.registerLocationListener(new MyBDLocationListener()); // 3.设置地图定位相关参数 client.setLocOption(getLocationClientOption()); // 4.开启客户端定位 client.start(); } class MyBDLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { if (listener!=null) listener.endLocation(location); } } /** * 获取地图定位相关参数 * * @return LocationClientOption */ private LocationClientOption getLocationClientOption() { LocationClientOption option = new LocationClientOption(); // Hight_Accuracy高精度、Battery_Saving低功耗、Device_Sensors仅设备(GPS) option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);// 设置高精度定位模式 option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02 option.setScanSpan(1000 * 60 * 10);// 设置的扫描间隔,单位是毫秒 option.setIsNeedAddress(true);// 返回的定位结果包含地址信息 option.setAddrType("all");// String 值为 all时,表示返回地址信息,其他值都表示不返回地址信息。 option.setNeedDeviceDirect(true);// 返回的定位结果包含手机机头的方向 option.setOpenGps(true);// 设置打开GPS return option; } }
到这里百度地图定位的使用就写完了,如何使用呢:在需要定位的Activity中加入如下代码:
MyBaiduLocation mLocation = MyBaiduLocation.getInstance(MainActivity.this); mLocation.setLocationEndListener(new MyBaiduLocation.LocationEndListener() { @Override public void endLocation(BDLocation location) { String mCity = location.getProvince(); itemCity.setTitle(mCity); queryWeather(mCity); } });
mCity就是当前定位的城市啦,想获得更多信息,如坐标,具体位置等信息,从location里面获取就可以啦~!
其实也不复杂,就三步就可以实现定位功能的使用,官方文档还加入service什么的,对我没用,我只需要定位到当前城市就可以了!
希望对也是这个需求的同学有一点帮助,大家多多交流~!
相关文章推荐
- Redis入门之Redis 安装超详细文档
- JavaScript数据类型
- PHP实现发送邮件的方法(基于简单邮件发送类)
- Word中插入特殊符号不能显示”的解决办法
- replace into和insert into 的区别
- Linux下安装maven-------MAVEN
- Java基础学习总结(39)——Log4j 1使用教程
- Java基础学习总结(39)——Log4j 1使用教程
- Java基础学习总结(39)——Log4j 1使用教程
- Log4j 1使用教程
- Ubuntu14.04 server增加swap分区
- 非web环境,maven+spring+mybatis配置,备忘
- 非阻塞式UI思路
- 第15周SHH数据结构-【项目2-用哈希法组织关键字】
- Android存储之SQLite数据库
- Android存储之SQLite数据库
- 安卓第一次安装与软件更新时显示引导页,其他时候显示别的图片,以及定时进入主页面
- Bootstrap Tooltip显示换行和左对齐
- boilerplate
- dsadsa