HarmonyOS 无法暂停声音播放
根据avplayer文档查看,但是isSound=false还是无法实现关闭声音。
// 注册avplayer回调函数
setAVPlayerCallback(avPlayer: media.AVPlayer) {
// seek操作结果回调函数
avPlayer.on('seekDone', (seekDoneTime: number) => {
console.info(`AVPlayer seek succeeded, seek time is ${seekDoneTime}`);
})
// error回调监听函数,当avPlayer在操作过程中出现错误时调用 reset接口触发重置流程
avPlayer.on('error', (err: BusinessError) => {
console.error(`Invoke avPlayer failed, code is ${err.code}, message is ${err.message}`);
if (!this.isSound) {
avPlayer.reset();
}
// 调用reset重置资源,触发idle状态
})
// 状态机变化回调函数
avPlayer.on('stateChange', async (state: string, reason: media.StateChangeReason) => {
switch (state) {
case 'idle': // 成功调用reset接口后触发该状态机上报
console.info('AVPlayer state idle called.');
if (this.isSound) {
avPlayer.release(); // 调用release接口销毁实例对象
break;
}
case 'initialized': // avplayer 设置播放源后触发该状态上报
console.info('AVPlayer state initialized called.');
avPlayer.prepare();
break;
case 'prepared': // prepare调用成功后上报该状态机
console.info('AVPlayer state prepared called.');
if (this.isSound) {
avPlayer.play(); // 调用播放接口开始播放
break;
}
case 'playing': // play成功调用后触发该状态机上报
console.info('AVPlayer state playing called.');
if (this.isSound) {
if (this.count !== 0) {
if (this.isSeek) {
console.info('AVPlayer start to seek.');
avPlayer.seek(avPlayer.duration); //seek到音频末尾
} else {
// 当播放模式不支持seek操作时继续播放到结尾
console.info('AVPlayer wait to play end.');
}
}
} else {
avPlayer.pause(); // 调用暂停接口暂停播放
}
this.count++;
break;
case 'paused': // pause成功调用后触发该状态机上报
console.info('AVPlayer state paused called.');
avPlayer.play(); // 再次播放接口开始播放
break;
case 'completed': // 播放结束后触发该状态机上报
console.info('AVPlayer state completed called.');
if (this.isSound = false) {
avPlayer.stop(); //调用播放结束接口
}
break;
case 'stopped': // stop接口成功调用后触发该状态机上报
console.info('AVPlayer state stopped called.');
this.isSound = false
avPlayer.reset(); // 调用reset接口初始化avplayer状态
break;
case 'released':
console.info('AVPlayer state released called.');
break;
default:
console.info('AVPlayer state unknown called.');
break;
}
})
}
//播放录音
async playRecording(text: string) {
// 创建avPlayer实例对象
let avPlayer: media.AVPlayer = await media.createAVPlayer();
// 创建状态机变化回调函数
this.setAVPlayerCallback(avPlayer);
this.isSeek = false; // 不支持seek操作
avPlayer.url = text;
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 播放器后台暂停音频播放
31浏览 • 1回复 待解决
HarmonyOS textToSpeech能否实现暂停以及从暂停处重新播放合成的音频
180浏览 • 1回复 待解决
HarmonyOS AudioKit C API实现音频播放,连接蓝牙后,声音播放异常(有突突的声音)
631浏览 • 1回复 待解决
HarmonyOS soundpool播放声音的问题
684浏览 • 1回复 待解决
HarmonyOS App,在Native层如何做声音播放和声音采集?
401浏览 • 1回复 待解决
HarmonyOS 不同的soundpool加载不同的声音,播放时只要soundid相同播放的声音也相同怎么解决?
591浏览 • 1回复 待解决
HarmonyOS mp3的播放与暂停
128浏览 • 1回复 待解决
后台播放声音会直接无声
2015浏览 • 1回复 待解决
HarmonyOS ohaudio native播放音频声音有问题
263浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何实现短视频播放控制,比如点击暂停和播放?
276浏览 • 1回复 待解决
HarmonyOS 使用Avplayer播放音乐,同时再播放其他音效会导致正在播放的音乐声音变小然后恢复原来的声音大小
186浏览 • 1回复 待解决
HarmonyOS 如何实现耳机断开的时候暂停播放
30浏览 • 1回复 待解决
HarmonyOS ohaudio 通话模式声音无法外放
561浏览 • 1回复 待解决
HarmonyOS textToSpeech文字转语音,有没有暂停,然后继续播放
737浏览 • 1回复 待解决
HarmonyOS image/ImageSpan组件加载gif图片,如何控制播放/暂停
108浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在鸿蒙应用中实现视频播放器的暂停/播放功能?
390浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何为鸿蒙视频播放器添加暂停和播放功能?
283浏览 • 1回复 待解决
HarmonyOS 如何获取Video组件中视频的播放状态,如播放中、暂停、准备中等等
109浏览 • 1回复 待解决
HarmonyOS 视频使用AVPlayer播放,如果在暂停状态更换surfaceId会变成黑屏
135浏览 • 1回复 待解决
HarmonyOS 申请了后台播放音频任务,退到后台会自动暂停音频播放; 打开悬浮框才能正常后台播放
510浏览 • 1回复 待解决
HarmonyOS 直播流无法播放
214浏览 • 1回复 待解决
HarmonyOS 使用XComponent和AvPlayer播放视频出现有声音无画面问题
233浏览 • 1回复 待解决
HarmonyOS 沙箱中wav音频文件播放,停止、暂停API应该怎么写
25浏览 • 1回复 待解决
通知栏及控制空心无法切换、暂停音乐。操作无反应
6690浏览 • 3回复 待解决
HarmonyOS 在web组件中播放音频没有声音,手指触摸一下h5页面才有声音
227浏览 • 1回复 待解决
case 'idle’中销毁了实例对象,只需要删除case 'idle’下的avPlayer.release()即可。