美文网首页
手环机 AndroidSDK 集成

手环机 AndroidSDK 集成

作者: 飛呈Geek | 来源:发表于2021-01-14 11:58 被阅读0次

简介

本文是 智慧手环机 的操控文档

功能说明

bracelet_machine_sdk

  • 发放手环
  • 归还手环
  • 设置手环数量

XiaoLiCloudDemo

  • 摄像头调用样例
  • NFC 读卡样例

详情请看 https://github.com/ocmtech/XiaoLiCloudDemo

集成SDK

PS:建议 Activity 的 layout 加入 android:keepScreenOn="true",防止息屏

Gradle 自动集成

  1. 添加 maven
allprojects {
    repositories {
        maven { url 'http://maven.ocmcom.com:9999/repository/sdk/' }
    }
}
  1. 在 module 的 gradle 中添加依赖
    implementation 'com.ocm.lib:bracelet_machine_sdk:1.1.9'
  1. 点击 Sync Now,完成

SDK 使用

本 SDK 为单例控制,回调仅能配置一个接收对象,kotlin 使用 BraceletMachineManager. 调用,Java 使用 BraceletMachineManager.INSTANCE. 调用。

初始化 SDK

必须先初始化后再使用SDK,否则将无法使用,建议在 Application 中调用

    /**
     * 绑定context,离线版使用
     * @param context Context
     */
    fun bind(context: Context)

自检

若长时间取不到手环,或者总是发放两个手环,调用一次自检方法

//默认IC卡,
checkSelf(cardType: CardType, callback: CheckSelfCallback)

校验

是否还有剩余手环

    checkHasBracelet(): Boolean

检查机器是否装满了手环

    checkIsFull(): Boolean

获取手环

    fetchBracelet(callback: FetchCallback)

/***
* 获取手环,并写入数据
* 注意:出于安全考虑手环机不支持对手环更改密码,一旦密码操作出问题,手环将会报废
*
* @param sector SectorType 扇区,输入SECTOR1-15
* @param pwd String 密码,6字节16进制字符串,如默认:"FFFFFFFFFFFF"
* @param content String sector扇区的数据块,每块16个字节,共48个字节
* @param callback FetchCallback 获取回调
*/
fetchBracelet(sector: SectorType, pwd: String, content: String, callback: FetchCallback)

设置归还超时时间

/**
* 配置归还超时时间
* @param timeout Long 秒
*/
fun setGiveBackTimeout(timeout: Long) 

归还手环

通过 BraceletMachineListener 回调结果

归还方法 1

    giveBackBracelet(callback: GiveBackCallback)

    /***
     * 还手环,并写入数据
     * 注意:出于安全考虑手环机不支持对手环更改密码,一旦密码操作出问题,手环将会报废
     *
     * @param sector SectorType 扇区,输入SECTOR1-15
     * @param pwd String 密码,6字节16进制字符串,如默认:"FFFFFFFFFFFF"
     * @param content String sector扇区的数据块,每块16个字节,共48个字节
     * @param callback GiveBackCallback 获取回调
     */
    fun giveBackBracelet(sector: SectorType, pwd: String, content: String, callback: GiveBackCallback)

归还方法 2

4个方法任意组合来安排回收流程,这样自由度更大

    //读取回收处卡号
    fun readRecyclingNo(callback: WRGiveBackCallback)
    //读取回收处卡号和扇区
    fun readRecyclingInfo(sector: SectorType, pwd: String, callback: WRGiveBackCallback)
    //读取回收处卡号并写扇区
    fun readRecyclingNoAndWriteSector(sector: SectorType, pwd: String, content: String, callback: WRGiveBackCallback)
    //打开回收口
    fun openRecycling(callback: AllowGiveBackCallback)

停止还手环

    stopGiveBack()

停止转动滚筒

fun stopRoll()

获取手环机状态

fun fetchStatus(callback: CheckStatusCallback)

打开回收口

用于管理员放入手环

    sysStartPush(listener: BraceletMachineSystemListener) 

关闭回收口

用于管理员放完手环

    sysStopPush(listener: BraceletMachineSystemListener)

二维码模块开关方法(2020年后的设备失效,都是一直可用)

    /**
     * 打开扫码器
     */
    openQR()

    /**
     * 关闭扫码器
     */
    closeQR() 

补光灯开关方法

    /**
     * 打开 LED 补光灯
     */
    openLedLight()

    /**
     * 关闭 LED 补光灯
     */
    closeLedLight()

    /**
     * 打开红外补光灯,用于红外活体检测
     */
    openIRLight()

    /**
     * 关闭红外补光灯
     */
    closeIRLight()

上传日志

    /**
     * 上传日志
     */
    fun uploadLog() 

释放资源

在适当的时候释放资源,一般在 Application 的 onTerminate 中调用,也可以忽略

    onDestroy()

属性

停止状态

设备是否处于停止状态,如果处于停止状态无法发放手环,需要设置当前手环数,以重新让设备启动

    isStop: boolean

最大手环数

设定设备能放多少个手环,不能超过 120 个

    maxBracelet

当前剩余手环数量

设定设备当前的手环数,不能超过最大手环数。当设备处于停止状态,通过设置当前手环数可以让设备重新启动

    currentBracelet

�回调列表

/**
 * 手环机器回调
 * 可选实现
 */
interface BraceletMachineListener {

    /**
     * 设备断开连接
     */
    fun onDisconnect() {}

    /**
     * 当剩余手环数量
     * @param num Int 剩余数量
     */
    fun onCurrentNumChange(num: Int) {}

    /**
     * 机器运转状态改变
     * @param isStop Boolean 是否停止,停止后需要设置当前数量来重新启动
     */
    fun onStateChange(isStop: Boolean){}
}

/**
 * 自检回调
 */
interface CheckSelfCallback {
    /**
     * 自检成功
     */
    fun onCheckSelfSuccess() {}

    /**
     * 自检失败
     * @param msg String 失败原因
     */
    fun onCheckSelfFail(msg: String) {}

    /**
     * 执行完成
     */
    fun onCompleted() {}
}

/**
 * 获取手环回调
 */
interface FetchCallback {
    /**
     * 获取手环成功
     * @param no String 对应号码
     */
    fun onFetchSuccess(no: String) {}

    /**
     * 获取手环失败
     * @param msg String 提示文字
     */
    fun onFetchFail(msg: String) {}

    /**
     * 执行完成
     */
    fun onCompleted() {}
}

/**
 * 还手环回调
 */
interface GiveBackCallback {
    /**
     * 是否允许归还手环,需要验证手环是否合法
     * @param card CardDataModel 手环信息
     * @param callback CheckGiveBackCallback 默认允许,调用allow方法以验证
     */
    fun checkAllowGiveBack(card: CardDataModel, callback: CheckGiveBackCallback) { callback.allow(true, "") }

    /**
     * 还手环忙碌提醒
     */
    fun onGiveBackBusy() {}

    /**
     * 还手环成功
     * @param no String 手环号
     */
    fun onGiveBackSuccess(no: String) {}

    /**
     * 还手环失败
     * @param msg String 失败原因
     */
    fun onGiveBackFail(msg: String) {}

    /**
     * 执行完成
     */
    fun onCompleted() {}
}

/**
 * 手环机系统回调
 */
interface BraceletMachineSystemListener {
    fun onSuccess()
    fun onFail()
}


/**
 *  校验是否能还手环
 */
interface CheckGiveBackCallback {
    /**
     * 是否同意归还
     * @param checkResult Boolean true 则同意
     * @param msg String 如果拒绝,提示信息内容
     */
    fun allow(checkResult: Boolean, msg: String)
}

/**
 * 默认通用回调
 */
interface DefaultCallback {
    /**
     * 成功
     * @param msg String
     */
    fun onSuccess(msg: String) {}

    /**
     * 失败
     * @param msg String 失败原因
     */
    fun onFail(msg: String) {}

    /**
     * 执行完成
     */
    fun onCompleted()
}


/**
 * 手环机状态回调
 */
interface CheckStatusCallback {
    /**
     * 成功
     * @param status BraceletMachineManager.BraceletMachineStatus 当前状态
     */
    fun onSuccess(status: BraceletMachineManager.BraceletMachineStatus) {}

    /**
     * 失败
     * @param msg String 失败原因
     */
    fun onFail(msg: String) {}

    /**
     * 执行完成
     */
    fun onCompleted() {}
}

枚举类型

    /**
     * 卡片类型
     */
    enum class CardType {
        IC , ID , UNIVERSAL;
        var cmd: String = "01"
            get() {
                return when(this) {
                    IC -> "01"
                    ID -> "02"
                    UNIVERSAL -> "03"
                }
            }
            private set
    }

    /**
     * 手环收发模式
     */
    enum class BraceletMode {
        ONLINE , OFFLINE
    }

    /**
     * 手环机状态
     */
    enum class BraceletMachineStatus {
        HAS_CACHE , //有缓存
        NO_CACHE, //没有缓存
        BUSY //忙碌
    }

    /**
     * 允许写的扇区
     */
    enum class SectorType {
        SECTOR1, SECTOR2, SECTOR3, SECTOR4, SECTOR5,
        SECTOR6, SECTOR7, SECTOR8, SECTOR9, SECTOR10,
        SECTOR11, SECTOR12, SECTOR13, SECTOR14, SECTOR15
    }

相关文章

网友评论

      本文标题:手环机 AndroidSDK 集成

      本文链接:https://www.haomeiwen.com/subject/nvfvaktx.html