uni-app中uni.createInnerAudioContext()在安卓端seek功能失效

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app中uni.createInnerAudioContext()在安卓端seek功能失效

开发环境 版本号 项目创建方式
Windows win11 HBuilderX
Android Android 14 模拟器
SM-S9080

示例代码:

audioContext.seek(20) // 从开始时间开始播放
audioContext.play();


### 操作步骤:
直接使用官方API设置seek时间

### 预期结果:
能跳转指定位置

### 实际结果:
不能跳转

### bug描述:
如题,seek在安卓端失效了,在ios还未测试,web正常

3 回复

你好,你在真机上测试一下看看呢?看看效果是不是正常的


已经解决,使用startTime可以替代。。。seek不行

在uni-app中,uni.createInnerAudioContext() 提供了在应用中播放音频的功能,其中包括 seek 方法,用于跳转到音频的指定位置。然而,如果在安卓端发现 seek 功能失效,这通常可能是由于多种原因导致的,包括但不限于音频格式问题、音频文件损坏、系统权限问题、或是uni-app框架的某些bug。

以下是一个基本的代码示例,展示了如何使用 uni.createInnerAudioContext() 以及 seek 方法。如果该方法在安卓端仍然不工作,你可能需要进一步检查音频文件本身或是系统环境。

// 创建一个音频上下文实例
const innerAudioContext = uni.createInnerAudioContext();

// 设置音频文件的路径
innerAudioContext.src = 'https://example.com/audio/sample.mp3';

// 监听音频的自然播放结束事件
innerAudioContext.onEnded(() => {
  console.log('音频播放结束');
});

// 监听音频的播放错误事件
innerAudioContext.onError((err) => {
  console.error('音频播放出错', err);
});

// 播放音频
innerAudioContext.play();

// 假设在播放了一段时间后,我们想跳转到音频的10秒位置
setTimeout(() => {
  innerAudioContext.seek(10); // 跳转到10秒
  console.log('尝试跳转到10秒');
}, 5000); // 5秒后尝试跳转

// 如果需要,也可以监听seek完成事件(注意:uni-app没有直接的seek完成事件,但可以通过时间更新事件间接判断)
innerAudioContext.onTimeUpdate(() => {
  if (innerAudioContext.currentTime >= 10 && innerAudioContext.currentTime < 11) {
    console.log('成功跳转到10秒');
  }
});

解决思路

  1. 检查音频文件:确保音频文件没有损坏,且格式被安卓系统支持。
  2. 权限检查:确保应用有权限访问网络(如果音频文件在线)或读取本地存储(如果音频文件离线)。
  3. 调试和日志:使用 onError 监听错误,查看是否有更详细的错误信息。
  4. 系统和框架版本:检查uni-app框架和安卓系统的版本,确认是否存在已知的bug。
  5. 社区和文档:查阅uni-app的官方文档和社区,看看是否有其他开发者遇到并解决了类似的问题。

如果上述方法都不能解决问题,考虑向uni-app的开发者社区或官方支持寻求帮助。

回到顶部