【问题标题】:Quickblox Audio call using ear speakers Android使用耳机 Android 的 Quickblox 音频通话
【发布时间】:2015-12-25 06:46:22
【问题描述】:

我正在实施 Quickblox WebRTC calling 。一切都已成功实施,但我希望通过手机的耳机进行音频通话。默认情况下,它仅在扬声器上。 如何像任何其他通话应用程序一样启用通过耳机进行通话?我也试过这个:

    AudioManager m_amAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);  
    m_amAudioManager.setMode(AudioManager.MODE_IN_CALL); 
    m_amAudioManager.setSpeakerphoneOn(false); 

但仍然没有为我工作!

【问题讨论】:

    标签: android webrtc quickblox android-audiomanager


    【解决方案1】:

    要切换音频插座,您需要调用 switchAudioOutput();当前版本上的方法 它在扬声器和电话扬声器之间切换(如果耳机打开,则在耳机和扬声器之间切换)

    【讨论】:

    • 感谢您的回答!但是 switchAudioOutput();仅在耳机打开时对我有用。我无法用这种方法连接到电话扬声器,它仍然在扬声器上。我在带有 Intent.ACTION_HEADSET_PLUG 意图过滤器的广播接收器中使用了相同的方法。所以当我插入耳机时,它会切换音频输出。但是调用 switchAudioOutput();默认情况下对我不起作用!
    • 请检查AndroidManifest.xml文件是否包含以下权限:
    • 是的。我也包含了这个权限。但还是不行。
    • 您是在会话处于活动状态时(当收件人已经单击“接受”时)还是在此之前尝试管理音频设置?上述方法只有在两个用户之间的连接已经设置后才有效。
    • 它工作正常。谢谢 :) 现在我把它放在 onConnectedToUser 方法中,奇迹发生了!
    【解决方案2】:

    如果您使用的是 QuickBlox SDK 版本 2.5.2,您可以像这样设置 AudioManager:

        audioManager = AppRTCAudioManager.create(this, new AppRTCAudioManager.OnAudioManagerStateListener() {
            @Override
            public void onAudioChangedState(AppRTCAudioManager.AudioDevice audioDevice) {
    
            }
        });
    
        audioManager.setDefaultAudioDevice(AppRTCAudioManager.AudioDevice.EARPIECE);
    
        audioManager.setOnWiredHeadsetStateListener(new AppRTCAudioManager.OnWiredHeadsetStateListener() {
            @Override
            public void onWiredHeadsetStateChanged(boolean plugged, boolean hasMicrophone) {
    
            }
        });
        audioManager.init();
    

    【讨论】:

    • 谢谢,但我使用的是 2.4。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 2014-09-06
    • 2019-07-17
    相关资源
    最近更新 更多