1***@qq.com
1***@qq.com
  • 发布:2026-01-21 15:50
  • 更新:2026-01-21 21:17
  • 阅读:23

鸿蒙背景音乐 this.audioCtx.onEnded(() 无再次play

分类:鸿蒙Next

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 64

HBuilderX类型: 正式

HBuilderX版本号: 4.87

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 6.0.0

手机厂商: 华为

手机机型: mate60 pro

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

操作步骤:
this.audioCtx.onEnded(() => {  
                setTimeout(() => {  

                    this.audioCtx.title = '致爱丽丝';  
                    this.audioCtx.singer = '暂无';  
                    this.audioCtx.coverImgUrl = 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/music-a.png';  
                    this.audioCtx.src = 'https://web-ext-storage.dcloud.net.cn/doc/uniapp/ForElise.mp3';  
                                        this.audioCtx.play();  
                }, 300)  
})  

预期结果:

预期结果是播放这个音乐

实际结果:

title singer coverImgUrl src都是更换成功的,但就是play();无法触发,没有任何反应,onplay() onError() 都不会触发,连在实况窗点播放也是没有反应的

bug描述:

鸿蒙背景音乐 this.audioCtx.onEnded(() this.audioCtx.play() 不能触发 onPlay, 其他的修改都行可以的,就是不能播放,在实况窗点播放也没有任何反应,不知道是鸿蒙底层的问题

2026-01-21 15:50 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该问题请在专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

【官方评审结论】

  1. 反馈完整性

    • 标题、描述、代码片段、复现步骤、预期/实际结果、环境信息都已给出,基本完整。
    • 代码片段可直接粘到页面 onLoad 里运行,无需额外改动。
    • 但缺少 manifest 中后台播放权限配置截图,以及真机运行日志(adb log / IDE log),后续定位仍需补充。
  2. Bug 是否成立
    根据知识库:

    • HarmonyOS Next 从 HBuilderX 4.31 起支持 getBackgroundAudioManager,4.87 版本满足最低要求。
    • 文档明确提示「鸿蒙元服务需要开启后台播放权限」,若未在 manifest.json → module → reqPermissions 里声明 ohos.permission.KEEP_BACKGROUND_RUNNING,系统会拦截第二次播放。
    • 因此该现象属于「权限缺失」而非框架 bug,但用户并不知情,故不算误报,而是信息缺失导致的「问题成立」。
  3. 基本概念检查

    • 用户使用的是 getBackgroundAudioManager(全局单例),符合鸿蒙后台播放场景;如仅前台播放,可用 createInnerAudioContext
    • 代码里在 onEnded 回调里重新设置 src 并调用 play(),文档注明「设置新的 src 时会自动播放」,手动再调一次 play() 理论上无害,但不应是主因。
  4. 下一步建议

    1. manifest.json 的鸿蒙节点下增加
      "reqPermissions": [  
      "ohos.permission.KEEP_BACKGROUND_RUNNING"  
      ]  

      重新打包真机运行。

    2. 如仍无效,请补充:
      • IDE 控制台完整日志(过滤 “BackgroundAudioManager”)。
      • 手机「设置-应用-权限」后台运行权限是否被手动关闭。
    3. 临时替代方案:改用 createInnerAudioContext 并在页面隐藏时继续播放(仅前台场景)。
    4. 若确认权限已开仍复现,请再提单并附日志,我们将转 HarmonyOS 原生层继续跟进。

【状态】待用户补充权限配置与日志后进一步处理。

内容为 AI 生成,仅供参考
1***@qq.com

1***@qq.com (作者)

权限都是给了,所有东西都是对的
16:52:33.313 ​‌​01-21 16:52:33.933 27841 27841 I C015B0/xxxxxxxx/NETSTACK: [module_template.h:97] js invoke WebSocketSend
16:52:33.313 ​‌​01-21 16:52:33.933 27841 27841 I C015B0/xxxxxxxx/NETSTACK: [send_context.cpp:33] SendContext data is String
16:52:33.313 ​‌​01-21 16:52:33.934 27841 28123 I C015B0/xxxxxxxx/NETSTACK: [websocket_exec.cpp:466] lws callback reason is 71
16:52:33.313 ​‌​01-21 16:52:33.934 27841 28123 I C015B0/xxxxxxxx/NETSTACK: [websocket_exec.cpp:466] lws callback reason is 10
16:52:33.650 ​‌​01-21 16:52:34.275 27841 28019 I C02B2B/xxxxxxxx/PlayerCallbackNapi: #96 OnInfo is called, PlayerOnInfoType: 5
16:52:33.650 ​‌​01-21 16:52:34.275 27841 28019 W C02B2B/xxxxxxxx/PlayerCallbackNapi: #207 can not find reset callback!
16:52:33.650 ​‌​01-21 16:52:34.276 27841 27841 W C02B2B/xxxxxxxx/ScopedTimer: (~ScopedTimer(), 36): name: Reset, time-taking: 37 ms
16:52:33.659 ​‌​01-21 16:52:34.282 27841 28019 I C02B2B/xxxxxxxx/PlayerCallbackNapi: #96 OnInfo is called, PlayerOnInfoType: 5
16:52:33.659 ​‌​01-21 16:52:34.282 27841 28019 W C02B2B/xxxxxxxx/PlayerCallbackNapi: #207 can not find unknown callback!
16:52:33.742 ​‌​01-21 16:52:34.355 27841 28341 E A04510/xxxxxxxx/chromium: [battery_mgr_client_adapter_impl.cpp:58] not battery event
16:52:34.272 ​‌​01-21 16:52:34.891 27841 28019 I C02B2B/xxxxxxxx/PlayerCallbackNapi: #96 OnInfo is called, PlayerOnInfoType: 10

DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

可以优化。你应当先停止在播放

this.audioCtx.onEnded(() => {  
                console.log(' 播放结束');  
                setTimeout(() => {  

                    // this.audioCtx.title = '致爱丽丝';  
                    // this.audioCtx.singer = '暂无';  
                    this.audioCtx.stop()  
                    // this.audioCtx.coverImgUrl = 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/music-a.png';  
                    this.audioCtx.src = '/static/009_156.1-183.8.mp3';  
                    this.audioCtx.play();  
                }, 300)  
            })

要回复问题请先登录注册