鸿蒙Next ArkTS5.0中如何实现音频功能
在鸿蒙Next的ArkTS5.0中,如何实现音频的播放、暂停、停止等基本功能?能否提供具体的代码示例或相关API文档?另外,是否支持后台播放和音频焦点管理?
2 回复
在鸿蒙Next ArkTS 5.0中,用@ohos.multimedia.audio模块轻松搞定音频!调用createAudioPlayer()创建播放器,play()开始嗨,pause()暂停摸鱼。记得申请权限,不然系统会像没给糖的万圣节小鬼一样闹脾气!
更多关于鸿蒙Next ArkTS5.0中如何实现音频功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next ArkTS 5.0中,音频功能主要通过@ohos.multimedia.audio系统能力实现。以下是关键步骤和代码示例:
1. 申请权限
在module.json5中添加权限:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.MICROPHONE"
}
]
}
}
2. 音频播放
import audio from '@ohos.multimedia.audio';
// 创建音频播放器
let audioPlayer: audio.AudioPlayer;
async function initAudioPlayer() {
let audioStreamInfo = {
samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
channels: audio.AudioChannel.CHANNEL_2,
sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
};
let audioPlayerOptions = {
streamInfo: audioStreamInfo,
playerInfo: {
playerFlags: 0 // 默认标志
}
};
audioPlayer = await audio.createAudioPlayer(audioPlayerOptions);
// 设置播放源(支持文件路径、资源ID、URL)
await audioPlayer.src = 'file:///data/storage/el2/base/haps/entry/files/music.mp3';
// 播放音频
await audioPlayer.play();
}
// 暂停播放
async function pauseAudio() {
await audioPlayer.pause();
}
// 停止播放
async function stopAudio() {
await audioPlayer.stop();
}
3. 音频录制
let audioRecorder: audio.AudioRecorder;
async function initAudioRecorder() {
let audioStreamInfo = {
samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
channels: audio.AudioChannel.CHANNEL_2,
sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
};
let audioRecorderOptions = {
streamInfo: audioStreamInfo,
recorderInfo: {
source: audio.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
profile: audio.AudioRecorderProfile.RECORDER_PROFILE_QUALITY_MEDIUM
}
};
audioRecorder = await audio.createAudioRecorder(audioRecorderOptions);
// 开始录制
await audioRecorder.start();
}
// 停止录制并保存文件
async function stopRecording() {
await audioRecorder.stop();
await audioRecorder.release();
}
4. 音频管理
// 获取音频管理器
let audioManager = audio.getAudioManager();
// 调整音量
audioManager.setVolume(audio.AudioVolumeType.MEDIA, 0.5); // 设置媒体音量为50%
// 监听音频中断事件
audioManager.on('audioInterrupt', (interruptAction) => {
console.log('Audio interrupt: ' + JSON.stringify(interruptAction));
});
关键注意事项:
- 确保在
AudioPlayer/AudioRecorder使用完成后调用release()释放资源 - 使用
on('stateChange')监听状态变化 - 文件路径需使用沙箱路径或申请相应文件访问权限
- 录制音频需要动态申请麦克风权限
以上代码展示了音频播放、录制和管理的核心实现,实际使用时需要添加错误处理和状态管理逻辑。

