Tapkey Android SDK 如何获取锁的当前状态(锁定/打开)
Tapkey Android SDK 获取锁状态实现方案
Tapkey SDK 锁状态相关接口未收入入门文档,可通过以下两种方式实现状态获取,可根据业务场景选择:
1. 实时状态监听(推荐用于UI实时展示场景)
通过LockStateObserver观察者接口可监听锁状态的实时变更,无需主动轮询,性能更优。
代码示例:
// 1. 获取TapkeyLockManager实例 TapkeyLockManager lockManager = TapkeyServiceFactory.getInstance().getLockManager(); // 2. 为指定lockId的锁注册状态监听器 Registration stateObserverReg = lockManager.getLockStateObserver(lockId) .addObserver(lockState -> { // 锁定状态取值:true=已锁定,false=已解锁 boolean currentLockStatus = lockState.isLocked(); // 切换到主线程更新UI runOnUiThread(() -> { // 自定义UI更新逻辑 lockStatusView.setText(currentLockStatus ? "已锁定" : "已打开"); }); });
页面销毁时需要注销监听器,避免内存泄漏:
@Override protected void onDestroy() { super.onDestroy(); if (stateObserverReg != null) { stateObserverReg.close(); } }
2. 单次主动查询(适合只需获取一次状态的场景)
如果不需要实时更新,可调用异步方法主动查询当前锁状态:
lockManager.getLockStateAsync(lockId, CancellationTokens.NONE) .continueOnUi(lockState -> { boolean isLocked = lockState.isLocked(); // 处理查询到的状态逻辑 return null; }) .catchOnUi(throwable -> { // 处理查询异常,如锁离线、蓝牙未连接等 Log.e("TapkeyLock", "查询锁状态失败", throwable); return null; });
注意事项
- 锁状态查询需要设备与锁处于蓝牙连接范围内,且完成身份校验,离线状态下返回的是本地缓存的历史状态
- 带门磁功能的特殊锁具,可通过
lockState.getDoorState()额外获取门体的物理开合状态,和锁本身的电子锁定状态做区分
内容的提问来源于stack exchange,提问作者AndroidT
相关产品推荐
相关产品推荐

