Add D500 scanner SDK documentation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
753
docs/Android扫描接口文档.md
Normal file
753
docs/Android扫描接口文档.md
Normal file
@@ -0,0 +1,753 @@
|
|||||||
|
# Android 扫描接口说明
|
||||||
|
|
||||||
|
> 江苏东大集成电路系统工程技术有限公司
|
||||||
|
> www.seuic.com
|
||||||
|
|
||||||
|
![SEUIC 东集 Logo 图片占位符]
|
||||||
|
|
||||||
|
![世界地图装饰图片占位符]
|
||||||
|
|
||||||
|
## 修订记录
|
||||||
|
|
||||||
|
| 版本号 | 修订日期 | 修订内容 | 修订人员 |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1.0 | 2017/03/16 | 建立本文档 | 罗涛 |
|
||||||
|
| 1.1 | 2017/5/31 | 加入回调函数注意事项说明 | 罗涛 |
|
||||||
|
| 1.2 | 2017/11/13 | 修正关于图像读取接口的描述 | 罗涛 |
|
||||||
|
| 1.3 | 2017/11/20 | 添加新增参数介绍 | 罗涛 |
|
||||||
|
|
||||||
|
## 目录
|
||||||
|
|
||||||
|
- 概述
|
||||||
|
- 硬件平台
|
||||||
|
- 软件平台
|
||||||
|
- 适用对象
|
||||||
|
- 准备工作
|
||||||
|
- Jar 包引用方法
|
||||||
|
- 所需的相关权限
|
||||||
|
- 扫描相关类介绍
|
||||||
|
- 扫描工厂类
|
||||||
|
- 扫描类
|
||||||
|
- 扫描数据回调接口类
|
||||||
|
- 读取图像回调接口类
|
||||||
|
- 扫描状态回调接口类
|
||||||
|
- 扫描数据类
|
||||||
|
- 扫描按键监听类
|
||||||
|
- 扫描接口介绍
|
||||||
|
- 获取扫描头上下文
|
||||||
|
- 打开扫描头
|
||||||
|
- 关闭扫描头
|
||||||
|
- 开始扫描
|
||||||
|
- 停止扫描
|
||||||
|
- 设置扫描条码回调
|
||||||
|
- 启用扫描头
|
||||||
|
- 禁用扫描头
|
||||||
|
- 获取条码参数
|
||||||
|
- 设置条码参数
|
||||||
|
- 获取扫描成功后图像
|
||||||
|
- 开始读取图像
|
||||||
|
- 停止读取图像
|
||||||
|
- 设置读取图像回调
|
||||||
|
- 设置扫描头状态回调
|
||||||
|
- 扫描参数介绍
|
||||||
|
- 条码设置参数
|
||||||
|
- 扫描状态参数
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 概述
|
||||||
|
|
||||||
|
我司提供的所有设备上已经内置了扫描服务及应用,方便客户定制扫描服务,但是由于有部分客户需要自己开发基于我司扫描 SDK 的应用,故本文档致力于介绍有关扫描 SDK 的相关内容,以便帮助用户更为灵活地使用我们的设备。
|
||||||
|
|
||||||
|
## 硬件平台
|
||||||
|
|
||||||
|
SDK 适用于我司所有终端设备,具体使用范围在函数接口说明中指明,若无指明表示都支持。
|
||||||
|
|
||||||
|
## 软件平台
|
||||||
|
|
||||||
|
SDK 基于 Android 4.3、Android 4.4、Android 5.1 版本,支持 Eclipse、Android Studio 开发工具。
|
||||||
|
|
||||||
|
## 适用对象
|
||||||
|
|
||||||
|
希望在自己的应用中定制扫描的开发人员。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 准备工作
|
||||||
|
|
||||||
|
## Jar 包引用方法
|
||||||
|
|
||||||
|
**1、首先以 Eclipse 为例**,右击项目 → Properties → Java Build Path → Libraries → Add External JARs,选择 `ScannerAPI.jar` 文件。
|
||||||
|
|
||||||
|
![Eclipse 添加外部 JAR 包截图占位符]
|
||||||
|
|
||||||
|
**2、以 Android Studio Version:2.2.2 版本为例**,在 project 中,在 app 目录下新建一个 `libsref` 目录,将 `ScannerAPI` 放入该目录下,并右击工程选择 Open Module Settings 选中相应的 Module,切换至最右方的 Dependencies,点击右方加号,选择 File dependency 添加 `ScannerAPI.jar`,并且修改 scope 为 `provided`,声明该 `ScannerAPI.jar` 只在编译时需要依赖,在运行时不需要。
|
||||||
|
|
||||||
|
① 将 `ScannerAPI.jar` 放入 `app/libsref/` 下
|
||||||
|
|
||||||
|
![Android Studio 项目结构 libsref 目录截图占位符]
|
||||||
|
|
||||||
|
② 右击工程选择 Open Module Settings 选中相应的 Module,切换至最后方的 Dependencies,点击右方加号,选择 File dependency 添加 `ScannerAPI.jar`
|
||||||
|
|
||||||
|
![Android Studio Open Module Settings 菜单截图占位符]
|
||||||
|
|
||||||
|
![Android Studio Dependencies 添加 jar 包截图占位符]
|
||||||
|
|
||||||
|
③ 更改 compile 为 provided,声明该 `ScannerAPI.jar` 只在编译时需要依赖,在运行时不需要,最后保存设置即可。
|
||||||
|
|
||||||
|
![Android Studio scope 设置为 Provided 截图占位符]
|
||||||
|
|
||||||
|
④ 如果设置成功,会在相应的 `build.gradle` 中有如下 dependencies:
|
||||||
|
|
||||||
|
```gradle
|
||||||
|
dependencies {
|
||||||
|
provided files('libsref/ScannerAPI.jar')
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 所需的相关权限
|
||||||
|
|
||||||
|
在进行基于我们的扫描 SDK 开发的时候,需在 `AndroidManifest.xml` 的 application 节点下添加以下代码:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<uses-library android:name="android.scanner.library"/>
|
||||||
|
```
|
||||||
|
|
||||||
|
D500/D510/D330S 设备中二维扫描需添加以下权限:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<uses-permission android:name="android.permission.CAMERA"/>
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
|
```
|
||||||
|
|
||||||
|
**注意点:**
|
||||||
|
|
||||||
|
1. 在一个应用中只需要打开一次扫描头即可,不需要打开多次,否则会耗时太大,产生卡屏现象。
|
||||||
|
2. 退出程序的时候可以选择关闭扫描头,其余场合不可关闭。
|
||||||
|
3. 可以参照测试 demo 中的方式,在 `ScannerService` 中定义 action,在使用扫描的 UI 中直接使用动态注册广播接收器接收到扫描解析的结果。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 扫描相关类介绍
|
||||||
|
|
||||||
|
## 扫描工厂类
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 包名 | `com.seuic.scanner` |
|
||||||
|
| 类名 | `ScannerFactory` |
|
||||||
|
| 说明 | 扫描工厂类,主要用于获取扫描头资源 |
|
||||||
|
|
||||||
|
## 扫描类
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 包名 | `com.seuic.scanner` |
|
||||||
|
| 类名 | `Scanner` |
|
||||||
|
| 说明 | 扫描主要实现类,定义了一系列扫描操作方法 |
|
||||||
|
|
||||||
|
## 扫描数据回调接口类
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 包名 | `com.seuic.scanner` |
|
||||||
|
| 类名 | `DecodeInfoCallBack` |
|
||||||
|
| 回调函数 | `onDecodeComplete(DecodeInfo barcodeInfo)` |
|
||||||
|
| 回调函数参数 | param1: 条码信息,`DecodeInfo` |
|
||||||
|
| 回调函数返回值 | void |
|
||||||
|
| 说明 | 扫描回调函数,用户需引用该接口,并调用 `Scanner` 类中 `setDecodeInfoCallBack` 后可获得条码信息。 |
|
||||||
|
|
||||||
|
> **注意:** 该回调方法中请勿进行 UI 操作!
|
||||||
|
|
||||||
|
## 读取图像回调接口类
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 包名 | `com.seuic.scanner` |
|
||||||
|
| 类名 | `VideoCallBack` |
|
||||||
|
| 回调函数 | `onVideoCallBack(int width, int height, byte[] img)` |
|
||||||
|
| 回调函数参数 | param1: 返回图像宽度<br>param2: 返回图像高度<br>param3: 返回的图像数据(Bitmap 格式) |
|
||||||
|
| 回调函数返回值 | `true`:操作成功,停止出光并终止对图像的读取<br>`false`:操作失败,继续读取图像 |
|
||||||
|
| 说明 | 扫描回调函数,用户需引用该接口,并调用 `Scanner` 类中的 `setVideoCallBack` 后可获得图像数据,同时每取得一帧图像都会调用该函数,第三方的相关操作在此处处理。 |
|
||||||
|
|
||||||
|
> **注意:** 该回调方法中请勿进行 UI 操作!
|
||||||
|
|
||||||
|
## 扫描状态回调接口类
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 包名 | `com.seuic.scanner` |
|
||||||
|
| 类名 | `StatusCallBack` |
|
||||||
|
| 回调函数 | `onStatusCallBack(int status, int info)` |
|
||||||
|
| 回调函数参数 | param1: 状态信息<br> 0:扫描成功<br> 1:扫描超时<br> 2:扫描被取消<br> 3:扫描出现错误(暂未使用)<br> 4:其他事件(暂未使用)<br>param2: 其他额外信息(暂未使用)<br>扫描状态参数参见:扫描状态参数 |
|
||||||
|
| 回调函数返回值 | void |
|
||||||
|
| 说明 | 状态回调函数,用户可引用该接口,并且调用 `Scanner` 类中的 `setStatusCallBack` 后可以当扫描头状态更新时获得当前扫描状态。 |
|
||||||
|
|
||||||
|
> **注意:** 该回调方法中请勿进行 UI 操作!
|
||||||
|
|
||||||
|
## 扫描数据类
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 包名 | `com.seuic.scanner` |
|
||||||
|
| 类名 | `DecodeInfo` |
|
||||||
|
| 类成员 | `String barcode`:条码数据<br>`String codetype`:条码类型<br>`int length`:条码长度 |
|
||||||
|
|
||||||
|
## 扫描按键监听类
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 包名 | `com.seuic.scanner` |
|
||||||
|
| 类名 | `ScannerKey` |
|
||||||
|
| 类成员变量 | `KEY_DOWN`:扫描按键按下<br>`KEY_UP`:扫描按键抬起 |
|
||||||
|
| 类方法 | `int open()`:打开扫描键监听,返回 1:打开成功,-1:打开失败<br>`int getKeyEvent()`:获取按键事件,返回:1:扫描键按下,0:扫描键抬起,-1:获取失败。注意:该方法将阻塞进程,推荐异步调用。<br>`void close()`:关闭扫描键监听 |
|
||||||
|
| 说明 | 扫描按键监听类 |
|
||||||
|
|
||||||
|
**示例代码:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.scanner.Scanner;
|
||||||
|
import com.seuic.scanner.ScannerKey;
|
||||||
|
import com.seuic.scanner.ScannerFactory;
|
||||||
|
|
||||||
|
public class ScannerApiTest {
|
||||||
|
// ……
|
||||||
|
Runnable runnable = new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
int ret1 = ScannerKey.open();
|
||||||
|
if (ret1 > -1) {
|
||||||
|
while (true) {
|
||||||
|
int ret = ScannerKey.getKeyEvent();
|
||||||
|
if (ret > -1) {
|
||||||
|
switch (ret) {
|
||||||
|
case ScannerKey.KEY_DOWN:
|
||||||
|
scanner.startScan();
|
||||||
|
break;
|
||||||
|
case ScannerKey.KEY_UP:
|
||||||
|
scanner.stopScan();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// ……
|
||||||
|
ScannerKey.close();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 扫描接口介绍
|
||||||
|
|
||||||
|
> 接口具体使用范围若无指明表示所有扫描头都支持。
|
||||||
|
|
||||||
|
## 获取扫描头上下文
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类 | `ScannerFactory` |
|
||||||
|
| 接口 | `getScanner` |
|
||||||
|
| 接口参数 | `Context context` |
|
||||||
|
| 返回值 | `Scanner` 实例 |
|
||||||
|
| 说明 | 获取扫描类实例 |
|
||||||
|
|
||||||
|
**示例代码:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.scanner.ScannerFactory;
|
||||||
|
import com.seuic.scanner.Scanner;
|
||||||
|
|
||||||
|
public class ScannerApiTest {
|
||||||
|
// ……
|
||||||
|
Scanner scanner = ScannerFactory.getScanner(context);
|
||||||
|
// ……
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 打开扫描头
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类 | `Scanner` |
|
||||||
|
| 接口名称 | `open` |
|
||||||
|
| 接口参数 | void |
|
||||||
|
| 接口返回值 | boolean |
|
||||||
|
| 说明 | 返回 `true`,打开扫描头成功;返回 `false`,打开扫描头失败。**注意**:仅在该方法返回为 `true` 时,才可进行扫描头其他操作。 |
|
||||||
|
|
||||||
|
**示例代码:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.scanner.ScannerFactory;
|
||||||
|
import com.seuic.scanner.Scanner;
|
||||||
|
|
||||||
|
public class ScannerApiTest {
|
||||||
|
// ……
|
||||||
|
Scanner scanner = ScannerFactory.getScanner(context);
|
||||||
|
Boolean status = scanner.open();
|
||||||
|
// ……
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 关闭扫描头
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类 | `Scanner` |
|
||||||
|
| 接口名称 | `close` |
|
||||||
|
| 接口参数 | void |
|
||||||
|
| 接口返回值 | void |
|
||||||
|
| 说明 | 释放扫描头资源 |
|
||||||
|
|
||||||
|
**示例代码:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.scanner.ScannerFactory;
|
||||||
|
import com.seuic.scanner.Scanner;
|
||||||
|
|
||||||
|
public class ScannerApiTest {
|
||||||
|
// ……
|
||||||
|
Scanner scanner = ScannerFactory.getScanner(context);
|
||||||
|
Boolean status = scanner.close();
|
||||||
|
// ……
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 开始扫描
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类 | `Scanner` |
|
||||||
|
| 接口名称 | `startScan` |
|
||||||
|
| 接口参数 | void |
|
||||||
|
| 接口返回值 | void |
|
||||||
|
| 说明 | 开始扫描:扫描头出光进入条码读取模式 |
|
||||||
|
|
||||||
|
## 停止扫描
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类 | `Scanner` |
|
||||||
|
| 接口名称 | `stopScan` |
|
||||||
|
| 接口参数 | void |
|
||||||
|
| 接口返回值 | void |
|
||||||
|
| 说明 | 停止扫描,可使扫描头灭光并终止条码读取 |
|
||||||
|
|
||||||
|
## 设置扫描条码回调
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类名 | `Scanner`、`DecodeInfoCallBack`、`DecodeInfo` |
|
||||||
|
| 接口名称 | `setDecodeInfoCallBack` |
|
||||||
|
| 接口参数 | param1:`DecodeInfoCallBack` |
|
||||||
|
| 接口返回值 | void |
|
||||||
|
| 说明 | 设置用户扫描结束后的回调函数,该函数是获取包括条码数据、长度、类型的信息。在设置之前确保实现了 `DecodeInfoCallBack` 中的 `onDecodeComplete` 方法。 |
|
||||||
|
|
||||||
|
**示例代码:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.scanner.ScannerFactory;
|
||||||
|
import com.seuic.scanner.Scanner;
|
||||||
|
import com.seuic.scanner.DecodeInfoCallBack;
|
||||||
|
import com.seuic.scanner.DecodeInfo;
|
||||||
|
|
||||||
|
public class ScannerApiTest implements DecodeInfoCallBack {
|
||||||
|
// ……
|
||||||
|
Scanner scanner = ScannerFactory.getScanner(context);
|
||||||
|
scanner.setDecodeInfoCallBack(this);
|
||||||
|
scanner.startScan();
|
||||||
|
// …….
|
||||||
|
scanner.stopScan();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDecodeComplete(DecodeInfo info) {
|
||||||
|
// ……
|
||||||
|
}
|
||||||
|
// ……
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 启用扫描头
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类 | `Scanner` |
|
||||||
|
| 接口名称 | `enable` |
|
||||||
|
| 接口参数 | void |
|
||||||
|
| 接口返回值 | void |
|
||||||
|
| 说明 | 启用扫描头 |
|
||||||
|
|
||||||
|
**示例代码:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.scanner.ScannerFactory;
|
||||||
|
import com.seuic.scanner.Scanner;
|
||||||
|
|
||||||
|
public class ScannerApiTest {
|
||||||
|
// ……
|
||||||
|
Scanner scanner = ScannerFactory.getScanner(context);
|
||||||
|
scanner.enable();
|
||||||
|
// ……
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 禁用扫描头
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类 | `Scanner` |
|
||||||
|
| 接口名称 | `disable` |
|
||||||
|
| 接口参数 | void |
|
||||||
|
| 接口返回值 | void |
|
||||||
|
| 说明 | 禁用扫描头,该操作完成后,将无法进行扫描操作 |
|
||||||
|
|
||||||
|
**示例代码:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.scanner.ScannerFactory;
|
||||||
|
import com.seuic.scanner.Scanner;
|
||||||
|
|
||||||
|
public class ScannerApiTest {
|
||||||
|
// ……
|
||||||
|
Scanner scanner = ScannerFactory.getScanner(context);
|
||||||
|
scanner.disable();
|
||||||
|
// ……
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 获取条码参数
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类 | `Scanner` |
|
||||||
|
| 接口名称 | `getParams` |
|
||||||
|
| 接口参数 | param1:参数代码。例如:获取 Scan Angle 的值,条码参数便是 `0x02`,具体参数代码参见:条码设置参数 |
|
||||||
|
| 接口返回值 | int 类型,条码参数当前值 |
|
||||||
|
| 说明 | 根据参数代码获取该参数当前的设定值 |
|
||||||
|
|
||||||
|
## 设置条码参数
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类 | `Scanner` |
|
||||||
|
| 接口名称 | `setParams` |
|
||||||
|
| 接口参数 | param1:参数代码。例如:设置 Scan Angle 的值,条码参数便是 `0x02`<br>param2:需要设置的参数值<br>参数代码参见:条码设置参数 |
|
||||||
|
| 接口返回值 | boolean:`true` 设置成功,`false` 设置失败 |
|
||||||
|
| 说明 | 根据参数代码设置扫描参数值 |
|
||||||
|
|
||||||
|
**示例代码:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.scanner.ScannerFactory;
|
||||||
|
import com.seuic.scanner.Scanner;
|
||||||
|
|
||||||
|
public class ScannerApiTest {
|
||||||
|
// ……
|
||||||
|
Scanner scanner = ScannerFactory.getScanner(context);
|
||||||
|
int value = scanner.getParams(0x02);
|
||||||
|
// ……
|
||||||
|
scanner.setParams(0x02, 1);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 获取扫描成功后图像
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类 | `Scanner` |
|
||||||
|
| 接口名称 | `getLastImage` |
|
||||||
|
| 接口参数 | void |
|
||||||
|
| 接口返回值 | `byte[]`:图像数据,width: 832 height: 640,图像格式为 bitmap |
|
||||||
|
| 说明 | 当完成一次成功的扫描后,调用该接口,获取该次用于解码的扫描图像 |
|
||||||
|
|
||||||
|
> **注意:** 该接口仅适用于 A9/A-PAD/A6L-P/CRUISE 中的 S8
|
||||||
|
|
||||||
|
**示例代码:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.scanner.ScannerFactory;
|
||||||
|
import com.seuic.scanner.Scanner;
|
||||||
|
|
||||||
|
public class ScannerApiTest {
|
||||||
|
// ……
|
||||||
|
Scanner scanner = ScannerFactory.getScanner(context);
|
||||||
|
scanner.startScan();
|
||||||
|
// ……
|
||||||
|
byte[] image = scanner.getLastImage();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 开始读取图像
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类 | `Scanner` |
|
||||||
|
| 接口名称 | `startVideo` |
|
||||||
|
| 接口参数 | param1:int 类型,设置超时时间,单位为:ms |
|
||||||
|
| 接口返回值 | `0`:回调函数 `onVideoCallback` 返回成功自动退出无需调用 `stopVideo`<br>`9`:参数无效退出<br>`17`:调用 `stopVideo` 手动退出<br>`6`:取图像失败退出<br>`25`:超时退出<br>`2`:未知错误退出 |
|
||||||
|
| 说明 | 开始读取图像:扫描头开始出光并进入图像读取模式,为阻塞函数,且与 `startScan` 不可同时使用。 |
|
||||||
|
|
||||||
|
> **注意:** 该接口仅适用于 A9/A-PAD/A6L-P/CRUISE 中的 S8
|
||||||
|
|
||||||
|
## 停止读取图像
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类 | `Scanner` |
|
||||||
|
| 接口名称 | `stopVideo` |
|
||||||
|
| 接口参数 | void |
|
||||||
|
| 接口返回值 | void |
|
||||||
|
| 说明 | 扫描头停止出光并终止对图像地读取。 |
|
||||||
|
|
||||||
|
> **注意:** 该接口仅适用于 A9/A-PAD/A6L-P/CRUISE 中的 S8
|
||||||
|
|
||||||
|
## 设置读取图像回调
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类名 | `Scanner`、`VideoCallBack` |
|
||||||
|
| 接口名称 | `setVideoCallBack` |
|
||||||
|
| 接口参数 | param1:`VideoCallBack` |
|
||||||
|
| 接口返回值 | void |
|
||||||
|
| 说明 | 设置用户扫描进入读取图像模式后的回调函数,该接口仅适用于 A9/A-PAD/A6L-P/CRUISE 中的 S8 |
|
||||||
|
|
||||||
|
**示例代码:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.scanner.ScannerFactory;
|
||||||
|
import com.seuic.scanner.Scanner;
|
||||||
|
import com.seuic.scanner.VideoCallBack;
|
||||||
|
|
||||||
|
public class ScannerApiTest implements VideoCallBack {
|
||||||
|
// ……
|
||||||
|
Scanner scanner = ScannerFactory.getScanner(context);
|
||||||
|
scanner.setVideoCallBack(this);
|
||||||
|
scanner.startVideo(3000);
|
||||||
|
// ……
|
||||||
|
scanner.stopVideo();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onVideoCallBack(int width, int height, byte[] img) {
|
||||||
|
// ……
|
||||||
|
}
|
||||||
|
// ……
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 设置扫描头状态回调
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 引用包名 | `com.seuic.scanner` |
|
||||||
|
| 引用类名 | `Scanner`、`StatusCallBack` |
|
||||||
|
| 接口名称 | `setStatusCallBack` |
|
||||||
|
| 接口参数 | param1:`StatusCallBack` 接口类 |
|
||||||
|
| 接口返回值 | void |
|
||||||
|
| 说明 | 设置用户获取当前扫描状态的回调函数,在设置之前务必实现 `StatusCallBack` 中的 `onStatusCallBack` 方法,设置之后有关扫描的状态会自动回调 `onStatusCallBack` 将当前状态反馈给用户 |
|
||||||
|
|
||||||
|
**示例代码:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.scanner.ScannerFactory;
|
||||||
|
import com.seuic.scanner.Scanner;
|
||||||
|
|
||||||
|
public class ScannerApiTest implements StatusCallBack {
|
||||||
|
// ……
|
||||||
|
Scanner scanner = ScannerFactory.getScanner(context);
|
||||||
|
scanner.setStatusCallBack(this);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onStatusCallBack(int status, int info) {
|
||||||
|
// ……
|
||||||
|
}
|
||||||
|
// ……
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 扫描参数介绍
|
||||||
|
|
||||||
|
## 条码设置参数
|
||||||
|
|
||||||
|
| Parameter | Parameter Number (Hex) |
|
||||||
|
| --- | --- |
|
||||||
|
| Laser On Time | 0x01 |
|
||||||
|
| Scan Angle | 0x02 |
|
||||||
|
| Time Out Between Same Symbol | 0x03 |
|
||||||
|
| Linear Code Type Security Levels | 0x04 |
|
||||||
|
| Bi-directional Redundancy | 0x06 |
|
||||||
|
| Aimer/Illumination lighting combinations | 0x07 |
|
||||||
|
| Mobile Phone/Display Mode | 0x08 |
|
||||||
|
| Illumination Power Level | 0x09 |
|
||||||
|
| Decode Time Out | 0x0a |
|
||||||
|
| Adaptive Scanning | 0x0b |
|
||||||
|
| Continue Scan Mode | 0x0c |
|
||||||
|
| Exposure Mode | 0x0d |
|
||||||
|
| Picklist Mode | 0x0e |
|
||||||
|
| Aim Accuracy Level | 0x0f |
|
||||||
|
| GS1 AI Separator | 0x10 |
|
||||||
|
| Transfer Aim ID | 0x11 |
|
||||||
|
| Inverse Mode | 0x12 |
|
||||||
|
| Low Power Delay Time | 0x13 |
|
||||||
|
| Hold Scanning Time Out | 0x14 |
|
||||||
|
| UPC-A | 0x101 |
|
||||||
|
| UPC-E | 0x102 |
|
||||||
|
| UPC-E1 | 0x103 |
|
||||||
|
| EAN-8 | 0x104 |
|
||||||
|
| EAN-13 | 0x105 |
|
||||||
|
| Bookland EAN | 0x106 |
|
||||||
|
| Transmit UPC-A Check Digit | 0x107 |
|
||||||
|
| Transmit UPC-E Check Digit | 0x108 |
|
||||||
|
| Transmit UPC-E1 Check Digit | 0x109 |
|
||||||
|
| Transmit EAN-13 Check Digit | 0x10a |
|
||||||
|
| Transmit EAN-8 Check Digit | 0x10b |
|
||||||
|
| UPC-A Preamble | 0x10c |
|
||||||
|
| UPC-E Preamble | 0x10d |
|
||||||
|
| UPC-E1 Preamble | 0x10e |
|
||||||
|
| Convert UPC-E to A | 0x10f |
|
||||||
|
| Convert UPC-E1 to A | 0x110 |
|
||||||
|
| Convert EAN-8 to 13 | 0x111 |
|
||||||
|
| UCC Coupon Extended Code | 0x112 |
|
||||||
|
| UPC-E Expand | 0x113 |
|
||||||
|
| UPC-A 2 Char Addenda | 0x114 |
|
||||||
|
| UPC-A 5 Char Addenda | 0x115 |
|
||||||
|
| UPC-E 2 Char Addenda | 0x116 |
|
||||||
|
| UPC-E 5 Char Addenda | 0x117 |
|
||||||
|
| EAN13 2 Char Addenda | 0x118 |
|
||||||
|
| EAN13 5 Char Addenda | 0x119 |
|
||||||
|
| EAN8 2 Char Addenda | 0x11a |
|
||||||
|
| EAN8 5 Char Addenda | 0x11b |
|
||||||
|
| Code 128 | 0x121 |
|
||||||
|
| Code 128 Minimum Length | 0x122 |
|
||||||
|
| Code 128 Maximum Length | 0x123 |
|
||||||
|
| ISBT 128 | 0x124 |
|
||||||
|
| GS1-128 | 0x125 |
|
||||||
|
| ISBT 128 Predefined Concatenation Sequences On/Off | 0x126 |
|
||||||
|
| Code 39 | 0x131 |
|
||||||
|
| Trioptic Code 39 | 0x132 |
|
||||||
|
| Code 39 Full ASCII | 0x133 |
|
||||||
|
| Convert Code 39 to Code 32 | 0x134 |
|
||||||
|
| Code 32 Prefix | 0x135 |
|
||||||
|
| Code 39 Minimum Length | 0x136 |
|
||||||
|
| Code 39 Maximum Length | 0x137 |
|
||||||
|
| Transmit Code 39 Check Digit | 0x138 |
|
||||||
|
| Code 39 Check Digit Verification | 0x139 |
|
||||||
|
| Transmit Code 39 Start/Stop Characters | 0x13a |
|
||||||
|
| Code 39 Quiet Zone | 0x13b |
|
||||||
|
| Code 93 | 0x141 |
|
||||||
|
| Code 93 Minimum Length | 0x142 |
|
||||||
|
| Code 93 Maximum Length | 0x143 |
|
||||||
|
| Code 11 | 0x151 |
|
||||||
|
| Code 11 Minimum Length | 0x152 |
|
||||||
|
| Code 11 Maximum Length | 0x153 |
|
||||||
|
| Code 11 Check Digit Verification | 0x154 |
|
||||||
|
| Transmit Code 11 Check Digit | 0x155 |
|
||||||
|
| Interleaved 2 of 5 | 0x161 |
|
||||||
|
| Interleaved 2 of 5 Minimum Length | 0x162 |
|
||||||
|
| Interleaved 2 of 5 Maximum Length | 0x163 |
|
||||||
|
| Discrete 2 of 5 | 0x171 |
|
||||||
|
| Discrete 2 of 5 Minimum Length | 0x172 |
|
||||||
|
| Discrete 2 of 5 Maximum Length | 0x173 |
|
||||||
|
| Chinese 2 of 5 | 0x181 |
|
||||||
|
| Chinese 2 of 5 Minimum Length | 0x182 |
|
||||||
|
| Chinese 2 of 5 Maximum Length | 0x183 |
|
||||||
|
| Codabar | 0x191 |
|
||||||
|
| Codabar Minimum Length | 0x192 |
|
||||||
|
| Codabar Maximum Length | 0x193 |
|
||||||
|
| Transmit Codabar Start/Stop Characters | 0x194 |
|
||||||
|
| MSI | 0x201 |
|
||||||
|
| MSI Minimum Length | 0x202 |
|
||||||
|
| MSI Maximum Length | 0x203 |
|
||||||
|
| RSS 14 | 0x211 |
|
||||||
|
| RSS limit | 0x212 |
|
||||||
|
| RSS expanded | 0x213 |
|
||||||
|
| Convert RSS to UPC/EAN | 0x214 |
|
||||||
|
| QR Code | 0x221 |
|
||||||
|
| QR Code Minimum Length | 0x222 |
|
||||||
|
| QR Code Maximum Length | 0x223 |
|
||||||
|
| QR Inverse | 0x224 |
|
||||||
|
| MicroQR | 0x225 |
|
||||||
|
| Data Matrix | 0x231 |
|
||||||
|
| Data Matrix Minimum Length | 0x232 |
|
||||||
|
| Data Matrix Maximum Length | 0x233 |
|
||||||
|
| Data Matrix Inverse | 0x234 |
|
||||||
|
| Data Matrix Decode Mirror Images | 0x235 |
|
||||||
|
| China Post | 0x241 |
|
||||||
|
| China Post Minimum Length | 0x242 |
|
||||||
|
| China Post Maximum Length | 0x243 |
|
||||||
|
| Matrix 2 of 5 | 0x251 |
|
||||||
|
| Matrix 2 of 5 Minimum Length | 0x252 |
|
||||||
|
| Matrix 2 of 5 Maximum Length | 0x253 |
|
||||||
|
| US Postnet | 0x261 |
|
||||||
|
| US Planet | 0x262 |
|
||||||
|
| British Post | 0x263 |
|
||||||
|
| Japanese Post | 0x264 |
|
||||||
|
| Australian Post | 0x265 |
|
||||||
|
| UPU FICS Postal | 0x266 |
|
||||||
|
| USPS 4CB/One Code/Intelligent Mail | 0x267 |
|
||||||
|
| KIX(Netherlands) Post | 0x268 |
|
||||||
|
| Transmit US Postal Check Digit | 0x269 |
|
||||||
|
| Transmit Planet Check Digit | 0x26a |
|
||||||
|
| Korean 2 of 5 | 0x271 |
|
||||||
|
| EAN UCC Composite | 0x2b1 |
|
||||||
|
| EAN UCC Composite Minimum Length | 0x2b2 |
|
||||||
|
| EAN UCC Composite Maximum Length | 0x2b3 |
|
||||||
|
| PDF417 | 0x2c1 |
|
||||||
|
| PDF417 Minimum Length | 0x2c2 |
|
||||||
|
| PDF417 Maximum Length | 0x2c3 |
|
||||||
|
| Micro PDF417 | 0x2d1 |
|
||||||
|
| Micro PDF417 Minimum Length | 0x2d2 |
|
||||||
|
| Micro PDF417 Maximum Length | 0x2d3 |
|
||||||
|
| MaxiCode | 0x2e1 |
|
||||||
|
| MaxiCode Minimum Length | 0x2e2 |
|
||||||
|
| MaxiCode Maximum Length | 0x2e3 |
|
||||||
|
| Aztec Code | 0x2f1 |
|
||||||
|
| Aztec Code Minimum Length | 0x2f2 |
|
||||||
|
| Aztec Code Maximum Length | 0x2f3 |
|
||||||
|
| Aztec Inverse | 0x2f4 |
|
||||||
|
| Codablock | 0x301 |
|
||||||
|
| Codablock Minimum Length | 0x302 |
|
||||||
|
| Codablock Maximum Length | 0x303 |
|
||||||
|
| Telepen | 0x311 |
|
||||||
|
| Telepen Minimum Length | 0x312 |
|
||||||
|
| Telepen Maximum Length | 0x313 |
|
||||||
|
| Telepen Old Syle Mode | 0x314 |
|
||||||
|
| Set Default Parameter | 0x321 |
|
||||||
|
| Set Code Charset | 0x322 |
|
||||||
|
| OCR | 0x331 |
|
||||||
|
| Set OCR Template | 0x332 |
|
||||||
|
| Composite CC-C | 0x341 |
|
||||||
|
| Composite CC-A/B | 0x342 |
|
||||||
|
| Composite TLC-39 | 0x343 |
|
||||||
|
| UPC Composite | 0x344 |
|
||||||
|
| Transmit Code ID Character | 0x351 |
|
||||||
|
| Grid Matrix | 0x361 |
|
||||||
|
|
||||||
|
> 各扫描头参数详细信息见:扫描头条码参数汇总(仅供内部使用)
|
||||||
|
|
||||||
|
## 扫描状态参数
|
||||||
|
|
||||||
|
| Status | Status Number (Hex) |
|
||||||
|
| --- | --- |
|
||||||
|
| Decode Complete | 0x00 |
|
||||||
|
| Decode Time Out | 0x01 |
|
||||||
|
| Decode has been Canceled | 0x02 |
|
||||||
|
| Some Errors Happened | 0x03 |
|
||||||
|
| Decode Event | 0x04 |
|
||||||
449
docs/Android扫描服务设置.md
Normal file
449
docs/Android扫描服务设置.md
Normal file
@@ -0,0 +1,449 @@
|
|||||||
|
# Android 扫描服务接口设置
|
||||||
|
|
||||||
|
> 江苏东大集成电路系统工程技术有限公司
|
||||||
|
> www.seuic.com
|
||||||
|
|
||||||
|
![SEUIC 东集 Logo 图片占位符]
|
||||||
|
|
||||||
|
> **强烈建议修改广播名称**
|
||||||
|
|
||||||
|
## 修订记录
|
||||||
|
|
||||||
|
| 版本号 | 修订日期 | 修订内容 | 修订人员 |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1.0 | 2015/09/21 | 建立本文档 | 徐良伟 |
|
||||||
|
| 1.1 | 2016/11/07 | 增加过滤条码首尾空格选项 | 罗涛 |
|
||||||
|
| 1.2 | 2017/03/20 | 扫描特殊功能实现演示 | 罗涛 |
|
||||||
|
| 1.3 | 2017/05/31 | 加入启用/禁用扫描头以及过滤不可见字符广播接口介绍 | 罗涛 |
|
||||||
|
| 1.4 | 2017/07/18 | 修正条码参数设置广播接口 | 罗涛 |
|
||||||
|
| 1.5 | 2018/4/3 | 加入开始/停止扫描广播接口 | 罗涛 |
|
||||||
|
|
||||||
|
## 目录
|
||||||
|
|
||||||
|
- 概述
|
||||||
|
- 硬件平台
|
||||||
|
- 软件平台
|
||||||
|
- 适用对象
|
||||||
|
- 扫描服务应用设置
|
||||||
|
- 扫描声音开关
|
||||||
|
- 振动开关
|
||||||
|
- 连续扫描开关
|
||||||
|
- 时间间隔设置
|
||||||
|
- 条码前缀参数设置
|
||||||
|
- 条码后缀参数设置
|
||||||
|
- 开机自启动设置
|
||||||
|
- 条码结束符设置
|
||||||
|
- 条码发送方式
|
||||||
|
- 条码的广播设置
|
||||||
|
- 过滤首尾空格开关
|
||||||
|
- 条码参数设置
|
||||||
|
- 启用/禁用扫描头
|
||||||
|
- 过滤不可见字符
|
||||||
|
- 开始扫描
|
||||||
|
- 停止扫描
|
||||||
|
- 扫描特殊功能实现
|
||||||
|
- 持续出光模式设置
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 概述
|
||||||
|
|
||||||
|
东集提供的设备上内置了扫描服务,也提供了相应的设置软件。但部分客户有在自己的应用中定制扫描服务的需求。本文档介绍了如何通过接口来设置扫描服务的部分选项,以便帮助用户更灵活地使用我们的设备。
|
||||||
|
|
||||||
|
## 硬件平台
|
||||||
|
|
||||||
|
SDK 适用于以下终端设备:
|
||||||
|
|
||||||
|
- D500
|
||||||
|
- D510
|
||||||
|
- D330S
|
||||||
|
- D500P
|
||||||
|
- D510P
|
||||||
|
- D330P
|
||||||
|
- D700
|
||||||
|
- D500F
|
||||||
|
- D700P
|
||||||
|
|
||||||
|
具体使用范围在函数接口说明中指明,若无指明表示都支持。
|
||||||
|
|
||||||
|
## 软件平台
|
||||||
|
|
||||||
|
SDK 基于 Android 4.3、Android 4.4、Android 5.1、Android 7.1 版本,支持 Eclipse、Android Studio 开发工具。
|
||||||
|
|
||||||
|
## 适用对象
|
||||||
|
|
||||||
|
希望在自己的应用中定制扫描服务的开发人员。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 扫描服务应用设置
|
||||||
|
|
||||||
|
扫描服务应用设置支持以下功能的设置:
|
||||||
|
|
||||||
|
- 扫描声音开关
|
||||||
|
- 振动开关
|
||||||
|
- 连续扫描开关
|
||||||
|
- 时间间隔设置
|
||||||
|
- 条码前缀参数设置
|
||||||
|
- 条码后缀参数设置
|
||||||
|
- 开机自启动设置
|
||||||
|
- 条码结束符设置
|
||||||
|
- 条码发送方式
|
||||||
|
- 条码的广播设置
|
||||||
|
- 过滤条码首尾空格开关
|
||||||
|
- 条码参数设置
|
||||||
|
- 启用/禁用扫描头
|
||||||
|
- 过滤不可见字符
|
||||||
|
- 开始扫描
|
||||||
|
- 停止扫描
|
||||||
|
|
||||||
|
**版本需求:** 扫描应用 1.0.67 及以后,部分设置 1.0.69 及以后。
|
||||||
|
|
||||||
|
- **1.0.67 支持**
|
||||||
|
- 扫描声音开关
|
||||||
|
- 振动开关
|
||||||
|
- 开机自启动设置
|
||||||
|
- 条码结束符设置
|
||||||
|
- 条码发送方式
|
||||||
|
- 条码的广播设置
|
||||||
|
- 启用/禁用扫描头
|
||||||
|
|
||||||
|
- **1.0.69 支持**
|
||||||
|
- 连续扫描开关
|
||||||
|
- 时间间隔设置
|
||||||
|
- 条码前缀参数设置
|
||||||
|
- 条码后缀参数设置
|
||||||
|
- 条码参数设置
|
||||||
|
|
||||||
|
- **1.1.3 支持**
|
||||||
|
- 过滤条码首尾空格开关
|
||||||
|
- 过滤不可见字符
|
||||||
|
|
||||||
|
> **备注:** 支持在一条广播中进行多项设置。
|
||||||
|
|
||||||
|
## 扫描声音开关
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `sound_play` |
|
||||||
|
| 取值 | boolean 型,true 或 false |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("sound_play", true);
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 振动开关
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `viberate` |
|
||||||
|
| 取值 | boolean 型,true 或 false |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("viberate", false);
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 连续扫描开关
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `scan_continue` |
|
||||||
|
| 取值 | boolean 型,true 或 false |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("scan_continue", true);
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 时间间隔设置
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `interval` |
|
||||||
|
| 取值 | int 型 |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("interval", 3000);
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 条码前缀参数设置
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `prefix` |
|
||||||
|
| 取值 | String 型,默认为 `" "` |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("prefix", "");
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 条码后缀参数设置
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `suffix` |
|
||||||
|
| 取值 | String 型,默认为 `" "` |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("suffix", "");
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 开机自启动设置
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `boot_start` |
|
||||||
|
| 取值 | boolean 型,true 或 false |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("boot_start", true);
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 条码结束符设置
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `endchar` |
|
||||||
|
| 取值 | 在条码后面附加的结束符,字符串类型,注意大小写,支持以下几种:<br> `"ENTER"`:回车<br> `"TAB"`:TAB<br> `"SPACE"`:空格<br> `"NONE"`:无结束符 |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("endchar", "ENTER");
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 结束符以 Enter 键发送
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `end_char_on_emu` |
|
||||||
|
| 取值 | 结束符以 Enter 键发送:模拟按键模式下 |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("end_char_on_emu", true);
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 条码发送方式
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `barcode_send_mode` |
|
||||||
|
| 取值 | 扫描服务扫描到条码后的发送方式,字符串类型,注意大小写,支持以下几种:<br> `"FOCUS"`:焦点录入<br> `"BROADCAST"`:广播<br> `"EMUKEY"`:模拟按键<br> `"CLIPBOARD"`:剪贴板 |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("barcode_send_mode", "BROADCAST");
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 条码的广播设置
|
||||||
|
|
||||||
|
**条码广播名称**
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `action_barcode_broadcast` |
|
||||||
|
| 取值 | 字符串类型,默认是:`"com.android.server.scannerservice.broadcast"` |
|
||||||
|
|
||||||
|
**条码键值名称**
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `key_barcode_broadcast` |
|
||||||
|
| 取值 | 字符串类型,默认是:`"scannerdata"` |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("action_barcode_broadcast", "com.android.server.scannerservice.broadcast");
|
||||||
|
intent.putExtra("key_barcode_broadcast", "scannerdata");
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 过滤首尾空格开关
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `filter_prefix_suffix_blank` |
|
||||||
|
| 取值 | boolean 型,true 或 false |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("filter_prefix_suffix_blank", true);
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 条码参数设置
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.seuic.scanner.action.PARAM_SETTINGS` |
|
||||||
|
| extra1 | `number` |
|
||||||
|
| 取值 | int 型 |
|
||||||
|
| extra2 | `value` |
|
||||||
|
| 取值 | int 型 |
|
||||||
|
|
||||||
|
> 有关扫描参数详情请见:[Android 扫描接口文档(1.0)](./Android扫描接口文档.md)
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.seuic.scanner.action.PARAM_SETTINGS");
|
||||||
|
intent.putExtra("number", 0x01);
|
||||||
|
intent.putExtra("value", 30);
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 启用/禁用扫描头
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.ENABLED` |
|
||||||
|
| extra | `enabled` |
|
||||||
|
| 取值 | boolean 型,true 或 false |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
启用扫描头:
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.ENABLED");
|
||||||
|
intent.putExtra("enabled", true);
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
禁用扫描头:
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.ENABLED");
|
||||||
|
intent.putExtra("enabled", false);
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 过滤不可见字符
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.android.scanner.service_settings` |
|
||||||
|
| extra | `filter_invisible_chars` |
|
||||||
|
| 取值 | boolean 型,true 或 false |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("filter_invisible_chars", true);
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 开始扫描
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.scan.onStartScan` |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
开始出光扫描:
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.scan.onStartScan");
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 停止扫描
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| action | `com.scan.onEndScan` |
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
停止出光扫描:
|
||||||
|
|
||||||
|
```java
|
||||||
|
Intent intent = new Intent("com.scan.onEndScan");
|
||||||
|
sendBroadcast(intent);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 相关常量定义
|
||||||
|
|
||||||
|
```java
|
||||||
|
private final String TYPE_KEYUP_TO_STOP_SCAN = "keyup_to_stop_scan"; // 抬起停止扫描
|
||||||
|
private final String TYPE_ENDCHAR_ON_EMU = "end_char_on_emu"; // 结束符以模拟按键方式发送
|
||||||
|
private final String TYPE_ENTER_EVENT = "end_event"; // 默认广播时条码后添加回车事件
|
||||||
|
private final String TYPE_FILTER_INVISIBLE_CHARS = "filter_invisible_chars"; // 过滤不可见字符
|
||||||
|
private final String TYPE_FILTER_PREFIX_SUFFIX_BLANK = "filter_prefix_suffix_blank"; // 过滤首尾空格
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 扫描特殊功能实现
|
||||||
|
|
||||||
|
## 持续出光模式设置
|
||||||
|
|
||||||
|
**示例代码:**
|
||||||
|
|
||||||
|
```java
|
||||||
|
// 将连续扫描打开
|
||||||
|
Intent intent = new Intent("com.android.scanner.service_settings");
|
||||||
|
intent.putExtra("scan_continue", true);
|
||||||
|
sendBroadcast(intent);
|
||||||
|
|
||||||
|
// 设置条码参数持续出光为开
|
||||||
|
Intent intentParam = new Intent("com.android.scanner.PARAM_SETTINGS");
|
||||||
|
intent.putExtra("number", 0x0c);
|
||||||
|
intent.putExtra("value", 1);
|
||||||
|
sendBroadcast(intentParam);
|
||||||
|
```
|
||||||
663
docs/D500_Android_SDK使用说明书.md
Normal file
663
docs/D500_Android_SDK使用说明书.md
Normal file
@@ -0,0 +1,663 @@
|
|||||||
|
# D500 Android SDK 使用说明书
|
||||||
|
|
||||||
|
> 江苏东大集成电路系统工程技术有限公司
|
||||||
|
> www.seuic.com
|
||||||
|
|
||||||
|
![SEUIC 东集 Logo 图片占位符]
|
||||||
|
|
||||||
|
## 修订记录
|
||||||
|
|
||||||
|
| 版本号 | 修订日期 | 修订内容 | 修订人员 |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 0.0 | 2014/08/05 | 建立本文档 | 钱进 |
|
||||||
|
| 0.1 | 2014/08/05 | 加入 keypad、touch 接口的说明 | 张松 |
|
||||||
|
| 0.2 | 2014/08/08 | 更改文档模板,并按模板重写文档 | 徐良伟 |
|
||||||
|
| 1.0 | 2014/08/09 | 加入"系统包的使用",并按 touch 新接口修改文档 | 徐良伟 |
|
||||||
|
| 1.1 | 2014/09/02 | 加入 touch 新的接口说明 加入 misc 接口 | 魏启运 |
|
||||||
|
| 1.2 | 2015/04/29 | 在 misc 接口中增加启用/禁用状态栏下拉的接口,增加卸载/加载外置 SD 卡的接口 | 张松 |
|
||||||
|
| 1.3 | 2017/03/16 | 在 misc 接口中添加 Zigbee 及 Fingerprint 的访问接口 | 钱进 |
|
||||||
|
| 1.4 | 2017/03/29 | 更新 Zigbee 和 Fingerprint 接口 | 徐良伟 |
|
||||||
|
|
||||||
|
## 目录
|
||||||
|
|
||||||
|
- 概述
|
||||||
|
- 硬件平台
|
||||||
|
- 软件平台
|
||||||
|
- 适用对象
|
||||||
|
- 系统包的使用
|
||||||
|
- 触摸屏接口
|
||||||
|
- TouchService 类
|
||||||
|
- 键盘接口
|
||||||
|
- KeypadService 类
|
||||||
|
- Misc 接口
|
||||||
|
- Misc 类
|
||||||
|
- Zigbee 类
|
||||||
|
- Fingerprint 类
|
||||||
|
- Manager 类
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 概述
|
||||||
|
|
||||||
|
本文档介绍了 D500 上提供的设备相关的包的使用说明,以便帮助用户更好的使用终端产品提供的特殊功能。
|
||||||
|
|
||||||
|
## 硬件平台
|
||||||
|
|
||||||
|
SDK 适用于以下终端设备:
|
||||||
|
|
||||||
|
- D500
|
||||||
|
- D510
|
||||||
|
- D330S
|
||||||
|
|
||||||
|
具体使用范围在函数接口说明中指明,若无指明表示都支持。
|
||||||
|
|
||||||
|
## 软件平台
|
||||||
|
|
||||||
|
SDK 基于 Android 4.3 版本,支持 eclipse 开发工具。
|
||||||
|
|
||||||
|
## 适用对象
|
||||||
|
|
||||||
|
除了 Android 的标准功能外,希望用到设备提供的增值功能的开发人员。这部分增值功能包括一维扫描、二维扫描、键盘特殊设置、触摸特殊设置等实用功能。
|
||||||
|
|
||||||
|
## 系统包的使用
|
||||||
|
|
||||||
|
如果接口中标明是系统包,表明该包是内置到系统中的,无需将该包加入到 apk 中。下面以键盘接口为例,来说明如何在 eclipse 中使用系统包。
|
||||||
|
|
||||||
|
- 在工程目录下建一个 `libsref` 目录(目录名称可以任意指定),将 `keypad.jar` 拷贝到此目录下。
|
||||||
|
- 在 eclipse 中选中工程,在菜单中选择 Project → Properties → Java Build Path,点击 **Add External JARS...** 按钮,选择刚才的 `keypad.jar`。这时可以在工程视图的 Referenced Libraries 下看到刚才我们引用的 `keypad.jar`,展开可以看到所有 `keypad.jar` 提供的包、类、函数、变量。
|
||||||
|
- `AndroidManifest.xml` 中使用 `uses-library` 用包名来标示 `keypad.jar` 是引用包。
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<application
|
||||||
|
……
|
||||||
|
<uses-library
|
||||||
|
android:name="com.seuic.keypad" />
|
||||||
|
……
|
||||||
|
</application>
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 触摸屏接口
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 包名 | `com.seuic.touch` |
|
||||||
|
| 包文件 | `touch.jar` |
|
||||||
|
| 系统包 | 是 |
|
||||||
|
| 包含的类 | `TouchService` |
|
||||||
|
| 作用 | 提供触摸屏相关的控制接口 |
|
||||||
|
|
||||||
|
## TouchService 类
|
||||||
|
|
||||||
|
### 使用方法
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.touch.TouchService;
|
||||||
|
TouchService touch = TouchService.getInstance();
|
||||||
|
```
|
||||||
|
|
||||||
|
### 函数接口
|
||||||
|
|
||||||
|
| 函数 | 说明 |
|
||||||
|
| --- | --- |
|
||||||
|
| `getGloveMode` | 获取当前手套模式开关状态 |
|
||||||
|
| `setGloveMode` | 设置手套模式开关 |
|
||||||
|
| `getTouchEnabled` | 获取当前触屏使能状态 |
|
||||||
|
| `setTouchEnabled` | 设置触摸屏使能开关 |
|
||||||
|
| `getVirKeyDisabled` | 获取虚拟按键屏蔽状态(仅 D500 支持) |
|
||||||
|
| `setVirKeyDisabled` | 设置虚拟按键屏蔽状态(仅 D500 支持) |
|
||||||
|
|
||||||
|
#### 1. 获取当前手套模式开关状态
|
||||||
|
|
||||||
|
```java
|
||||||
|
int getGloveMode()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 返回手套模式状态,有以下几种:
|
||||||
|
|
||||||
|
| 状态 | 值 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `MODE_GLOVE_OFF` | 0 | 手套模式关闭 |
|
||||||
|
| `MODE_GLOVE_ON` | 1 | 手套模式打开 |
|
||||||
|
| | <0 | 触摸接口不正常,或该设备不支持手套模式设置 |
|
||||||
|
|
||||||
|
#### 2. 设置手套模式开关
|
||||||
|
|
||||||
|
```java
|
||||||
|
boolean setGloveMode(int mode)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
- `mode`:手套模式状态,见 `getGloveMode()` 函数返回值的说明。
|
||||||
|
|
||||||
|
**返回值:** 返回 `true` 表示成功,`false` 表示失败。
|
||||||
|
|
||||||
|
#### 3. 获取当前触摸屏使能状态
|
||||||
|
|
||||||
|
```java
|
||||||
|
int getTouchEnable()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 返回触摸屏使能状态,有以下几种:
|
||||||
|
|
||||||
|
| 状态 | 值 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `TOUCH_ENABLED_OFF` | 0 | 触摸屏处于锁屏状态 |
|
||||||
|
| `TOUCH_ENABLED_ON` | 1 | 触摸屏处于正常使用状态 |
|
||||||
|
| | <0 | 触摸接口不正常,或该设备不支持触摸屏使能设置 |
|
||||||
|
|
||||||
|
#### 4. 设置触摸屏使能开关
|
||||||
|
|
||||||
|
```java
|
||||||
|
boolean setTouchEnabled(int enable, Context context)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
- `enable`:触摸屏使能状态,见 `getTouchEnabled()` 函数返回值的说明。
|
||||||
|
- `context`:调用者的上下文,用于向系统广播锁屏通知,以便在通知栏显示当前锁屏状态。
|
||||||
|
|
||||||
|
**返回值:** 返回 `true` 表示成功,`false` 表示失败。
|
||||||
|
|
||||||
|
#### 5. 获取虚拟按键屏蔽状态
|
||||||
|
|
||||||
|
```java
|
||||||
|
int getVirKeyDisabled()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 返回虚拟按键屏蔽状态,有以下几种:
|
||||||
|
|
||||||
|
| 状态 | 值 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `VKEY1_DISABLE_MASK` | `1 << 0` | 虚拟键一被屏蔽 |
|
||||||
|
| `VKEY2_DISABLE_MASK` | `1 << 1` | 虚拟键二被屏蔽 |
|
||||||
|
| `VKEY3_DISABLE_MASK` | `1 << 2` | 虚拟键三键被屏蔽 |
|
||||||
|
| `VKEY_ALL_DISABLE_MASK` | `0x7` | 所有虚拟按键均屏蔽 |
|
||||||
|
| | 0 | 所有虚拟按键未被屏蔽 |
|
||||||
|
| | <0 | 触摸接口不正常,或设备不支持触摸屏设置 |
|
||||||
|
|
||||||
|
#### 6. 设置虚拟按键屏蔽状态
|
||||||
|
|
||||||
|
```java
|
||||||
|
boolean setVirKeyDisabled(int disableMask)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
- `disableMask`:虚拟按键屏蔽状态,见 `getVirKeyDisabled()` 函数返回值的说明。
|
||||||
|
|
||||||
|
**返回值:** 返回 `true` 表示成功,`false` 表示失败。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 键盘接口
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 包名 | `com.seuic.keypad` |
|
||||||
|
| 包文件 | `keypad.jar` |
|
||||||
|
| 系统包 | 是 |
|
||||||
|
| 包含的类 | `KeypadService` |
|
||||||
|
| 作用 | 提供键盘相关的控制接口 |
|
||||||
|
|
||||||
|
## KeypadService 类
|
||||||
|
|
||||||
|
### 使用方法
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.keypad.KeypadService;
|
||||||
|
KeypadService keypad = KeypadService.getInstance();
|
||||||
|
```
|
||||||
|
|
||||||
|
### 函数接口
|
||||||
|
|
||||||
|
| 函数 | 说明 |
|
||||||
|
| --- | --- |
|
||||||
|
| `getMode` | 获取键盘模式(仅 D500 支持) |
|
||||||
|
| `setMode` | 设置键盘模式(仅 D500 支持) |
|
||||||
|
|
||||||
|
#### 1. 获取键盘模式
|
||||||
|
|
||||||
|
```java
|
||||||
|
int getMode()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 返回键盘功能键模式,有以下几种:
|
||||||
|
|
||||||
|
| 状态 | 值 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `MODE_NORMAL` | 0 | 标准模式。根据当前 Num、Fn 的状态灯输出数字或功能键。 |
|
||||||
|
| `MODE_STICK_ONCE` | 1 | Fn 键只粘滞一次模式。当处于 Fn 状态时,按一下按键输出功能键,然后自动切换到 Num 模式。 |
|
||||||
|
| | <0 | 键盘接口不正常,或该设备不支持键盘模式设置 |
|
||||||
|
|
||||||
|
#### 2. 设置键盘模式
|
||||||
|
|
||||||
|
```java
|
||||||
|
boolean setMode(int mode)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
- `mode`:键盘模式状态,见 `getMode()` 函数返回值的说明。
|
||||||
|
|
||||||
|
**返回值:** 返回 `true` 表示成功,`false` 表示失败。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Misc 接口
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 包名 | `com.seuic.misc` |
|
||||||
|
| 包文件 | `misc.jar` |
|
||||||
|
| 系统包 | 是 |
|
||||||
|
| 包含的类 | `Misc` |
|
||||||
|
| 作用 | 提供系统其它接口 |
|
||||||
|
|
||||||
|
## Misc 类
|
||||||
|
|
||||||
|
### 使用方法
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.misc.Misc;
|
||||||
|
Misc misc = new Misc();
|
||||||
|
```
|
||||||
|
|
||||||
|
### 函数接口
|
||||||
|
|
||||||
|
| 函数 | 说明 |
|
||||||
|
| --- | --- |
|
||||||
|
| `getSN` | 获取设备 SN |
|
||||||
|
| `getStatusBarEnabled` | 获取系统状态栏是否允许下拉的状态 |
|
||||||
|
| `setStatusBarEnabled` | 设置系统状态栏是否允许下拉 |
|
||||||
|
| `getExtSDCardMounted` | 获取外置 SD 卡是否卸载 |
|
||||||
|
| `setExtSDCardMounted` | 设置外置 SD 卡卸载或加载 |
|
||||||
|
| `getCustomId` | 获取用户自定义序列号。仅支持 D700_V1.6.0 及之后版本,D700C_V1.2.0 及之后版本,D700P_V1.1.2 及之后版本。 |
|
||||||
|
|
||||||
|
#### 1. 获取设备 SN
|
||||||
|
|
||||||
|
```java
|
||||||
|
String getSN()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 返回厂家定义的 SN 号,有以下几种:
|
||||||
|
|
||||||
|
| 状态 | 值 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| null | null | 获取 SN 失败 |
|
||||||
|
| String 类型 | String 类型 | 获取成功 |
|
||||||
|
|
||||||
|
#### 2. 获取系统状态栏是否允许下拉的状态
|
||||||
|
|
||||||
|
```java
|
||||||
|
int getStatusBarEnabled(Context context)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
- `context`:上下文。
|
||||||
|
|
||||||
|
**返回值:** 返回状态栏是否允许下拉的状态,如下:
|
||||||
|
|
||||||
|
| 状态 | 值 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `STATUSBAR_DISABLED` | 0 | 系统状态栏不允许下拉。 |
|
||||||
|
| `STATUSBAR_ENABLED` | 1 | 系统状态栏允许下拉。 |
|
||||||
|
| | <0 | 接口不正常,或该设备不支持系统状态栏的设置。 |
|
||||||
|
|
||||||
|
#### 3. 设置系统状态栏是否允许下拉
|
||||||
|
|
||||||
|
```java
|
||||||
|
void setStatusBarEnabled(Context context, int enable)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
- `context`:上下文。
|
||||||
|
- `enable`:状态栏是否允许下拉,取值见 `getStatusBarEnabled()` 返回值。
|
||||||
|
|
||||||
|
**返回值:** 无
|
||||||
|
|
||||||
|
#### 4. 获取外置 SD 卡是否卸载
|
||||||
|
|
||||||
|
```java
|
||||||
|
int getExtSDCardMounted(Context context)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
- `context`:上下文。
|
||||||
|
|
||||||
|
**返回值:** 返回外置 SD 卡的状态,如下:
|
||||||
|
|
||||||
|
| 状态 | 值 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `EXT_SDCARD_UNMOUNTED` | 0 | 外置 SD 卡卸载。 |
|
||||||
|
| `EXT_SDCARD_MOUNTED` | 1 | 外置 SD 卡未卸载。 |
|
||||||
|
| | <0 | 接口不正常,或该设备不支持外置 SD 卡的卸载。 |
|
||||||
|
|
||||||
|
#### 5. 设置外置 SD 卡卸载或装载
|
||||||
|
|
||||||
|
```java
|
||||||
|
void setExtSDCardMounted(Context context, int enable)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
- `context`:上下文。
|
||||||
|
- `enable`:设置外置 SD 卡的卸载加载,取值见 `getExtSDCardMounted()` 返回值。
|
||||||
|
|
||||||
|
**返回值:** 无
|
||||||
|
|
||||||
|
#### 6. 获取用户自定义序列号
|
||||||
|
|
||||||
|
```java
|
||||||
|
String getCustomId()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 返回用户自定义序列号,**仅 D700 系列支持,其它项目请勿调用此函数,会异常**。
|
||||||
|
|
||||||
|
返回值有以下几种:
|
||||||
|
|
||||||
|
| 状态 | 值 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| null | null | 获取用户自定义序列号失败 |
|
||||||
|
| String 类型 | String 类型 | 获取成功 |
|
||||||
|
|
||||||
|
## Zigbee 类
|
||||||
|
|
||||||
|
### 使用方法
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.misc.Zigbee;
|
||||||
|
Zigbee zigbee = new Zigbee();
|
||||||
|
```
|
||||||
|
|
||||||
|
### 操作流程
|
||||||
|
|
||||||
|
参考流程:`open` → `powerOn` → `read & write` → `powerOff` → `close`
|
||||||
|
|
||||||
|
该类提供的函数可以分为两组,一组是用于模块的上电/断电,一组用于串口的操作。模块的上电和串口打开谁先谁后并没有严格的顺序,视具体设备要求。
|
||||||
|
|
||||||
|
### 函数接口
|
||||||
|
|
||||||
|
| 函数 | 说明 |
|
||||||
|
| --- | --- |
|
||||||
|
| `getDeviceName` | 获取设备名称 |
|
||||||
|
| `powerOn` | 设备上电 |
|
||||||
|
| `powerOff` | 设备断电 |
|
||||||
|
| `open` | 打开设备,包括打开串口,不包括上电 |
|
||||||
|
| `close` | 关闭设备,包括关闭串口,不包括断电 |
|
||||||
|
| `read` | 封装对设备的读操作 |
|
||||||
|
| `write` | 封装对设备的写操作 |
|
||||||
|
|
||||||
|
#### 1. 获取设备名称
|
||||||
|
|
||||||
|
```java
|
||||||
|
public String getDeviceName()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 该设备连接的串口设备文件,如 `/dev/ttyUART0`
|
||||||
|
|
||||||
|
#### 2. 设备上电
|
||||||
|
|
||||||
|
```java
|
||||||
|
public void powerOn()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 无
|
||||||
|
|
||||||
|
#### 3. 设备断电
|
||||||
|
|
||||||
|
```java
|
||||||
|
public void powerOff()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 无
|
||||||
|
|
||||||
|
#### 4. 打开设备,包括打开串口
|
||||||
|
|
||||||
|
```java
|
||||||
|
public boolean open()
|
||||||
|
public boolean open(int baudrate)
|
||||||
|
public boolean open(int baudrate, int dataBits, int stopBits, int parity)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
- `baudrate`:波特率,如 `115200`
|
||||||
|
- `dataBits`:数据位,目前支持 `5`、`6`、`7`、`8`
|
||||||
|
- `stopBits`:停止位,目前支持 `1`、`2`
|
||||||
|
- `parity`:奇偶校验
|
||||||
|
- `'n'` 或 `'N'`:无奇偶校验
|
||||||
|
- `'o'` 或 `'O'`:奇校验
|
||||||
|
- `'e'` 或 `'E'`:偶校验
|
||||||
|
- `'m'` 或 `'M'`:标记检验
|
||||||
|
- `'s'` 或 `'S'`:空白校验
|
||||||
|
|
||||||
|
**返回值:** 成功或失败
|
||||||
|
|
||||||
|
**备注:** 提供 3 个 `open` 接口简化串口的参数设置,默认串口 115200,8 位数据位,1 位停止位,无奇偶校验。用户可以根据实际情况选择相应的接口。
|
||||||
|
|
||||||
|
#### 5. 关闭设备,包括关闭串口
|
||||||
|
|
||||||
|
```java
|
||||||
|
public void close()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 无
|
||||||
|
|
||||||
|
#### 6. 封装对设备的读操作
|
||||||
|
|
||||||
|
```java
|
||||||
|
public byte[] read(int len, int timeout)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
| 参数 | 类型 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `len` | int | 要读取的长度 |
|
||||||
|
| `timeout` | int | 超时,单位毫秒 |
|
||||||
|
|
||||||
|
**返回值:** 读取到的字节数组,失败的话返回 `null`
|
||||||
|
|
||||||
|
#### 7. 封装对设备的写操作
|
||||||
|
|
||||||
|
```java
|
||||||
|
public boolean write(byte[] data, int len)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
| 参数 | 类型 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `data` | byte[] | 要写入设备的字节数组 |
|
||||||
|
| `len` | int | 要写入的长度,应当 <= data 的实际长度 |
|
||||||
|
|
||||||
|
**返回值:** 成功或失败
|
||||||
|
|
||||||
|
## Fingerprint 类
|
||||||
|
|
||||||
|
### 使用方法
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.misc.Fingerprint;
|
||||||
|
Fingerprint fingerprint = new Fingerprint();
|
||||||
|
```
|
||||||
|
|
||||||
|
### 操作流程
|
||||||
|
|
||||||
|
`open` → `powerOn` → `read & write` → `powerOff` → `close`
|
||||||
|
|
||||||
|
> 有的指纹模块可能需要先 `powerOn` 再 `open`,请和模块厂家确认。
|
||||||
|
|
||||||
|
该类提供的函数可以分为两组,一组是用于模块的上电/断电,一组用于串口的操作。模块的上电和串口打开谁先谁后并没有严格的顺序,视具体设备要求。
|
||||||
|
|
||||||
|
### 函数接口
|
||||||
|
|
||||||
|
| 函数 | 说明 |
|
||||||
|
| --- | --- |
|
||||||
|
| `getDeviceName` | 获取设备名称 |
|
||||||
|
| `powerOn` | 设备上电 |
|
||||||
|
| `powerOff` | 设备断电 |
|
||||||
|
| `open` | 打开设备,包括打开串口,不包括上电 |
|
||||||
|
| `close` | 关闭设备,包括关闭串口,不包括断电 |
|
||||||
|
| `read` | 封装对设备的读操作 |
|
||||||
|
| `write` | 封装对设备的写操作 |
|
||||||
|
|
||||||
|
#### 1. 获取设备名称
|
||||||
|
|
||||||
|
```java
|
||||||
|
public String getDeviceName()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 该设备连接的串口设备文件,如 `/dev/ttyUART0`
|
||||||
|
|
||||||
|
#### 2. 设备上电
|
||||||
|
|
||||||
|
```java
|
||||||
|
public void powerOn()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 无
|
||||||
|
|
||||||
|
#### 3. 设备断电
|
||||||
|
|
||||||
|
```java
|
||||||
|
public void powerOff()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 无
|
||||||
|
|
||||||
|
#### 4. 打开设备,包括打开串口
|
||||||
|
|
||||||
|
```java
|
||||||
|
public boolean open()
|
||||||
|
public boolean open(int baudrate)
|
||||||
|
public boolean open(int baudrate, int dataBits, int stopBits, int parity)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
- `baudrate`:波特率,如 `115200`
|
||||||
|
- `dataBits`:数据位,目前支持 `5`、`6`、`7`、`8`
|
||||||
|
- `stopBits`:停止位,目前支持 `1`、`2`
|
||||||
|
- `parity`:奇偶校验
|
||||||
|
- `'n'` 或 `'N'`:无奇偶校验
|
||||||
|
- `'o'` 或 `'O'`:奇校验
|
||||||
|
- `'e'` 或 `'E'`:偶校验
|
||||||
|
- `'m'` 或 `'M'`:标记检验
|
||||||
|
- `'s'` 或 `'S'`:空白校验
|
||||||
|
|
||||||
|
**返回值:** 成功或失败
|
||||||
|
|
||||||
|
**备注:** 提供 3 个 `open` 接口简化串口的参数设置,默认串口 115200,8 位数据位,1 位停止位,无奇偶校验。用户可以根据实际情况选择相应的接口。
|
||||||
|
|
||||||
|
#### 5. 关闭设备,包括关闭串口
|
||||||
|
|
||||||
|
```java
|
||||||
|
public void close()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** 无
|
||||||
|
|
||||||
|
#### 6. 封装对设备的读操作
|
||||||
|
|
||||||
|
```java
|
||||||
|
public byte[] read(int len, int timeout)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
| 参数 | 类型 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `len` | int | 要读取的长度 |
|
||||||
|
| `timeout` | int | 超时,单位毫秒 |
|
||||||
|
|
||||||
|
**返回值:** 读取到的字节数组,失败的话返回 `null`
|
||||||
|
|
||||||
|
#### 7. 封装对设备的写操作
|
||||||
|
|
||||||
|
```java
|
||||||
|
public boolean write(byte[] data, int len)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
| 参数 | 类型 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `data` | byte[] | 要写入设备的字节数组 |
|
||||||
|
| `len` | int | 要写入的长度,应当 <= data 的实际长度 |
|
||||||
|
|
||||||
|
**返回值:** 成功或失败
|
||||||
|
|
||||||
|
## Manager 类
|
||||||
|
|
||||||
|
### 使用方法
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.seuic.misc.Manager;
|
||||||
|
Manager manager = new Manager(context);
|
||||||
|
```
|
||||||
|
|
||||||
|
### 函数接口
|
||||||
|
|
||||||
|
| 函数 | 说明 |
|
||||||
|
| --- | --- |
|
||||||
|
| `enableUsb` | 使能/禁用 USB。使能状态下,usb 才可以设置为 mtp/ptp/U 盘模式。仅支持 D700_V1.6.0 及之后版本。 |
|
||||||
|
| `isUsbEnabled` | 查看 USB 使能状态。仅支持 D700_V1.6.0 及之后版本。 |
|
||||||
|
|
||||||
|
#### 1. 使能/禁用 USB
|
||||||
|
|
||||||
|
```java
|
||||||
|
public boolean enableUsb(boolean enable)
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:**
|
||||||
|
|
||||||
|
- `enable`:
|
||||||
|
- `true`:使能
|
||||||
|
- `false`:禁用
|
||||||
|
|
||||||
|
**返回值:** 设置是否成功。
|
||||||
|
|
||||||
|
#### 2. 查看 USB 使能状态
|
||||||
|
|
||||||
|
```java
|
||||||
|
public boolean isUsbEnabled()
|
||||||
|
```
|
||||||
|
|
||||||
|
**参数:** 无
|
||||||
|
|
||||||
|
**返回值:** `true` 表示使能,`false` 表示禁用。默认是使能状态。
|
||||||
Reference in New Issue
Block a user