1. 首先要先在AndroidManifest.xml中注册导航服务

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

  2. 添加相关的权限,我也不知道哪些是必须的,我直接把Demo里面的相关权限配置全部拉过来了

  3. 在导航之前要先调用BaiduNaviManager.getInstance().initEngine对导航引擎进行初始化。可以通过NaviEngineInitListener接口检查导航引擎初始化是否成功,同时通过LBSAuthManagerListener接口对API-Key进行Key校验是否成功,status结果为0代表key校验成功。

  4. 必须将Demo中assert目录下的两个文件BaiduNaviSDK_Resource_v1_0_0.pngchannel拷贝到自己项目的assert目录下去,否则导航引擎无法初始化成功。

  5. 在导航引擎初始化成功后,调用导航功能前调用BaiduNaviManager.getInstance().checkEngineStatus(context)检测导航引擎是否初始化成功。

  6. 调用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百度地图导航的那些坑相关推荐

  1. Android 百度地图导航引擎初始化失败

    最近在弄百度地图,关于导航部分出现了引擎初始化失败的问题,而且是在确保key值正确的情况下,依旧初始化失败,在网上找了很多资料也没能解决,最后没办法,只保留一个areambi下的库文件,其他什么are ...

  2. Android百度地图导航引擎初始化失败问题解决

    在确认代码无误,assets目录两个jpg,与一个channel文件都在,添加的so文件也与百度开发文档一致后,仍然提示百度导航引擎初始化失败 最终将百度地图开发包下libs/armeabi下所有的s ...

  3. Android百度地图、高德地图、腾讯地图导航路线规划问题

      Android百度地图.高德地图.腾讯地图导航路线规划 在最近的项目中,需求是用户选择某个地址需要进行导航时,弹出百度地图.高德地图和腾讯地图让用户选择.如果该用户手机中已安装对应的地图App,则 ...

  4. android百度地图API 骑行,步行导航的DEMO以及途径点问题

    android百度地图API的简单骑行,步行的导航demo,以及关于多个路径点问题的说明 ##注:目前基础百度地图API的步行以及骑行是不支持多个路径点的,只能单点对单点的,如果你真的想多个途径点导航 ...

  5. Android百度地图(六)自定义导航路线规划

    Android百度地图(六)自定义导航路线规划 兴奋加激动... 本文代码在http://blog.csdn.net/xyzz609/article/details/51959767的基础上进一步修改 ...

  6. 关于Android百度地图API步骑行导航引擎初始化失败以及View空指针异常的问题

    关于百度地图导航初始化失败问题以及View 空指针异常 因为要做毕业设计的关系所以用到了百度地图,但发现百度地图API这个是真的大坑一个,一些莫名其妙的BUG,搞得让你头大, 这里我先将初始化失败的问 ...

  7. Android百度地图实例详解之仿摩拜单车APP(包括附近车辆、规划路径、行驶距离、行驶轨迹记录,导航等)

    Android百度地图实例详解之仿摩拜单车APP(包括附近车辆.规划路径.行驶距离.行驶轨迹记录,导航等) 标签: android百度地图行驶轨迹记录共享单车行驶距离和时间 2017-03-08 20 ...

  8. Android百度地图实例详解之仿摩拜单车APP(包括附近车辆、规划路径、行驶距离、行驶轨迹记录,轨迹回放,导航等)

    转载请标明地址:http://blog.csdn.net/gaolei1201/article/details/60876811 2016一路有你,2017一起奋斗! 最近共享单车很火,动辄几亿美刀, ...

  9. Android studio百度地图SDK开发 2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划

    2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划 开发前配置,显示基本地图,实时定位等查看之前代码,此博客紧接上一博客:https://blog.csdn.ne ...

最新文章

  1. 大规模使用 Apache Kafka 的20个最佳实践
  2. 密码学基础知识(五)序列密码
  3. bat 服务启动脚本
  4. 微服务治理实践:服务契约
  5. 【linux杂谈】查看centOS系统的版本号和内核号
  6. Beta冲刺博客集合贴
  7. 如何在Kubernetes上运行PostgreSQL
  8. The specified JRE installation does not exist异常的原因和解决办法
  9. 51Nod-1011 最大公约数GCD【欧几里得算法】
  10. 检测是否有效的手机号码
  11. 六个免费网站状态监控服务
  12. npm与package.json详解
  13. 丢番图方程c语言114,丢番图方程的实现
  14. 微信如何查看是否被删好友,这4种方法简单快捷!
  15. 有哪些适合大学生投稿的普刊(社科类)?
  16. 小程序中强制页面刷新
  17. Easy EDA #学习笔记09# | ESP32 一键下载电路
  18. 北京筑龙出席《中国招标》30周年座谈会暨理事年会并进行分享
  19. 微型计算机中的内存主要包括哪两类,微机原理考试资料.doc
  20. Linux 计算机网络 从 ping 来初窥计算机网络

热门文章

  1. PHP 显示公网 IP 地址
  2. python to excel 路径_好消息!Python和Excel终于可以互通了!
  3. linux安装MATLAB R2018a步骤
  4. 智能穿戴显示屏怎样操作?智能穿戴显示屏具有怎么功能?
  5. 撰写英文文献有哪些技巧?
  6. 字节跳动 2022.3.20后端开发笔试 解答
  7. cad直线和圆弧倒角不相切_CAD中圆角、倒角的一些技巧
  8. 开源轻量级 IM 框架 MobileIMSDK 的Uniapp客户端库已发布
  9. python之禅是什么东西_Python之禅 Python之禅的意思解释|Python之禅是什么意思 -我酷百科...
  10. 15 二叉树的中序遍历(Binary Tree Inorder Traversal)