# ManagingAudioInputDevices **Repository Path**: ywcoder/managing-audio-input-devices ## Basic Information - **Project Name**: ManagingAudioInputDevices - **Description**: 本示例基于媒体场景和通话场景,展示如何获取输入设备信息、切换输入设备、响应设备变更。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-12-23 - **Last Updated**: 2026-01-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 实现音频输入设备管理功能 ## 项目简介 本示例基于AudioCapturer、AudioRender、AudioRoutingManager、AudioSessionManager等能力,通过媒体场景和通话场景,展示如何获取输入设备信息、切换输入设备、响应设备变更。 ## 效果预览 | 应用主界面 | 音频录制 | 音频播放 | |-------------------------------------|-------------------------------------|-------------------------------------| | ![image](screenshots/effect_01.png) | ![image](screenshots/effect_02.png) | ![image](screenshots/effect_03.png) | ## 使用说明 1. 点击"媒体设备"按钮进入"录制和播放"页面,显示可选择输入设备列表,点击设置按钮切换音频输入设备。 2. 点击红色录制按钮开始录音,等待录音完毕或等待5s后手动点击录制按钮结束录音, 3. 显示录音结果后,点击播放按钮播放音频。 4. 点击"通话设备"按钮进入"录制和播放"页面,显示可选择输入设备列表。 5. 点击红色录制按钮开始录音,等待录音完毕或等待5s后手动点击录制按钮结束录音,点击播放按钮播放音频。 6. 显示录音结果后,点击播放按钮播放音频。 ## 工程目录 ``` ├───entry/src/main/ets │ ├───common │ │ ├───AudioRecording.ets // 音频录制控制器 │ │ ├───AudioRenderering.ets // 音频播放控制器 │ │ ├───InputDevicesOperation.ets // 音频设备管理 │ │ └───Utils.ets // 工具类 │ ├───constants │ │ └───CommonConstants.ets // 常量 │ ├───entryability │ │ └───EntryAbility.ets // Ability的生命周期回调内容 │ ├───entrybackupability │ │ └───EntryBackupAbility.ets // 程序备份和恢复 │ ├───pages │ │ └───Index.ets // 首页 │ └───view │ └───RecordAndPlay.ets // 录制和播放页面 └───entry/src/main/resources // 资源目录 ``` ## 具体实现 1. 使用AudioRoutingManager.getDevices获取音频设备列表。 2. 使用AudioRoutingManager.getAvailableDevices获取音频可选设备列表。 3. 创建AudioCapturer,媒体设备的SourceType选择SOURCE_TYPE_MIC,通话设备的SourceType选择SOURCE_TYPE_VOICE_COMMUNICATION。 4. 使用AudioSessionManager.setBluetoothAndNearlinkPreferredRecordCategory设置优先选择蓝牙设备作为输入设备。 5. 使用AudioSessionManager.selectMediaInputDevice设置输入设备。 6. 使用AudioSessionManager.getSelectedMediaInputDevice获取当前输入设备。 7. 使用audioRoutingManager.getPreferredInputDeviceForCapturerInfo获取录制时使用的设备,在设备连接状态变化时通过toast进行提示。 8. 使用AudioSessionManager.on('currentInputDeviceChanged')监听当前输入设备变化。 9. 在PC/2in1设备上,使用AVInputCastPicker组件切换输入设备。 10. 使用AudioCapturer.on('inputDeviceChange')监听音频流输入设备变化。 11. 创建AudioRenderer,播放音频。 ## 相关权限 1. 麦克风使用权限:ohos.permission.MICROPHONE 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及以上。