/**
-
开始录音
*/
function startSpeek() {
// #ifdef APP-PLUS
// 触发震动
triggerVibration();if (!recorderManager) {
initRecorder();
}
voiceTextValue.value = '';
openTimer.value = Date.now();// 清除之前的超时定时器
if (timeoutTimer) {
clearTimeout(timeoutTimer);
timeoutTimer = null;
}// 设置超时定时器,3分钟后自动停止录音
timeoutTimer = setTimeout(() => {
console.log('录音时长达到3分钟,自动停止录音');
// 自动停止录音
endSpeek();
// 触发超时回调
timeoutListeners.forEach((listener) => {
try {
listener();
} catch (error) {
console.error('超时回调执行失败', error);
}
});
// 清除定时器
timeoutTimer = null;
}, MAX_RECORDING_DURATION);recorderManager.start({
duration: MAX_RECORDING_DURATION,
sampleRate: 16000,
format: 'pcm',
numberOfChannels: 1
});
// #endif
}
/**
- 震动反馈
- @param {number} intensity 震动强度 (仅适用于 iOS)
*/
export function triggerVibration(intensity = 1) {
if (plus.os.name === "iOS") {
try {
var UIImpactFeedbackGenerator = plus.ios.importClass("UIImpactFeedbackGenerator");
var impact = new UIImpactFeedbackGenerator();
impact.prepare();
impact.init(intensity); // 设置震动强度
impact.impactOccurred(); // 触发震动
} catch (error) {
console.error("iOS 震动反馈初始化失败:", error);
}
} else {
uni.vibrateShort(); // 对于 Android 或其他平台,使用短震动
}
}
1 个回复
1***@qq.com (作者) - dddd
由于IOS 无法短震动所以我自己写了一个短震动方法
/**
*/
export function triggerVibration(intensity = 1) {
if (plus.os.name === "iOS") {
try {
var UIImpactFeedbackGenerator = plus.ios.importClass("UIImpactFeedbackGenerator");
var impact = new UIImpactFeedbackGenerator();
impact.prepare();
impact.init(intensity); // 设置震动强度
impact.impactOccurred(); // 触发震动
} catch (error) {
console.error("iOS 震动反馈初始化失败:", error);
}
} else {
uni.vibrateShort(); // 对于 Android 或其他平台,使用短震动
}
}