public static interface NaviSession.EventHandler
限定符和类型 | 方法和说明 |
---|---|
void |
onNaviSessionEvent(int event,
java.lang.Object data)
事件触发回调方法,主要用作
NaviSession.init(Context, EventHandler, NaviSessionParams)
函数的第一个参数。 |
void onNaviSessionEvent(int event, java.lang.Object data)
事件触发回调方法,主要用作
NaviSession.init(Context, EventHandler, NaviSessionParams)
函数的第一个参数。
event
- 事件类型 NaviSession.Event
data
- 事件触发后回传的数据对象 NaviSession.Event
NaviSession.Event
,
NaviSessionData
// -- e.g. 回调实现示例 // 初始化导航引擎参数 NaviSessionParams params = new NaviSessionParams(); // 如果全部使用默认只,那么不需要下面的设置 // 具体设置细节请查看NaviSessionParams,这里仅作简单的示例 // 开启部分可选模块,电子眼播报和放大图,默认全部开启 params.modules = NaviSession.Module.cameraWarning | NaviSession.Module.expandView; // 设置引擎在算路完成时不自动载入路线,默认为自动载入 params.autoTakeRoute = false; // 设置放大图默认高宽和字体 params.expandViewWidth = params.expandViewHeight = 512; params.expandViewSmallFontSize = 22; params.expandViewBigFontSize = 30; NaviSession ns = NaviSession.getInstance(); ns.init(context, new NaviSession.EventHandler () { // 一下是一个典型的回调模版 public void onNaviSessionEvent (int event, Object data) { switch (event) { case NaviSession.Event.routeStarted: Logger.d(TAG, "开始算路"); // TODO: Something else break; case NaviSession.Event.rerouteStarted: Logger.d(TAG, "开始重算路"); // TODO: Something else break; case NaviSession.Event.routeComplete: // 此时data对象返回的是一个RouteCollection对象 // 其内部可能包含多条有效路线 RouteCollection rc = (RouteCollection)data; if (rc.num > 1) { // 绘制多条路线,给出路线数组,已经有效路线条数 drawRoutes(rc.routes, rc.num); } else { // 在上面的设置中配置了引擎在算完路后不会自动载入路线,所以需要手动的让引擎载入算好的路线 // 载入路线后会收到NaviSession.Event.newRouteTaken消息 ns.takeRoute(rc.routes[0]); } break; case NaviSession.Event.rerouteComplete: // 重新规划成功,此时data为RouteBase对象 RouteBase rb = (RouteBase)data; // 引擎载入路线 ns.takeRoute(rb); break; case NaviSession.Event.routeFailed: // 路线规划失败,此时data为RouterErrorInfo对象 RouterErrorInfo rei = (RouterErrorInfo)data; // 其中包含了错误信息 Logger.e(TAG, "算路失败,错误码: " + rei.errCode + ", 错误信息: " + rei.additionalMessage); break; case NaviSession.Event.rerouteFailed: // 路线重规划失败 // 处理同上 break; case NaviSession.Event.destArrived: // 到达目的地 // 结束导航 endNavi(); break; case NaviSession.Event.tracking: // 当获取到GPS是,会收到此事件,此事件比较重要,是用来更新车位置信息,绘制电子眼等的回调,也是最频繁的回调事件 // 此事件时,data为NaviSessionData对象,关于此对象,请参看NaviSessionData信息 NaviSessionData d = (NaviSessionData)data; setCarPosition(d.carPos); setCarOriented(d.carOri); drawCameras(CameraSystem.getCameras()); // 绘制前方转弯箭头 drawArrow(mRouteBase); // 开启高速路牌提醒模块时,需要在此回调中绘制路牌 drawHighwayGuide(); break; case NaviSession.Event.routing: // 路线计算中 Logger.d(TAG, "路线计算中 ..."); break; case NaviSession.Event.routeCancelled: // 取消算路 Logger.d(TAG, "取消算路"); break; case NaviSession.Event.rerouteCancelled: // 取消重算路 Logger.d(TAG, "取消重算路"); break; case NaviSession.Event.manualStartStateBegin: // 手动起点模式开始 // 表示进入手动起点模式,此时可以将起点设置为非车所在位置,不会产生重计算事件 Logger.d(TAG, "手动起点模式开始"); break; case NaviSession.Event.manualStartStateEnd: // 手动起点模式结束 // 此时如果起点不在车所在位置,将会产生重算路事件 Logger.d(TAG, "手动起点模式结束"); break; case NaviSession.Event.newRouteTaken: // 引擎已经采纳新路线 // 此时需要调用NaviSession.getRoute()来获取引擎内部的路线 RouteBase route = ns.getRoute(); break; case NaviSession.Event.needsReroute: // 偏航,且不自动重算路(NaviSessionParams。autoReroute为false时)的情况下,会收到此消息 reroute(); break; case NaviSession.Event.simNaviBegin: // 开始模拟导航,保存当前导航状态 break; case NaviSession.Event.simNaviEnd: // 结束模拟导航,恢复模拟导航前的状态 break; case NaviSession.Event.cameraAuthFailed // 电子眼授权失败 int err = ((Integer)data).intValue(); Logger.d(TAG, "错误码: " + err); break; case NaviSession.Event.wayPointArrived: int index = ((Integer)data).intValue(); Logger.d(TAG, "已经到达第" + index + "个途径点"); break; } } }, params);
©Mapbar Engine Team;All Rights Reserved