美文网首页
手环机 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