本文原创发布在华为开发者社区。
介绍
本示例基于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}`);
});
});
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。