You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:09:04