紫色风铃
紫色风铃
  • 发布:2026-10-14 09:37
  • 更新:2026-10-14 09:38
  • 阅读:30

uni.createInnerAudioContext() 在鸿蒙设置 startTime 无效

分类:uni-app

用 uniapp 开发的微信小程序,一段 mp3 文件需要从指定位置开始播放,在安卓和 ios 使用 startTime 有效,但是在鸿蒙设备下面无效
设备: 华为 nova 12 pro
os: OpenHarmony 6.1.1

最小示例代码:

let innerAudioContext = null  
innerAudioContext = uni.createInnerAudioContext()  
innerAudioContext.src = src  
innerAudioContext.startTime = startTime  
innerAudioContext.play()

看了下鸿蒙的音频文档,里面好像没有这个参数
https://developer.huawei.com/consumer/cn/doc/doccenter-references/api/arkts-apis-audio-audiosessionmanager

2026-10-14 09:37 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

在 uni-app 中,uni.createInnerAudioContext() 的 startTime 属性用于指定音频开始播放的位置(单位:秒),在官方文档中该属性并未标注特定平台不支持(参考文档:uni.createInnerAudioContext)。

由于您开发的是微信小程序,uni.createInnerAudioContext 在微信小程序端最终调用的是微信小程序原生的 wx.createInnerAudioContext API。当微信小程序运行在鸿蒙设备上时,底层由微信小程序的跨端引擎进行适配,而不是直接调用鸿蒙原生的音频会话管理 API。因此,在鸿蒙设备的微信小程序中 startTime 无效,属于微信小程序在鸿蒙系统上的兼容性或实现差异导致的问题。

作为替代方案,您可以尝试使用 seek 方法在音频进入可播放状态时进行跳转。innerAudioContext 对象提供了 seek(position) 方法,可以跳转到指定位置(单位:秒)。

示例代码如下:

let innerAudioContext = uni.createInnerAudioContext()  
innerAudioContext.src = src  

// 监听音频进入可以播放状态的事件  
innerAudioContext.onCanplay(() => {  
  // 使用 seek 方法跳转到指定开始时间  
  innerAudioContext.seek(startTime)  
})  

innerAudioContext.play()

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

建议您通过上述 seek 方法来规避该平台差异问题。如果问题仍然存在,由于这属于微信小程序在鸿蒙环境下的底层实现问题,您可以向微信小程序官方团队反馈该兼容性问题。如需进一步排查或反馈 uni-app 相关问题,也可以前往 ask.dcloud.net.cn 提交交流。

内容为 AI 生成,仅供参考

要回复问题请先登录或注册