更新时间:2024-11-18 11:33:10下载pdf
基础能力 API 主要包含:临时密码、成员管理、日志能力等功能。当前这些功能主要针对拍照锁(categoryCode:wf_jtmspro)和可视门锁(categoryCode:videolock_1w_1)。
临时密码分为在线临时密码和离线临时密码:
在线临时密码:是指在生成密码时设备必须在线,生成后同步到门锁上。
离线临时密码:在生成密码时设备不需要在线。但是离线密码的删除不同于在线密码。离线密码清除需要获取清空码,在门锁上输入清空码,即可清除掉离线密码。
不同的门锁品类获取在线和离线密码使用不同的接口。拍照锁(categoryCode:wf_jtmspro)和可视门锁(categoryCode:videolock_1w_1)拥有不同的实现。更多详情,请参考 Demo。
IPhotoLock getPhotoLockManager();
示例代码
val iTuyaLockManager = TuyaOptimusSdk.getManager(ITuyaLockManager::class.java)
val iVideoLockManager = iTuyaLockManager?.newVideoLockManagerInstance(mDevId)
val iPhotoLock = iVideoLockManager?.photoLockManager
接口说明
创建一个临时密码。
void createOnlineTempPassword(String password, String countryCode, String phone, long effectiveTime,long invalidTime, int availableTimes, String name, List<ScheduleBean> scheduleBean, ITuyaResultCallback<OnlineTempPassword> callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| password | 否 | 默认 7 位密码 | 
| countryCode | 是 | 国家码 | 
| phone | 是 | 手机号 | 
| effectiveTime | 否 | 生效时间,单位:毫秒 | 
| invalidTime | 否 | 失效时间,单位:毫秒 | 
| availableTimes | 否 | 可用次数: 
 | 
| name | 是 | 密码名称 | 
| scheduleBean | 否 | 一周内的有效时间 | 
| scheduleBean.allDay | 否 | 是否全天生效 | 
| scheduleBean.effectiveTime | 是 | 一天内开始生效的时间,单位:分钟 | 
| scheduleBean.invalidTime | 是 | 一天内结束生效的时间,单位:分钟。例如,只允许该密码 10:30-12:00 生效,可设置为 effectiveTime=10\*60+30,invalidTime = 12\*60。当allDay=true时,此设置不生效 | 
| scheduleBean.workingDay | 否 | 一周内生效的天数,生效为 1,不生效为0。顺序为:[周日、周一、周二、周三、周四、周五、周六]。例如,只在周一、周二不生效,可设置为1001111,然后将此 2 进制转为 10 进制传入 | 
示例代码
val scheduleBean = ScheduleBean()
        scheduleBean.allDay = true
        scheduleBean.workingDay = 127
        val list:MutableList<ScheduleBean> = ArrayList()
        list.add(scheduleBean)
        iPhotoLock?.createOnlineTempPassword("1231231",
            "86",
            "",
            System.currentTimeMillis(),
            System.currentTimeMillis() + 7 * 24 * 60 * 60 * 1000,
            0,
            "pwd ",
            list,
            object : ITuyaResultCallback<OnlineTempPassword> {
                override fun onSuccess(result: OnlineTempPassword?) {
                    ToastUtil.shortToast(mContext, "Create Success")
                    result?.let {
                        pwdList.add(it.pwdId)
                    }
                }
                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext, errorMessage)
                }
            })
接口说明
void updateTempPasswordName(String pwdId, String name, IResultCallback callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| pwdId | 否 | 密码 ID | 
| name | 是 | 密码名称 | 
示例代码
iPhotoLock?.updateTempPasswordName(
            pwdId,
            "testt",
            object : IResultCallback {
                override fun onError(code: String?, error: String?) {
                    ToastUtil.shortToast(mContext, error)
                }
                override fun onSuccess() {
                    ToastUtil.shortToast(mContext, "Update Success")
                }
            })
接口说明
void deleteTempPassword(String pwdId, IResultCallback callback);
示例代码
iPhotoLock?.deleteTempPassword("pwdId", object : IResultCallback {
            override fun onError(code: String?, error: String?) {
                ToastUtil.shortToast(mContext, error)
            }
            override fun onSuccess() {
                ToastUtil.shortToast(mContext, "Delete Success")
            }
        })
接口说明
void getOnlineTempPasswordList(ITuyaResultCallback<ArrayList<OnlineTempPasswordListBean>> callback);
回调数据结构 OnlineTempPasswordListBean 参数说明
| 参数 | 说明 | 
|---|---|
| id | 密码 ID,即 pwdId | 
| phone | 手机号码 | 
| effective | 是否有效: 
 | 
| effectiveTime | 生效时间 单位:毫秒 | 
| invalidTime | 失效时间 单位:毫秒 | 
| availTime | 可用次数: 
 | 
| sn | 临时密码硬件编号 | 
| name | 密码名称 | 
| phase | 密码状态: 
 | 
| gmtCreate | 创建时间 | 
| timeZoneId | 时区 | 
| scheduleDetails | 一周内生效时间 | 
示例代码
iPhotoLock?.getOnlineTempPasswordList(object :
            ITuyaResultCallback<ArrayList<OnlineTempPasswordListBean>> {
            override fun onSuccess(result: ArrayList<OnlineTempPasswordListBean>?) {
                ToastUtil.shortToast(mContext, "Get List Success")               
            }
            override fun onError(errorCode: String?, errorMessage: String?) {
                ToastUtil.shortToast(mContext, errorMessage)
            }
        })
离线密码只能由云端生成,返回给客户端。
接口说明
void getOfflinePassword(long gmtStart, long gmtExpired, OfflineTypeEnum offlineTypeEnum,
                            String countryCode, String pwdName, String mobile, ITuyaResultCallback<OfflineTempPasswordBean> callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| gmtStart | 否 | 生效时间 | 
| gmtExpired | 否 | 失效时间 | 
| offlineTypeEnum | 否 | 密码类型: 
 | 
| countryCode | 是 | 国家码 | 
| pwdName | 是 | 密码名称 | 
| mobile | 是 | 手机号码 | 
示例代码
iPhotoLock?.getOfflinePassword(System.currentTimeMillis()/1000,
            System.currentTimeMillis()/1000 + 24 * 60 * 60 ,
            OfflineTypeEnum.MULTIPLE,
            "",
            "offline pwd",
            "",
            object : ITuyaResultCallback<OfflineTempPasswordBean> {
                override fun onSuccess(result: OfflineTempPasswordBean?) {
                    ToastUtil.shortToast(mContext, "Get Pwd Success")                  
                }
                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext, errorMessage)
                }
            })
接口说明
void setOfflinePasswordName(String pwdId, String pwdName, String mobile, IResultCallback callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| pwdId | 否 | 密码 ID | 
| pwdName | 是 | 密码名称 | 
| mobile | 是 | 手机号码 | 
示例代码
iPhotoLock?.setOfflinePasswordName("pwdId",
            "offline update",
            "",
            object : IResultCallback {
                override fun onError(code: String?, error: String?) {
                    ToastUtil.shortToast(mContext, error)
                }
                override fun onSuccess() {
                    ToastUtil.shortToast(mContext, "Update Pwd Success")
                }
            })
接口说明
void getClearCode(String pwdId, ITuyaResultCallback<OfflineTempPasswordBean> callback);
示例代码
iPhotoLock?.getClearCode("pwdId",
            object : ITuyaResultCallback<OfflineTempPasswordBean> {
                override fun onSuccess(result: OfflineTempPasswordBean?) {
                    ToastUtil.shortToast(mContext, " get clear code:${result?.pwd}")
                }
                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext, errorMessage)
                }
            })
接口说明
void getOfflinePasswordList(OfflineTypeEnum offlineTypeEnum, int offset, int limit, OfflinePasswordStatusEnum offlinePasswordStatusEnum,
                                ITuyaResultCallback<ArrayList<OfflinePasswordListBean>> callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| offlineTypeEnum | 否 | 密码类型: 
 | 
| offset | 否 | 页码 | 
| limit | 否 | 每页数据上限 | 
| offlinePasswordStatusEnum | 否 | 密码状态: 
 | 
回调数据结构 OfflinePasswordListBean 参数说明
| 参数 | 说明 | 
|---|---|
| opModeSubType | opModeType的子类型 | 
| pwdTypeEnum | 密码类型: 
 | 
| hasClearPwd | 是否有清空码 | 
| timeZoneId | 时区 | 
| mobile | 手机号码 | 
| opModeType | 解锁类型: 
 | 
| gmtCreate | 创建时间,单位:毫秒 | 
| gmtStart | 生效时间,单位:毫秒 | 
| gmtExpired | 失效时间,单位:毫秒 | 
| pwdTypeCode | 密码类型编号: 
 | 
| optUid | 操作用户 UID | 
| revokedPwdName | 清空码名称 | 
| pwdName | 密码名称 | 
| pwdId | 密码id | 
| pwd | 密码 | 
| deliveryStatus | 下发状态 | 
| 邮箱 | |
| statusEnum | 密码状态: 
 | 
接口说明
void getNoLimitOfflinePassword(ITuyaResultCallback<ArrayList<OfflineTempPasswordBean>> callback);
示例代码
iPhotoLock?.getNoLimitOfflinePassword(object :
            ITuyaResultCallback<ArrayList<OfflineTempPasswordBean>> {
            override fun onSuccess(result: ArrayList<OfflineTempPasswordBean>?) {
                ToastUtil.shortToast(mContext, "password:${result?.toString()}")
            }
            override fun onError(errorCode: String?, errorMessage: String?) {
                ToastUtil.shortToast(mContext, errorMessage)
            }
        })
接口说明
硬件上报的开门方式的 SN 码,用于创建临时密码等开门方式。
void getDeviceSN(String dpId,ITuyaResultCallback<Integer> callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| dpId | 否 | 开门方式对应的 dpId,当前为在线临时密码的dpId | 
| callback | 是 | 返回 SN | 
示例代码
  iVideoLock?.getDeviceSN( "69", object : ITuyaResultCallback<Int> {
            override fun onSuccess(result: Int?) {
                
            }
            override fun onError(errorCode: String?, errorMessage: String?) {
                ToastUtil.shortToast(mContext, errorMessage)
            }
        })
接口说明
void createOnlineTempPassword(int sn, String password, long effectiveTime, long invalidTime,
                                  int availableTimes, String name, List<ScheduleBean> scheduleBean, ITuyaResultCallback<String> callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| sn | 否 | 临时密码的硬件 SN | 
| password | 否 | 密码,允许长度 4-15位 | 
| effectiveTime | 否 | 生效时间,单位:秒、毫秒均可 | 
| invalidTime | 否 | 失效时间,单位:秒、毫秒均可 | 
| availableTimes | 否 | 可用次数: 
 | 
| name | 是 | 密码名称 | 
| scheduleBean | 否 | 一周内的周期设置 | 
| scheduleBean.allDay | 否 | 是否全天生效 | 
| scheduleBean.effectiveTime | 是 | 一天内开始生效的时间,单位:分钟 | 
| scheduleBean.invalidTime | 是 | 一天内结束生效的时间,单位:分钟。例如,只允许该密码 10:30-12:00 生效,可设置为 effectiveTime=10\*60+30,invalidTime = 12\*60。当allDay=true时,此设置不生效 | 
| scheduleBean.workingDay | 否 | 一周内生效的天数,生效为 1,不生效为0。顺序为:[周日、周一、周二、周三、周四、周五、周六]。例如,只在周一、周二不生效,可设置为1001111,然后将此 2 进制转为 10 进制传入 | 
返回数据
| 参数 | 说明 | 
|---|---|
| unlockBindingId | 临时密码编号 | 
示例代码
val scheduleBean = ScheduleBean()
        scheduleBean.allDay = true
        scheduleBean.workingDay = 127
        val list: MutableList<ScheduleBean> = ArrayList()
        list.add(scheduleBean)
        iVideoLock?.createOnlineTempPassword(sn,
            "123124",
            System.currentTimeMillis() / 1000,
            System.currentTimeMillis() + 24 * 60 * 60,
            0,
            "online pwd ",
            list,
            object : ITuyaResultCallback<String> {
                override fun onSuccess(result: String?) {
                    ToastUtil.shortToast(mContext, "pwd :${result}")                    
                }
                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext, errorMessage)
                }
            })
接口说明
更新密码,修改生效日期、生效失效、密码名称。
void updateOnlineTempPassword(String unlockBindingId, String password, long effectiveTime,
                                  long invalidTime, String name, int phase,
                                  List<ScheduleBean>  scheduleBean, IResultCallback callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| unlockBindingId | 否 | 临时密码编号 | 
| password | 否 | 密码 | 
| effectiveTime | 否 | 生效时间 单位:秒、毫秒均可 | 
| invalidTime | 否 | 失效时间 单位:秒、毫秒均可 | 
| name | 是 | 密码名称 | 
| phase | 否 | 密码状态: 
 | 
| scheduleBean | 否 | 一周内的周期设置 | 
| scheduleBean.allDay | 否 | 是否全天生效 | 
| scheduleBean.effectiveTime | 是 | 一天内开始生效的时间,单位:分钟 | 
| scheduleBean.invalidTime | 是 | 一天内结束生效的时间,单位:分钟。例如,只允许该密码 10:30-12:00 生效,可设置为 effectiveTime=10\*60+30,invalidTime = 12\*60。当allDay=true时,此设置不生效 | 
| scheduleBean.workingDay | 否 | 一周内生效的天数,生效为 1,不生效为0。顺序为:[周日、周一、周二、周三、周四、周五、周六]。例如,只在周一、周二不生效,可设置为1001111,然后将此 2 进制转为 10 进制传入 | 
示例代码
val scheduleBean = ScheduleBean()
        scheduleBean.allDay = true
        scheduleBean.workingDay = 127
        val list: MutableList<ScheduleBean> = ArrayList()
        list.add(scheduleBean)        iVideoLock?.updateOnlineTempPassword("unlockBindingId","2223334",System.currentTimeMillis()/1000,
        System.currentTimeMillis()/1000+24*60*60,"online pwd update${num}",2,list,object :IResultCallback{
                override fun onError(code: String?, error: String?) {
                    ToastUtil.shortToast(mContext, error)
                }
                override fun onSuccess() {
                    ToastUtil.shortToast(mContext, "update success ")
                }
            })
接口说明
void updateOnlineTempPasswordName(String unlockBindingId, String name, IResultCallback callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| unlockBindingId | 否 | 临时密码编号 | 
| name | 是 | 密码名称 | 
示例代码
iVideoLock?.updateOnlineTempPasswordName(
            "unlockBindingId",
            "online update",
            object : IResultCallback {
                override fun onError(code: String?, error: String?) {
                    ToastUtil.shortToast(mContext, error)
                }
                override fun onSuccess() {
                    ToastUtil.shortToast(mContext, "update success ")
                }
            })
接口说明
void deleteOnlineTempPassword(String unlockBindingId, IResultCallback callback);
示例代码
iVideoLock?.deleteOnlineTempPassword("unlockBindingId", object : IResultCallback {
            override fun onError(code: String?, error: String?) {
                ToastUtil.shortToast(mContext, error)
            }
            override fun onSuccess() {
                ToastUtil.shortToast(mContext, "success ")
            }
        })
接口说明
void getOfflineTempPassword(long gmtStart, long gmtExpired, OfflineTypeEnum offlineTypeEnum,
                                String countryCode, String pwdName, String mobile, ITuyaResultCallback<OfflineTempPasswordBean> callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| gmtStart | 否 | 生效时间 ,单位:秒 | 
| gmtExpired | 否 | 失效时间,单位:秒 | 
| offlineTypeEnum | 否 | 密码类型: 
 | 
| countryCode | 是 | 国家码 | 
| pwdName | 是 | 密码名称 | 
| mobile | 是 | 手机号码 | 
示例代码
iVideoLock?.getOfflineTempPassword(System.currentTimeMillis() / 1000,
            System.currentTimeMillis() / 1000 + 48 * 60 * 60,
            OfflineTypeEnum.MULTIPLE,
            "86",
            "offline pwd test",
            "",
            object : ITuyaResultCallback<OfflineTempPasswordBean> {
                override fun onSuccess(result: OfflineTempPasswordBean?) {
                    ToastUtil.shortToast(mContext, result?.toString())
                    result?.let {
                        offlinePwdList.add(it.unlockBindingId)
                    }
                }
                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext, errorMessage)
                }
            })
接口说明
void setOfflineTempPasswordName(String pwdName, String unlockBindingId, IResultCallback callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| unlockBindingId | 否 | 临时密码编号 | 
| pwdName | 是 | 密码名称 | 
示例代码
iVideoLock?.setOfflineTempPasswordName(            
            "Offline pwd tt ",
  					"unlockBindingId",
            object : IResultCallback {
                override fun onError(code: String?, error: String?) {
                    ToastUtil.shortToast(mContext, error)
                }
                override fun onSuccess() {
                    ToastUtil.shortToast(mContext, "update success")
                }
            })
接口说明
void getClearCode(String pwdName, String unlockBindingId, ITuyaResultCallback<OfflineTempPasswordBean> callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| unlockBindingId | 否 | 临时密码编号 | 
| pwdName | 是 | 密码名称 | 
示例代码
iVideoLock?.getClearCode(
            "clear code",
           "unlockBindingId",
            object : ITuyaResultCallback<OfflineTempPasswordBean> {
                override fun onSuccess(result: OfflineTempPasswordBean?) {
                    ToastUtil.shortToast(mContext, result?.toString())
                }
                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext, errorMessage)
                }
            })
接口说明
同时获取在线密码和离线密码。
void getTempPasswordList(ITuyaResultCallback<ArrayList<VideoLockTempPasswordBean>> callback);
回调数据结构 VideoLockTempPasswordBean ClearCodeInfo 参数说明
| 参数 | 说明 | 
|---|---|
| unlockBindingId | 临时密码编号 | 
| effectiveTime | 生效时间 | 
| invalidTime | 失效时间 | 
| name | 密码名称 | 
| phase | 状态: 
 | 
| effective | 生效状态: 
 | 
| opModeType | 解锁类型: 
 | 
| opModeSubType | opModeType的子类型 | 
| sn | 硬件上报编码 | 
| opModeInfo | 清空码信息 | 
| hasClearPwd | 是否设置清空码 | 
| revokedPwdName | 清空码名称 | 
| revokedPwdEffectiveTime | 清空码有效时间 | 
| revokedPwdInvalidTime | 清空码失效时间 | 
示例代码
iVideoLock?.getTempPasswordList(object :
            ITuyaResultCallback<ArrayList<VideoLockTempPasswordBean>> {
            override fun onSuccess(result: ArrayList<VideoLockTempPasswordBean>?) {
                ToastUtil.shortToast(mContext, result?.toString())
            }
            override fun onError(errorCode: String?, errorMessage: String?) {
                ToastUtil.shortToast(mContext, errorMessage)
            }
        })
成员分为 家庭成员 与 非家庭成员(门锁成员):
家庭成员:涂鸦 智能生活 App SDK 中的家庭成员概念。门锁 SDK 将对应的门锁密码编号与该账号关联起来。相关管理操作,请参考 家庭管理。
非家庭成员:即为门锁设备单独的成员,仅跟随设备关联。用户可以创建并分配,门锁 SDK 将对应的门锁密码编号与该成员关联起来。
本小节主要介绍门锁成员中 非家庭成员 的管理操作。
ILockBaseAbilityManager getBaseAbilityManager();
示例
val iTuyaLockManager = TuyaOptimusSdk.getManager(ITuyaLockManager::class.java)
val iVideoLockManager = iTuyaLockManager?.newVideoLockManagerInstance(mDevId)
val iLockBaseAbilityManager = iVideoLockManager?.baseAbilityManager
接口说明
即门锁面板成员。与家庭成员不同,被添加门锁成员不需要注册账户,没有权限管理当前账户下的其他设备。门锁成员的主要目的是关联开门方式和日志记录。
void addUser(String name, File avatar, String sex, Long birthday, Integer height,
                 Integer weight, String heightUnit, ITuyaResultCallback<String> callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| name | 否 | 成员名称 | 
| avatar | 是 | 头像文件 | 
| sex | 是 | 性别 | 
| birthday | 是 | 生日 | 
| height | 是 | 身高 | 
| weight | 是 | 体重 | 
| heightUnit | 是 | 身高单位: 
 | 
| Callback | 是 | 调用接口回调结果 | 
示例代码
iLockBaseAbilityManager?.addUser("User",null,"0",System.currentTimeMillis(),
        180,80,"CM",object :ITuyaResultCallback<String>{
                override fun onSuccess(result: String?) {                    
                    ToastUtil.shortToast(mContext,"Add Success")
                }
                override fun onError(errorCode: String?, errorMessage: String?) {
                    ToastUtil.shortToast(mContext,errorMessage)
                }
            })
接口说明
更新成员名称、头像。
void updateUser(String userId, String userName, File avatar, IResultCallback callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| userId | 否 | 成员 ID | 
| userName | 是 | 成员名称 | 
| avatar | 是 | 头像文件 | 
| Callback | 是 | 调用接口回调结果 | 
示例代码
iLockBaseAbilityManager?.updateUser("userId","User",null,
        object :IResultCallback{
            override fun onError(code: String?, error: String?) {
                ToastUtil.shortToast(mContext,error)
            }
            override fun onSuccess() {
                ToastUtil.shortToast(mContext,"Modify Success")
            }
        })
接口说明
void deleteUser(String userId, IResultCallback callback);
示例代码
iLockBaseAbilityManager?.deleteUser("userid",object :IResultCallback{
            override fun onError(code: String?, error: String?) {
                ToastUtil.shortToast(mContext,error)
            }
            override fun onSuccess() {
                ToastUtil.shortToast(mContext,"Delete Success")
                
            }
        })
接口说明
void getUsersList(ITuyaResultCallback<ArrayList<WifiLockUserBean>> callback);
回调数据结构 WifiLockUserBean 说明
| 参数 | 说明 | 
|---|---|
| userId | 门锁成员 ID | 
| avatarUrl | 用户头像 | 
| userContact | 用户联系方式 | 
| nickName | 用户昵称 | 
| userType | 用户类型: 
 | 
| lockUserId | 用户在门锁上的编号 | 
| unlockCountMap | 解锁方式个数集合。 key为dpId | 
| unlockList | 解锁方式名称列表 | 
示例代码
iLockBaseAbilityManager?.getUsersList(object :ITuyaResultCallback<ArrayList<WifiLockUserBean>>{
            override fun onSuccess(result: ArrayList<WifiLockUserBean>?) {
               
            }
            override fun onError(errorCode: String?, errorMessage: String?) {
               
            }
        })
接口说明
获取成员详细信息。
void getUserDetail(String userId, ITuyaResultCallback<WifiLockUserDetail> callback);
回调数据结构 WifiLockUserDetail 说明
| 参数 | 说明 | 
|---|---|
| userId | 门锁成员 ID | 
| avatarUrl | 用户头像 | 
| userContact | 用户联系方式 | 
| nickName | 用户昵称 | 
| userType | 用户类型: 
 | 
| unlockDetail | 解锁方式详情列表 | 
| unlockDetail.dpId | 解锁方式 dpId | 
| unlockDetail.unlockList | 解锁方式详情 | 
| unlockList.opModeId | 解锁方式云端序号 | 
| unlockList.unlockId | 解锁方式编号 | 
| unlockList.admin | 是否是管理员解锁方式 | 
| unlockList.unlockName | 解锁方式名称 | 
| unlockList.unlockAttr | 解锁方式属性。 1:劫持 | 
| unlockList.photoUnlock | 是否开启开门抓拍 | 
| unlockList.allocateFlag | 成员和开门方式是否可以解绑: 
 | 
示例代码
iLockBaseAbilityManager?.getUserDetail(userId,object :ITuyaResultCallback<WifiLockUserDetail>{
            override fun onSuccess(result: WifiLockUserDetail?) {
                
            }
            override fun onError(errorCode: String?, errorMessage: String?) {
               
            }
        })
接口说明
获取家庭成员数量和门锁成员数量。
void getUserCount(ITuyaResultCallback<Pair<Integer, Integer>> callback);
参数说明
| 参数 | 说明 | 
|---|---|
| Pair.first | 家庭成员数量 | 
| Pair.second | 门锁成员数量 | 
ILockBaseAbilityManager getBaseAbilityManager();
示例
val iTuyaLockManager = TuyaOptimusSdk.getManager(ITuyaLockManager::class.java)
val iVideoLockManager = iTuyaLockManager?.newVideoLockManagerInstance(mDevId)
val iLockBaseAbilityManager = iVideoLockManager?.baseAbilityManager
接口说明
void getLatestLog(int userType, String userId, ITuyaResultCallback<LatestLogBean> callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| userType | 否 | 用户体系类型: 
 | 
| userId | 否 | 用户编号 ID: 
 | 
| Callback | 是 | 调用接口回调结果 | 
回调结果 LatestLogBean 数据结构说明
| 参数 | 说明 | 
|---|---|
| logCategory | 日志大类: 
 | 
| logType | 日志类型 | 
| recordType | 仅开门记录返回: 
 | 
| unlockNameRosettaKey | 关锁记录的多语言 | 
| currentUser | 是否当前用户 | 
| userId | 用户编号 | 
| userName | 用户名称 | 
| unlockName | 解锁方式名称 | 
| time | 日志事件时间 | 
| relateDevName | 关联设备名称 | 
| relateOpMode | 关联解锁信息 | 
| unReadCount | 未读记录数 | 
| data | 告警或操作记录的详情数据 | 
| channelId | 通道 ID(门禁设备专用) | 
| unionUnlockInfo | 组合解锁信息 | 
| unionUnlockInfo.currentUser | 组合解锁时,是否是当前用户 | 
| unionUnlockInfo.sn | 组合解锁时,硬件编号 | 
示例代码
iLockBaseAbilityManager?.getLatestLog(
                0,
                “userId”,
                object : ITuyaResultCallback<LatestLogBean> {
                    override fun onSuccess(result: LatestLogBean?) {
                       
                    }
                    override fun onError(errorCode: String?, errorMessage: String?) {
                        
                    }
                })
接口说明
获取日志记录列表。
void getLogList(String logCategories, String userIds, boolean onlyShowMediaRecord, Long startTime, Long endTime,
                    String lastRowKey, int limit, int userType, String userId, ITuyaResultCallback<LogsListBean> callback);
参数说明
| 参数 | 能否可为空 | 说明 | 
|---|---|---|
| logCategories | 是 | 日志大类: 
 | 
| userIds | 是 | 需要筛选的用户 ID 列表,以逗号 (,) 分隔,如 12,13 | 
| onlyShowMediaRecord | 否 | 是否仅显示带图片或者视频的记录, 默认为 false,即显示所有记录 | 
| startTime | 是 | 开始时间(单位毫秒) | 
| endTime | 是 | 结束时间(单位毫秒) | 
| lastRowKey | 是 | 上一页的数据 key | 
| limit | 否 | 每页数据个数 | 
| userType | 是 | 用户体系类型: 
 | 
| userId | 是 | 用户编号 ID: 
 | 
| Callback | 是 | 调用接口回调结果 | 
回调 LogsListBean 及 LogsInfoBean MediaInfo 数据结构说明
| 参数 | 说明 | 
|---|---|
| hasMore | 是否还有数据 | 
| lastRowKey | 上一页的数据 key | 
| records | 日志具体信息 | 
| records.logType | 日志类型 | 
| records.data | dp点数据值 | 
| records.recordType | 仅开门记录返回: 
 | 
| records.dpId | DP 点 ID | 
| records.unlockName | 解锁方式名称, 可能为空 | 
| records.userName | 用户名称 | 
| records.userId | 用户id | 
| records.currentUser | 是否是当前用户 | 
| records.memberBindableFlag | 是否可以绑定到用户 | 
| records.logId | 日志id | 
| records.time | 日志事件时间 | 
| records.logCategory | 日志大类: 
 | 
| records.mediaInfoList | 视频和图片信息(适用门锁类型:可视对讲、Wi-Fi 低功耗或常保活带视频或者图像的锁) | 
| mediaInfoList.fileUrl | 封面图文件 URL | 
| mediaInfoList.fileKey | 封面图的解密密钥 | 
| mediaInfoList.mediaPath | 记录视频的相对地址 | 
| mediaInfoList.mediaBucket | 记录视频所属的仓库地址 | 
| mediaInfoList.mediaKey | 记录视频的解密密钥 | 
示例代码
iLockBaseAbilityManager?.getLogList("",
                null,
                false,
                null,
                System.currentTimeMillis(),
                "",
                20,
                0,
                "userid",
                object : ITuyaResultCallback<LogsListBean> {
                    override fun onSuccess(result: LogsListBean?) {
                        
                    }
                    override fun onError(errorCode: String?, errorMessage: String?) {
                        
                    }
                })
接口说明
默认日志记录中的接口和用户是关联的,此接口可以将开门记录和用户绑定。
void bindUnlockWaysToUser(String userId, String[] unlockIds, IResultCallback callback);
参数说明
| 参数 | 能否为空 | 说明 | 
|---|---|---|
| unlockIds | 否 | 解锁方式列表。格式:[12-01,13-02],前后数字表示“解锁方式类型-编号” | 
| userId | 否 | 用户编号 ID: 
 | 
| Callback | 是 | 调用接口回调结果 | 
示例代码
val array = arrayOf("${logsInfoBean.dpId}-${logsInfoBean.data}")
            iLockBaseAbilityManager?.bindUnlockWaysToUser("the userid will be bound",
                array, object : IResultCallback {
                    override fun onError(code: String?, error: String?) {
                       
                    }
                    override fun onSuccess() {
                        
                    }
                })
接口说明
void getDevicePhotoRotateAngel(ITuyaResultCallback<JSONObject> callback);
示例代码
val iTuyaLockManager = TuyaOptimusSdk.getManager(ITuyaLockManager::class.java)
        iTuyaVideoLockManager = iTuyaLockManager.newVideoLockManagerInstance(mDevId)
        iTuyaVideoLockManager?.getDevicePhotoRotateAngel(object :ITuyaResultCallback<JSONObject>{
            override fun onSuccess(result: JSONObject?) {
                TODO("Not yet implemented")
            }
            override fun onError(errorCode: String?, errorMessage: String?) {
                TODO("Not yet implemented")
            }
        })
接口说明
void getAlbumList(ITuyaResultCallback<AlbumBean> callback);
回调数据结构 AlbumBean AlbumInfo 参数说明
| 参数 | 说明 | 
|---|---|
| eventTypes | 相册里封面图和视频的类型 | 
| albumList | 相册列表 | 
| albumList.eventType | 文件类型,详见 拍照锁事件定义 | 
| albumList.fileUrl | 封面图地址 | 
| albumList.fileKey | 封面图秘钥 | 
| albumList.mediaPath | 视频地址 | 
| albumList.mediaKey | 视频秘钥 | 
| albumList.mediaBucket | 视频所在仓库 | 
| albumList.uploadTime | 文件上传的时间 | 
当不再使用相关功能时,调用销毁方法,避免程序发生异常。涉及到销毁的类包含:IVideoLock、IPhotoLock、ILockBaseAbilityManager。销毁方法:
void onDestroy();
| 事件状态 | 描述 | 状态值 | 
|---|---|---|
| 状态1 | 防撬告警 | 0x0000 | 
| 状态2 | 远程开门请求 | 0x0001 | 
| 状态3 | 指纹开门试错 | 0x0002 | 
| 状态4 | 密码开门试错 | 0x0003 | 
| 状态5 | 卡片开门试错 | 0x0004 | 
| 状态6 | 人脸开门试错 | 0x0005 | 
| 状态7 | 掌纹开门试错 | 0x0006 | 
| 状态8 | 指静脉开门试错 | 0x0007 | 
| 状态9 | 指纹开门 | 0x0008 | 
| 状态10 | 密码开门 | 0x0009 | 
| 状态11 | 卡片开锁 | 0x000A | 
| 状态12 | 人脸开锁 | 0x000B | 
| 状态13 | 掌静脉开锁 | 0x000C | 
| 状态14 | 指静脉开锁 | 0x000D | 
| 状态15 | 临时密码解锁 | 0x000E | 
| 状态16 | 动态密码解锁 | 0x000F | 
| 状态17 | 远程解锁 | 0x0010 | 
| 状态18 | 离线密码解锁上报 | 0x0011 | 
| 状态19 | 门铃解锁上报 | 0x0012 | 
| 状态20 | 劫持告警 | 0x0013 | 
| 状态21 | 低电报警 | 0x0014 | 
| 状态22 | 钥匙插入报警 | 0x0015 | 
| 状态23 | 高温报警 | 0x0016 | 
| 状态24 | 门铃+远程开门 | 0x0017 | 
| 状态25 | 有人停留(逗留) | 0x0018 | 
| 状态26 | 门锁被破坏 | 0x0019 | 
| 状态27 | 特殊指纹开锁 | 0x001A | 
| 状态28 | 布防模式下开锁 | 0x001B | 
| 状态29 | 遥控开门 | 0x001C | 
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈