Android webRTC音量

时间:2015-07-27 19:48:32

标签: java android audio webrtc apprtcdemo

我在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);

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:0)

如果您只想静音,可以像以下结构一样使用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);

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