Android百度地图导航的那些坑
首先要先在AndroidManifest.xml中注册导航服务
<service android:name="com.baidu.navi.location.f" android:enabled="true"></service>
添加相关的权限,我也不知道哪些是必须的,我直接把Demo里面的相关权限配置全部拉过来了
在导航之前要先调用
BaiduNaviManager.getInstance().initEngine
对导航引擎进行初始化。可以通过NaviEngineInitListener
接口检查导航引擎初始化是否成功,同时通过LBSAuthManagerListener
接口对API-Key进行Key校验是否成功,status结果为0代表key校验成功。必须将Demo中assert目录下的两个文件
BaiduNaviSDK_Resource_v1_0_0.png
,channel
拷贝到自己项目的assert目录下去,否则导航引擎无法初始化成功。在导航引擎初始化成功后,调用导航功能前调用
BaiduNaviManager.getInstance().checkEngineStatus(context)
检测导航引擎是否初始化成功。调用
BaiduNaviManager.getInstance().launchNavigator
开始导航
相关代码如下:
//导航public static void launchNavi(final Activity activity, List<BNaviPoint> points ){ if(points.size() < 2) { Toast.makeText(activity, "数据不合法,暂时无法导航", Toast.LENGTH_SHORT).show(); return; } BaiduNaviManager.getInstance().launchNavigator(activity, points, //路线点列表 NE_RoutePlan_Mode.ROUTE_PLAN_MOD_MIN_TIME, //算路方式 false, //真实导航 BaiduNaviManager.STRATEGY_FORCE_ONLINE_PRIORITY, //在离线策略 new OnStartNavigationListener() { //跳转监听 @Override public void onJumpToNavigator(Bundle configParams) { Intent intent = new Intent(activity, NaviBdMapActivity.class); intent.putExtras(configParams); activity.startActivityForResult(intent,REQUESTCODE_NAVI_FINISH); } @Override public void onJumpToDownloader() { } } ); }
//初始化引擎public static void initNaviEngine(final Activity activity) { BaiduNaviManager.getInstance().initEngine(activity, Utils.getRootPath(), new SPMNaviEngineInitListener(), new LBSAuthManagerListener() { @Override public void onAuthResult(int status, String msg) { String str = null; if (0 == status) { str = "key校验成功!"; } else { str = "key校验失败, " + msg; } } } );}
private static class SPMNaviEngineInitListener implements NaviEngineInitListener {
public void engineInitSuccess() { Log.i("Navi", "导航初始化成功"); }
public void engineInitStart() { }
public void engineInitFail() { Log.i("Navi", "导航初始化失败"); }};
`
public class NaviBdMapActivity extends Activity {
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 创建NmapView
if (Build.VERSION.SDK_INT < 14) {
BaiduNaviManager.getInstance().destroyNMapView();
}
MapGLSurfaceView nMapView = BaiduNaviManager.getInstance().createNMapView(this);
// 创建导航视图
View navigatorView = BNavigator.getInstance().init(
NaviBdMapActivity.this, getIntent().getExtras(),
nMapView);
// 填充视图
setContentView(navigatorView);
BNavigator.getInstance().setListener(mBNavigatorListener);
BNavigator.getInstance().startNav();
// 初始化TTS. 开发者也可以使用独立TTS模块,不用使用导航SDK提供的TTS
BNTTSPlayer.initPlayer();
// 设置TTS播放回调
BNavigatorTTSPlayer.setTTSPlayerListener(new IBNTTSPlayerListener() {
@Override
public int playTTSText(String arg0, int arg1) {
// 开发者可以使用其他TTS的API
return BNTTSPlayer.playTTSText(arg0, arg1);
}
@Override
public void phoneHangUp() {
// 手机挂断
}
@Override
public void phoneCalling() {
// 通话中
}
@Override
public int getTTSState() {
// 开发者可以使用其他TTS的API,
return BNTTSPlayer.getTTSState();
}
});
BNRoutePlaner.getInstance().setObserver(
new RoutePlanObserver(this, new IJumpToDownloadListener() {
@Override
public void onJumpToDownloadOfflineData() {
}
}));
}
private IBNavigatorListener mBNavigatorListener = new IBNavigatorListener() {
@Override
public void onYawingRequestSuccess() {
// TODO 偏航请求成功
}
@Override
public void onYawingRequestStart() {
// TODO 开始偏航请求
}
@Override
public void onPageJump(int jumpTiming, Object arg) {
// TODO 页面跳转回调
if (IBNavigatorListener.PAGE_JUMP_WHEN_GUIDE_END == jumpTiming) {
finishActivity();
} else if (IBNavigatorListener.PAGE_JUMP_WHEN_ROUTE_PLAN_FAIL == jumpTiming) {
finishActivity();
}
}
@Override
public void notifyGPSStatusData(int arg0) {
}
@Override
public void notifyLoacteData(LocData arg0) {
}
@Override
public void notifyNmeaData(String arg0) {
}
@Override
public void notifySensorData(SensorData arg0) {
}
@Override
public void notifyStartNav() {
BaiduNaviManager.getInstance().dismissWaitProgressDialog();
}
@Override
public void notifyViewModeChanged(int arg0) {
}
};
@Override
public void onResume() {
BNavigator.getInstance().resume();
super.onResume();
BNMapController.getInstance().onResume();
};
@Override
public void onPause() {
BNavigator.getInstance().pause();
super.onPause();
BNMapController.getInstance().onPause();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
BNavigator.getInstance().onConfigurationChanged(newConfig);
super.onConfigurationChanged(newConfig);
}
public void onBackPressed() {
BNavigator.getInstance().onBackPressed();
}
@Override
public void onDestroy() {
BNavigator.destory();
BNRoutePlaner.getInstance().setObserver(null);
super.onDestroy();
}
public void finishActivity() {
finish();
overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left);
}
}
Android百度地图导航的那些坑相关推荐
- Android 百度地图导航引擎初始化失败
最近在弄百度地图,关于导航部分出现了引擎初始化失败的问题,而且是在确保key值正确的情况下,依旧初始化失败,在网上找了很多资料也没能解决,最后没办法,只保留一个areambi下的库文件,其他什么are ...
- Android百度地图导航引擎初始化失败问题解决
在确认代码无误,assets目录两个jpg,与一个channel文件都在,添加的so文件也与百度开发文档一致后,仍然提示百度导航引擎初始化失败 最终将百度地图开发包下libs/armeabi下所有的s ...
- Android百度地图、高德地图、腾讯地图导航路线规划问题
Android百度地图.高德地图.腾讯地图导航路线规划 在最近的项目中,需求是用户选择某个地址需要进行导航时,弹出百度地图.高德地图和腾讯地图让用户选择.如果该用户手机中已安装对应的地图App,则 ...
- android百度地图API 骑行,步行导航的DEMO以及途径点问题
android百度地图API的简单骑行,步行的导航demo,以及关于多个路径点问题的说明 ##注:目前基础百度地图API的步行以及骑行是不支持多个路径点的,只能单点对单点的,如果你真的想多个途径点导航 ...
- Android百度地图(六)自定义导航路线规划
Android百度地图(六)自定义导航路线规划 兴奋加激动... 本文代码在http://blog.csdn.net/xyzz609/article/details/51959767的基础上进一步修改 ...
- 关于Android百度地图API步骑行导航引擎初始化失败以及View空指针异常的问题
关于百度地图导航初始化失败问题以及View 空指针异常 因为要做毕业设计的关系所以用到了百度地图,但发现百度地图API这个是真的大坑一个,一些莫名其妙的BUG,搞得让你头大, 这里我先将初始化失败的问 ...
- Android百度地图实例详解之仿摩拜单车APP(包括附近车辆、规划路径、行驶距离、行驶轨迹记录,导航等)
Android百度地图实例详解之仿摩拜单车APP(包括附近车辆.规划路径.行驶距离.行驶轨迹记录,导航等) 标签: android百度地图行驶轨迹记录共享单车行驶距离和时间 2017-03-08 20 ...
- Android百度地图实例详解之仿摩拜单车APP(包括附近车辆、规划路径、行驶距离、行驶轨迹记录,轨迹回放,导航等)
转载请标明地址:http://blog.csdn.net/gaolei1201/article/details/60876811 2016一路有你,2017一起奋斗! 最近共享单车很火,动辄几亿美刀, ...
- Android studio百度地图SDK开发 2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划
2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划 开发前配置,显示基本地图,实时定位等查看之前代码,此博客紧接上一博客:https://blog.csdn.ne ...
最新文章
- 大规模使用 Apache Kafka 的20个最佳实践
- 密码学基础知识(五)序列密码
- bat 服务启动脚本
- 微服务治理实践:服务契约
- 【linux杂谈】查看centOS系统的版本号和内核号
- Beta冲刺博客集合贴
- 如何在Kubernetes上运行PostgreSQL
- The specified JRE installation does not exist异常的原因和解决办法
- 51Nod-1011 最大公约数GCD【欧几里得算法】
- 检测是否有效的手机号码
- 六个免费网站状态监控服务
- npm与package.json详解
- 丢番图方程c语言114,丢番图方程的实现
- 微信如何查看是否被删好友,这4种方法简单快捷!
- 有哪些适合大学生投稿的普刊(社科类)?
- 小程序中强制页面刷新
- Easy EDA #学习笔记09# | ESP32 一键下载电路
- 北京筑龙出席《中国招标》30周年座谈会暨理事年会并进行分享
- 微型计算机中的内存主要包括哪两类,微机原理考试资料.doc
- Linux 计算机网络 从 ping 来初窥计算机网络
热门文章
- PHP 显示公网 IP 地址
- python to excel 路径_好消息!Python和Excel终于可以互通了!
- linux安装MATLAB R2018a步骤
- 智能穿戴显示屏怎样操作?智能穿戴显示屏具有怎么功能?
- 撰写英文文献有哪些技巧?
- 字节跳动 2022.3.20后端开发笔试 解答
- cad直线和圆弧倒角不相切_CAD中圆角、倒角的一些技巧
- 开源轻量级 IM 框架 MobileIMSDK 的Uniapp客户端库已发布
- python之禅是什么东西_Python之禅 Python之禅的意思解释|Python之禅是什么意思 -我酷百科...
- 15 二叉树的中序遍历(Binary Tree Inorder Traversal)