【HarmonyOS NEXT】使用AVPlayer播放音乐,导致系统其它应用音乐播放暂停 - 播放音频焦点管理
HarmonyOS NEXT 的 AVPlayer 会打断其他应用播放根本原因在于系统默认的音频焦点策略是后来者优先你的应用启动播放时系统会先暂停其他应用的音频再将焦点交给你。解决方案的核心是根据你的业务场景选择合适的音频焦点策略。 方案一播放短音效用 SoundPool混音模式如果只是播放短促音效或提示音不建议用 AVPlayer最佳实践是使用SoundPool。它专为此类场景设计默认就不会打断其他应用的音频播放。关键在于创建 SoundPool 时将usage设为STREAM_USAGE_MUSIC等类型即可进入混音模式。typescriptimport { audio } from kit.AudioKit; import { media } from kit.MediaKit; // 创建SoundPool配置为混音模式不会打断其他音频 let audioRendererInfo: audio.AudioRendererInfo { usage: audio.StreamUsage.STREAM_USAGE_MUSIC, // 关键配置 rendererFlags: 1 }; let soundPool: media.SoundPool await media.createSoundPool(5, audioRendererInfo); // 加载资源并播放... 方案二播放音乐用 AudioSessionManager四种策略如果是正经播放音乐或长音频就需要通过AudioSessionManager主动声明你的“待客之道”。它有四种concurrencyMode可供选择模式效果适用场景CONCURRENCY_MIX_WITH_OTHERS(并发模式)与其他应用音频同时播放互不干扰。需要背景音和你的声音同时存在。CONCURRENCY_DUCK_OTHERS(降低音量模式)与其他应用音频同时播放但将其他应用音量降低。导航语音播报既要听清导航又不希望音乐中断。CONCURRENCY_PAUSE_OTHERS(暂停模式)暂停其他应用音频独占焦点。典型的音乐应用希望用户完全沉浸在你的音乐中。CONCURRENCY_DEFAULT(默认模式)使用系统默认策略与PAUSE_OTHERS效果类似。大多数通用场景不需要特殊定制。代码示例在 AVPlayer 准备播放前设置typescriptimport { audio } from kit.AudioKit; // 1. 获取 AudioSessionManager let audioManager audio.getAudioManager(); let sessionManager audioManager.getSessionManager(); // 2. 配置策略比如选择 混音模式 let strategy: audio.AudioSessionStrategy { concurrencyMode: audio.AudioConcurrencyMode.CONCURRENCY_MIX_WITH_OTHERS }; // 3. 在播放前激活音频会话策略生效 await sessionManager.activateAudioSession(strategy); // ... 然后执行 AVPlayer 的 play() 逻辑注意会话激活后若不手动关闭系统约1分钟后会自动释放。你可以在播放结束后主动调用deactivateAudioSession()来清理资源将控制权交还给系统。⚙️ AVPlayer 补充策略audioInterruptMode监听此外AVPlayer 本身也有audioInterruptMode属性和audioInterrupt事件让你能感知到“被其他应用打断了”这一事件并做出响应如暂停播放。typescript// 在 AVPlayer 的 prepared 状态回调中设置 avPlayer.audioInterruptMode audio.InterruptMode.INDEPENDENT_MODE; // 或 SHARED_MODE avPlayer.on(audioInterrupt, (info: audio.InterruptEvent) { // 根据 info.hintType 处理暂停、降低音量等 console.info(音频被中断类型 info.hintType); });INDEPENDENT_MODE模式可以更独立地管理音频焦点避免与系统的默认策略强耦合。 场景选型速查表你的场景推荐方案核心要点播放短音效(点击声、提示音等)方案一SoundPool创建时设置usage为STREAM_USAGE_MUSIC自动混音。播放音乐希望共存方案二AudioSessionManager设置concurrencyMode为CONCURRENCY_MIX_WITH_OTHERS。播放音乐希望不打扰方案二AudioSessionManager设置concurrencyMode为CONCURRENCY_PAUSE_OTHERS。播放导航音压低背景音方案二AudioSessionManager设置concurrencyMode为CONCURRENCY_DUCK_OTHERS。

相关新闻

嵌入式电路板 BIST 自检设计完全指南:上电时电压轨、时钟与存储器的全面自动测试流程

嵌入式电路板 BIST 自检设计完全指南:上电时电压轨、时钟与存储器的全面自动测试流程

嵌入式电路板 BIST 自检设计完全指南:上电时电压轨、时钟与存储器的全面自动测试流程 一、烧录完固件、上电、看指示灯——这套"测试流程"的盲区有多深 很多嵌入式开发者对上电测试的认知停留在"LED 亮了就算通过"。但在工业控制器、医疗设备和…

2026/10/14 21:24:20 阅读更多 →
NCNN Profiling 数据火焰图生成实战:从 Benchmark 命令行输出到 FlameGraph 可视化脚本管道

NCNN Profiling 数据火焰图生成实战:从 Benchmark 命令行输出到 FlameGraph 可视化脚本管道

NCNN Profiling 数据火焰图生成实战:从 Benchmark 命令行输出到 FlameGraph 可视化脚本管道 一、Benchmark 输出的信息孤岛:当 500 行数字报表无法揭示性能热点 NCNN 自带的 benchmark 工具可以对每个算子输出详细的性能数据。一次典型运行产生 300-500 …

2026/10/7 23:11:18 阅读更多 →
ES6-learning:7个让代码更优雅的ES6实用特性全解析

ES6-learning:7个让代码更优雅的ES6实用特性全解析

ES6-learning:7个让代码更优雅的ES6实用特性全解析 【免费下载链接】ES6-learning 《深入理解ES6》教程学习笔记 项目地址: https://gitcode.com/gh_mirrors/es6l/ES6-learning ES6-learning是一个专注于《深入理解ES6》教程学习的开源项目,提供了…

2026/10/12 5:36:23 阅读更多 →

最新新闻

企业微信二次开发:回调超时丢事件?先把自动回复挪出门口

企业微信二次开发:回调超时丢事件?先把自动回复挪出门口

自动回「有时灵有时不灵」,模型监控却挺好看——假象。 很多事件在进业务之前就丢了:回调处理太慢,时间窗一到,像没发生过。 企业微信二次开发接 QiWe API 消息回调时,同样适用一句口诀:先进柜&#xff0c…

2026/10/15 3:23:39 阅读更多 →
LOIC 压力测试全解析,四种协议攻击原理与防御

LOIC 压力测试全解析,四种协议攻击原理与防御

协议分层视角下的压力测试原理在网络安全研究与系统架构设计中,理解流量生成的底层逻辑是构建高可用服务的前提。LOIC(Low Orbit Ion Cannon)作为一款经典的网络压力测试工具,其核心价值不在于“攻击”,而在于通过模拟…

2026/10/15 3:23:39 阅读更多 →
个人博客项目

个人博客项目

这事个人博客项目的前端做的,已经可以和后端联通了,是vue3 Spring Voot3前后端分离项目,前端vue可以说是借鉴,后端SpringBoot才是我守着的,后端当初只学到SpringNVX,前端根本没仔细学过,现在前…

2026/10/15 3:23:39 阅读更多 →
VLC for Android 构件发布指南:用 YubiKey 签名并将 libvlc、medialibrary 部署到 Maven Central

VLC for Android 构件发布指南:用 YubiKey 签名并将 libvlc、medialibrary 部署到 Maven Central

音视频移动开发 【免费下载链接】vlc-android VLC for Android, Android TV and ChromeOS 项目地址: https://gitcode.com/gh_mirrors/vl/vlc-android 点击查看 免费下载 本文是 vlc-android 仓库维护者(Release Manager)专用的发布操作指南…

2026/10/15 3:23:39 阅读更多 →
ue5学习文档:水材质

ue5学习文档:水材质

一个简单的水材质蓝图第一章:表面系统 1.1 为什么用“绝对世界位置”而不是默认UV? 使用世界坐标的XY,意味着波浪的平铺是基于世界空间尺度的。无论水面怎么缩放,波浪的物理大小都不会变。 1.2 三层Panner:怎么让水“动…

2026/10/15 3:23:39 阅读更多 →
Apereo CAS 指标导出 Datadog 实战:Micrometer Registry 配置与运维指南

Apereo CAS 指标导出 Datadog 实战:Micrometer Registry 配置与运维指南

后端认证鉴权单点登录 【免费下载链接】cas Apereo CAS - Identity & Single Sign On for all earthlings and beyond. 项目地址: https://gitcode.com/gh_mirrors/ca/cas 点击查看 免费下载 本指南聚焦于 Apereo CAS 将运行时指标周期性地导出到 Datadog 的完…

2026/10/15 3:22:39 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →