实现后台播放在线音频鸿蒙示例代码

鸿蒙场景化示例代码技术工程师
发布于 2025-2-28 16:40
1.8w浏览
0收藏

本文原创发布在华为开发者社区

介绍

本示例基于Background Tasks Kit能力实现应用退出后台后继续播放网络音频。

实现后台播放在线音频源码链接

使用说明

进入应用会看到两个按钮,点击“播放”按钮应用会播放音频,退出应用会在后台继续播放,并在下拉的通知栏显示音乐播放控制器,点击控制器右下角的应用图标会跳转到应用。点击“停止”按钮,音乐停止播放。

效果预览

实现后台播放在线音频鸿蒙示例代码-鸿蒙开发者社区

实现思路

通过@ohos.app.ability.wantAgent实现由通知栏的音乐播放器跳转到应用的功能,当用户点击通知时,会触发WantAgent接口,并拉起目标应用。

通过@ohos.resourceschedule.backgroundTaskManager接口实现退出应用在后台播放音频的功能,当应用退至后台时,通过该接口为应用申请长时任务,避免应用进程被终止或挂起。核心代码如下,源码参考

Index.ets

startContinuousTask() {
    let wantAgentInfo: wantAgent.WantAgentInfo = {
      // 点击通知后,将要执行的动作列表
      // 添加需要被拉起应用的bundleName和abilityName
      wants: [
        {
          bundleName: "com.test.myapplication",
          abilityName: "EntryAbility"
        }
      ],
      // 指定点击通知栏消息后的动作是拉起ability
      actionType: wantAgent.OperationType.START_ABILITY,
      // 使用者自定义的一个私有值
      requestCode: 10,
      // 点击通知后,动作执行属性
      actionFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
    };

    // 通过wantAgent模块下getWantAgent方法获取WantAgent对象
    wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj: WantAgent) => {
      backgroundTaskManager.startBackgroundRunning(this.context,
        backgroundTaskManager.BackgroundMode.AUDIO_PLAYBACK, wantAgentObj).then(() => {
        console.info(`Succeeded in operationing startBackgroundRunning.`);
      }).catch((err: BusinessError) => {
        console.error(`Failed to operation startBackgroundRunning. Code is ${err.code}, message is ${err.message}`);
      });
    });
  }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.

分类
收藏
回复
举报


回复
    相关推荐