Android SDK接口说明文档

Last updated: ... / Reads: 53 Edit

Android端SDK接口文档

一、文档说明

1.1 版本说明

SDK版本号发布日期更新内容
1.0.0002022.07.301. 初版SDK发布
1.0.0132022.12.271. 接口调用逻辑变更
1.0.0142023.03.071. 增加错扫
1.1.0012023.04.251. 完善错扫逻辑
1.1.0022023.05.101. 增加错扫和漏扫回调

1.2 文档概述

此文档用于说明元芒数字防损服务(WmLossPreventService) Android系统接口开发使用,集成相关软件包,以实现相关功能的接口说明文档。

1.3 术语定义以及说明

1. 术语说明:WmLPService:元芒防损服务SDK

  1. 本文中所有传输内容均使用UTF-8编码;

  2. 本文SDK适用于Android5.1以上,使用JAVA语言1.8版本;

  3. 本文中的服务程序支持armeabi-v7a、arm64-v8a架构。

二、调用流程

2.1 集成方法说明

  1. 把WmLPService_v1.1.002_sdk.jar放在工程libs目录下;

  2. module的build.gradle中添加依赖:

Implementation files ("libs/WmLPService_v1.1.002_sdk.jar")
  1. AndroidManifest.xml中增加权限:
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES">

接口调用流程描述

  1. 在application中调用bindService绑定本地WmLPService服务(需要预装服

务程序)

  1. 绑定成功后,调用init接口,对SDK进行初始化

  2. 初次使用,请调用openSettingPage接口,进入设置页面,在设置页面中注册激活码和设定检测区域

  3. 当进入需要防损检测的页面时,例如进入购物车页面,调用start接口,开启防损检测

  4. 当有商品扫码时,调用autoDetect接口,并将扫码枪接收的barcode,生鲜商品的plu,区分相同条码的sessionId传入

  5. 当进入不需要防损检测的页面时,例如离开购物车进入结算页面,调用pause 接口,暂停防损检测

  6. 当进入不需要防损检测的页面时,例如离开购物车进入结算页面,3.7和3.8 回调接口需传null,等重新进入识别界面时候再重新传正确的回调参数

三、接口说明

3.1 bindService(连接服务)

  • 使用场景: 此接口用于绑定WmLPService本地服务

  • 函数名: bindService

  • 函数原型

    public static void bindService(Context context, IOnServiceConListener listener)
    
  • 请求参数

    请求参数必填类型描述
    contextContextContext上下文
    listenerIOnServiceConListener本地服务连接回调
  • 返回说明

  • 请求用例

    WmSdk.getInstance().bindService(context, new IOnServiceConListener()  {
        @Override
        public void onConnected(ComponentName componentName, IBinder iBinder){
            Toast,makeText(context, text:"连接服务成功",Toast.LENGTH_SHORT).show();
        } 
    	@Override
    	public void onDisconnected(ComponentName componentName){
            Toast.makeText(context, text:"连接服务断开",Toast,LENGTH_LONG),show();
        }
    });
    

3.2 init(初始化服务SDK)

  • 使用场景:此接口用于初始化相机和相关检测程序

  • 函数名:init

  • 函数原型

    public static void init()
    
  • 请求用例

    WmSdk.getInstance().init(new IOnInitListener.Stub() {
    	@Override
    	public void onSuccess(int i) throws RemoteException {...}
    	@Override
    	public void onFailed(int i) throws RemoteException {
    		runOnUiThread(new Runnable() {...});
    });
    

3.3 openSettingPage(打开设置页)

  • 使用场景:此接口用于打开设置页面

  • 函数名:openSettingPage

  • 函数原型

    public static void openSettingPage()
    
  • 请求用例

    WmSdk.getInstance().openSettingPage();
    

3.4 autoDetect(商品识别)

  • 使用场景:当扫码枪收到条码时,调用此接口,将条码和商品plu和商品 sessionId(sessionId为了区分相同条码的商品)传入SDK

  • 函数名:autoDetect

  • 函数原型

    public voidautoDetect(String barcode,String plu,StringsessionId)
    
  • 请求参数

    请求参数必填类型描述
    barcodeString扫码枪接收到的条码
    PluString生鲜plu(没有传空串即可)
    sessionIdString区分相同条码的商品
  • 请求用例

    WmSdk.getInstance().autoDectect(scanCode);
    

3.5 start(开启防损检测)

  • 使用场景:用于开启检测

  • 函数名:start

  • 函数原型

    public int start()
    
  • 返回说明

    返回值类型说明
    Int0:成功
    2001、2002:缺少密钥文件
    2003、2004:密钥文件校验失败
    2008:未设置检测区域
  • 请求用例

    int ret = WmSdk.getInstance().start();
    

3.6 pause(暂停防损检测)

  • 使用场景:用于暂停检测

  • 函数名:pause

  • 函数原型

    public void pause()
    
  • 请求用例

    WmSdk.getInstance().pause();
    

3.7 setAlertEventCallback(监听错扫或漏扫)

  • 使用场景:用于监听本次扫描是漏扫还是错扫(只是作为客户端记录)

  • 函数名: setAlertEventCallback

  • 函数原型

     public void setAlertEventCallback(IOnAlertEventCallbackonCallback);       
    
  • 请求参数

    请求参数必填类型描述
    onCallBackIOnaAlertEventCallback用来监听本次扫描是错扫还是漏扫
  • 请求用例

WmSdk.getInstance(),setAlertEventCallback(new IOnAlertEventCallback.Stub(){
    @Override
	public void onAlertEventCallback(String barcode, String sessionId,int type) throws RemoteException {
        if (type==1){
			System.out.println("漏扫回调,这里可以记录");
        }else if (type==0){
			System.outprintln("错扫回调,这里可以记录”);
        }
    }
}); 

3.8 setItemDeleteCallback(错扫移除购物车商品回调)

  • 使用场景:在弹出错扫框并点击"从购物车移除"按钮后,防损服务会回调返回本次错扫的barcode和sessionId,用于客户端删除已经加购过的商品

  • 函数名:itemDeleteCallBack

  • 函数原型

     public void setItemDeleteCallback(IOnItemDeleteCallbackonCallback);   
    
  • 请求参数

    请求参数必填类型描述
    onCallBackIOnItemDeleteCallback用来监听错扫情况返回 的sessionId和barcode
  • 请求用例

WmSdk.getInstancelback(newIOnItemDeleteCallback.Stub(){
    @Override
    public void onItemDeleteCallback(String barcode, String sessionId) throws RemoteException {
        System.out.printIn("onErrorScanCallback回调==>"+barcode+"==="+sessionId);
        if (Build.VERSION.SDK_INT >= Buid.VERSION_CODES.N){
cartProductItems.removeIf(item -> item.getSessionId().equals(sessionId));
        }
        BigDecimal multiply1 = new BigDecima( val: "0");
        int allNum = 0;
        for (CartProductItems cartProductItem : cartProductItems){
            BigDecimal multiplyItem : new BigDecimal(cartProductItem.getSaleUnitPrice()).multiply(new BigDecimal( val: "1"));
            multiply1 = multiply1.add(multiplyItem).setScale( newScale: 2,BigDecimal.ROUND_HALF_UP);
            aliNum++;
        }
		BigDecimal finalMultinlyBiaDecimal= multiplv1;

附录1:商品识别返回错误码

错误码描述解决方案
0成功
1001初始化失败
1002模型初始化失败
1003识别得Bitmap为空查看图片是否正确
1004获取图片信息失败查看图片是否正确
1005图片转化失败查看图片是否正确
2000打开摄像头失败检查使用系统自带相机能否打开
2001wmkey.wm文件不存在需下载文件存该文件目录,并命名wmkey.wm
2002Wmkey.pem文件不存在需下载文件存该文件目录,并命名wmkey.pem
2003解密失败解密为空或者获取MAC地址为空
2004解密失败对比失败
2005模型识别失败传入图片模型识别失败
2006没有租户重新注册
3001裁剪参数不规范参数应大于0
3002裁剪比例不规范未按宽高比4:3裁剪
3003裁剪图片为空检查相机,相机未启动
4001数据库文件不存在
4002接口传入参数非法参数不应为空
4003WmService本地服务连接失败检查WmService是否安装启动
65014SnCode未找到
65017该PosCode已绑定过,并且
65006此POS的MAC地址绑定过其他设备,请联系管理员确认POS编号
65019SnCode并未绑定,无需解绑
65017该POS的MAC地址与服务器记录的地址不同,无法解绑

附录2:用例说明

一、识别服务程序使用说明

  1. 在机器上安装WmLPService-v1.1.002-release.apk服务程序

  2. 初次安装后请在桌面找到元芒防损服务程序,点击运行,会弹出权限申请界面,请同意所需权限

  3. 初次使用请先打开设置页面,完成激活码注册和检测区域标定

二、注意事项

1. 相关接口使用请参考演示DEMO工程中的代码


Comments

Make a comment