安卓开发旅之百度导航
终于走上工作岗位了,这一次要做导航功能,怎么样,有信心吗?既然选择的开发安卓,当然要坚持,写一个导航功能还是很简单的,百度有的是借口,好吧,这是开发安卓的人,最常见的态度。但是第一次在工作写代码真心不是意见容易的事
不废话了,进入正题,本文适合对还没有百度地图开发经验,和开发过程中有问题的IT同志们
首先实现导航有三种模式:
1使用百度地图的导航功能,也就是navi这个类!这是参考
实现起来比较简单,1.找到坐标点通过定位的回调的起点,2长按得到需要终点,发起对百度导航界面调度的过程
http://wiki.lbsyun.baidu.com/cms/androidsdk/doc/v4_1_0/index.html
2将百度导航嵌入到代码中,这个实现起来还是相当复杂的,但是也还是有办法的,那就是 慕课网 上有关于这个的视频开发,讲的还是挺详细的!! 可以在app端看的,一边看,一边就写完了,还是很快
带你理一边流程,
2.1显示key(和TTS)(sha1&md5:eclipse->android->build中,如果要上线的还是按官方办法获取)
2.2清单文件,key的注册,诱导界面的注册!(又到界面没有xml文件),service的注册,
2.3jar,so包导入和assets中的资源文件,又到界面的activity的直接到导入
2.4代码部分:
一.注册sdk,地图的引入,getmap(),
二.定位 LoactionClient(百度用的定位服务) ,LocationClientOption(设置参数),registerlistener,注册监听
三.BDLocationListener监听的回调类,获取BDLocation这个坐标类型,ll为当前坐标,移动到坐标位置
MapStatus ms = new MapStatus.Builder( mBaiduMap.getMapStatus()).target(ll).zoom(18.0f).build();
mBaiduMap.animateMapStatus(MapStatusUpdateFactory .newMapStatus(ms));
四.长按获取终点坐标 mBaiduMap.setOnMapLongClickListener
五.设置坐标点集合list<BNRoutePlanNode>,将始终点转换坐标类型,放入list集合中
六.跳转导航界面
BaiduNaviManager.getInstance().launchNavigator(this,// context对象
list,// 坐标点集合
1,// 默认
false,// 是否开启真实导航,false为模拟导航,当前时速达到900KM/h 我都笑了,导航还叫你减速慢性
new RoutePlanListener(sNode));// 回调监听类,
在这里面有onJumpToNavigator回调的方法用来写跳转诱导界面的方法
Intent intent = new Intent(MainActivity.this,BNDemoGuideActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable(ROUTE_PLAN_NODE,(BNRoutePlanNode) mBNRoutePlanNode);
intent.putExtras(bundle);
startActivity(intent)
3通过Intent直接调度到百度app,可以加入参数(稍微麻烦一点),当然也可以直接调度过去,看自己需求,后来做完才发现,公司的项目并不是主要需要百度功能,这样会节约资源,也不用去管理导航这块!!跟重要的一点百度导航的功能还是很强大的!!高德地图应该也是不错的(默默的祝愿两家能够良性竞争,市场就是要有活性!)
带参数调起:http://blog.csdn.net/ljb_blog/article/details/11047655
方法说完了,能看到这,才是重点,因为写了一个星期,各种坑还是值得一题的
1jar包版本冲突,第二次开发导航的一定要注意了,因为版本的问题是肯定会冲突的,所以还是重新刷一遍jar.so包,
2在assets中有png(其实是资源文件)的3个文件,还是一定要引入的
3.关于生命周期的方法,一定要善于使用,因为定位服务,和导航都是一个比较耗时和好点的操作,及时关闭可以,省点电,在外面面试的,和出去玩,遇到手机快没电了是意见非常尴尬的事情!!,省电还是很重要的!!
4安卓版本的坑,6.0设置了敏感权限,例如GPS等等!!所以在6.0以下(23.0主要是说开发版本)是没有那个关于权限回调的方法,好像还是在activity中重写的方法,包括调用方法
5在里面最复杂的问题我觉得还是坐标点之间的转换了,(最好还是用百度的BD09LL吧)因为到最后百度导航还是会有偏移!!
http://blog.csdn.net/jixianwanmei999/article/details/36415755
LagLng 经纬度坐标,
GeoPoint 世界地理坐标点,类似于经纬度
Location,这个可以通过android里的LocationListener监听回调来获取,这是基于内置GPS的Service获得的,
这个是通过GPS获取的,比较精确,所以里面还有关于速度,角度等一些比较精确的数据,做测绘应该会用!!
BDLocation 百度坐标,包含很多信息地址相关的信息 在百度的
整理的差不多了,希望对开发的新手们有点帮助,这也是我成长的一个开始了!!以后好好写技术文档了!!
安卓开发旅之百度导航相关推荐
- 安卓开发步骤!百度、阿里、滴滴、新浪的面试心经总结,看看这篇文章吧!
Android全局异常处理 在做android项目开发时,大家都知道如果程序出错了,会弹出来一个强制退出的弹出框,这个本身没什么问题,但是这个UI实在是太丑了,别说用户接受不了,就连我们自己本身可能都 ...
- 基于百度地图sdk的地图app开发(七)——导航和模拟导航
这是基于百度地图sdk的地图app开发系列博客第七篇 代码仓库位置:https://github.com/YanhuiLu89/lmap.git 上一篇 基于百度地图sdk的地图app开发(六)--路 ...
- android安卓开发入门视频教程资料百度网盘下载
android安卓开发入门视频教程资料讲解安卓核心基础,包含视频+笔记,适合新手入门学习. 百度网盘:https://pan.baidu.com/s/1uciMAAa97nm5RSLILtdPdg&a ...
- ios百度导航SDK,iOS开发之百度地图导航
若遇到疑难问题可以去 ios导航SDK 论坛问题 查看和反馈:http://bbs.lbsyun.baidu.com/forum.php?mod=forumdisplay&fid=37 ...
- 安卓开发笔记(十二)—— 基于百度地图SDK完成地图中心定位,marker转向,动态定位
中山大学数据科学与计算机学院本科生实验报告 (2018年秋季学期) 项目源码:Github传送门 第十七周任务 一.实验题目 地图 第十七周实验目的 接入百度地图API 掌握少量的百度地图API接口 ...
- 【安卓开发之图片分享应用3:设置底部导航栏】
安卓开发之图片分享应用3:设置底部导航栏 一.创建底部导航栏 二.设置登录成功之后跳转到底部导航栏 一.创建底部导航栏 我们使用的是Android Studio里面自带的底部导航栏.首先我们直接在原来 ...
- 由安卓开发中的一个坑引发的问题解决之道浅析
博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 扯扯 最近发生了好多事情,两会,google AI alphaGo 大战李世石,俘获无数少男少女心的韩国电视剧<太 ...
- Android 常用开发功能 博客导航
转载地址:http://blog.csdn.net/ciqing123/article/details/52931663?locationNum=16&fps=1 简介:第一次在CSDN上发表 ...
- 如果成为一名高级安卓开发_什么是高级开发人员,我如何成为一名开发人员?
如果成为一名高级安卓开发 Becoming a Senior Developer is something many of us strive for as we continue our code ...
- 从事安卓开发6年,我都有哪些收获?
作者 | 拭心 来源 | 拭心又在思考了我的天(ID:evolution1024) 一转眼,我从事安卓开发工作已经六年有余,对安卓开发甚至软件开发的价值,每年都有更进一步的认识.对未来的方向,也从刚入 ...
最新文章
- 共建网络安全堤坝,守住网络安全底线
- 利用反射动态调用类成员C#
- linux文件需求管理,CaliberRM 需求管理系统
- 【CMD】复制并覆盖目标文件
- 行健设计_广西大学行健文理学院参加2019年第七届广西大学生工业设计大赛
- Keepalived+nginx实现高可用负载均衡
- QT使用Q_OBJECT链接不通过的一种情况
- 闲话杂谈—至曾经的自己
- Docker最全教程之MySQL容器化 (二十四)
- Java 源程序的良好书写规范有哪些_使用Java作为程序语言时,好的命名规范有哪些...
- 重新下载python以前下的包还用重新安装吗_强制“pip”在切换到其他Python二进制文件后重新编译以前安装的包(numpy)...
- phpcms9.6 ueditor_Phpcms v9深度整合百度编辑器Ueditor
- oracle 某一字段取反
- 超赞 ! 老外的一种避免递归查询所有子部门的树数据表设计与实现!
- 损失 18 万,获刑 7 年,又又又是程序员删库!
- root后充电很慢,root后开机慢
- 章鱼猫(Octocat)
- Git中的vim命令
- QTableView添加复选框
- 在U盘上安装debian linux
热门文章
- 数据全裸时代,公开获取上百万条四六级成绩
- App Store提交上线、市场推广专题
- 5G消息RCS富媒体通信与传统短信相比有何特色?
- 云迁移实践:VMware虚拟机迁移到华为云
- 解决TypeError: conv2d() received an invalid combination of arguments
- MediaRecorder MPEG4Writer
- PoE供电技术与应用
- Secondary NameNode工作原理
- grub4dos引导Linux失败,Grub4dos引导Ubuntu
- python3 mysql模块_8.6.1 python3的mysql模块pymysql