-
Notifications
You must be signed in to change notification settings - Fork 81
17 蓝牙锁相关API
liYueAliyun edited this page Sep 19, 2019
·
1 revision
参考蓝牙Demo工程米家扩展程序工程,里面提供了锁的连接、分享、删除、查询等操作示例。
/**
* ApiLevel: 51
* 安全芯片连接,锁的Owner调用
*/
public abstract void securityChipConnect(String mac, final BleConnectResponse response);
/**
* ApiLevel: 51
* 锁的分享设备连接,被分享者调用
* @param mac 设备的mac
*/
public abstract void securityChipSharedDeviceConnect(String mac, final BleConnectResponse response);
/**
* ApiLevel: 51
* 安全芯片数据加密
* 注意:只有与设备建立了安全连接之后才能调用,使用的是非对称加密,加密后的数据只能设备才能解密
*/
public abstract void securityChipEncrypt(String mac, byte[] data, final BleReadResponse response);
/**
* ApiLevel: 51
* 安全芯片数据解密
* 注意:只有与设备建立了安全连接之后才能调用,使用的是非对称加密,只能解密设备发送过来的加密数据
*/
public abstract void securityChipDecrypt(String mac, byte[] data, final BleReadResponse response);
/**
* ApiLevel: 51
* 锁设备分享后的KeyId是否过期
* @return true:钥匙没有过期,false:钥匙已过期
*/
public abstract boolean isSecurityChipSharedKeyValid(String mac);
/**
* ApiLevel: 51
* 安全芯片操作符 开锁
*/
public static final int SECURITY_CHIP_UNLOCK_OPERATOR = 0;
/**
* ApiLevel: 51
* 安全芯片操作符 关锁
*/
public static final int SECURITY_CHIP_LOCK_OPERATOR = 1;
/**
* ApiLevel: 51
* 安全芯片操作符 反锁
*/
public static final int SECURITY_CHIP_BOLT_OPERATOR = 2;
/**
* ApiLevel: 51
* 开锁成功后,设备通过notify返回的state码
*/
private static byte[] SECURITY_CHIP_UNLOCK_STATE = new byte[] {0x00};
/**
* ApiLevel: 51
* 关锁成功后,设备通过notify返回的state码
*/
private static byte[] SECURITY_CHIP_LOCK_STATE = new byte[] {0x01};
/**
* ApiLevel: 51
* 反锁成功后,设备通过notify返回的state码
*/
private static byte[] SECURITY_CHIP_BOLT_STATE = new byte[] {0x02};
/**
* ApiLevel: 51
* 提供支持安全芯片的锁操作
* 注意:同一时间只能调用一次锁的相关操作(如果在上次操作回调前继续调用,会直接返回失败),另外如果给设备发送了锁的相关操作,但是设备12s内都没有返回数据,为避免中间人攻击,底层会直接断开蓝牙连接
* @param mac
* @param operator 1: 开锁,2:反锁
*/
public abstract void securityChipOperate(String mac, int operator, final BleReadResponse response);
/**
* ApiLevle: 51
* 广播接收设备是否登录成功
*/
public static final String ACTION_ONLINE_STATUS_CHANGED = "action.online.status.changed";
public static final String EXTRA_MAC = "extra_mac";
public static final String EXTRA_ONLINE_STATUS = "extra_online_status";
public static final int STATUS_LOGGED_IN = 0x50;
/**
* ApiLevel: 51
* 获取MD5处理过的token
* @return
*/
public abstract String getTokenMd5(String mac);
/**
* ApiLevel: 62
* 给锁设备提供的获取一次性密码
* @param mac
* @param interval 密码的有效时间,单位为分钟,必须 >= 1 并且 <= 60,否则会返回错误。必须与固件中的有效时间保持一致。
* @param digits 密码的长度,必须 >= 6 并且 <= 8,否则会返回错误。
* @param response 返回操作成功还是失败,如果操作成功则返回一次性密码
*/
public abstract void getOneTimePassword(String mac, int interval, int digits, Response.BleResponseV2<int[]> response);
/**
* ApiLevel:51
* 分享电子钥匙
*
* @param model 设备model
* @param did 分享者的did
* @param shareUid 分享目标的uid
* @param status 分享类别,1:暂时,2:周期,3:永久
* @param activeTime 生效时间 UTC时间戳,单位为s
* @param expireTime 过期时间 UTC时间戳,单位为s
* @param weekdays 生效日期(星期几,例如周一和周三对应1和3,[1, 3],星期天对应0),仅在status=2时不可为空
* @param readonly true:被分享人不可接收锁push,false:被分享人可接收锁push,(family关系用户不受这个字段影响)
* @param callback
*/
public void shareSecurityKey(final String model, final String did, String shareUid, final int status, final long activeTime, final long expireTime,
final List<Integer> weekdays, final boolean readonly, final Callback<Void> callback);
/**
* ApiLevel:51
* 更新分享的电子钥匙信息
*
* @param model 设备的model
* @param did 分享者的did
* @param keyId 电子钥匙的keyId
* @param status 分享类别,1:暂时,2:周期,3:永久
* @param activeTime 生效时间 UTC时间戳,单位为s
* @param expireTime 过期时间 UTC时间戳,单位为s
* @param weekdays 生效日期(星期几,例如周一和周三对应1和3,[1, 3]),仅在status=2时不可为空
* @param callback
*/
public void updateSecurityKey(String model, String did, String keyId, int status, long activeTime, long expireTime, List<Integer> weekdays, Callback<Void> callback);
/**
* ApiLevel:51
* 删除共享的电子钥匙
*
* @param model 设备的model
* @param did 分享者的did
* @param keyId 分享电子钥匙的KeyId
* @param callback
*/
public void deleteSecurityKey(String model, String did, String keyId, final Callback<Void> callback);
/**
* ApiLevel:51
* 获取所有分享的电子钥匙信息
*
* @param model 设备model
* @param did 分享者的did
* @param callback
*/
public void getSecurityKey(String model, String did, final Callback<List<SecurityKeyInfo>> callback);
/**
* ApiLevel:51
* 获取UTC时间,单位为ms
* 被废弃了,使用getUTCFromServer接口
*/
@Deprecated
public abstract long getUTCTimeInMillis();
/**
* ApiLevel:51
* 从服务器获取UTC时间,单位为秒(返回-1,说明解析出现异常,当做错误处理)
* @param callback
*/
public void getUTCFromServer(String model, Callback<Long> callback);
/**
* ApiLevel: 51
* 获取蓝牙锁绑定的时间
* @param model
* @param did
* @param callback
*/
public void getBleLockBindInfo(String model, String did, Callback<String> callback);