HarmonyOS 鸿蒙Next 后台播放在线音频 鸿蒙场景化代码

发布于 1周前 作者 caililin 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 后台播放在线音频 鸿蒙场景化代码
<markdown _ngcontent-kaa-c147="" class="markdownPreContainer">

后台播放在线音频

介绍

本工程通过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]
    };
<span class="hljs-comment">// 通过wantAgent模块下getWantAgent方法获取WantAgent对象</span>
wantAgent.<span class="hljs-title function_">getWantAgent</span>(wantAgentInfo).<span class="hljs-title function_">then</span>(<span class="hljs-function">(<span class="hljs-params">wantAgentObj: WantAgent</span>) =&gt;</span> {
  backgroundTaskManager.<span class="hljs-title function_">startBackgroundRunning</span>(<span class="hljs-variable language_">this</span>.<span class="hljs-property">context</span>,
    backgroundTaskManager.<span class="hljs-property">BackgroundMode</span>.<span class="hljs-property">AUDIO_PLAYBACK</span>, wantAgentObj).<span class="hljs-title function_">then</span>(<span class="hljs-function">() =&gt;</span> {
    <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">info</span>(<span class="hljs-string">`Succeeded in operationing startBackgroundRunning.`</span>);
  }).<span class="hljs-title function_">catch</span>(<span class="hljs-function">(<span class="hljs-params">err: BusinessError</span>) =&gt;</span> {
    <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">`Failed to operation startBackgroundRunning. Code is <span class="hljs-subst">${err.code}</span>, message is <span class="hljs-subst">${err.message}</span>`</span>);
  });
});

}

高性能知识点

工程结构&模块类型

深色代码主题
复制
entry/src/main/ets/
|---entryability
|   |---EntryAbility.ets         //程序入口类
|---pages
|   |---Index.ets              // 首页

参考资料

</markdown>

更多关于HarmonyOS 鸿蒙Next 后台播放在线音频 鸿蒙场景化代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next 后台播放在线音频 鸿蒙场景化代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中实现后台播放在线音频的功能,可以通过以下场景化代码实现。该代码片段主要利用了鸿蒙系统的媒体播放能力和后台任务管理能力。

// 引入必要的模块
import media from '@ohos.multimedia.media';
import backgroundTasks from '@ohos.backgroundTasks';

// 创建并配置一个MediaPlayer对象
let player = new media.MediaPlayer();
player.setDataSource('http://your-audio-url.com/audio.mp3');
player.prepare();

// 创建一个后台任务
let task = new backgroundTasks.TaskRequest({
    name: "AudioPlaybackTask",
    isPersistent: true,
    requiredCapabilities: ["ohos.capability.MULTIMEDIA_PLAY"]
});

// 注册后台任务
backgroundTasks.addTask(task).then((taskId) => {
    player.start();
    console.log("Audio started in background with taskId: " + taskId);
}).catch((error) => {
    console.error("Failed to add background task: " + error);
});

// 监听播放结束事件(可选)
player.on('finish', () => {
    console.log("Audio playback finished.");
});

// 注意:确保在应用中处理必要的权限申请和生命周期管理

上述代码简要展示了如何在鸿蒙系统中实现后台音频播放。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部