资讯动态

鸿蒙 音频通话开发:VoIP与蜂窝通话

发布时间:2026/8/31 12:23:16 来源:尧图企业网站定制
本文同步发表于微信公众号微信搜索程语新视界即可关注每个工作日都有文章更新一、音频通话1.1 两种通话模式通话模式说明开放程度VoIP通话基于互联网协议进行语音通话通过网络传输数据包对网络要求较高开放给第三方应用蜂窝通话传统的电话功能由运营商提供服务仅对系统应用开放注意蜂窝通话目前仅对系统应用开放未向第三方应用提供开发接口。1.2 开发建议在开发音频通话相关功能时应该检查当前的音频场景模式检查当前的铃声模式根据实际情况使用相应的音频处理策略二、音频场景模式应用使用音频通话相关功能时系统会切换至与通话相关的音频场景模式。在不同的场景下系统会采用不同的策略来处理音频。3A音频处理算法在通话场景中系统会更注重人声的清晰度使用3A算法对音频数据进行预处理算法全称作用AEC声学回声消除抑制通话回声ANC背景噪声抑制消除背景噪音AGC自动增益控制调整音量范围预置的音频场景音频场景说明适用场景AUDIO_SCENE_DEFAULT默认音频场景音频通话之外的场景均可使用AUDIO_SCENE_VOICE_CHAT语音聊天音频场景VoIP通话时使用获取当前音频场景import { audio } from kit.AudioKit; // 获取AudioManager实例 let audioManager audio.getAudioManager(); // 获取当前音频场景模式 let currentScene audioManager.getAudioScene(); console.info(当前音频场景: ${currentScene}); // 判断是否为语音聊天场景 if (currentScene audio.AudioScene.AUDIO_SCENE_VOICE_CHAT) { console.info(当前处于VoIP通话模式); }使用建议当应用开始或结束使用音频通话相关功能时可通过getAudioScene()检查系统是否已切换为合适的音频场景模式。三、铃声模式在用户进入到音频通话时应用可以使用铃声或振动来提示用户。系统通过调整铃声模式实现便捷地管理铃声音量并调整设备的振动模式。预置的三种铃声模式铃声模式说明RINGER_MODE_SILENT静音模式铃声音量为零RINGER_MODE_VIBRATE振动模式铃声音量为零设备振动开启响铃时静音触发振动RINGER_MODE_NORMAL响铃模式铃声音量正常获取当前铃声模式import { audio } from kit.AudioKit; async function getRingerMode() { // 获取AudioVolumeGroupManager实例 let audioManager audio.getAudioManager(); let volumeGroupManager audioManager.getVolumeGroupManager(audio.DEFAULT_VOLUME_GROUP_ID); // 获取当前铃声模式 let ringerMode await volumeGroupManager.getRingerMode(); console.info(当前铃声模式: ${ringerMode}); switch (ringerMode) { case audio.AudioRingMode.RINGER_MODE_SILENT: console.info(静音模式); break; case audio.AudioRingMode.RINGER_MODE_VIBRATE: console.info(振动模式); break; case audio.AudioRingMode.RINGER_MODE_NORMAL: console.info(响铃模式); break; } }监听铃声模式变化如果应用希望及时获取铃声模式的变化情况可以通过on(ringerModeChange)监听铃声模式变化事件。import { audio } from kit.AudioKit; async function listenRingerModeChange() { let audioManager audio.getAudioManager(); let volumeGroupManager audioManager.getVolumeGroupManager(audio.DEFAULT_VOLUME_GROUP_ID); // 监听铃声模式变化 volumeGroupManager.on(ringerModeChange, (ringerMode: audio.AudioRingMode) { console.info(铃声模式已变更为: ${ringerMode}); // 根据新模式调整应用的提示策略 switch (ringerMode) { case audio.AudioRingMode.RINGER_MODE_SILENT: // 静音模式不播放铃声 break; case audio.AudioRingMode.RINGER_MODE_VIBRATE: // 振动模式使用振动提示 break; case audio.AudioRingMode.RINGER_MODE_NORMAL: // 响铃模式正常播放铃声 break; } }); } // 不再需要监听时取消监听 function offRingerModeChange() { volumeGroupManager.off(ringerModeChange); }四、通话场景音频设备切换4.1 设备切换机制在通话场景下系统会根据默认优先级选择合适的音频设备。应用可以根据需要切换音频设备如听筒、扬声器、蓝牙耳机等。4.2 设备切换方式切换方式可参考AVSession Kit使用通话设备切换组件。五、开发流程申请麦克风权限 ↓ 检查/设置音频场景VOICE_CHAT ↓ 检查铃声模式 ↓ 可选监听铃声模式变化 ↓ 根据需求切换音频设备 ↓ 开始/结束通话时清理资源鸿蒙音频通话支持VoIP开放给第三方和蜂窝通话仅系统应用VoIP开发需要关注音频场景模式VOICE_CHAT和铃声模式系统通过3A算法保障通话人声清晰度。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价