鸿蒙媒体开发系列10——麦克风管理(AudioVolumeGroupManager)

 如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。

在AudioVolumeGroupManager中提供了管理麦克风状态的方法。下面对核心开发步骤做个简单介绍。

1、主要开发步骤

a)创建audioVolumeGroupManager对象。

import audio from '@ohos.multimedia.audio';let audioVolumeGroupManager;async function loadVolumeGroupManager() { //创建audioVolumeGroupManager对象  const groupid = audio.DEFAULT_VOLUME_GROUP_ID;  audioVolumeGroupManager = await audio.getAudioManager().getVolumeManager().getVolumeGroupManager(groupid);  console.info('audioVolumeGroupManager create success.');}

b)调用on('micStateChange')监听麦克风状态变化,当麦克风静音状态发生变化时将通知应用。

目前此订阅接口在单进程多AudioManager实例的使用场景下,仅最后一个实例的订阅生效,其他实例的订阅会被覆盖(即使最后一个实例没有进行订阅),因此推荐使用单一AudioManager实例进行开发。​​​​​​​

async function on() {   //监听麦克风状态变化  audioVolumeGroupManager.on('micStateChange', (micStateChange) => {    console.info(`Current microphone status is: ${micStateChange.mute} `);  });}

c)调用isMicrophoneMute查询麦克风当前静音状态,返回true为静音,false为非静音。​​​​​​​

async function isMicrophoneMute() { //查询麦克风是否静音  await audioVolumeGroupManager.isMicrophoneMute().then((value) => {    console.info(`isMicrophoneMute is: ${value}.`);  });}

d)根据查询结果的实际情况,调用setMicrophoneMute设置麦克风静音状态,入参输入true为静音,false为非静音。​​​​​​​

async function setMicrophoneMuteTrue() { //设置麦克风静音,入参为true  await audioVolumeGroupManager.setMicrophoneMute(true).then(() => {    console.info('setMicrophoneMute to mute.');  });}async function setMicrophoneMuteFalse() { //取消麦克风静音,入参为false  await audioVolumeGroupManager.setMicrophoneMute(false).then(() => {    console.info('setMicrophoneMute to not mute.');  });}

注意:

因为在录制过程中需要使用麦克风录制相关音频数据,所以建议开发者在调用录制接口前查询麦克风状态,并在录制过程中监听麦克风的状态变化,避免影响录制效果。

在音频录制过程中,用户可以将麦克风静音,此时录音过程正常进行,录制生成的数据文件的大小随录制时长递增,但写入文件的数据均为0,即无声数据(空白数据)。

2、Demo

一个示例,从设置麦克风静音到取消麦克风静音的过程。​​​​​​​

import audio from '@ohos.multimedia.audio';@Entry@Componentstruct AudioVolumeGroup { private audioVolumeGroupManager: audio.AudioVolumeGroupManager;  async loadVolumeGroupManager() {    const groupid = audio.DEFAULT_VOLUME_GROUP_ID;    this.audioVolumeGroupManager = await audio.getAudioManager().getVolumeManager().getVolumeGroupManager(groupid);    console.info('audioVolumeGroupManager------create-------success.');  }  async on() {   //监听麦克风状态变化    await this.loadVolumeGroupManager();    this.audioVolumeGroupManager.on('micStateChange', (micStateChange) => {      console.info(`Current microphone status is: ${micStateChange.mute} `);    });  }  async isMicrophoneMute() { //查询麦克风是否静音    await this.audioVolumeGroupManager.isMicrophoneMute().then((value) => {      console.info(`isMicrophoneMute is: ${value}.`);    });  }  async setMicrophoneMuteTrue() { //设置麦克风静音    await this.loadVolumeGroupManager();    await this.audioVolumeGroupManager.setMicrophoneMute(true).then(() => {      console.info('setMicrophoneMute to mute.');    });  }  async setMicrophoneMuteFalse() { //取消麦克风静音    await this.loadVolumeGroupManager();    await this.audioVolumeGroupManager.setMicrophoneMute(false).then(() => {      console.info('setMicrophoneMute to not mute.');    });  }  async test(){    await this.on();    await this.isMicrophoneMute();    await this.setMicrophoneMuteTrue();    await this.isMicrophoneMute();    await this.setMicrophoneMuteFalse();    await this.isMicrophoneMute();    await this.setMicrophoneMuteTrue();    await this.isMicrophoneMute();  }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值