Files
pad_scanner/docs/D500_Android_SDK使用说明书.md
Misaka 8fa02424a5 Add D500 scanner SDK documentation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-06 21:47:04 +08:00

664 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` 接口简化串口的参数设置,默认串口 1152008 位数据位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` 接口简化串口的参数设置,默认串口 1152008 位数据位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` 表示禁用。默认是使能状态。