# ManagingAudioOutputDevices **Repository Path**: ywcoder/managing-audio-output-devices ## Basic Information - **Project Name**: ManagingAudioOutputDevices - **Description**: 本示例基于媒体场景和通话场景,展示如何获取输出设备信息、切换输出设备、响应设备变更。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-12-26 - **Last Updated**: 2026-01-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 管理音频输出设备 ## 项目简介 本示例基于AVSession、AudioRender、AudioRoutingManager、AudioSessionManager等能力,通过媒体场景和通话场景,展示如何获取输入设备信息、切换输入设备、响应设备变更。 ## 效果预览 ## 使用说明 1. 点击首页"媒体设备"按钮进入音乐播放页面,点击右上角AVCastPicker投播组件切换输出设备,点击播放按钮播放音乐,点击暂停按钮暂停播放。 2. 点击首页"通话设备"按钮进入通话模拟页面,显示可选择输出设备列表,点击设置按钮设置默认输出设备,点击通话图形按钮开始通话,点击AVCastPicker投播组件切换输出设备,点击叉叉图形按钮暂停播放。 ## 工程目录 ``` ├───entry/src/main/ets │ ├───common │ │ ├───AudioRenderering.ets // 音频播放控制器 │ │ ├───AVSessionController.ets // 音频会话控制器 │ │ ├───OutputDevicesOperation.ets // 音频设备管理 │ │ └───Utils.ets // 工具类 │ ├───constants │ │ └───CommonConstants.ets // 常量 │ ├───datasource │ │ ├───SongData.ets // 音乐定义类 │ │ ├───SongDataSource.ets // 音乐数据 │ │ └───SongListData.ets // 音乐数据列表 │ ├───entryability │ │ └───EntryAbility.ets // Ability的生命周期回调内容 │ ├───entrybackupability │ │ └───EntryBackupAbility.ets │ ├───pages │ │ └───Index.ets // 首页 │ └───view │ ├───CallEquipment.ets // 通话设备 │ └───MediaEquipment.ets // 媒体设备 └───entry/src/main/resources // 资源目录 ``` ## 具体实现 1. 使用AudioRoutingManager.getDevices获取音频设备列表。 2. 使用AudioRoutingManager.getAvailableDevices获取音频可选设备列表。 3. 创建AudioRenderer,媒体设备的StreamUsage选择STREAM_USAGE_MUSIC,通话设备的StreamUsage选择STREAM_USAGE_VOICE_COMMUNICATION。 4. 创建AVSession,媒体设备的sessionType选择audio,通话设备的sessionType选择voice_call。 5. 使用AVCastPicker组件切换输出设备。 6. 使用audioRoutingManager.on('preferOutputDeviceChangeForRendererInfo')监听音频流输出设备变化。 7. 通话设备,可使用audioRoutingManager.getAvailableDevices获取当前可选的音频输出设备列表,通过audioRenderer.setDefaultOutputDevice切换输出设备 ## 相关权限 1. 后台任务权限:ohos.permission.KEEP_BACKGROUND_RUNNING 2. 查看蓝牙配置的使用权限:ohos.permission.USE_BLUETOOTH ## 依赖 不涉及 ## 约束与限制 1. 本示例仅支持标准系统上运行,支持设备:直板机、PC/2in1。 2. HarmonyOS系统:HarmonyOS 6.0.1 Release及以上。 3. DevEco Studio版本:DevEco Studio 6.0.1 Release及以上。 4. HarmonyOS SDK版本:HarmonyOS 6.0.1 Release SDK及以上。