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

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

介绍

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

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

使用说明

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

效果预览

图片名称

实现思路

通过[@ohos.app.ability.wantAgent](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-app-ability-wantagent-V5)实现由通知栏的音乐播放器跳转到应用的功能,当用户点击通知时,会触发WantAgent接口,并拉起目标应用。

通过[@ohos.resourceschedule.backgroundTaskManager](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-resourceschedule-backgroundtaskmanager-V5)接口实现退出应用在后台播放音频的功能,当应用退至后台时,通过该接口为应用申请长时任务,避免应用进程被终止或挂起。核心代码如下,源码参考

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}`);
      });
    });
  }

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

2 回复

在HarmonyOS鸿蒙Next中实现后台播放在线音频,可以使用AudioPlayer组件。以下是一个示例代码:

import audio from '@ohos.multimedia.audio';
import common from '@ohos.app.ability.common';

// 创建AudioPlayer实例
let audioPlayer = audio.createAudioPlayer();

// 设置音频源
let audioSource = {
  uri: 'https://example.com/audio.mp3' // 在线音频URL
};

// 配置音频播放参数
let audioConfig = {
  audioStreamType: audio.AudioStreamType.MUSIC, // 音频流类型
  audioSamplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100 // 采样率
};

// 初始化AudioPlayer
audioPlayer.init(audioConfig, (err) => {
  if (err) {
    console.error(`AudioPlayer初始化失败: ${err.message}`);
    return;
  }

  // 设置音频源
  audioPlayer.setSource(audioSource, (err) => {
    if (err) {
      console.error(`设置音频源失败: ${err.message}`);
      return;
    }

    // 开始播放
    audioPlayer.play((err) => {
      if (err) {
        console.error(`音频播放失败: ${err.message}`);
      } else {
        console.log('音频开始播放');
      }
    });
  });
});

// 监听播放完成事件
audioPlayer.on('ended', () => {
  console.log('音频播放完成');
});

// 监听错误事件
audioPlayer.on('error', (err) => {
  console.error(`音频播放错误: ${err.message}`);
});

此代码展示了如何在HarmonyOS鸿蒙Next中使用AudioPlayer组件来后台播放在线音频。AudioPlayer组件提供了音频播放的基本功能,包括初始化、设置音频源、播放、监听播放完成和错误事件等。通过配置audioConfig,可以设置音频流类型和采样率等参数。

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


在HarmonyOS鸿蒙Next中,实现后台播放在线音频可以通过AudioPlayer组件实现。以下是一个简单的示例代码:

import ohos.media.player.Player;
import ohos.media.common.Source;
import ohos.app.Context;

public class AudioPlayerService {
    private Player player;

    public void playAudio(Context context, String audioUrl) {
        player = new Player(context);
        Source source = new Source(audioUrl);
        player.setSource(source);
        player.prepare();
        player.play();
    }

    public void pauseAudio() {
        if (player != null && player.isNowPlaying()) {
            player.pause();
        }
    }

    public void stopAudio() {
        if (player != null) {
            player.stop();
            player.release();
            player = null;
        }
    }
}

此代码创建了一个AudioPlayerService类,用于播放、暂停和停止在线音频。通过Player组件,你可以轻松实现后台音频播放功能。

回到顶部