快速接入

最后更新时间:2025-03-19

接入说明:司乘同显SDK需配合订单同步接口使用才能完整地跑完整个网约车单流程,从下单、派单接单进入接驾、到达上车点、乘客上车开始送驾、送达都需要业务服务侧先调用订单同步接口将订单信息同步给司乘同显服务端,成功后调用相应SDK的接口设置订单ID,包括订单号、订单状态、订单类型和司机状态(司机端需要)。

订单状态:无状态-TLSBOrderStatus.TLSDOrderStatusNone; 初始状态-TLSBOrderStatus.TLSDOrderStatusInit; 接驾状态-TLSBOrderStatus.TLSDOrderStatusPickUp; 送驾状态-TLSBOrderStatus.TLSDOrderStatusTrip;

订单类型:快车类型-TLSBOrderType.TLSDOrderTypeNormal; 顺风车类型-TLSBOrderType.TLSDOrderTypeHitchRide; 拼车类型-TLSBOrderType.TLSBOrderTypeRidesharing;

司机状态:收车-TLSDDrvierStatus.TLSDDrvierStatusStopped; 听单中-TLSDDrvierStatus.TLSDDrvierStatusListening; 服务中-TLSDDrvierStatus.TLSDDrvierStatusServing;


司机端

从3.x版本开始,司机端需要依赖司乘同显SDK的司机端和公共端以及导航SDK(已合并地图SDK)和基础库SDK。详见版本变更记录

司机端流程图




全局配置

通常在Application中配置SDK

1.配置地图SDK

TencentMapInitializer.setAgreePrivacy(context, true);
TencentMapInitializer.start(context);

2.配置导航SDK

NavigatorZygote.with(this).init(NavigatorConfig.builder()
                .setDeveloperKey("xxx")
                .setUserAgreedPrivacy(true)
                .setDeviceId("xxx")
                .setServiceConfig(NavigatorConfig.ServiceConfig.builder()
                        .build())
        .setMapOptions(NavigatorConfig.MapOptions.builder().build())
        .build());

3.配置司乘SDK

TLSConfigPreference.initGlobal(this);

初始化

1.初始化司机端SDK

TSLDExtendManager mDriverSync = TSLDExtendManager.getInstance();
mDriverSync.init(context, TLSConfigPreference.create()
                .setDebuggable(true) // 测试包用于手机日志排查问题,不可上线
                .setAccountId("")
                .setDeviceId(""));

2.设置导航实例

NavigatorDrive navigatorDrive = NavigatorZygote.with(context).navigator(NavigatorDrive.class);
mDriverSync.setNaviManager(navigatorDrive);

3.订单同步说明

我们推荐在业务服务端将订单信息同步到SDK的服务端,这样更能确保数据的准确性和时效性。但SDK仍提供了接口具备订单同步(见2.6.1)的能力,接入方可调用订单同步接口将订单信息同步给我们。 说明:

1)初始化SDK后,接入方需在业务订单的不同阶段同步订单信息。接口文档:

快车 顺风车 拼车

2)构建入参requestMap时,其中key需要严格遵循上述接口中的“请求参数-名称”,value根据业务方实际数据填入即可(基本为int或String类型)。

3)接口文档中的必填字段我们进行了一次优化,目前快车必填字段只有city和status(若当前订单阶段需要),拼车必填字段只有city,status和passenger_orderid(若当前订单阶段需要),其他字段均是选填。

4)乘客端也能使用该订单同步接口。

司乘同显

1.开始司乘同显

// 设置订单信息
mDriverSync.getOrderManager().editCurrent()
                .setOrderType(orderType)
                .setOrderStatus(orderStatus)
                .setOrderId(orderId)
                .setDrvierStatus(TLSDDrvierStatus.TLSDDrvierStatusServing);
// 开始同显
mDriverSync.start();
// 添加监听
mDriverSync.addTLSDriverListener(new SimpleDriDataListener());
// 简易的数据监听封装类,开发者也可直接实现DriDataListener.ITLSDriverListener
public class SimpleDriDataListener implements DriDataListener.ITLSDriverListener {

    /**
     * 上传轨迹成功
     */
    @Override
    public void onPushPositionSuc() {

    }

    /**
     * 上传轨迹失败
     */
    @Override
    public void onPushPositionFail(int errCode, String errStr) {

    }

    /**
     * 拉取乘客信息成功
     *
     * @param result
     * @since 1.0
     */
    @Override
    public void onPullLsInfoSuc(String result) {

    }

    /**
     * 拉取乘客端轨迹点成功。
     *
     * @param los 轨迹点集合
     */
    @Override
    public void onPullLsInfoSuc(List<TLSBPosition> los) {

    }

    /**
     * 拉取乘客信息失败
     *
     * @param errCode
     * @param errStr
     * @since 1.0
     */
    @Override
    public void onPullLsInfoFail(int errCode, String errStr) {

    }

    /**
     * 上传路线成功。
     *
     * @since 1.0
     */
    @Override
    public void onPushRouteSuc() {

    }

    /**
     * 上传路线失败。
     *
     * @param errCode 错误码
     * @param errStr 错误描述
     * @since 1.0
     */
    @Override
    public void onPushRouteFail(int errCode, String errStr) {

    }

    /**
     * 选中路线将要切换的通知回调
     *
     * @param selectedRoute 选中的路线
     * @since 2.2
     */
    @Override
    public void onSelectedRouteWantToChangeNotify(TLSBRoute selectedRoute) {

    }

    /**
     * 选中路线在当前的路线列表中未被找到
     *
     * @param selectedRouteId 路线ID,如果为Null表示路线数据匹配失败
     * @since 2.2
     */
    @Override
    public void onSelectedRouteNotFoundNotify(String selectedRouteId) {

    }

    /**
     * 新目的地通知
     *
     * @param newDest 新目的地
     * @param changedTime
     */
    @Override
    public void onNewDestinationNotify(final TLSLatlng newDest, final long changedTime) {

    }

    /**
     * 目的地修改结果
     *
     * @param status 0-修改成功,其他-修改失败
     * @param message 修改结果的描述
     */
    @Override
    public void onDestinationChangeResult(final int status, final String message) {

    }
}



2.上报定位点

上报司机轨迹点信息。司机在⾮导航态,需要⽤户管理定位点的上报⼯作。⽤户可通过定位SDK获取定位信息, 随后将定位点通过司乘SDK的上报接口进行上报。⽽在导航态,司乘同显sdk会对定位点的上报进⾏管理,⽆需⽤户处理。非导航态上报代码如下:

/** 
 * 具体定位属性接口,请参考官网配置。
 */
mLocationManager = TencentLocationManager.getInstance(getApplicationContext());

/**
 * error 错误信息:
 * <ul>
 * <li>0: 成功注册监听器 
 * <li>2: //manifest 中配置的 key 不正确
 * <li>3:自动加载libtencentloc.so失败 
 * <li>4: //ClassLoader获取或加载失败
 * <li>5: //加载类失败 
 */
int error = mLocationManager.requestLocationUpdates(request, locationListener);

/**
 * 定位的实现类。  */
class MyLocationListener implements TencentLocationListener {
    @Override
    public void onLocationChanged(TencentLocation lo, int error, String reason) {
        if (lo == null || i != TencentLocation.ERROR_OK) {
            return; // 定位失败
        }
        // 司机听单状态时司乘上报定位点
        mDriverSync.uploadPosition(ConvertHelper.tenPoToTLSDPo(location));
    }
    @Override
    public void onStatusUpdate(String s, int i, String s1) {

    }
}

如果想在司乘start到stop全阶段(导航态和非导航态)都上报轨迹点,可以通过开关来控制,此时不需要开发者主动调用上报轨迹接口:

TLSConfigPreference.create().setAllTimeLocation(true);
  • 获取乘客定位信息:设置拉取乘客定位点信息。快⻋服务时,可通过如下⽅法设置,顺⻛⻋和拼车⽬前不⽀持拉取乘客定位信息。注意:只有乘客端开启了位置上报开关,司机才能拉取到数据。
// true拉取,false则为停⽌拉取
mDriverSync.fetchPassengerPositionsEnabled(true); 



3. 算路导航

mDriverSync.searchCarRoutes(orderId, from, to, new ArrayList<>(), DriveRoutePlanOptions.Companion.newBuilder().build(), new DriDataListener.ISearchCallBack() {
                            @Override
                            public void onInternalError(int i, String s) {

                            }

                            @Override
                            public void onResultCallback(NavRoutePlan navRoutePlan, NavError navError) {
                                if (navRoutePlan != null) {
                                    List<NavDriveRoute> arrayList = navRoutePlan.getRoutes();
                                    if (arrayList != null && !arrayList.isEmpty()) {
                                        // 本地使用第一条路线,保证开始导航的路线一致
                                        mDriverSync.getRouteManager().useRouteIndex(0);
                                        // 上传指定某条路线 or 上报所有路线 or 上报当前使用路线
                                        // 注:当上报单条路线时,乘客只能拉取到单条路线;当上报所有路线时,乘客能拉到所有路线。
                                        mDriverSync.uploadRouteWithIndex(0);
                                        mDriverSync.uploadRoutes();
                                        mDriverSync.uploadUsingRoute();
                                        try {
                                            navigatorDrive.startNavigation(manager.getRouteManager().getRouteId());
                                        } catch (Exception e) {
                                            e.printStackTrace();
                                        }
                                    }
                                }
                            }
                        });



4.结束同显

// 设置订单信息
mDriverSync.getOrderManager().editCurrent()
                .setOrderType(orderType)
                .setOrderStatus(orderStatus)
                .setOrderId(orderId)
                .setDrvierStatus(TLSDDrvierStatus.TLSDDrvierStatusServing);
// 结束同显
mDriverSync.stop();
// 移除监听
mDriverSync.removeTLSDriverListener(driverListener);

乘客端

从3.x版本开始,乘客端需要依赖司乘同显SDK的乘客端和公共端以及地图SDK和基础库SDK。详见版本变更记录

乘客端流程图

全局配置

通常在Application中配置SDK

1.配置地图SDK

TencentMapInitializer.setAgreePrivacy(context, true);
TencentMapInitializer.start(context);

2…配置司乘SDK

TLSConfigPreference.initGlobal(this);

初始化

1.初始化乘客端SDK

TSLDExtendManager mPassengerSync = TSLDExtendManager.getInstance();
mPassengerSync.init(context, TLSConfigPreference.create()
                .setDebuggable(true) // 测试包用于手机日志排查问题,不可上线
                .setAccountId("")
                .setDeviceId(""));

2.订单同步说明

我们推荐在业务服务端将订单信息同步到SDK的服务端,这样更能确保数据的准确性和时效性。但SDK仍提供了接口具备订单同步(见2.6.1)的能力,接入方可调用订单同步接口将订单信息同步给我们。 说明:

1)初始化SDK后,接入方需在业务订单的不同阶段同步订单信息。接口文档:

快车 顺风车 拼车

2)构建入参requestMap时,其中key需要严格遵循上述接口中的“请求参数-名称”,value根据业务方实际数据填入即可(基本为int或String类型)。

3)接口文档中的必填字段我们进行了一次优化,目前快车必填字段只有city和status(若当前订单阶段需要),拼车必填字段只有city,status和passenger_orderid(若当前订单阶段需要),其他字段均是选填。

4)乘客端也能使用该订单同步接口。

司乘同显

1.开始司乘同显

// 设置订单信息
mPassengerSync.getOrderManager().editCurrent()
                .setOrderType(orderType)
                .setOrderStatus(orderStatus)
                .setOrderId(orderId);
// 开始同显
mPassengerSync.start();
// 添加监听
mPassengerSync.addTLSPassengerListener(new SimplePsgDataListener());
// 简易的数据监听封装类,开发者也可直接实现PsgDataListener.ITLSPassengerListener
public class SimplePsgDataListener implements PsgDataListener.ITLSPassengerListener {

    /**
     * 上传轨迹成功
     */
    @Override
    public void onPushPositionSuc() {

    }

    /**
     * 上传轨迹失败
     */
    @Override
    public void onPushPositionFail(int errCode, String errMsg) {

    }

    /**
     * 拉取司机信息成功
     */
    @Override
    public void onPullLsInfoSuc(TLSDFetchedData fetchedData) {

    }

    /**
     * 拉取司机信息成功
     */
    @Override
    public void onPullLsInfoSuc(String result) {

    }

    /**
     * 拉取司机信息失败
     */
    @Override
    public void onPullLsInfoFail(int errCode, String errMsg) {

    }

    /**
     * 上传路线成功
     */
    @Override
    public void onPushRouteSuc() {

    }

    /**
      * 上传路线失败。
      *
      * @param errCode 错误码
      *         参考:{@link LsConstant}
      * @param errStr 错误描述
      * @since 1.0
      */
    @Override
    public void onPushRouteFail(int errCode, String errStr) {

    }

    /**
     * 路线选择成功
     */
    @Override
    public void onRouteSelectSuccess() {

    }

    /**
      * 路线选择失败
      *
      * @param status 状态码
      * @param message 状态消息
      */
    @Override
    public void onRouteSelectFail(int status, String message) {

    }

    /**
     * 新目的地通知
     *
     * @param newDest 新目的地
     * @param changedTime
     */
    @Override
    public void onNewDestinationNotify(final TLSLatlng newDest, final long changedTime) {

    }

    /**
     * 目的地修改结果
     *
     * @param status 0-修改成功,其他-修改失败
     * @param message 修改结果的描述
     */
    @Override
    public void onDestinationChangeResult(final int status, final String message) {

    }

    /**
      * 经过途径点列表
      *
      * @param wayPoints 已经过途径点列表
      */
    @Override
    public void onWayPointPassed(List<TLSBWayPoint> wayPoints) {

    }

    /**
      * 真正选路结果
      *
      * @param routeId 乘客发起选路路线ID
      * @param time 乘客发起选路时间
      * @param result 结果(0:成功,1:失败)
      */
    @Override
    public void onRealSelectRouteResult(String routeId, int time, int result) {

    }

    /**
      * 接收到红绿灯倒计时信息
      *
      * @param trafficLightInfo 红绿灯倒计时信息
      */
    @Override
    public void onReceiveTrafficLightCountdown(TLSTrafficLightInfo trafficLightInfo) {

    }
}

2.上报定位点
上报乘客轨迹点信息:

// 初始化定位SDK
TencentLocationManager tencentLocationManager = TencentLocationManager.getInstance(context);
TencentLocationRequest locationRequest = TencentLocationRequest.create();
locationRequest.setInterval(1000L);
// 开始定位
int error = tencentLocationManager.requestLocationUpdates(locationRequest, locationListener);
// 上报定位
private final TencentLocationListener locationListener = new TencentLocationListener() {
    @Override
    public void onLocationChanged(TencentLocation tencentLocation, int i, String s) {
        if (i == TencentLocation.ERROR_OK) {
            Location location = new Location(tencentLocation.getProvider());
            location.setLatitude(tencentLocation.getLatitude());
            location.setLongitude(tencentLocation.getLongitude());
            //设置精度,这个值会被设置为定位点上表示精度的圆形半径
            location.setAccuracy(tencentLocation.getAccuracy());
            //设置定位标的旋转角度,注意 tencentLocation.getBearing() 只有在 gps 时才有可能获取
            //location.setBearing((float) tencentLocation.getBearing());
            //设置定位标的旋转角度,注意 tencentLocation.getDirection() 返回的方向,仅来自传感器方向,如果是gps,则直接获取gps方向
            location.setBearing((float) tencentLocation.getDirection());
            // 允许上报乘客位置
            mPassengerSync.uploadPassengerPositionsEnabled(true);
            TLSBPosition position = new TLSBPosition();
            position.setLatitude(tencentLocation.getLatitude());
            position.setLongitude(tencentLocation.getLongitude());
            position.setAccuracy(tencentLocation.getAccuracy());
            position.setBearing((float) tencentLocation.getDirection());
            // 上报乘客位置
            mPassengerSync.uploadPosition(position);
        }
    }

    @Override
    public void onStatusUpdate(String s, int i, String s1) {

    }
};
// 停止定位
tencentLocationManager.removeUpdates(locationListener);
tencentLocationManager = null;
locationRequest = null;



3. 结束同显

// 设置订单信息
mPassengerSync.getOrderManager().editCurrent()
                .setOrderType(orderType)
                .setOrderStatus(orderStatus)
                .setOrderId(orderId);
// 结束同显
mPassengerSync.stop();
// 移除监听
mPassengerSync.removeTLSPassengerListener(passengerListener);

接口说明


公共库

位置协议

public interface LocationProtocol {

    /**
     * 上传定位点。
     *
     * <p>上传定位点前,需保证当前订单状态最新,
     * 可通过该方法来更新SDK内部Order。
     * <pre>
     *     getTLSBOrder().set(...)
     *                   .set(...)
     * </pre>
     *
     * @param position 定位信息
     * @since 1.0
     */
    void uploadPosition(TLSBPosition position);


    /**
     * 指定订单的定位点
     *
     * @param order 订单ID
     * @param position 定位点信息
     * @since 2.2
     */
    void uploadPosition(TLSBOrder order, TLSBPosition position);

    /**
     * 立即上报当前定位点。
     *
     * @since 1.0
     */
    void uploadImmediately();

    /**
     * 设置拉取位置请求的时间间隔
     *
     * <p>也可通过接口动态配置,具体参考接口文档。
     *
     * @param sec 时间间隔,单位:秒
     * @since 2.2
     */
    void setPullTimeInterval(int sec);

    /**
     * 设置上报位置请求的时间间隔
     *
     * @param sec 时间间隔,单位:秒
     * @since 3.3
     */
    void setPushTimeInterval(int sec);
}

路线协议

public interface RouteProtocol {

    /**
     * 获取SDK内部维护的路线编辑器
     *
     * <p>开发者需通过更新该路线信息,
     * 来保证SDK内部路线信息最新。
     *
     * @return 路线编辑器 <p>2.2 返回类型修改成 {@link RouteManager.Editor}
     * @see #getRouteManager()
     * @since 1.0
     * @deprecated 2.2之后,建议使用{@link RouteManager#editCurrent()}
     */
    RouteManager.Editor getTLSBRoute();

    /**
     * 获取SDK内部维护的路线管理器
     *
     * @return 路线管理器
     * @since 2.2
     */
    RouteManager getRouteManager();

    /**
     * 上传所有路线。
     *
     * <p>上传路线前,需保证当前路线信息最新,
     * 可通过该方法来更新SDK内部TLSBRoute。
     * <pre>
     *     getTLSBRoute().set(...)
     *                   .set(...)
     * </pre>
     *
     * @since 2.2
     */
    void uploadRoutes();

    void uploadRoutes(TLSBPosition position);

    /**
     * 上传单一主订单路线
     *
     * @param route 路线
     * @since 1.0
     */
    void uploadRoute(TLSBRoute route);

    void uploadRoute(TLSBRoute route, TLSBPosition position);

    /**
     * 上传当前使用中的路线,其他备选路线不上报
     *
     * @see #uploadRoute(TLSBRoute)
     * @since 2.2
     */
    void uploadUsingRoute();

    void uploadUsingRoute(TLSBPosition position);

    /**
     * 上报指定路线,其他备选路线不上报
     *
     * @param routeIndex 路线索引
     * @since 1.0
     */
    void uploadRouteWithIndex(int routeIndex);

    void uploadRouteWithIndex(int routeIndex, TLSBPosition position);

    /**
     * 更改目的地
     *
     * @param destLatLng 指定的新目的地
     * @since 2.3.0
     */
    void changeDestination(TLSLatlng destLatLng);
}

订单协议

public interface OrderProtocol {

    /**
     * 获取SDK内部维护的订单管理器。
     *
     * @return 获得订单管理器
     * @since 2.2
     */
    OrderManager getOrderManager();

    /**
     * 请求订单同步
     *
     * @param orderId 司机订单ID,若不存在传""
     * @param requestMap 请求参数,同步接力单时需要开发者填充参数
     * @param listener 监听者
     * @since 2.6.0
     */
    void orderStatusSync(String orderId, Map<String, Object> requestMap, final SyncProtocol.OrderResultListener listener);
}

网络协议

public interface NetworkProtocol {

    /**
     * 是否切换至配置域名
     *
     * @param needSwitch 需要切换
     * @since 2.7.0
     */
    void switchToNetConfig(boolean needSwitch);

}

司机端

public interface DriverProtocol extends SyncProtocol, NaviProtocol {

    /**
     * 添加司乘数据监听。
     *
     * <p>包括上传与拉取轨迹点回调,
     * 与上传路线回调。
     *
     * @param listener 数据监听
     * @since 1.0
     */
    void addTLSDriverListener(DriDataListener.ITLSDriverListener listener);

    /**
     * 移除司乘数据监听。
     *
     * @param listener 监听对象
     * @since 2.2
     */
    void removeTLSDriverListener(DriDataListener.ITLSDriverListener listener);

    /**
     * 接到乘客(其子订单ID 为 pOrderId)
     *
     * @param pOrderId 子订单ID
     * @since 1.0
     */
    void arrivedPassengerStartPoint(String pOrderId);

    /**
     * 送到乘客(其子订单ID 为 pOrderId)
     *
     * @param pOrderId 子订单ID
     * @since 1.0
     */
    void arrivedPassengerEndPoint(String pOrderId);

    /**
     * 设置是否开启拉取乘客定位点服务。
     *
     * <p>在快车场景下,司机端可通过拉取乘客上传定位点,
     * 以实现显示乘客位置功能。
     *
     * <p>目前拼车和顺风车场景下,不支持司机显示乘客位置。
     *
     * @param isFetch true:开启拉取乘客定位点服务,false:关闭拉取乘客定位点服务
     * @since 1.0
     */
    void fetchPassengerPositionsEnabled(boolean isFetch);

    /**
     * 添加剔除途经点的回调。
     *
     * @param callBack 剔除途经点回调
     * @since 1.0
     */
    void addRemoveWayPointCallBack(DriDataListener.IRemoveWayByUserCallBack callBack);

    /**
     * 获取最优送驾顺序。
     *
     * <p>拼车场景。
     *
     * @param from      司机起点
     * @param wayPoints 途经点信息,个数不能超过10个
     * @param callBack  最优顺序监听
     * @since 1.0
     */
    void requestBestSortedWayPoints(NavSearchPoint from, List<TLSDWayPointInfo> wayPoints,
                                    DriDataListener.ISortedWayPointsCallBack callBack);

    /**
     * 获取最优送驾顺序。
     *
     * @param from      司机起点
     * @param to        司机终点
     * @param wayPoints 途经点信息,个数不能超过10个
     * @param callBack  最优顺序回调
     * @since 1.0
     */
    void requestBestSortedWayPoints(NavSearchPoint from, NavSearchPoint to,
                                    List<TLSDWayPointInfo> wayPoints,
                                    DriDataListener.ISortedWayPointsCallBack callBack);

    /**
     * 算路方法。
     *
     * <p>拼车场景。
     *
     * @param orderId       订单ID
     * @param from          起点
     * @param ws            途经点
     * @param searchOptions 算路策略类
     * @param callback      算路回调
     * @since 1.0
     */
    void searchCarRoutes(String orderId,
                         NavSearchPoint from,
                         List<TLSDWayPointInfo> ws,
                         DriveRoutePlanOptions searchOptions,
                         DriDataListener.ISearchCallBack callback);

    /**
     * 算路方法。
     *
     * @param orderId       订单ID
     * @param from          起点
     * @param to            终点
     * @param ws            途经点
     * @param searchOptions 算路策略类
     * @param callback      算路回调
     * @since 1.0
     */
    void searchCarRoutes(String orderId,
                         NavSearchPoint from,
                         NavSearchPoint to,
                         List<TLSDWayPointInfo> ws,
                         DriveRoutePlanOptions searchOptions,
                         DriDataListener.ISearchCallBack callback);

    /**
     * 获取SDK内部维护的订单信息的编辑器。
     *
     * <p>开发者需通过更新该订单状态,
     * 来保证SDK内订单信息最新。
     *
     * @return 订单信息
     * @see #getOrderManager()
     * @since 1.0
     * @deprecated 2.2版本之后,建议使用{@link OrderManager#editCurrent()}
     */
    OrderManager.Editor getTLSBOrder();

    /**
     * 设置轨迹额外信息
     *
     * @param extraInfo 额外信息
     * @since 2.4.4
     */
    void setPositionExtraInfo(String extraInfo);

    /**
     * 移除接力单信息
     */
    void removeRelayOrder();

    /**
     * 检索接力单路线
     *
     * @param orderId     订单ID
     * @param from        起点位置坐标
     * @param to          终点位置坐标
     * @param policy      策略参数 <ul>
     *                    <li>LEAST_TIME:[默认]参考实时路况,时间最短</li>
     *                    <li>PICKUP:网约车场景 – 接乘客</li>
     *                    <li>TRIP:网约车场景 – 送乘客</li>
     *                    </ul>
     * @param preferences 偏好参数 <ul>
     *                    <li>REAL_TRAFFIC:参考实时路况</li>
     *                    <li>LEAST_FEE:少收费</li>
     *                    <li>AVOID_HIGHWAY:不走高速</li>
     *                    <li>NAV_POINT_FIRST: 该策略会通过终点坐标查找所在地点(如小区/大厦等),
     *                    并使用地点出入口做为目的地,使路径更为合理</li>
     *                    </ul>
     * @param listener    检索回调
     */
    void searchRelayRoutes(String orderId, TLSLatlng from, TLSLatlng to,
                           DrivingParam.Policy policy,
                           DrivingParam.Preference[] preferences,
                           OnSearchResultListener listener);

    /**
     * 检索接力单路线
     *
     * @param orderId     订单ID
     * @param from        起点位置坐标
     * @param to          终点位置坐标
     * @param ws          途径点
     * @param policy      策略参数 <ul>
     *                    <li>LEAST_TIME:[默认]参考实时路况,时间最短</li>
     *                    <li>PICKUP:网约车场景 – 接乘客</li>
     *                    <li>TRIP:网约车场景 – 送乘客</li>
     *                    </ul>
     * @param preferences 偏好参数 <ul>
     *                    <li>REAL_TRAFFIC:参考实时路况</li>
     *                    <li>LEAST_FEE:少收费</li>
     *                    <li>AVOID_HIGHWAY:不走高速</li>
     *                    <li>NAV_POINT_FIRST: 该策略会通过终点坐标查找所在地点(如小区/大厦等),
     *                    并使用地点出入口做为目的地,使路径更为合理</li>
     *                    </ul>
     * @param listener    检索回调
     */
    void searchRelayRoutes(String orderId, TLSLatlng from, TLSLatlng to,
                           List<TLSDWayPointInfo> ws,
                           DrivingParam.Policy policy,
                           DrivingParam.Preference[] preferences,
                           OnSearchResultListener listener);
}

public interface NaviProtocol {

    /**
     * 关联导航manager类{@link NavigatorDrive}。
     *
     * @param manager 导航manager
     * @since 1.0
     */
    void setNaviManager(NavigatorDrive manager);

    /**
     * 拉取导航会话和使用路线
     *
     * @param callback 结果回调
     * @since 2.5.0
     */
    void pullNaviSession(final NaviSessionDataCallback callback);

    /**
     * 导航会话回调
     */
    interface NaviSessionDataCallback extends SyncDelegate.Listener {

        /**
         * 返回结果
         *
         * @param webServiceRequestId  WS算路请求ID
         * @param usingRouteId 使用中的路线ID
         */
        void onResult(String webServiceRequestId, String usingRouteId);
    }
}

乘客端

public interface PassengerProtocol extends SyncProtocol, SearchProtocol {

    /**
     * 添加司乘数据监听 {@link PsgDataListener.ITLSPassengerListener}。
     *
     * <p>包括拉取司机数据回调
     * 与乘客端上传定位点结果回调。
     *
     * @param listener 数据回调 {@code PsgDataListener.ITLSPassengerListener}
     * @since 1.0
     */
    void addTLSPassengerListener(PsgDataListener.ITLSPassengerListener listener);

    /**
     * 移除司乘监听
     *
     * @param listener 监听对象
     * @since 2.2
     */
    void removeTLSPassengerListener(PsgDataListener.ITLSPassengerListener listener);

    /**
     * 设置是否开启上传定位点服务。
     *
     * <p>在快车场景下,乘客端可上传自身定位点,
     * 以实现司机端显示乘客位置的功能。
     *
     * <p>目前拼车和顺风车场景下,不支持司机显示乘客位置。
     *
     * @param isPush true:开启上传定位点,false:关闭上传定位点
     * @since 1.0
     */
    void uploadPassengerPositionsEnabled(boolean isPush);

    /**
     * 获取SDK内部维护的订单信息。
     *
     * <p>开发者需通过更新该订单状态,
     * 来保证SDK内订单信息最新。
     *
     * @return 订单编辑器
     * @since 1.0
     * @deprecated 2.2版本之后,建议使用{@link OrderManager#editCurrent()}
     */
    OrderManager.Editor getTLSPOrder();

    /**
     * 送驾中指定索引号进行选路
     *
     * @param index 列表索引
     * @since 2.2
     */
    void routeSelectByIndex(int index);

    /**
     * 送驾中指定索引号进行选路
     *
     * @param routeId 路线ID
     * @since 2.7.2
     */
    void routeSelectByRouteId(String routeId);
}

public interface SearchProtocol {

    /**
     * 检索多条路线
     *
     * @param from 起点位置坐标
     * @param to 终点位置坐标
     * @param policy 策略参数 <ul>
     *         <li>LEAST_TIME:[默认]参考实时路况,时间最短</li>
     *         <li>PICKUP:网约车场景 – 接乘客</li>
     *         <li>TRIP:网约车场景 – 送乘客</li>
     *         </ul>
     * @param preferences 偏好参数 <ul>
     *         <li>REAL_TRAFFIC:参考实时路况</li>
     *         <li>LEAST_FEE:少收费</li>
     *         <li>AVOID_HIGHWAY:不走高速</li>
     *         <li>NAV_POINT_FIRST: 该策略会通过终点坐标查找所在地点(如小区/大厦等),
     *         并使用地点出入口做为目的地,使路径更为合理</li>
     *         </ul>
     * @param listener 数据回调
     * @see SyncProtocol.OnSearchResultListener
     * @since 2.2
     */
    void searchRoutes(TLSLatlng from, TLSLatlng to, DrivingParam.Policy policy,
                      DrivingParam.Preference[] preferences, SyncProtocol.OnSearchResultListener listener);
}
本页内容