更新时间:2024-05-17 01:25:41
基础能力 API 主要包含:临时密码、成员管理、日志能力等功能。当前这些功能主要针对拍照锁(categoryCode
:wf_jtmspro)和可视门锁(categoryCode
:videolock_1w_1)。
临时密码分为在线临时密码和离线临时密码:
在线临时密码:是指在生成密码时设备必须在线,生成后同步到门锁上。
离线临时密码:在生成密码时设备不需要在线。但是离线密码的删除不同于在线密码。离线密码清除需要获取清空码,在门锁上输入清空码,即可清除掉离线密码。
不同的门锁品类获取在线和离线密码使用不同的接口。拍照锁(categoryCode
:wf_jtmspro)和可视门锁(categoryCode
:videolock_1w_1)拥有不同的实现。更多详情,请参考 Demo。
IPhotoLock getPhotoLockManager();
示例代码
val iThingLockManager = ThingOptimusSdk.getManager(IThingLockManager::class.java)
val iVideoLockManager = iThingLockManager?.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, IThingResultCallback<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 : IThingResultCallback<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(IThingResultCallback<ArrayList<OnlineTempPasswordListBean>> callback);
回调数据结构 OnlineTempPasswordListBean
参数说明
参数 | 说明 |
---|---|
id | 密码 ID,即 pwdId |
phone | 手机号码 |
effective | 是否有效:
|
effectiveTime | 生效时间 单位:毫秒 |
invalidTime | 失效时间 单位:毫秒 |
availTime | 可用次数:
|
sn | 临时密码硬件编号 |
name | 密码名称 |
phase | 密码状态:
|
gmtCreate | 创建时间 |
timeZoneId | 时区 |
scheduleDetails | 一周内生效时间 |
示例代码
iPhotoLock?.getOnlineTempPasswordList(object :
IThingResultCallback<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, IThingResultCallback<OfflineTempPasswordBean> callback);
参数说明
参数 | 能否为空 | 说明 |
---|---|---|
gmtStart | 否 | 生效时间 |
gmtExpired | 否 | 失效时间 |
offlineTypeEnum | 否 | 密码类型:
|
countryCode | 是 | 国家码 |
pwdName | 是 | 密码名称 |
mobile | 是 | 手机号码 |
示例代码
iPhotoLock?.getOfflinePassword(System.currentTimeMillis()/1000,
System.currentTimeMillis()/1000 + 24 * 60 * 60 ,
OfflineTypeEnum.MULTIPLE,
"",
"offline pwd",
"",
object : IThingResultCallback<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, IThingResultCallback<OfflineTempPasswordBean> callback);
示例代码
iPhotoLock?.getClearCode("pwdId",
object : IThingResultCallback<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,
IThingResultCallback<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(IThingResultCallback<ArrayList<OfflineTempPasswordBean>> callback);
示例代码
iPhotoLock?.getNoLimitOfflinePassword(object :
IThingResultCallback<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,IThingResultCallback<Integer> callback);
参数说明
参数 | 能否为空 | 说明 |
---|---|---|
dpId | 否 | 开门方式对应的 dpId ,当前为在线临时密码的 dpId |
callback | 是 | 返回 SN |
示例代码
iVideoLock?.getDeviceSN( "69", object : IThingResultCallback<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, IThingResultCallback<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 : IThingResultCallback<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, IThingResultCallback<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 : IThingResultCallback<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, IThingResultCallback<OfflineTempPasswordBean> callback);
参数说明
参数 | 能否为空 | 说明 |
---|---|---|
unlockBindingId | 否 | 临时密码编号 |
pwdName | 是 | 密码名称 |
示例代码
iVideoLock?.getClearCode(
"clear code",
"unlockBindingId",
object : IThingResultCallback<OfflineTempPasswordBean> {
override fun onSuccess(result: OfflineTempPasswordBean?) {
ToastUtil.shortToast(mContext, result?.toString())
}
override fun onError(errorCode: String?, errorMessage: String?) {
ToastUtil.shortToast(mContext, errorMessage)
}
})
接口说明
同时获取在线密码和离线密码。
void getTempPasswordList(IThingResultCallback<ArrayList<VideoLockTempPasswordBean>> callback);
回调数据结构 VideoLockTempPasswordBean
ClearCodeInfo
参数说明
参数 | 说明 |
---|---|
unlockBindingId | 临时密码编号 |
effectiveTime | 生效时间 |
invalidTime | 失效时间 |
name | 密码名称 |
phase | 状态:
|
effective | 生效状态:
|
opModeType | 解锁类型:
|
opModeSubType | opModeType 的子类型 |
sn | 硬件上报编码 |
opModeInfo | 清空码信息 |
hasClearPwd | 是否设置清空码 |
revokedPwdName | 清空码名称 |
revokedPwdEffectiveTime | 清空码有效时间 |
revokedPwdInvalidTime | 清空码失效时间 |
示例代码
iVideoLock?.getTempPasswordList(object :
IThingResultCallback<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 iThingLockManager = ThingOptimusSdk.getManager(IThingLockManager::class.java)
val iVideoLockManager = iThingLockManager?.newVideoLockManagerInstance(mDevId)
val iLockBaseAbilityManager = iVideoLockManager?.baseAbilityManager
接口说明
即门锁面板成员。与家庭成员不同,被添加门锁成员不需要注册账户,没有权限管理当前账户下的其他设备。门锁成员的主要目的是关联开门方式和日志记录。
void addUser(String name, File avatar, String sex, Long birthday, Integer height,
Integer weight, String heightUnit, IThingResultCallback<String> callback);
参数说明
参数 | 能否为空 | 说明 |
---|---|---|
name | 否 | 成员名称 |
avatar | 是 | 头像文件 |
sex | 是 | 性别 |
birthday | 是 | 生日 |
height | 是 | 身高 |
weight | 是 | 体重 |
heightUnit | 是 | 身高单位:
|
Callback | 是 | 调用接口回调结果 |
示例代码
iLockBaseAbilityManager?.addUser("User",null,"0",System.currentTimeMillis(),
180,80,"CM",object :IThingResultCallback<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(IThingResultCallback<ArrayList<WifiLockUserBean>> callback);
回调数据结构 WifiLockUserBean
说明
参数 | 说明 |
---|---|
userId | 门锁成员 ID |
avatarUrl | 用户头像 |
userContact | 用户联系方式 |
nickName | 用户昵称 |
userType | 用户类型:
|
lockUserId | 用户在门锁上的编号 |
unlockCountMap | 解锁方式个数集合。key 为 dpId |
unlockList | 解锁方式名称列表 |
示例代码
iLockBaseAbilityManager?.getUsersList(object :IThingResultCallback<ArrayList<WifiLockUserBean>>{
override fun onSuccess(result: ArrayList<WifiLockUserBean>?) {
}
override fun onError(errorCode: String?, errorMessage: String?) {
}
})
接口说明
获取成员详细信息。
void getUserDetail(String userId, IThingResultCallback<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 :IThingResultCallback<WifiLockUserDetail>{
override fun onSuccess(result: WifiLockUserDetail?) {
}
override fun onError(errorCode: String?, errorMessage: String?) {
}
})
接口说明
获取家庭成员数量和门锁成员数量。
void getUserCount(IThingResultCallback<Pair<Integer, Integer>> callback);
参数说明
参数 | 说明 |
---|---|
Pair.first | 家庭成员数量 |
Pair.second | 门锁成员数量 |
ILockBaseAbilityManager getBaseAbilityManager();
示例
val iThingLockManager = ThingOptimusSdk.getManager(IThingLockManager::class.java)
val iVideoLockManager = iThingLockManager?.newVideoLockManagerInstance(mDevId)
val iLockBaseAbilityManager = iVideoLockManager?.baseAbilityManager
接口说明
void getLatestLog(int userType, String userId, IThingResultCallback<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 : IThingResultCallback<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, IThingResultCallback<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 : IThingResultCallback<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(IThingResultCallback<JSONObject> callback);
示例代码
val iThingLockManager = ThingOptimusSdk.getManager(IThingLockManager::class.java)
iThingVideoLockManager = iThingLockManager.newVideoLockManagerInstance(mDevId)
iThingVideoLockManager?.getDevicePhotoRotateAngel(object :IThingResultCallback<JSONObject>{
override fun onSuccess(result: JSONObject?) {
TODO("Not yet implemented")
}
override fun onError(errorCode: String?, errorMessage: String?) {
TODO("Not yet implemented")
}
})
接口说明
void getAlbumList(IThingResultCallback<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 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈