浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

Android 导航SDK

百度Andriod 导航SDK为Android移动端应用提供了一套简单易用的导航服务接口,适用于Android 2.1及以上版本。专注于为广大开发者提供最好的导航服务,通过使用百度导航SDK,开发者可以轻松为应用程序实现专业、高效、精准的导航功能。

路线规划成功后,就可以使用专业导航服务,专业导航服务依赖App的页面生命周期,开发时,只需要将百度导航SDK专业导航生命周期接口挂接到对应页面的生命周期接口即可,App页面既可以是Activity,也可以是Fragment等。
1生命周期
   
/**
  * 获取百度专业导航过程View对象,将其加入应用布局内即可显示导航过程.
  *
  * @param activity 应用导航过程所属Activity对象
  * @param listener 导航过程监听器,主要是监听导航过程中消息分发,比如到达终点、导航结束和更新路名等
  *
  * @return
  */
View onCreate(final Activity activity, final OnNavigationListener listener);

/**
  * 百度专业导航生命周期onStart,在{@linkplain Activity#onStart()} 或者 {@linkplain Fragment#onStart()} 中调用
  */
void onStart();

/**
  * 百度专业导航生命周期onResume,在{@linkplain Activity#onResume()} 或者 {@linkplain Fragment#onResume()} 中调用
  */
void onResume();

/**
  * 百度专业导航生命周期onPause,在{@linkplain Activity#onPause()} 或者 {@linkplain Fragment#onPause()} 中调用
  */
void onPause();

/**
  * 百度专业导航生命周期onStop,在{@linkplain Activity#onStop()} 或者 {@linkplain Fragment#onStop()} 中调用
  */
void onStop();

/**
  * 百度专业导航生命周期oonDestroy,在{@linkplain Activity#onDestroy()} 或者 {@linkplain Fragment#onDestroy()} 中调用
  *
  * @param isSwitchToLightNavi 在退出专业导航后是否切换到轻导航
  */
void onDestroy(boolean isSwitchToLightNavi);
2重要参数和方法说明

以下是专业导航IBNRouteGuideManager相对重要的方法介绍,更多参数和方法请您关注[参考手册]

1.专业导航onCreate方法

专业导航onCreate方法一共有4个重载方法,分别如下

/**
 * 获取百度专业导航过程View对象,将其加入应用布局内即可显示导航过程.
 *
 * @param activity 应用导航过程所属Activity对象
 * @param listener 导航过程监听器,主要是监听导航过程中消息分发,比如到达终点、导航结束和更新路名等
 *
 * @return
 */
View onCreate(final Activity activity, final OnNavigationListener listener);

/**
 * @param callback 添加自定义View到导航中的callback对象
 * @return
 */
View onCreate(final Activity activity,
              final OnNavigationListener listener,
              final NaviAddViewCallback callback);

/**
 * @param params 定制化导航参数
 * @return
 */
View onCreate(final Activity activity,
              final OnNavigationListener listener,
              final Bundle params);

/**
 * @param params 定制化导航参数
 *
 * @return
 */
View onCreate(final Activity activity,
              final OnNavigationListener listener,
              final NaviAddViewCallback callback,
              final Bundle params);

其中带NaviAddViewCallback的重载方法表示可以在专业导航界面添加自定义view,带Bundle的重载方法可以传入一些参数来自定义导航。具体可传入的参数如下:

Bundle bundle = new Bundle();
// IS_REALNAVI代表导航类型,true表示真实导航,false表示模拟导航,默认是true
bundle.putBoolean(BNaviCommonParams.ProGuideKey.IS_REALNAVI, true);
// IS_SUPPORT_FULL_SCREEN代表是否沉浸式,默认是true
bundle.putBoolean(BNaviCommonParams.ProGuideKey.IS_SUPPORT_FULL_SCREEN, true);
BaiduNaviManagerFactory.getRouteGuideManager().onCreate(this, mOnNavigationListener, null, bundle);
2.横竖屏切换

为了防止在手机横竖屏切换过程中,导航出现布局混乱以及crash等情况,请在页面的onConfigurationChanged生命周期方法内调用专业导航的onConfigurationChanged接口。

@Override
public void onConfigurationChanged(android.content.res.Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  BaiduNaviManagerFactory.getRouteGuideManager().onConfigurationChanged(newConfig);
}
3.设置导航事件监听
/**
  * 设置导航事件监听
  * @param callback
  */
void setNaviListener(IBNaviListener callback);

可监听的事件如下:

/**
 * 当前路名更新
 *
 * @param name 当前道路名
 */
void onRoadNameUpdate(String name);

/**
 * 距离目的地的剩余距离
 *
 * @param remainDistance 剩余距离,单位米
 * @param remainTime     剩余时间,单位秒
 */
void onRemainInfoUpdate(int remainDistance, int remainTime);

/**
 * 诱导信息
 *
 * @param naviInfo 对应的诱导信息
 */
void onGuideInfoUpdate(BNaviInfo naviInfo);

/**
 * 高速信息
 *
 * @param action SHOW: 展示 HIDE: 消隐 UPDATE: 更新信息
 * @param info   对应的高速信息
 */
void onHighWayInfoUpdate(Action action, BNHighwayInfo info);

/**
 * 快速路出口信息
 *
 * @param action SHOW: 展示 HIDE: 消隐 UPDATE: 更新信息
 * @param name   快速路名称
 * @param dist   离快速路出口的距离
 * @param id     快速路ID
 */
void onFastExitWayInfoUpdate(BNEventManager.Action action, String name, int dist, String id);

/**
 * 放大图回调接口
 *
 * @param action         显示/刷新/隐藏动作
 * @param enlargeMap     放大图View
 * @param remainDistance 剩余距离
 * @param progress       路口的进度
 * @param roadName       下一个路名
 * @param turnIcon       转向标
 */
void onEnlargeMapUpdate(BNEventManager.Action action, View enlargeMap, String remainDistance,
                        int progress, String roadName, Bitmap turnIcon);

/**
 * 日夜模式改变
 *
 * @param style DayNightMode.DAY: 白天  DayNightMode.NIGHT: 黑夜
 */
void onDayNightChanged(DayNightMode style);

/**
 * 路况信息更新
 *
 * @param progress 车行驶的进度 单位为浮点类型,0-1为0%-100%
 * @param items    路况信息
 */
void onRoadConditionInfoUpdate(double progress, List<BNRoadCondition> items);

/**
 * 主辅路、高架桥信息更新
 *
 * @param type {@link com.baidu.navisdk.adapter.BNaviCommonParams.BNMainSideBridge}
 */
void onMainSideBridgeUpdate(int type);

/**
 * 车道线信息更新
 *
 * @param action    Action.SHOW:显示 Action.HIDE:消隐
 * @param laneItems 车道线数据
 */
void onLaneInfoUpdate(BNEventManager.Action action, List<RGLineItem> laneItems);

/**
 * 速度信息
 *
 * @param speed       车速  "--" 代表速度不可信,其他String返回值为数字 km/h
 * @param isOverSpeed 是否超速
 */
void onSpeedUpdate(String speed, boolean isOverSpeed);

/**
 * 到达目的地后回调函数
 */
void onArriveDestination();

/**
 * 驾车路径导航到达某个途经点的回调函数
 */
void onArrivedWayPoint(int index);
4.设置导航视图监听
/**
  * 设置导航视图监听
  * @param listener
  */
void setNaviViewListener(IBNaviViewListener listener);

可监听的事件如下:

/**
 * 诱导面板的点击事件
 */
void onMainInfoPanCLick();

/**
 * 界面左上角转向操作的点击回调
 */
void onNaviTurnClick();

/**
 * 全览按钮的点击回调
 */
void onFullViewButtonClick(boolean show);

/**
 * 全览小窗口的点击
 */
void onFullViewWindowClick(boolean show);

/**
 * 导航页面左下角退出按钮点击后的回调接口
 */
void onNaviBackClick();

/**
 * 底部中间部分点击事件
 */
void onBottomBarClick(Action action);

/**
 * 界面右下角功能设置按钮的回调接口
 *
 * @param isOpen 设置界面是否打开
 */
void onNaviSetting(boolean isOpen);
5.主辅路切换
/**
  * 返回主辅路桥上下类型
  */
int getMainSideBridgeType();
/**
  * 切换主辅路/高架桥
  * @param type {@link BNaviCommonParams.BNMainSideBridge}
  * @param listener 只会返回onSuccess/onFail
  */
void changeRouteByMainSideBridge(int type, ChangeRouteListener listener);

上面2个接口建议配合使用,返回的类型就表示当前可以切换的类型,如下示例

if (BaiduNaviManagerFactory.getRouteGuideManager().getMainSideBridgeType() 
    == BNaviCommonParams.BNMainSideBridge.MAIN_ROAD) {
            BaiduNaviManagerFactory.getRouteGuideManager().changeRouteByMainSideBridge(
              BNaviCommonParams.BNMainSideBridge.MAIN_ROAD,
              new IBNRouteGuideManager.ChangeRouteListener() {
                @Override
                public void onSuccess() {

                }

                @Override
                public void onFail() {

                }
              });
}
6.修改终点重算路
/**
  * 导航中修改终点重新算路并导航
  * @param newEndNode
  * @return
  */
boolean resetEndNodeInNavi(BNRoutePlanNode newEndNode);
7.添加途经点

途经点的添加不得多于3个

/**
 * 添加途经点
 */
void addViaNodes(List<BNRoutePlanNode> nodes);
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消