# 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 …… ``` --- # 触摸屏接口 | 项目 | 内容 | | --- | --- | | 包名 | `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` 表示禁用。默认是使能状态。