讨论广场
全部
讨论
问答
发布
问答 已解决 在 Harmony 开发中遇到 BusinessError 时如何快速判断是权限问题、参数问题还是 API 不支持? 2025-11-17 10:00:55 在使用 AudioKit(createAudioCapturer、createAudioLoopback 等接口)时,经常会抛出 BusinessError,常见的 code 包括: 201 801 6800101 6800301 6800104 每次都要去翻“通用错误码”和“Audio 错误码”文档,定位效率比较低,想知道有没有比较通用的排查思路,顺便请教下这些常见错误大概对应什么问题。 imp
harmonyos
TechnologyDream 回答:可以把常见错误大致分成三大类:权限 / 授权、API 支持情况、参数与业务逻辑。结合你提到的几个 code,总结一个实战版小表: 具体含义以你当前版本的「通用错误码说明」和「Audio 错误码说明」文档为准,这里重点给排查思路。Gitee 1. 权限 / 授权相关 201 Permission denied 典型场景: 忘记在 module.json5 里声明 ohos.permission.MI 2025-11-17 10:48:41
问答 已解决 在 Harmony 开发中同时使用回调版和 Promise 版 createAudioRenderer 会造成资源没释放吗?如何规范封装? 2025-11-17 10:00:11 在项目里有两处地方会创建 AudioRenderer: A 页面使用 Promise 版:audio.createAudioRenderer(options) B 页面使用 callback 版:audio.createAudioRenderer(options, (err, data) => {...}) 日常切换页面播放几次音频后,发现: 播放过程中偶尔出现“设备忙”或“渲染器创建失败”
TechnologyDream 回答:只要你没有调用 release(),之前创建的 AudioRenderer 就可能一直占用系统资源。不论是 Promise 版还是 callback 版,底层对象是一样的。 建议做两件事: 统一封装成 Promise 风格(即使底层是 callback 版); 集中管理渲染器的生命周期,比如做一个单例 AudioRendererService。 示例封装: // AudioRendererServ 2025-11-17 10:47:30
问答 已解决 在 Harmony 开发中如何使用 AudioRoutingManager 监听耳机插拔事件?我这边一直没回调 2025-11-17 09:59:20 想在应用中监听有线耳机 / 蓝牙耳机的插拔,看到文档有 AudioRoutingManager 的 on('deviceChange', ...) 接口,就按示例写了代码。但实际插拔耳机时,控制台没有任何日志,回调好像从来没触发过。 import audio from '@ohos.multimedia.audio'; let audioRoutingMa
harmonyos
TechnologyDream 回答:AudioRoutingManager 的典型用法大致是正确的,但要注意几个容易踩坑的点: 确保 audioRoutingManager 变量在整个应用生命周期内是“活着”的 如果把 audioRoutingManager 定义在函数内部,函数执行完就会被 GC,事件回调自然不会触发。你已经把它提到了模块级变量,这是对的,要确保初始化后不要被覆盖。 确认实际调用了初始化方法并等待 Promise 2025-11-17 10:43:44
问答 已解决 在 Harmony 开发中调用 AudioVolumeManager.setVolume 报错 801 Unsupported API,是我用法错了吗? 2025-11-17 09:57:30 想在应用里直接修改系统媒体音量,按照 Audio 管理文档调用 getVolumeManager 和 setVolume,结果在真机上运行时抛 BusinessError.code = 801,错误信息为 Unsupported API。 import { audio } from '@kit.AudioKit'; import { BusinessError } from
harmonyos
TechnologyDream 回答:这个场景下 不是你的代码写错了,而是调用了「System API」。 在 Audio 管理文档里,AudioVolumeManager 上的很多接口(比如 getVolumeGroupInfos、setVolume 等)都标记为: System API:This is a system API. 这类 API 只有系统应用 / 预置应用才能访问,普通三方应用即使在 SDK 里能看到类型,也会在运行 2025-11-17 10:42:48
问答 已解决 在 Harmony 开发中导入 @ohos.multimedia.audio 后找不到 createAudioRenderer,该用哪个 AudioKit 模块? 2025-11-16 22:52:16 AudioKit 文档里的示例是这样的: import { audio } from '@kit.AudioKit'; let audioManager = audio.getAudioManager(); 我习惯还是用老的导入方式: import audio from '@ohos.multimedia.audio'; 结果在 ArkTS 里用 audio
harmonyos
TechnologyDream 回答:从你贴出的代码和文档可以看到,现在推荐使用新的 Kit 入口 @kit.AudioKit,而不是老的 @ohos.multimedia.audio。两者底层能力是一致的,但: @kit.AudioKit 按照 Kit 维度 进行组织,接口更完整,和官方文档示例保持一致; @ohos.multimedia.audio 更偏向旧版命名,部分 IDE 模板或示例可能还在使用,但接口集合不完全一致。 在 2025-11-17 10:41:35
问答 已解决 在 Harmony 开发中使用 createAudioLoopback 出现 6800104「Loopback mode is unsupported」怎么办? 2025-11-16 22:50:40 想做一个“耳返”功能,用 AudioKit 的 createAudioLoopback 接口创建音频返听器,代码大致如下。但调用时总是进入 catch,BusinessError.code = 6800104,日志提示 Loopback mode is unsupported。 问题相关代码片段、运行结果、报错内容 import { audio } from '@kit.AudioKi
harmonyos
TechnologyDream 回答:根据 AudioKit 文档,createAudioLoopback 只有在当前设备 + 当前模式都支持返听时才能成功,否则会抛出 6800104。正确使用姿势大致分三步: 检查系统是否支持返听能力 检查指定 AudioLoopbackMode 是否被支持 如果不支持,则做功能降级(例如关闭耳返开关、提示用户) 下面给一个示例封装: import { audio } from '@kit 2025-11-17 10:40:25
问答 已解决 在 Harmony 开发中使用 createAudioCapturer 录音成功但导出的 PCM 文件是空的,如何排查? 2025-11-16 22:49:22 同样是用 AudioKit 的 createAudioCapturer 来录音,创建和启动都没有报错,start() 返回也正常。但把采集到的数据写入文件后,用 PC 播放 PCM 时只有静音,波形接近一条直线。 问题相关代码片段、运行结果、报错内容 let audioCapturer: audio.AudioCapturer; // 已经确保权限 OK 和 capturer 已经创建 audio
harmonyos
TechnologyDream 回答:录音成功但文件只有静音,一般有几种常见原因: 只调用了一次 read,采样数据量远远不够 没有检查 read 的返回值,实际读到的字节数可能为 0 采样参数与播放器不匹配(但你这边和示例一致,问题不大) 推荐按下面的方式实现一个循环采集,并检查 read 返回值: import { audio } from '@kit.AudioKit'; import { BusinessE 2025-11-17 10:39:33
问答 已解决 在 Harmony 开发中调用 createAudioCapturer 时出现 201 Permission denied 或 6800301 怎么解决? 2025-11-16 22:48:03 在 ArkTS 里用 AudioKit 录音,调用 audio.createAudioCapturer 时总是失败,有时报 BusinessError.code = 201(Permission denied),有时是 6800301。真机上表现为录音功能不可用。 问题相关代码片段、运行结果、报错内容 import { audio } from '@kit.AudioKit';
harmonyos
TechnologyDream 回答:这里只在代码里声明 SOURCE_TYPE_MIC 还不够,录音必须同时满足: 在配置文件中声明权限:ohos.permission.MICROPHONE 在运行时向用户弹框申请权限(至少在手机系统上是必须的) 确保当前没有其他应用占用 Mic(否则可能出现 6800301 / mic busy) 1. 在 module.json5 声明权限 { "module": { // 2025-11-17 10:38:59
问答 已解决 在 Harmony 开发中使用 AudioKit 创建 AudioRenderer 一直返回错误码 6800101 怎么办? 2025-11-16 22:46:31 在 ArkTS 工程里想用 AudioKit 播放一段 PCM 音频,按照官方示例去调用 audio.createAudioRenderer,但是每次 Promise 都走 catch,BusinessError.code 为 6800101(Parameter verification failed),导致渲染器对象一直创建失败。 问题相关代码片段、运行结果、报错内容 import { audi
harmonyos
TechnologyDream 回答:错误码 6800101 对应 AudioKit 的参数校验失败,最常见的问题有两类: 枚举类型没有使用枚举常量,而是直接写数字 AudioRendererOptions 中缺少必填的 rendererInfo 字段或字段类型不正确 根据官方示例,AudioStreamInfo 和 AudioRendererInfo 都应该使用枚举常量来赋值,并且 AudioRendererOptions 必须同时 2025-11-17 10:36:44
查看更多