吉安感知网项目-前端
张含笑
2026-02-09 4355f4558eaf65004c33fec9a3041386a15cd003
feat:去掉震动
1 files modified
97 ■■■■■ changed files
applications/mobile-web-view/src/appPages/voiceCallDetail/index.vue 97 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/appPages/voiceCallDetail/index.vue
@@ -92,10 +92,7 @@
                
                state.value = 'ringing';
                log('📞 收到来电 call,来自', incomingFrom);
                // 开始来电提示(铃声和震动)
                playRingtone();
                startVibration();
            }
        } catch (e) {
            log('❌ 解析voiceparams参数失败:', String(e));
@@ -180,76 +177,6 @@
    }, 25000)
}
// 来电提示相关
let ringtoneAudio = null
let vibrationTimer = null
// 播放来电铃声
function playRingtone() {
    // 创建音频对象(使用默认的系统提示音)
    ringtoneAudio = new Audio('data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQQAAAAAAA==');
    ringtoneAudio.loop = true;
    ringtoneAudio.volume = 0.5;
    try {
        ringtoneAudio.play();
        log('🔊 开始播放来电铃声')
    } catch (e) {
        log('❌ 播放来电铃声失败:', String(e))
    }
}
// 停止来电铃声
function stopRingtone() {
    if (ringtoneAudio) {
        try {
            ringtoneAudio.pause();
            ringtoneAudio.currentTime = 0;
            ringtoneAudio = null;
            log('🔇 停止播放来电铃声')
        } catch (e) {
            log('❌ 停止来电铃声失败:', String(e))
        }
    }
}
// 开始震动
function startVibration() {
    // 检查浏览器是否支持震动 API
    if ('vibrate' in navigator) {
        // 震动模式:震动1秒,暂停0.5秒,重复
        const vibrationPattern = [1000, 500];
        try {
            navigator.vibrate(vibrationPattern);
            vibrationTimer = setInterval(() => {
                navigator.vibrate(vibrationPattern);
            }, 1500); // 每1.5秒重复一次震动模式
            log('📳 开始震动提示')
        } catch (e) {
            log('❌ 震动失败:', String(e))
        }
    } else {
        log('ℹ️ 当前浏览器不支持震动功能')
    }
}
// 停止震动
function stopVibration() {
    if (vibrationTimer) {
        clearInterval(vibrationTimer);
        vibrationTimer = null;
    }
    if ('vibrate' in navigator) {
        try {
            navigator.vibrate(0); // 停止震动
            log('📳 停止震动提示')
        } catch (e) {
            log('❌ 停止震动失败:', String(e))
        }
    }
}
function stopPing() {
    if (pingTimer) clearInterval(pingTimer)
    pingTimer = null
@@ -386,12 +313,7 @@
        offeredByPeer = false
        state.value = 'ringing'
        log('📞 收到来电 call,来自', incomingFrom)
        // 开始来电提示(铃声和震动)
        playRingtone()
        startVibration()
            log('📞 收到来电 call,来自', incomingFrom)
        return
    }
@@ -495,7 +417,7 @@
        onSignal(msg)
    }
}
// 发送呼叫信息
function requestCall() {
    state.value = 'calling'
    incomingFrom = null
@@ -506,14 +428,10 @@
    send('call', peerUid.value, null)
    log('➡️ 发起呼叫 call 给', peerUid.value)
}
// 接收信息
function acceptCall() {
    if (!incomingFrom) return
    acceptedByMe = true
    // 停止来电提示
    stopRingtone()
    stopVibration()
    // 先告诉对方我接听了(后端会把双方置忙)
    send('accept', incomingFrom, null)
@@ -530,10 +448,6 @@
function rejectCall() {
    if (!incomingFrom) return
    // 停止来电提示
    stopRingtone()
    stopVibration()
    // 你后端没有 reject,用 busy 表示拒绝/不可接听
    send('busy', incomingFrom, null)
@@ -600,9 +514,6 @@
    } catch {}
    stopTimer()
    // 停止来电提示
    stopRingtone()
    stopVibration()
    if (pc) {
        pc.getSenders().forEach(s => s.track && s.track.stop())