如何使用 PJSUA2 for Android 管理音频输出电平

Posted

技术标签:

【中文标题】如何使用 PJSUA2 for Android 管理音频输出电平【英文标题】:How do I manage the audio output levels with PJSUA2 for Android 【发布时间】:2017-02-16 01:11:46 【问题描述】:

我有一个使用 PJSUA2 进行 VoIP 通信的 android 项目,其他一切正常。但是,我遇到了一个问题,即我无法让音量控件在显示我的活动呼叫的活动中工作。我已经尝试按照推荐的方式进行操作 -

audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
setVolumeControlStream(AudioManager.STREAM_MUSIC);

这没有任何作用。我需要知道使用 OnKey Listeners 是否是手动增加和减少音量的可行替代方案,或者我是否完全遗漏了某些东西,这将使我以首选方式进行操作。

【问题讨论】:

我也有同样的问题@Hanut。运行我的应用程序时,某些手机提供了良好的音频级别,但在某些手机中,它无法听到且音频级别非常低。但是手机的音量总是很高。如何解决这个问题?你找到这个了吗?请帮帮我 【参考方案1】:

当通话处于连接状态时,您必须将音频模式设置为MODE_IN_COMMUNICATION,并在断开连接时设置为MODE_NORMAL

// set mode to 3 to indicate MODE_IN_COMMUNICATION mode
((AudioManager) getSystemService(Context.AUDIO_SERVICE)).setMode(3);
// set audio mode to normal again on call disconnection
((AudioManager) getSystemService(Context.AUDIO_SERVICE)).setMode(AudioManager.MODE_NORMAL);

【讨论】:

它对我有用。我所做的只是在通话开始时设置 audioManager?.mode = AudioManager.MODE_IN_COMMUNICATION 并在通话结束时设置 audioManager?.mode = AudioManager.MODE_NORMAL。【参考方案2】:

所以我终于想出用 PJSUA 合理地做到这一点的方法是实现我自己的按键处理程序,然后相应地改变 Rx 音频电平。希望这可以帮助像我一样被困的人。

【讨论】:

【参考方案3】:

Pjsip 默认使用语音通信/电话流来播放音频。要使用系统音量控制来控制音量,您应该调整通话音量,而不是媒体/音乐音量:

setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);

如果您希望音频实际上作为媒体/音乐类型的流播放并由音量滑块控制,请参阅我的建议here

【讨论】:

以上是关于如何使用 PJSUA2 for Android 管理音频输出电平的主要内容,如果未能解决你的问题,请参考以下文章

PJSUA2开发文档--第五章 帐户(号)Accounts

pjsua和pjsua2的区别

PJSUA2开发文档--第七章 呼叫 Calls类

PJSUA2开发文档--第六章 媒体 Media类

如何在 android 设备上使用 pjsip G.729 编解码的功能

全民K歌下载器v1.2 for Android