uni-app uni.createInnerAudioContext() 安卓onTimeUpdate事件触发频繁
uni-app uni.createInnerAudioContext() 安卓onTimeUpdate事件触发频繁
bug1: 测试音频地址 https://cdnws.51tyty.com/ugc/audio/2024/8/11/3ed0ce340ed34bb48c11362123b78fff.mp3
当用 seek 跳转播放位置 比如 214.885秒 手机的 214.885 和平板的 214.885 所对应的语音不同 基本上 seek 跳转的会错开个 2 秒左右
bug2 onTimeUpdate 函数有问题 比如我多次切换 url 地址 她的 onTImeUpdate 会一秒内多打印很多次 直到死机
原因是 onTimeupdate 内部 没有监听暂停事件 这是第一个。第二个是 onTImeUpdate 必须要在切换 url 时候 先暂停 在切换 否则会增加多个队列 虽然打印的是最后一个 url 的播放时间
更多关于uni-app uni.createInnerAudioContext() 安卓onTimeUpdate事件触发频繁的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我看你发不了好几条信息,是同一个问题吗
更多关于uni-app uni.createInnerAudioContext() 安卓onTimeUpdate事件触发频繁的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2024 12月10日 最新bug 在平板端 当调用seek播放指定的播放位置的声音和按照顺序的差2秒上下。手机端不会 比如一个10分钟的小说正常播放到214秒和调到214秒声音是不同的 在平板 你好
在uni-app中使用uni.createInnerAudioContext()
创建音频上下文时,onTimeUpdate
事件在安卓设备上触发频繁的问题确实比较常见。这通常是由于安卓系统的音频处理机制较为敏感,导致时间更新事件频繁触发。虽然无法直接通过配置减少触发频率,但可以通过编程技巧来优化处理逻辑,减少不必要的操作。
以下是一个示例代码,展示了如何使用uni.createInnerAudioContext()
并处理onTimeUpdate
事件,同时优化处理逻辑以避免性能问题:
// 创建一个音频上下文
const innerAudioContext = uni.createInnerAudioContext();
// 设置音频源
innerAudioContext.src = 'https://example.com/audio/file.mp3';
// 定义一个变量来存储上一次触发时间更新事件的时间戳
let lastTimeUpdate = 0;
// 定义时间更新事件处理函数
innerAudioContext.onTimeUpdate(() => {
const currentTime = Date.now();
// 检查上一次触发时间,如果距离当前时间超过一定阈值(例如100毫秒),则处理更新
if (currentTime - lastTimeUpdate > 100) {
lastTimeUpdate = currentTime;
// 在这里处理时间更新逻辑,例如更新进度条
console.log('Current time:', innerAudioContext.currentTime);
// 示例:更新页面上的进度条
// this.progress = innerAudioContext.currentTime / innerAudioContext.duration;
}
});
// 播放音频
innerAudioContext.play();
// 其他事件处理,如暂停、停止等
innerAudioContext.onPause(() => {
console.log('Audio paused');
});
innerAudioContext.onStop(() => {
console.log('Audio stopped');
});
// 清理资源(可选,在组件销毁或页面卸载时调用)
// innerAudioContext.destroy();
在上述代码中,我们通过lastTimeUpdate
变量来记录上一次触发onTimeUpdate
事件的时间戳,并在每次触发时检查当前时间与上一次触发时间的差值。如果差值超过设定的阈值(例如100毫秒),则处理时间更新逻辑,否则忽略此次触发。这种方法可以在一定程度上减少因频繁触发onTimeUpdate
事件而导致的性能问题。
请注意,根据具体需求,你可能需要调整时间阈值以达到最佳效果。此外,确保在适当的时机(如组件销毁或页面卸载)清理音频资源,以避免内存泄漏。