fix : 声音问题处理

This commit is contained in:
杨航
2025-12-09 08:45:37 +08:00
parent 2c9fafa8f4
commit 77b4a7050f
+32 -11
View File
@@ -13,7 +13,7 @@
</view>
</view>
<view class="btns-cont">
<view class="play-btn" >
<view class="play-btn">
<image class="icon" v-show="!(!voiceLoading&&(props.activeVoiceId === dataInfo.id))" @click.stop="playVoice"
src="@/static/images/course/play-blue.png" style="width: 100%;height: 100%;"></image>
<image class="icon" v-show="!voiceLoading&&(props.activeVoiceId === dataInfo.id)" @click.stop="pauseVoice"
@@ -84,6 +84,20 @@
onUnload(() => {
pauseVoice()
})
// 重播
const restartPlay = () => {
if (itemVoice.value) {
emit('changePlay', '');
emit('changePlay', unref(dataInfo)?.id);
setTimeout(() => {
talkUserVoiceObj.value.src = itemVoice.value;
talkUserVoiceObj.value.seek(0);
talkUserVoiceObj.value.play();
}, 100);
} else {
playVoice();
}
};
const pauseVoice = () => {
if (!talkUserVoiceObj.value) return
talkUserVoiceObj.value.pause()
@@ -92,7 +106,13 @@
}
const playVoice = () => {
emit('changePlay', unref(dataInfo)?.id)
if(isTesting.value){
talkUserVoiceObj.value.volume = 1
restartPlay()
return
}
if (talkUserVoiceObj.value && talkUserVoiceObj.value.src) {
talkUserVoiceObj.value.volume = 1
setTimeout(() => {
talkUserVoiceObj.value.src = itemVoice.value
talkUserVoiceObj.value.play()
@@ -101,6 +121,7 @@
return
} else {
talkUserVoiceObj.value.src = ''
talkUserVoiceObj.value.volume = 1
if (unref(dataInfo).talkingVoice) {
setTimeout(() => {
talkUserVoiceObj.value.src = itemVoice.value
@@ -140,12 +161,12 @@
talkUserVoiceObj.value.sessionCategory = 'soloAmbient'
//#ifdef APP-PLUS
// 安卓端 须播放一次,不然再次播放会没有声音
// if (IsAndEnv) {
// isTesting.value = true
// talkUserVoiceObj.value.volume = 0
// talkUserVoiceObj.value.play()
// // talkUserVoiceObj.value.pause()
// }
if (IsAndEnv) {
isTesting.value = true
talkUserVoiceObj.value.volume = 0
talkUserVoiceObj.value.play()
// talkUserVoiceObj.value.pause()
}
// #endif
// setTimeout(() => {
// setVoiceTime(0)
@@ -153,16 +174,16 @@
}
const isTesting = ref(false)
const setVoiceTime = (sum) => {
sum += 1
let _sum = sum + 1
if (Math.ceil(talkUserVoiceObj.value.duration) > 0) {
voiceTime.value = (Math.ceil(talkUserVoiceObj.value.duration) || 1) + 's'
} else {
if (sum === 20) {
voiceTime.value = (props.dataInfo.voiceTime|| 0) + 's'
if (_sum === 25) {
voiceTime.value = (props.dataInfo.voiceTime|| 1) + 's'
return
}
setTimeout(() => {
setVoiceTime(sum)
setVoiceTime(_sum)
}, 200)
}
}