当前位置: 代码迷 >> java >> Android webRTC音量
  详细解决方案

Android webRTC音量

热度:67   发布时间:2023-08-02 11:22:54.0

我在android上使用APPRTCdemo应用程序。 我试图让它播放来自其他同伴的声音,就像在Android设置中设置音量一样响亮。 因此,如果用户将设备静音,则不会听到音频。 我几乎尝试了所有Android API调用,但似乎没有任何影响。 这些是我尝试的东西:AudioManager audioManager =(AudioManager)_context.getSystemService(Context.AUDIO_SERVICE); int volume = audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL);

    volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
    volume =audioManager.getStreamVolume(AudioManager.STREAM_RING);
    volume =audioManager.getStreamVolume(AudioManager.STREAM_ALARM);
    volume =audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION);
    volume =audioManager.getStreamVolume(AudioManager.STREAM_SYSTEM);

    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
    audioManager.setStreamVolume(AudioManager.MODE_IN_COMMUNICATION, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
    audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, 0,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
    audioManager.setStreamMute(AudioManager.MODE_IN_COMMUNICATION, true);
    audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
    audioManager.setStreamMute(AudioManager.STREAM_RING, true);
    audioManager.setStreamMute(AudioManager.STREAM_MUSIC, true);
    audioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);

如果要将流静音,可以执行以下操作:

RemoteStream.audioTracks.get(0).setEnabled(false); //in case you have only one audio track 

如果您在流中有多个音轨,则可以将其置于循环中。 这是经过测试的代码,静音/取消静音工作正常。

我面临同样的问题。 我没有找到任何关于它的文档,但我发现你无法将AudioManager.STREAM_VOICE_CALL流静音。 即使您将音量设置为0,您仍然可以听到它。

我不知道这部分Android还是制造商所做的修改,但我测试了几款具有相同行为的手机和平板电脑。

如果您在通话过程中尝试静音,可以非常轻松地测试,您可以根据需要按下音量调低键,但不允许您完全静音。

我想这一切背后的想法是阻止用户认为当唯一的问题是音频被静音时,呼叫无法正常工作。

如果您只想静音,可以使用如下结构的smth:

inputMediaStream.audioTracks.getFirst().setEnabled(false);

在webrtc的源代码中你可以找到src / webrtc / modules / audio_device / android / java / src / org / webrtc / voiceengine / WebRtcAudioTrack.java

audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, volume, 0);

代码来改变音量(我认为它应该可行)。 所以你的问题可能在其他地方。

  相关解决方案