HarmonyOS 如何获取锁屏事件

视频播放中需要监听锁屏事件,锁屏后需要暂停播放,现无法获取锁屏事件。

HarmonyOS
2024-12-20 16:52:33
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

参考demo:

import Base from '@ohos.base';
import CommonEventManager from '@ohos.commonEventManager';

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

//订阅者信息
let subscribeInfo:CommonEventManager.CommonEventSubscribeInfo = {
  events: [CommonEventManager.Support.COMMON_EVENT_SCREEN_LOCKED, CommonEventManager.Support.COMMON_EVENT_SCREEN_UNLOCKED]
};

//发布公共事件回调
function subscribeCB(err:Base.BusinessError, data:CommonEventManager.CommonEventData) {
  if (err) {
    console.error(`publish failed, code is ${err.code}, message is ${err.message}`);
  } else {
    if (data.event == CommonEventManager.Support.COMMON_EVENT_SCREEN_LOCKED) {
      console.info("MWB ",`lock screen`);
    } else if (data.event == CommonEventManager.Support.COMMON_EVENT_SCREEN_UNLOCKED) {
      console.info("MWB ",`unlock screen`);
    }
  }
}


//创建订阅者回调
function createCB(err:Base.BusinessError, commonEventSubscriber:CommonEventManager.CommonEventSubscriber) {
  if(!err) {
    console.info("createSubscriber");
    subscriber = commonEventSubscriber;
    try {
      CommonEventManager.subscribe(subscriber, subscribeCB);
    } 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}`);
}

@Entry
@Component
struct ScreenLockEventManageDemo {

  build() {
    Column() {
      Text('HELLO WORLD')
        .fontSize('20')
    }
    .width('100%')
    .height('100%')

  }
}

公共事件模块参考如下:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-commoneventmanager-V5

锁屏的公共事件定义:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/commonevent-screenlock-V5

分享
微博
QQ
微信
回复
2024-12-20 18:49:58
相关问题
HarmonyOS hdc工具如何设置屏幕不
436浏览 • 1回复 待解决
如何获取事件和数据
2479浏览 • 1回复 待解决
如何通过代码随意修改图片?
5955浏览 • 1回复 待解决
openharmony4.0 如何去除功能
2917浏览 • 0回复 待解决
如何实现软件退出需要密码?
2915浏览 • 1回复 待解决
HarmonyOS 屏幕和解锁屏幕
520浏览 • 1回复 待解决
HarmonyOS 如何区分截和录事件
494浏览 • 1回复 待解决
HarmonyOS 如何监听截事件触发
533浏览 • 1回复 待解决
悬浮球能调用功能吗?
1016浏览 • 1回复 待解决
HarmonyOS 如何监听屏幕截事件
540浏览 • 1回复 待解决
鸿蒙系统有没有调用的接口?
7367浏览 • 1回复 待解决
华为手机是否支持自定义页面?
4482浏览 • 1回复 待解决
HarmonyOS如何获取图片
841浏览 • 1回复 待解决