1、OpenHarmony音量管理开发简介

AudioVolumeManager提供了音量管理的方法。开发者可以通过本博文了解应用如何通过AudioVolumeManager获取指定流音量信息、监听铃声模式变化、设置麦克风静音等。

2、OpenHarmony音量管理运行机制

该模块提供了 音频管理模块常用接口

图1 音量管理常用接口

说明: AudioVolumeManager包含音量变化监听处理和音频音量组管理相关(AudioVolumeGroupManager),开发者调用AudioVolumeGroupManager的相关方法,需要先调用getVolumeGroupManager方法创建AudioVolumeGroupManager实例,从而调用对应的接口实现相应的功能,主要接口有:获取指定流的音量、设置麦克风静音、监听麦克风状态变化等。更多介绍请参考API参考文档。

3、OpenHarmony音量管理约束与限制

开发者在进行麦克风管理开发前,需要先对所开发的应用配置麦克风权限(ohos.permission.MICROPHONE),如果要设置麦克风状态,则需要配置音频管理配置权限(ohos.permission.MANAGE_AUDIO_CONFIG),需注意该权限为系统级别权限。配置方式请参见访问控制授权申请。

4、OpenHarmony音量管理开发指导

详细API含义可参考:音量管理API文档AudioVolumeManager

(1).创建AudioVolumeGroupManager实例。

在使用AudioVolumeGroupManager的API前,需要使用getVolumeGroupManager创建一个AudioStreamManager实例。

import audio from '@ohos.multimedia.audio';
async loadVolumeGroupManager() {const groupid = audio.DEFAULT_VOLUME_GROUP_ID;var audioVolumeGroupManager = await audio.getAudioManager().getVolumeManager().getVolumeGroupManager(groupid);console.error('audioVolumeGroupManager create success.');
}

(2).获取音量信息、铃声模式。

如果开发者需要获取指定音频流的音量信息(铃声、语音电话、媒体、语音助手等),或者获取当前设备是静音、震动、响铃模式,可参考并调用以下接口。更多事件请参考API参考文档。

import audio from '@ohos.multimedia.audio';
async loadVolumeGroupManager() {const groupid = audio.DEFAULT_VOLUME_GROUP_ID;var audioVolumeGroupManager = await audio.getAudioManager().getVolumeManager().getVolumeGroupManager(groupid);console.info('audioVolumeGroupManager create success.');
}//获取指定流的当前音量(范围为0 ~ 15)
async getVolume() {await loadVolumeGroupManager();await audioVolumeGroupManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => {console.info(`getVolume success and volume is: ${value}.`);});
}
//获取指定流的最小音量
async getMinVolume() {await loadVolumeGroupManager();await audioVolumeGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => {console.info(`getMinVolume success and volume is: ${value}.`);});
}
//获取指定流的最大音量
async getMaxVolume() {await loadVolumeGroupManager();await audioVolumeGroupManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((value) => {console.info(`getMaxVolume success and volume is: ${value}.`);});
}
//获取当前铃声模式:  静音(0)| 震动(1) | 响铃(2)
async getRingerMode() {await loadVolumeGroupManager();await audioVolumeGroupManager.getRingerMode().then((value) => {console.info(`getRingerMode success and RingerMode is: ${value}.`);});
}

(3).查询、设置、监听麦克风状态。

如果开发者需要获取、设置麦克风状态,或者监听麦克风状态变化等信息,可参考并调用以下接口。

import audio from '@ohos.multimedia.audio';
async loadVolumeGroupManager() {const groupid = audio.DEFAULT_VOLUME_GROUP_ID;var audioVolumeGroupManager = await audio.getAudioManager().getVolumeManager().getVolumeGroupManager(groupid);console.info('audioVolumeGroupManager create success.');
}async on() {   //监听麦克风状态变化await loadVolumeGroupManager();await audioVolumeGroupManager.audioVolumeGroupManager.on('micStateChange', (micStateChange) => {console.info(`Current microphone status is: ${micStateChange.mute} `);});
}async isMicrophoneMute() { //查询麦克风是否静音await audioVolumeGroupManager.audioVolumeGroupManager.isMicrophoneMute().then((value) => {console.info(`isMicrophoneMute is: ${value}.`);});
}async setMicrophoneMuteTrue() { //设置麦克风静音await loadVolumeGroupManager();await audioVolumeGroupManager.audioVolumeGroupManager.setMicrophoneMute(true).then(() => {console.info('setMicrophoneMute to mute.');});
}async setMicrophoneMuteFalse() { //取消麦克风静音await loadVolumeGroupManager();await audioVolumeGroupManager.audioVolumeGroupManager.setMicrophoneMute(false).then(() => {console.info('setMicrophoneMute to not mute.');});
}
async test(){  //综合调用:先设置监听,然后查询麦克风状态,设置麦克风静音后再查询状态,最后取消麦克风静音。await on();await isMicrophoneMute();await setMicrophoneMuteTrue();await isMicrophoneMute();await setMicrophoneMuteFalse();
}

OpenHarmony音量管理开发相关推荐

  1. (转)一文读懂随机森林的解释和实现(附python代码)

    翻译:和中华 校对:李润嘉 本文约6000字,建议阅读15****分钟. 本文从单棵决策树讲起,然后逐步解释了随机森林的工作原理,并使用sklearn中的随机森林对某个真实数据集进行预测. 如今由于像 ...

  2. 迅为RK3568开发板鸿蒙OpenHarmony系统固件烧写

    7.1 准备烧写器 1 首先拷贝烧写器(烧写器在光盘资料"iTOP-3568 开发板\01_[ iTOP-RK3568 开发板]基础资料\02_iTOP-RK3568 开发板烧写工具及驱动& ...

  3. 黄吉:如何适配OpenHarmony自有音频框架ADM?

    编者按:在 OpenHarmony 生态发展过程中,涌现了大批优秀的代码贡献者,本专题旨在表彰贡献.分享经验,文中内容来自嘉宾访谈,不代表 OpenHarmony 工作委员会观点. 黄吉 中国科学院软 ...

  4. OpenHarmony 官网文档有哪些上新?上篇:应用开发文档上新

    随着 OpenAtom OpenHarmony(以下简称"OpenHarmony")系统能力持续升级,已具备支撑复杂带屏标准设备和应用开发的基础能力.相较于旧版本,OpenHarm ...

  5. 多媒体音量条显示异常跳动

    问题: 项目中出现音量条显示异常的bug:在+-音量时,音量正常加减,只是音量数值及音量条会乱跳.显示不正常. 各种猜测: 是不是音量控制键未触发: 是不是按键js中未适配↑↓按键控制音量,只适配了专 ...

  6. au加载默认的输入和输出设备失败_Mac OS X的音频输入输出时如何调整音量

    本次为大家介绍一款音频管理软件,AudioSwitcher for Mac是一款位于菜单栏的音源设备管理工具.利用这款软件能够帮大家设定音频输入设备和音频输出设备,从而帮助大家迅速调整输入设备的音量以 ...

  7. 【MediaPipe】(4) AI视觉,远程手势调节电脑音量,附python完整代码

    各位同学好,今天和大家分享一下如何使用MediaPipe完成手势调节电脑音量,先放张图看效果. 注意!! 本节需要用到手部关键点的实时跟踪,我已经在之前的文章中详细写过了,本节会直接使用,有疑问的同学 ...

  8. Android实时获取音量(单位:分贝)

    基础知识 度量声音强度,大家最熟悉的单位就是分贝(decibel,缩写为dB).这是一个无纲量的相对单位,计算公式如下: 分子是测量值的声压,分母是参考值的声压(20微帕,人类所能听到的最小声压).因 ...

  9. html5 audio标志改变音量,HTML5之Audio(二)—— processor调节音量

    Audio var AudioContext = AudioContext || webkitAudioContext || mozAudioContext || msAudioContext, // ...

最新文章

  1. java字符串统计英文字符用什么不同_JAVA程序。输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。...
  2. jdbc mysql - Column count doesn't match value count at row 1.
  3. 为什么用redis?
  4. PHP命名空间(Namespace)的使用详解
  5. 关于阿拉伯数字转化成为大写汉字
  6. strtotime 获取一个月的开始 或者一个月的结束
  7. Rust中Turbofish之函数后面双冒号(::)用法
  8. 漫谈忠诚:猪八戒为什么总想离队
  9. java l1 l2缓存,Java 两级缓存框架
  10. python函数的特性_Python学习(007)-函数的特性
  11. 在 Java 虚拟机上班是一种怎样的体验?
  12. [JNI] 开发实例(2) 编译libwebsocket,封装jni函数,搭建IM通信基础服务
  13. JavaScript + jQuery 知识复习总结(附超实用jQuery中文文档)
  14. 利用Depends查看win系统下exe程序的依赖项
  15. Uncaught SyntaxError: Unexpected token lt; 错误完美解决
  16. 未来的计算机100字的小短文,关于电脑作文100字
  17. python代码完成Fisher判别
  18. Chrome浏览器标签管理插件–OneTab
  19. 基于CAN的网络管理NM(network management)
  20. 移动软件开发-设计app首页

热门文章

  1. PADS layout pdf打印输出
  2. 服务器清理内存shell脚本
  3. “遗传算法优化BP神经网络预测城市公交系统车站客流量”客流数据信息怎么写...
  4. SPPnet学习笔记
  5. 计算机专业内存8g和16g差距大吗,电脑8g和16g区别
  6. vertx源码_vertx初探
  7. vertx创建http服务
  8. 机器人视觉(二) ROS Melodic + CSI 摄像头 + jetson Nano 2GB
  9. yum的卸载与重新安装
  10. window下图片标签工具labelimg安装和使用