1. 音频播放功能实现

  • 导入音频播放相关模块

首先需要从 @ohos.multimedia.audio 模块中导入必要的类和接口用于音频播放。例如:
import audio from '@ohos.multimedia.audio';
  • 创建音频播放器实例并设置播放源

可以通过 audio.createAudioPlayer() 方法创建一个音频播放器实例。然后,使用setSource() 方法设置音频播放源,播放源可以是本地音频文件路径或者网络音频资源链接。
例如,播放本地音频文件:
let player: audio.AudioPlayer = audio.createAudioPlayer();
player.setSource('resources/base/media/music.mp3');
  • 控制音频播放

音频播放器实例提供了一些方法来控制播放,如 play() 用于开始播放、 pause() 用于暂停播放、 stop() 用于停止播放。
例如:
// 开始播放音乐
player.play();
// 暂停播放
player.pause();
// 停止播放
player.stop();

1. 用户界面设计(UI

  • 主界面布局
使用 ArkTS 的布局组件(如 Column Row 等)来设计音乐播放器的主界面。例如,一个简单的音乐播放器界面可能包括歌曲封面显示区域、歌曲标题和艺术家名称显示区域、播放控制按钮区域。
示例代码:
import { Column, Row, Image, Text } from '@arkts/components';
@Entry
@Component
struct MusicPlayerUI {
build() {
Column() {
// 歌曲封面
Image($r('app.media.cover_image')).width(100).height(100)
// 歌曲标题和艺术家名称
Column() {
Text("歌曲标题").fontSize(16)
Text("艺术家名称").fontSize(12)
}
// 播放控制按钮
Row() {
Button("上一首").onClick(() => {
// 实现上一首歌曲的逻辑
})
Button("播放/暂停").onClick(() => {
// 根据播放状态切换播放或暂停
if (player.getState() === audio.AudioPlayerState.PLAYING) {
player.pause();
} else {
player.play();
}
})
Button("下一首").onClick(() => {
// 实现下一首歌曲的逻辑
})
}
}
}
}
let songList: { title: string, artist: string, path: string }[] = [
{
title: "歌曲1",
artist: "歌手1",
path: "resources/base/media/music1.mp3"
},
{
title: "歌曲2",
artist: "歌手2",
path: "resources/base/media/music2.mp3"
}
]
  • 歌曲切换逻辑

根据用户操作(如点击上一首下一首按钮),在歌曲列表中切换当前播放歌曲。例如,实现 “下一首歌曲的切换逻辑:
let currentSongIndex: number = 0;
function playNextSong() {
currentSongIndex++;
if (currentSongIndex >= songList.length) {
currentSongIndex = 0;
}
let nextSong = songList[currentSongIndex];
player.setSource(nextSong.path);
player.play();
}

1. 播放状态显示和更新

  • 获取播放状态并更新 UI

通过音频播放器实例的 getState() 方法获取当前播放状态(如播放中、暂停、停止等),并根据播放状态更新 UI 元素,如改变播放 / 暂停按钮的图标。
例如:
@Entry
@Component
struct MusicPlayerUIWithStatus {
@State playState: string = "暂停";
build() {
//...(前面的布局代码)
Row() {
Button("上一首").onClick(() => {
//...
})
Button(this.playState).onClick(() => {
if (player.getState() === audio.AudioPlayerState.PLAYING) {
player.pause();
this.playState = "暂停";
} else {
player.play();
this.playState = "播放";
}
})
Button("下一首").onClick(() => {
//...
})
}
}
}

1. 音量控制

  • 添加音量控制组件

在音乐播放器 UI 中添加音量控制组件,如滑块( Slider )。例如:
import { Slider } from '@arkts/components';
@Entry
@Component
struct MusicPlayerUIWithVolumeControl {
build() {
//...(前面的布局代码)
Slider({
min: 0,
max: 1,
value: 0.5,
onValueChange: (newValue: number) => {
player.setVolume(newValue);
}
})
}
}
这个 Slider 组件的取值范围是从 0 1,初始值为 0.5,当滑块的值改变时,通过 onValueChange 事件调用音频播放器的 setVolume() 方法来调整音量。
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐