HarmonyOS 如何判断是否锁屏?

@ohos.screenLock (锁屏管理) 废弃了,用什么api判断是否锁屏

阅读 703
1 个回答

可以使用系统公共事件usual.event.SCREEN\_OFF监听息屏,https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/commoneventmanager-definitions-V5\#common\_event\_screen\_off,参考实现:

let subscriber:commonEventManager.CommonEventSubscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作

//订阅者信息
let subscribeInfo:commonEventManager.CommonEventSubscribeInfo = {
  events: ["usual.event.SCREEN_OFF"]
};

//订阅公共事件回调
function SubscribeCB(err:Base.BusinessError, data:commonEventManager.CommonEventData) {
  if (err) {
    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
  } else {
    console.info("subscribe usual.event.SCREEN_OFF");
  }
}

//创建订阅者回调
function createCB(err:Base.BusinessError, commonEventSubscriber:commonEventManager.CommonEventSubscriber) {
  if(!err) {
    console.info("createSubscriber");
    subscriber = commonEventSubscriber;
    //订阅公共事件
    try {
      commonEventManager.subscribe(subscriber, SubscribeCB);
      console.info(`subscribe success`);
    } catch (error) {
      let err:Base.BusinessError = error as Base.BusinessError;
      console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
    }
  } else {
    console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
  }
}

//创建订阅者
try {
  commonEventManager.createSubscriber(subscribeInfo, createCB);
} catch (error) {
  let err:Base.BusinessError = error as Base.BusinessError;
  console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
}