Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
A
Android_Catering_service
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
姜天宇
Android_Catering_service
Commits
1c36dc18
Commit
1c36dc18
authored
Jul 30, 2025
by
陈宇雄
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
doc: 更新接口文档
parent
255716f8
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
186 additions
and
187 deletions
+186
-187
元芒数字餐饮服务(WmCateringService)Android端接口说明文档-V1.0.2.md
元芒数字餐饮服务(WmCateringService)Android端接口说明文档-V1.0.2.md
+186
-187
No files found.
元芒数字餐饮服务(WmCateringService)Android端接口说明文档-V1.0.2.md
View file @
1c36dc18
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
##### Version Release v1.0.2
##### Version Release v1.0.2
##### 更新时间: 202
4.09.24
##### 更新时间: 202
5.07.30
#### 上海元芒数字科技有限公司
#### 上海元芒数字科技有限公司
...
@@ -76,10 +76,6 @@ Implementation files("libs/WmCateringService_v1.0.2_sdk.jar")
...
@@ -76,10 +76,6 @@ Implementation files("libs/WmCateringService_v1.0.2_sdk.jar")
3.
初始化成功后,调用registerDetectionListener接口,注册识别结果的监听回调;
3.
初始化成功后,调用registerDetectionListener接口,注册识别结果的监听回调;
4.
同时,可以在Activity的onStart()和onStop()中,分别调用registerDetectionListener接口和unregisterDetectionListener接口,保证页面不可见时,不会因触发识别而占用设备性能。这两个接口具体的调用时机,可根据实际业务场景做调整;
4.
同时,可以在Activity的onStart()和onStop()中,分别调用registerDetectionListener接口和unregisterDetectionListener接口,保证页面不可见时,不会因触发识别而占用设备性能。这两个接口具体的调用时机,可根据实际业务场景做调整;
5.
初次使用时,请调用openSettingPage接口或直接在系统桌面打开餐饮服务程序,进入设置页面,在设置页面中注册激活码和设定检测区域
5.
初次使用时,请调用openSettingPage接口或直接在系统桌面打开餐饮服务程序,进入设置页面,在设置页面中注册激活码和设定检测区域
6.
关于商品学习,请先调用importProducts接口,导入客户端的商品资料,然后打开餐饮服务设置页,进入数据学习页面
<div
style=
"page-break-after: always;"
></div>
<div
style=
"page-break-after: always;"
></div>
...
@@ -89,12 +85,12 @@ Implementation files("libs/WmCateringService_v1.0.2_sdk.jar")
...
@@ -89,12 +85,12 @@ Implementation files("libs/WmCateringService_v1.0.2_sdk.jar")
## 3.1 bindService(绑定服务)
## 3.1 bindService(绑定服务)
-
使用场景: 此接口用于绑定Wm
LP
Service本地服务,推荐在主页Activity的onCreate()中调用
-
使用场景: 此接口用于绑定Wm
Catering
Service本地服务,推荐在主页Activity的onCreate()中调用
-
函数名: bindService
-
函数名: bindService
-
函数原型
-
函数原型
```
java
```
java
public
static
void
bindService
(
Context
context
,
IOnServiceConListener
listener
);
public
static
void
bindService
(
Context
context
,
IOnServiceConListener
listener
);
```
```
-
请求参数
-
请求参数
...
@@ -108,289 +104,305 @@ public static void bindService(Context context, IOnServiceConListener list
...
@@ -108,289 +104,305 @@ public static void bindService(Context context, IOnServiceConListener list
-
请求用例
-
请求用例
```
java
```
java
WmSdk
.
getInstance
().
bindService
(
mContext
,
new
IOnServiceConListener
()
{
WmSdk
.
getInstance
().
bindService
(
mContext
,
new
IOnServiceConListener
()
{
@Override
@Override
public
void
onConnected
(
ComponentName
componentName
,
IBinder
iBinder
)
{
public
void
onConnected
(
ComponentName
componentName
,
IBinder
iBinder
)
{
}
}
@Override
@Override
public
void
onDisconnected
(
ComponentName
componentName
)
{
public
void
onDisconnected
(
ComponentName
componentName
)
{
}
}
});
});
```
```
## 3.2 unbindService(解绑服务程序)
-
使用场景:用于解绑服务,推荐在主页Activity的onStop()中调用
-
函数名: unbindService
-
函数原型
```
java
public
void
unbindService
();
```
-
请求参数
-
返回说明
-
请求用例
```
java
WmSDK
.
getInstance
().
unbindService
();
```
## 3.3 init(初始化接口)
## 3.2 init(初始化服务SDK)
-
使用场景:此接口用于初始化,请在服务绑定成功后调用一次
-
使用场景:此接口用于初始化,请在服务绑定成功后调用一次
-
函数名:init
-
函数名:init
-
函数原型
-
函数原型
```
java
```
java
public
static
void
init
(
);
public
void
init
(
IOnInitListener
listener
);
```
```
-
请求参数
-
请求参数
| 请求参数 | 必填 | 类型 | 描述 |
| -------- | ---- | --------------------- | ---------------- |
| listener | 是 | IOnInitListener | 初始化回调 |
-
返回说明
-
返回说明
-
请求用例
-
请求用例
```
java
```
java
WmSdk
.
getInstance
().
init
();
WmSdk
.
getInstance
().
init
(
new
IOnInitListener
.
Stub
()
{
@Override
public
void
onComplete
()
throws
RemoteException
{
log
(
"学习数据初始化完成"
);
runOnUiThread
(()
->
{
// 接口3.5 注册识别结果回调
WmSdk
.
getInstance
().
registerDetectionListener
(
generateBitmap
,
detectionListener
);
});
}
});
```
## 3.4 importProducts(导入商品资料)
-
使用场景: 导入商品资料
-
函数名: importProducts
-
函数原型
```
java
public
void
importProducts
(
List
<
ProductsDTO
>
products
);
```
```
-
请求参数
| 请求参数 | 必填 | 类型 | 描述 |
| -------- | ---- | -------------- |----------|
| products | 是 | List
<ProductsDTO>
| 商品信息数据数组 |
ProductsDTO
| 参数名 | 必填 | 类型 | 描述 |
| -------- | ---- | -------------- |----------|
| productName | 是 | String | 品名 |
| productCode | 是 | String | 商品代码 |
| productMnemonicCode | 是 | String | 商品助记码 |
| unitPrice | 是 | String | 商品单价(元/份) |
| onSale | 是 | Integer | 在售状态,1:在售 2:下架 |
## 3.3 openSettingPage(打开设置页)
-
返回说明
-
使用场景: 此接口用于打开设置页面
-
请求用例
-
函数名: openSettingPage
```
java
log
(
"准备导入测试用商品资料"
);
// 导入商品资料
List
<
ProductsDTO
>
list
=
new
ArrayList
<>();
list
.
add
(
new
ProductsDTO
(
"红烧肉"
,
"1"
,
"HSR"
,
"25"
,
1
));
WmSdk
.
getInstance
().
importProducts
(
list
);
log
(
"商品资料导入完成"
);
```
## 3.5 registerDetectionListener(注册识别结果回调)
-
使用场景: 此接口用于注册识别结果回调,注意当MainActivity初次启动时,服务未完成连接,该方法不会生效,需要在服务连接成功后,再次调用该接口注册回调
-
函数名: registerDetectionListener
-
函数原型
-
函数原型
```
java
```
java
public
static
void
openSettingPage
();
public
void
registerDetectionListener
(
boolean
generateBitmap
,
IOnDetectionListener
listener
)
```
```
-
请求参数
-
请求参数
| 请求参数 | 必填 | 类型 | 描述 |
| -------- | ---- | -------------- |----------|
| generateBitmap | 是 | boolean | 是否在识别时生成图片并返回,如无需展示该图片,建议关闭可以提升运算速度 |
| listener | 是 | IOnDetectionListener | 注册识别结果回调 |
-
返回说明
-
返回说明
-
请求用例
-
请求用例
```
java
```
java
WmSdk
.
getInstance
().
openSettingPage
(
);
WmSdk
.
getInstance
().
registerDetectionListener
(
generateBitmap
,
detectionListener
);
```
```
## 3.6 unregisterDetectionListener(反注册识别结果回调)
-
使用场景: 此接口用于反注册识别结果回调
-
函数名: unregisterDetectionListener
-
函数原型
```
java
public
void
unregisterDetectionListener
()
```
-
请求参数
-
返回说明
-
请求用例
```
java
WmSdk
.
getInstance
().
unregisterDetectionListener
();
```
## 3.
4 autoDetect(商品
识别)
## 3.
7 autoDetect(重新
识别)
-
使用场景:
当扫码枪收到条码时,调用此接口
-
使用场景:
重新识别
-
函数名: autoDetect
-
函数名: autoDetect
-
函数原型
-
函数原型
```
java
```
java
public
void
autoDetect
(
String
barcode
,
String
plu
,
String
sessionId
);
public
DetectResult
autoDetect
(
boolean
generateBitmap
);
```
```
-
请求参数
-
请求参数
| 请求参数 | 必填 | 类型 | 描述 |
| 请求参数 | 必填 | 类型 | 描述 |
| --------- | ---- | ------ | ------------------------------ |
| --------- | ---- | ------ |----------------|
| barcode | 是 | String | 扫码枪接收到的条码 |
| generateBitmap | 是 | boolean | 是否在识别时生成图片并返回,如无需展示该图片,建议关闭可以提升运算速度 |
| plu | 否 | String | 生鲜plu(仅生鲜类商品需要传plu) |
| sessionId | 否 | String | 区分相同条码的商品 |
-
返回说明
-
返回说明
-
请求用例
-
请求用例
```
java
```
java
// 接收到的条码
log
(
"准备重新识别"
);
String
scanCode
=
"223057500988"
;
executorService
.
execute
(()->{
// 购物车中的行号,当相同barcode的商品第一次正确,第二次发生错扫,这时行号就可以区分是哪一个商品发生了错扫
// 子线程执行识别接口
String
sessionId
=
UUID
.
randomUUID
().
toString
();
DetectResult
result
=
WmSdk
.
getInstance
().
autoDetect
(
generateBitmap
);
// 不是生鲜码
showDetectResult
(
result
);
if
(){
});
WmSdk
.
getInstance
().
autoDetect
(
scanCode
,
""
,
sessionId
);
}
else
{
// 是生鲜码
String
plu
=
"30575"
;
// 从条码中解析出对应的PLU
WmSdk
.
getInstance
().
autoDetect
(
scanCode
,
plu
,
sessionId
);
}
```
```
##
3.5 start(开启防损检测
)
##
4.1 checkServiceAppInstalled(获取服务程序安装状态
)
-
使用场景:
用于开启检测,推荐在购物车页面的onResume()中调用
-
使用场景:
获取服务程序安装状态
-
函数名:
start
-
函数名:
checkServiceAppInstalled
-
函数原型
-
函数原型
```
java
```
java
public
int
start
(
IOnAlertEventCallback
callback
);
public
boolean
checkServiceAppInstalled
(
Context
context
);
```
```
-
请求参数
-
请求参数
| 请求参数 | 必填 | 类型 | 描述 |
| 请求参数 | 必填 | 类型 | 描述 |
| --------
| ---- | --------------------- | ------------------------------------------------------------
|
| --------
- | ---- | ------ |----------------
|
| c
allback | 是 | IOnAlertEventCallback | 当发生漏扫、错扫时,通过该回调函数进行通知,通知信息存储在回调参数AlertEvent中,AlertEvent属性:
<br>
bitmap : 识别图片,这里如果抓图异常,可能为空
<br/>
barcode : 条码
<br/>
plu : 生鲜码
<br/>
sessionId : 行号
<br/>
eventType : 识别类型,0错扫,1漏扫
<br/>
feature : 特征值
|
| c
ontext | 是 | Context | Context上下文
|
-
返回说明
-
返回说明
| 返回值类型 | 说明 |
|-------|------------|
| 0 | 成功 |
| 2001 | 缺少密钥文件1 |
| 2002 | 缺少密钥文件2 |
| 2003 | 密钥文件1校验失败 |
| 2004 | 密钥文件2校验失败 |
| 2005 | 未注册 |
| 2007 | 未标定动作检测区域 |
| 2008 | 未标定物品识别区域 |
| 3001 | 摄像头USB未连接 |
| 3002 | 摄像头尚未初始化完成 |
| 3003 | 摄像头工作停止 |
-
请求用例
-
请求用例
```
java
```
java
private
final
IOnAlertEventCallback
callback
=
new
IOnAlertEventCallback
.
Stub
()
{
// 接口4.1 判断服务程序是否安装
@Override
if
(
WmSdk
.
getInstance
().
checkServiceAppInstalled
(
this
))
{
public
void
onAlertEventCallback
(
AlertEvent
event
)
throws
RemoteException
{
log
(
"服务已安装"
);
switch
(
alertEventBean
.
getScanType
()){
case
1
:
System
.
out
.
println
(
"漏扫回调"
);
break
;
case
0
:
System
.
out
.
println
(
"错扫回调"
);
break
;
default
:
break
;
}
}
};
int
ret
=
WmSdk
.
getInstance
().
start
(
callback
);
String
message
=
""
;
switch
(
ret
){
case
0
:
// 成功
message
=
"检测开启成功"
;
break
;
case
2001
:
case
2002
:
message
=
"缺少密钥文件,请先注册激活"
;
break
;
case
2003
:
case
2004
:
message
=
"密钥文件校验失败"
;
break
;
case
2005
:
message
=
"未注册,请先注册激活"
;
break
;
case
2007
:
message
=
"未设置动作检测区域"
;
break
;
case
2008
:
message
=
"未设置物品识别区域"
;
break
;
case
3001
:
message
=
"摄像头USB断开连接"
;
break
;
case
3002
:
message
=
"摄像头工作停止"
;
break
;
default
:
message
=
"初始化失败"
+
ret
;
break
;
}
}
```
```
## 4.2 checkServiceConnected(获取服务连接状态)
-
使用场景: 获取服务连接状态
## 3.6 pause(暂停防损检测)
-
函数名: checkServiceConnected
-
使用场景: 用于暂停检测,推荐在购物车页面的onPause()中
-
函数名:pause
-
函数原型
-
函数原型
```
J
ava
```
j
ava
public
void pause();
public
boolean
checkServiceConnected
()
```
```
-
请求参数
-
请求参数
-
返回说明
-
返回说明
-
请求用例
-
请求用例
```
java
```
java
WmSdk
.
getInstance
().
pause
();
boolean
isServiceConnected
=
WmSdk
.
getInstance
().
checkServiceConnected
();
log
(
"获取服务程序连接状态:"
+
isServiceConnected
);
```
```
## 4.3 checkActivation(获取激活状态)
-
使用场景: 获取激活状态
## 3.7 unbindService(解绑服务)
-
函数名: checkActivation
-
使用场景: 用于解绑服务,推荐在主页Activity的onStop()中调用
-
函数名:unbindService
-
函数原型
-
函数原型
```
J
ava
```
j
ava
public
void unbindService
();
public
boolean
checkActivation
();
```
```
-
请求参数
-
请求参数
-
返回说明
-
返回说明
-
请求用例
-
请求用例
```
java
```
java
WmSdk
.
getInstance
().
unbindService
();
boolean
isActivated
=
WmSdk
.
getInstance
().
checkActivation
();
log
(
"获取服务程序激活状态:"
+
isActivated
);
```
```
## 4.4 checkCameraCrop(获取摄像头裁剪状态)
-
使用场景: 获取摄像头裁剪状态
-
函数名: checkCameraCrop
-
函数原型
## 其他接口
```
java
public
boolean
checkCameraCrop
();
```
-
请求参数
-
返回说明
-
请求用例
## 4.1 feedback(保存识别结果)
```
java
boolean
isCameraCropped
=
WmSdk
.
getInstance
().
checkCameraCrop
();
log
(
"获取摄像头裁剪状态:"
+
isCameraCropped
);
```
## 4.5 checkLearningDataInitCompleted(获取算法初始化状态)
-
使用场景:
用于保存识别记录
-
使用场景:
获取算法初始化状态
-
函数名:
feedback
-
函数名:
checkLearningDataInitCompleted
-
函数原型
-
函数原型
```
J
ava
```
j
ava
public
void feedback(DetectResult result
);
public
boolean
checkLearningDataInitCompleted
(
);
```
```
-
请求参数
-
请求参数
| 请求参数 | 必填 | 类型 | 描述 |
| -------- | ---- | ------------ | ------------------------------------------------------------ |
| saveBean | 是 | DetectResult | 保存识别结果DetectResult的属性:
<br>
productId : 商品标识
<br>
feature : 特征值 |
-
返回说明
-
返回说明
-
请求用例
-
请求用例
```
java
```
java
WmSdk
.
getInstance
().
feedback
(
result
);
boolean
isLearningDataInitCompleted
=
WmSdk
.
getInstance
().
checkLearningDataInitCompleted
();
log
(
"获取学习数据初始化状态:"
+
isLearningDataInitCompleted
);
```
```
## 5.1 openSettingPage(打开设置页)
-
使用场景: 此接口用于打开设置页面
## 4.2 setAdminPassword(设置管理员密码)
-
函数名: openSettingPage
-
使用场景: 用于设置管理员密码
-
函数名:setAdminPassword
-
函数原型
-
函数原型
```
J
ava
```
j
ava
public
void setAdminPassword(String password
);
public
static
void
openSettingPage
(
);
```
```
-
请求参数
-
请求参数
-
返回说明
-
请求用例
| 请求参数 | 必填 | 类型 | 描述 |
```
java
| -------- | ---- | ------ | ---- |
WmSdk
.
getInstance
().
openSettingPage
();
| password | 是 | String | 密码 |
```
## 5.2 resetCameraBackground(重置摄像头背景)
-
使用场景: 此接口用于重置摄像头背景。重置摄像头背景,请先清空摄像头下的台面
-
函数名: resetCameraBackground
-
函数原型
```
java
public
void
resetCameraBackground
();
```
-
请求参数
-
返回说明
-
返回说明
-
请求用例
-
请求用例
```
java
```
java
WmSdk
.
getInstance
().
setAdminPassword
(
password
);
WmSdk
.
getInstance
().
resetCameraBackground
(
);
```
```
<div
style=
"page-break-after: always;"
></div>
<div
style=
"page-break-after: always;"
></div>
...
@@ -400,31 +412,18 @@ WmSdk.getInstance().setAdminPassword(password);
...
@@ -400,31 +412,18 @@ WmSdk.getInstance().setAdminPassword(password);
|
**错误码**
|
**描述**
|
**解决方案**
|
|
**错误码**
|
**描述**
|
**解决方案**
|
|---------|---------------------------------|-------------|
|---------|---------------------------------|-------------|
| 0 | 成功 | |
| 0 | 成功 | |
| 1001 | 初始化失败 | |
| 2000 | 摄像头不可用 | 检查摄像头状态 |
| 1002 | 模型初始化失败 | |
| 2001 | 未激活 | 重新注册激活 |
| 2001 | 缺少密钥文件1 | 重新注册激活 |
| 2002 | 学习数据初始化未完成 | 初始化学习数据 |
| 2002 | 缺少密钥文件2 | 重新注册激活 |
| 2003 | 摄像头未裁剪 | 前往设置也裁剪摄像头 |
| 2003 | 密钥文件1校验失败 | 重新注册激活 |
| 2004 | 区域内无对象 | 确保区域内有对象 |
| 2004 | 密钥文件2校验失败 | 重新注册激活 |
| 2005 | 未注册 | 重新注册激活 |
| 2007 | 未标定动作检测区域 | 设置页动作检测区域 |
| 2008 | 未标定物品识别区域 | 设置页图像识别区域 |
| 3001 | 摄像头USB断连 | 检查摄像头USB口连接 |
| 3002 | 摄像头尚未初始化完成 | 等待摄像头初始化 |
| 3003 | 摄像头停止工作 | 等待相机恢复 |
| 65006 | 此POS的MAC地址绑定过其他设备,请联系管理员确认POS编号 | |
| 65014 | SnCode未找到 | |
| 65017 | 该POS的MAC地址与服务器记录的地址不同,无法解绑 | |
| 65019 | SnCode并未绑定,无需解绑 | |
| 65024 | 该SN码不属于该租户 | |
| 65028 | 该SN码已被其他设备绑定 | |
# 附录 2 :用例说明
# 附录 2 :用例说明
## 一、
识别
服务程序使用说明
## 一、
餐饮
服务程序使用说明
1.
在机器上安装Wm
LPService-v1.3.13
-release.apk服务程序
1.
在机器上安装Wm
CateringService-v1.0.2
-release.apk服务程序
2.
初次安装后请在桌面找到元芒
防损
服务程序,点击运行,会弹出权限申请界
2.
初次安装后请在桌面找到元芒
餐饮
服务程序,点击运行,会弹出权限申请界
面,请同意所需权限
面,请同意所需权限
3.
初次使用请先打开设置页面,完成激活码注册和检测区域标定
3.
初次使用请先打开设置页面,完成激活码注册和检测区域标定
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment