如何使用 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 管理音频输出电平的主要内容,如果未能解决你的问题,请参考以下文章