文件最后提交记录最后更新时间
2 个月前
20 天前
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
README

音频设备路由管理功能示例

介绍

本示例基于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]

模块依赖

不涉及。

约束与限制

  1. 本示例仅支持标准系统上运行,支持设备:RK3568;

  2. 本示例支持API21版本SDK,版本号:6.0.1.246;

  3. 本示例需要使用DevEco Studio 6.0.1 Beta1及以上版本才可编译运行;

  4. 高等级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