HarmonyOS鸿蒙Next音频通话开发指导

HarmonyOS鸿蒙Next音频通话开发指导 音频通话开发概述

常用的音频通话模式包括VOIP通话和蜂窝通话。

  • VOIP通话: VOIP(Voice over Internet Protocol)通话是指基于互联网协议(IP)进行通讯的一种语音通话技术。VOIP通话会将通话信息打包成数据包,通过网络进行传输,因此VOIP通话对网络要求较高,通话质量与网络连接速度紧密相关。

  • 蜂窝通话(仅对系统应用开放) 蜂窝通话是指传统的电话功能,由运营商提供服务,目前仅对系统应用开放,未向三方应用提供开发接口。

在开发音频通话相关功能时,开发者可以根据实际情况,检查当前的音频场景模式铃声模式,以使用相应的音频处理策略。

音频场景模式

应用使用音频通话相关功能时,系统会切换至与通话相关的音频场景模式(AudioScene),当前预置了多种音频场景,包括响铃、通话、语音聊天等,在不同的场景下,系统会采用不同的策略来处理音频。

当前预置的音频场景:

  • AUDIO_SCENE_DEFAULT:默认音频场景,音频通话之外的场景均可使用。
  • AUDIO_SCENE_VOICE_CHAT:语音聊天音频场景,VOIP通话时使用。

应用可通过AudioManager的getAudioScene来获取当前的音频场景模式。当应用开始或结束使用音频通话相关功能时,可通过此方法检查系统是否已切换为合适的音频场景模式。

铃声模式

在用户进入到音频通话时,应用可以使用铃声或振动来提示用户。系统通过调整铃声模式(AudioRingMode),实现便捷地管理铃声音量,并调整设备的振动模式。

当前预置的三种铃声模式:

  • RINGER_MODE_SILENT:静音模式,此模式下铃声音量为零(即静音)。
  • RINGER_MODE_VIBRATE:振动模式,此模式下铃声音量为零,设备振动开启(即响铃时静音,触发振动)。
  • RINGER_MODE_NORMAL:响铃模式,此模式下铃声音量正常。

应用可以调用AudioVolumeGroupManager中的getRingerMode获取当前的铃声模式,以便采取合适的提示策略。

如果应用希望及时获取铃声模式的变化情况,可以通过AudioVolumeGroupManager中的on(‘ringerModeChange’)监听铃声模式变化事件,使应用在铃声模式发生变化时及时收到通知,方便应用做出相应的调整。

通话场景音频设备切换

在通话场景下,系统会根据默认优先级选择合适的音频设备。应用可以根据需要,自主切换音频设备。

通信设备类型(CommunicationDeviceType)是系统预置的可用于通话场景的设备,应用可以使用AudioRoutingManager的isCommunicationDeviceActive函数获取指定通信设备的激活状态,并且可以使用AudioRoutingManager的setCommunicationDevice设置通信设备的激活状态,通过激活设备来实现通话场景音频设备的切换。

开发音频通话功能

在音频通话场景下,音频输出(播放对端声音)和音频输入(录制本端声音)会同时进行,应用可以通过使用AudioRenderer来实现音频输出,通过使用AudioCapturer来实现音频输入,同时使用AudioRenderer和AudioCapturer即可实现音频通话功能。

在音频通话开始和结束时,应用可以自行检查当前的音频场景模式铃声模式,以便采取合适的音频管理及提示策略。

以下代码示范了同时使用AudioRenderer和AudioCapturer实现音频通话功能的基本过程,其中未包含音频通话数据的传输过程,实际开发中,需要将网络传输来的对端通话数据解码播放,此处仅以读取音频文件的数据代替;同时需要将本端录制的通话数据编码打包,通过网络发送给对端,此处仅以将数据写入音频文件代替。

使用AudioRenderer播放对端的通话声音

该过程与使用AudioRenderer开发音频播放功能过程相似,关键区别在于audioRenderInfo参数和音频数据来源。audioRenderInfo参数中,音频内容类型需设置为语音,CONTENT_TYPE_SPEECH,音频流使用类型需设置为语音通信,STREAM_USAGE_VOICE_COMMUNICATION。

使用AudioCapturer录制本端的通话声音

该过程与使用AudioCapturer开发音频录制功能过程相似,关键区别在于audioCapturerInfo参数和音频数据流向。audioCapturerInfo参数中音源类型需设置为语音通话,SOURCE_TYPE_VOICE_COMMUNICATION。


更多关于HarmonyOS鸿蒙Next音频通话开发指导的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next音频通话开发指导的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中开发音频通话功能,主要涉及以下几个步骤:

  1. 权限申请:首先在config.json中声明ohos.permission.MICROPHONEohos.permission.INTERNET权限,确保应用能够访问麦克风和网络。

  2. 音频管理:使用AudioManager类进行音频设备的管理和配置,如设置音频模式、音量调节等。

  3. 网络连接:通过SocketWebSocket建立网络连接,确保音频数据的实时传输。

  4. 音频采集与播放:利用AudioCapturer进行音频采集,AudioRenderer进行音频播放,确保通话双方能够实时听到对方的声音。

  5. 数据处理:对采集的音频数据进行编码、压缩,传输到对方设备后解码播放,确保通话质量。

  6. 错误处理:实现网络中断、音频设备异常等情况的处理机制,确保通话的稳定性。

回到顶部