| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 20 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 |
音频设备路由管理功能示例
介绍
本示例基于AudioRender和AudioCapturer能力,实现了查询和监听音频输入设备、查询和监听音频输出设备、实现音频输入设备路由切换、实现音频输出设备路由切换、响应输出设备变更时合理暂停、音量管理等功能,包含了功能调用接口的完整链路。
效果图预览
图1:首页

图2:查询和监听音频输入设备页AudioInputDeviceManagement

图3:音频输入设备路由切换页AudioInputDeviceSwitcher

图4:响应输出设备变更时合理暂停页AudioOutputDeviceChange

图5:查询和监听音频输出设备页AudioOutputDeviceManagement

图6:音频输出设备路由切换页AudioOutputDeviceSwitcher

图7:播放音量管理页VolumeManagement

工程结构&模块类型
├───entry/src/main/ets
│ ├───pages
│ │ └───Index.ets // 首页。
│ │ └───AudioInputDeviceManagement.ets // 查询和监听音频输入设备页面。
│ │ └───AudioInputDeviceSwitcher.ets // 音频输入设备路由切换页面。
│ │ └───AudioOutputDeviceChange.ets // 响应输出设备变更时合理暂停页面。
│ │ └───AudioOutputDeviceManagement.ets // 查询和监听音频输出设备页面。
│ │ └───AudioOutputDeviceSwitcher.ets // 音频输出设备路由切换页面。
│ │ └───VolumeManagement.ets // 播放音量管理页面。
└───entry/src/main/resources // 资源目录。
具体实现
查询和监听音频输入设备
- 源码参考:AudioInputDeviceManagement.ets
- 使用流程:
- 点击'创建音频录制对象'按钮,调用
audio.createAudioCapturer创建音频录制对象。 - 点击'开始录制'按钮,调用
audioCapturer.start开始录制。 - 点击'获取输入设备信息'按钮,调用
audioRoutingManager.getDevices获取输入设备信息。 - 点击'监听设备连接状态变化'按钮,调用
audioRoutingManager.onDeviceChange监听输入设备连接状态变化。 - 点击'停止录制'按钮,调用
audioCapturer.stop停止录制。
- 点击'创建音频录制对象'按钮,调用
音频输入设备路由切换
- 查询和监听音频输出设备:AudioInputDeviceSwitcher.ets
- 使用流程:
- 点击'创建音频录制对象'按钮,调用
audio.createAudioCapturer创建音频录制对象。 - 点击'开始录制'按钮,调用
audioCapturer.start开始录制。 - 点击'激活AudioSession'按钮,调用
audioSessionManager.activateAudioSession激活AudioSession。 - 点击'选择蓝牙或星闪进行录音'按钮,调用
audioSessionManager.setBluetoothAndNearlinkPreferredRecordCategory设置在使用蓝牙或星闪进行录音时,应用程序的设备偏好分类。 - 点击'监听当前输入设备变化'按钮,调用
audioSessionManager.onCurrentInputDeviceChanged监听当前输入设备变化。 - 点击'监听可选设备连接状态变化'按钮,调用
audioSessionManager.onAvailableDeviceChange监听可选设备连接状态变化。 - 点击'设置媒体输入设备'按钮,调用
audioSessionManager.selectMediaInputDevice设置媒体输入设备。 - 点击'查询设置的媒体输入设备'按钮,调用
audioSessionManager.getSelectedMediaInputDevice查询设置的媒体输入设备。 - 点击'清空设置的媒体输入设备'按钮,调用
audioSessionManager.clearSelectedMediaInputDevice清空设置的媒体输入设备。 - 点击'停止录制'按钮,调用
audioCapturer.stop停止录制。
- 点击'创建音频录制对象'按钮,调用
响应输出设备变更时合理暂停
- 源码参考:AudioOutputDeviceChange.ets
- 使用流程:
- 点击'创建音频播放对象'按钮,调用
audio.createAudioRenderer创建音频播放对象。 - 点击'开始播放'按钮,调用
audioRenderer.start开始播放。 - 点击'监听音频流输出设备变化及原因'按钮,调用
audioRenderer.onOutputDeviceChangeWithInfo监听音频流输出设备变化及原因。 - 点击'监听输出设备变化'按钮,调用
audioSessionManager.onCurrentOutputDeviceChanged监听输出设备变化。 - 点击'停止播放'按钮,调用
audioRenderer.stop停止播放。
- 点击'创建音频播放对象'按钮,调用
查询和监听音频输出设备
- 源码参考:AudioOutputDeviceManagement.ets
- 使用流程:
- 点击'创建音频播放对象'按钮,调用
audio.createAudioRenderer创建音频播放对象。 - 点击'开始播放'按钮,调用
audioRenderer.start开始播放。 - 点击'激活AudioSession'按钮,调用
audioSessionManager.activateAudioSession激活AudioSession。 - 点击'获取输出设备信息'按钮,调用
audioRoutingManager.getDevices获取输出设备信息。 - 点击'监听设备连接状态变化'按钮,调用
audioRoutingManager.onDeviceChange监听输出设备连接状态变化。 - 点击'获取优先级最高的输出设备'按钮,调用
audioRoutingManager.getPreferOutputDeviceForRendererInfo获取优先级最高的输出设备。 - 点击'监听最高优先级输出设备变化'按钮,调用
audioRoutingManager.onPreferOutputDeviceChangeForRendererInfo监听最高优先级输出设备变化。 - 点击'设置默认发声设备为扬声器'按钮,调用
audioSessionManager.setDefaultOutputDevice设置默认发声设备为扬声器。 - 点击'设置默认发声设备为听筒'按钮,调用
audioSessionManager.setDefaultOutputDevice设置默认发声设备为听筒。 - 点击'获取设置的默认发声设备'按钮,调用
audioSessionManager.getDefaultOutputDevice获取设置的默认发声设备。 - 点击'监听输出设备变化'按钮,调用
audioSessionManager.onCurrentOutputDeviceChanged监听输出设备变化。 - 点击'停止播放'按钮,调用
audioRenderer.stop停止播放。
- 点击'创建音频播放对象'按钮,调用
音频输出设备路由切换
- 源码参考:AudioOutputDeviceSwitcher.ets
- 使用流程:
- 点击'创建音频播放对象'按钮,调用
audio.createAudioRenderer创建音频播放对象。 - 点击'开始播放'按钮,调用
audioRenderer.start开始播放。 - 点击'激活AudioSession'按钮,调用
audioSessionManager.activateAudioSession激活AudioSession。 - 点击'Session设置默认发声设备为扬声器'按钮,调用
audioSessionManager.setDefaultOutputDevice设置默认发声设备为扬声器。 - 点击'Session设置默认发声设备为听筒'按钮,调用
audioSessionManager.setDefaultOutputDevice设置默认发声设备为听筒。 - 点击'Renderer设置默认发声设备为扬声器'按钮,调用
audioRenderer.setDefaultOutputDevice设置默认发声设备为扬声器。 - 点击'Renderer设置默认发声设备为听筒'按钮,调用
audioRenderer.setDefaultOutputDevice设置默认发声设备为听筒。 - 点击'停止播放'按钮,调用
audioRenderer.stop停止播放。
- 点击'创建音频播放对象'按钮,调用
播放音量管理
- 源码参考:VolumeManagement.ets
- 使用流程:
- 点击'创建音频播放对象'按钮,调用
audio.createAudioRenderer创建音频播放对象。 - 点击'开始播放'按钮,调用
audioRenderer.start开始播放。 - 点击'获取指定音频流的音量'按钮,调用
audioVolumeManager.getVolumeByStream获取指定音频流的音量。 - 点击'获取指定音频流的最小音量'按钮,调用
audioVolumeManager.getMinVolumeByStream获取指定音频流的最小音量。 - 点击'获取指定音频流的最大音量'按钮,调用
audioVolumeManager.getMaxVolumeByStream获取指定音频流的最大音量。 - 点击'监听系统音量变化'按钮,调用
audioVolumeManager.onStreamVolumeChange监听系统音量变化。 - 点击'监听应用音量变化'按钮,调用
audioVolumeManager.onAppVolumeChange监听应用音量变化。 - 点击'查询应用音量'按钮,调用
audioVolumeManager.getAppVolumePercentage查询应用音量。 - 点击'设置应用的音量'按钮,调用
audioVolumeManager.setAppVolumePercentage设置应用的音量。 - 点击'查询音频流音量'按钮,调用
audioRenderer.getVolume查询音频流音量。 - 点击'设置音频流音量'按钮,调用
audioRenderer.setVolume监听输出设备变化。 - 点击'停止播放'按钮,调用
audioRenderer.stop停止播放。
- 点击'创建音频播放对象'按钮,调用
相关权限
音频录制涉及的权限包括:
允许应用使用麦克风:[ohos.permission.MICROPHONE]
模块依赖
不涉及。
约束与限制
-
本示例仅支持标准系统上运行,支持设备:RK3568;
-
本示例支持API21版本SDK,版本号:6.0.1.246;
-
本示例需要使用DevEco Studio 6.0.1 Beta1及以上版本才可编译运行;
-
高等级APL特殊签名说明:无。
下载
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo code/DocsSample/Media/Audio/AudioRoutingAndVolumeSample/ > .git/info/sparse-checkout
git remote add origin https://gitcode.com/openharmony/applications_app_samples.git
git pull origin master