当前位置:   article > 正文

WebRTC语音对讲无声音_webrtc 通话声

webrtc 通话声

最近在搞Webrtc对讲的降噪和回音消除,找了代码然后改了非常多。。。。发现一个很无语的Bug:进入程序进行语音对讲,有偶发扬声器无法播放声音,但如果首先进行视频通话,再语音,刚正常。

刚开始怀疑是代码改了哪里改错了,查了很多资料,Webrtc输出的每行日志都排查了,还是不行,后来直接通过查看喇叭设置,发现那个setSpeakerphoneOn已被关闭了,真是Orz.....

然后直接在启动程序时,先检查下喇叭是否关了,如果关了就重新打开,下面附上打开和关闭的代码吧:

打开扬声器:

  1. //检查是否关闭扬声器了,有些机子开机时,默认是关闭状态,此时需要打开,否则出不了声
  2. private void openSpeaker() {
  3. try{
  4. AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  5. audioManager.setMode(AudioManager.ROUTE_SPEAKER);
  6. if(!audioManager.isSpeakerphoneOn()) {
  7. audioManager.setMode(AudioManager.MODE_IN_CALL);
  8. audioManager.setSpeakerphoneOn(true);
  9. audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,
  10. audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL ),
  11. AudioManager.STREAM_VOICE_CALL);
  12. Log.e(PeerConnectionHelper.TAG, "single chat room speaker close,now is going to open it..." + audioManager.isSpeakerphoneOn());
  13. }else{
  14. Log.e(PeerConnectionHelper.TAG, "single chat room speaker have open..." + audioManager.isSpeakerphoneOn());
  15. }
  16. } catch (Exception e) {
  17. e.printStackTrace();
  18. }
  19. }

然后关闭扬声器代码:

  1. public void closeSpeaker() {
  2. try {
  3. AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  4. if(audioManager != null) {
  5. if(audioManager.isSpeakerphoneOn()) {
  6. audioManager.setSpeakerphoneOn(false);
  7. audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL ,AudioManager.STREAM_VOICE_CALL);
  8. }
  9. }
  10. } catch (Exception e) {
  11. e.printStackTrace();
  12. }
  13. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/685692
推荐阅读
相关标签
  

闽ICP备14008679号