TOSB SDK 使用说明

SDK下载链接

tosbsdk-bd_release_1.0.7.aar(需依赖百度地图定位 'com.baidu.lbsyun:BaiduMapSDK_Location:9.3.5')

tosbsdk-gd_release_1.0.7.aar(需依赖高德地图定位 'com.amap.api:location:6.3.0')

tosbsdk-tx_release_1.0.7.aar(需依赖腾讯地图定位 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.5.3')

说明:开发者按照项目中所采用的定位sdk选择对应的tosbsdk-*_*.aar下载即可。

场景

场景1:使用 TOSB SDK

Note left of App: 获得定位权限 Note left of App: 初始化 App->TOSB SDK: TOSB SDK初始化 Note left of App: 装货 App->TOSB SDK: 调用装货方法 TOSB SDK->>App: 装货回调 Note left of App: 卸货 App->TOSB SDK: 调用卸货方法 TOSB SDK->>App: 卸货回调

场景2:已接入 location {bd/gd}- {androidx/support}_2.1.1.aar 情况下使用 TOSB SDK

Note left of App: 获得定位权限 Note left of App: 初始化 App->交科院SDK: 交科院SDK初始化 App->TOSB SDK: TOSB SDK初始化 Note left of App: 装货 App->交科院SDK: 调用装货方法 交科院SDK->>App: 装货回调 App->TOSB SDK: 调用装货方法 TOSB SDK->>App: 装货回调 Note left of App: 卸货 App->交科院SDK: 调用卸货方法 交科院SDK->>App: 卸货回调 App->TOSB SDK: 调用卸货方法 TOSB SDK->>App: 卸货回调

初始化


装货/卸货

完成SDK初始化获得定位授权后方可调用装卸货

场景1

场景2

参数说明

序号 层级 英文名称 中文名称 类型 长度 必填 说明
1 1 context 上下文 Context 上下文
2 1 shippingNoteNumber 运单号 String 18 创建运单成功后,由系统返回的运单号
3 1 serialNumber 分段分单号 String 18 分段运输和多车运输由四位数字组成,前两位代表一单多车的序号,后两位代表分段序号。若运输形式为一单一车填 0000
4 1 state 上报状态 StateType 交科院SDK回调结果,SUCCESS-上报成功, FAILED-上报失败,未使用交科院SDK时传UNKNOWN-场景1默认值
5 1 errorCode 上报错误码 String 交科院SDK回调errCode,上报成功时默认传""
6 1 errorMsg 上报错误信息 String 交科院SDK回调errMsg,上报成功时默认传""
7 1 callBack 回调 TOSBOpenApiCallBack 回调

TOSBOpenApiCallBack 回调说明

序号 层级 英文名称 中文名称 类型 说明
1 1 succ 回调结果 boolean true-成功, false-异常
2 1 code 响应错误码 String
3 1 message 响应错误信息 String

场景2代码参考

对LocationOpenApi类进行封装,代码如下:

import android.app.Application;
import android.content.Context;

import com.hdgq.locationlib.LocationOpenApi;
import com.hdgq.locationlib.entity.ShippingNoteInfo;
import com.hdgq.locationlib.listener.OnResultListener;
import com.hdgq.locationlib.listener.OnSendResultListener;
import com.khy.tosb.sdk.TOSBOpenApi;
import com.khy.tosb.sdk.TOSBOpenApiCallBack;

import java.util.List;


/**
 * 封装 {@link LocationOpenApi}
 */
public class LocationOpenApiWrapper {


    /**
     * 调用方式:
     * 1. 调用 {@link LocationOpenApiWrapper#init(Application)} , 然后调用 {@link LocationOpenApiWrapper#config(String, String)} 完成SDK初始化
     * 2. 直接调用 {@link LocationOpenApiWrapper#initAndConfig(Application, String, String)} 完成SDK初始化
     */

    public static void init(Application app) {
        LocationOpenApi.init(app);
    }

    /**
     * 需要配合 {@link LocationOpenApiWrapper#init(Application)} 一起使用
     *
     * @param appid  由系统分配,每个企业一个 appid 唯一
     * @param secret 签名密钥
     */
    public static void config(String appid, String secret) {
        TOSBOpenApi.configAppIdAndSecurity(appid, secret);
    }

    /**
     *
     * @param app app
     * @param appid 由系统分配,每个企业一个 appid 唯一
     * @param secret 签名密钥
     */
    public static void initAndConfig(Application app, String appid, String secret) {
        init(app);
        config(appid, secret);
    }

    /**
     * 封装 {@link LocationOpenApi#auth(Context, String, String, String, String, OnResultListener)}
     */
    public static void auth(Context context, String appId, String appSecurity, String enterpriseSenderCode, String environment, OnResultListener listener) {
        // 设置环境 'debug' 或 'release'
        TOSBOpenApi.configEnvironment(environment);
        LocationOpenApi.auth(context, appId, appSecurity, enterpriseSenderCode, environment, listener);
    }

    /**
     * 装货
     * 封装 {@link LocationOpenApi#start(Context, String, String, String, ShippingNoteInfo[], OnResultListener)} 和 {@link TOSBOpenApi#start(Context, String, String, com.khy.tosb.sdk.impl.StateType, String, String, TOSBOpenApiCallBack)}
     */
    public static void start(Context context, String vehicleNumber, String driverName, String remark, ShippingNoteInfo[] shippingNoteNumbers, OnResultListener listener) {
        ShippingNoteInfo shippingNoteInfo = shippingNoteNumbers[0];
        LocationOpenApi.start(context, vehicleNumber, driverName, remark, shippingNoteNumbers, new OnResultListener() {
            @Override
            public void onFailure(String s, String s1) {
                TOSBOpenApi.start(context, shippingNoteInfo.getShippingNoteNumber(), shippingNoteInfo.getSerialNumber(), StateType.FAILED, s, s1, new TOSBOpenApiCallBack() {

                    @Override
                    public void onResult(boolean succ, String code, String message) {
                        //todo: 用户自行处理返回结果(succ, code, message)
//                        if (succ) {
//                            ...
//                        } else {
//                            ...
//                        }
                        if (listener != null) {
                            listener.onFailure(s, s1);
                        }
                    }
                });
            }

            @Override
            public void onSuccess(List<ShippingNoteInfo> list) {
                TOSBOpenApi.start(context, shippingNoteInfo.getShippingNoteNumber(), shippingNoteInfo.getSerialNumber(), StateType.SUCCESS, "", "", new TOSBOpenApiCallBack() {

                    @Override
                    public void onResult(boolean succ, String code, String message) {
                        //todo: 用户自行处理返回结果(succ, code, message)
//                        if (succ) {
//                            ...
//                        } else {
//                            ...
//                        }
                        if (listener != null) {
                            listener.onSuccess(list);
                        }
                    }
                });
            }
        });
    }

    /**
     * 封装 {@link LocationOpenApi#send(Context, String, String, String, ShippingNoteInfo[], OnSendResultListener)}
     */
    public static void send(Context context, String vehicleNumber, String driverName, String remark, ShippingNoteInfo[] shippingNoteNumbers, OnSendResultListener listener) {
        LocationOpenApi.send(context, vehicleNumber, driverName, remark, shippingNoteNumbers, listener);
    }

    /**
     * 封装 {@link LocationOpenApi#pause(Context, String, String, String, ShippingNoteInfo[], OnResultListener)}
     */
    public static void pause(Context context, String vehicleNumber, String driverName, String remark, ShippingNoteInfo[] shippingNoteNumbers, OnResultListener listener) {
        LocationOpenApi.pause(context, vehicleNumber, driverName, remark, shippingNoteNumbers, listener);
    }

    /**
     * 封装 {@link LocationOpenApi#restart(Context, String, String, String, ShippingNoteInfo[], OnResultListener)}
     */
    public static void restart(Context context, String vehicleNumber, String driverName, String remark, ShippingNoteInfo[] shippingNoteNumbers, OnResultListener listener) {
        LocationOpenApi.restart(context, vehicleNumber, driverName, remark, shippingNoteNumbers, listener);
    }


    /**
     * 卸货
     * 封装 {@link LocationOpenApi#stop(Context, String, String, String, ShippingNoteInfo[], OnResultListener)} 和 {@link TOSBOpenApi#stop(Context, String, String, com.khy.tosb.sdk.impl.StateType, String, String, TOSBOpenApiCallBack)}
     */
    public static void stop(Context context, String vehicleNumber, String driverName, String remark, ShippingNoteInfo[] shippingNoteNumbers, OnResultListener listener) {
        ShippingNoteInfo shippingNoteInfo = shippingNoteNumbers[0];
        LocationOpenApi.stop(context, vehicleNumber, driverName, remark, shippingNoteNumbers, new OnResultListener() {
            @Override
            public void onFailure(String s, String s1) {
                TOSBOpenApi.stop(context, shippingNoteInfo.getShippingNoteNumber(), shippingNoteInfo.getSerialNumber(), StateType.FAILED, s, s1, new TOSBOpenApiCallBack() {

                    @Override
                    public void onResult(boolean succ, String code, String message) {
                        //todo: 用户自行处理返回结果(succ, code, message)
//                        if (succ) {
//                            ...
//                        } else {
//                            ...
//                        }
                        if (listener != null) {
                            listener.onFailure(s, s1);
                        }
                    }
                });
            }

            @Override
            public void onSuccess(List<ShippingNoteInfo> list) {
                TOSBOpenApi.stop(context, shippingNoteInfo.getShippingNoteNumber(), shippingNoteInfo.getSerialNumber(), StateType.SUCCESS, "", "", new TOSBOpenApiCallBack() {

                    @Override
                    public void onResult(boolean succ, String code, String message) {
                        //todo: 用户自行处理返回结果(succ, code, message)
//                        if (succ) {
//                            ...
//                        } else {
//                            ...
//                        }
                        if (listener != null) {
                            listener.onSuccess(list);
                        }
                    }
                });
            }
        });
    }
}