安卓WebRTC音频音量

9

我正在使用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个回答

3
我曾面临相同的问题。我没有找到任何相关文档,但我发现你不能静音AudioManager.STREAM_VOICE_CALL流。即使你把音量设置为0,你仍然可以听到声音。
我不知道这是Android的一部分还是制造商做出的修改,但我测试了几款手机和平板电脑,它们都有相同的行为。
如果你在通话过程中尝试静音音频,你可以按下音量减小键,但它不会完全静音。
我想背后的想法是防止用户认为通话没有正常工作,而唯一的问题是声音被静音了。

2
如果您想静音流,可以按照以下步骤操作:
RemoteStream.audioTracks.get(0).setEnabled(false); //in case you have only one audio track 

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


0
如果你只想静音音频,可以使用类似以下结构的方法:
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);

更改音量的代码(我认为它应该可以正常工作)。因此,你的问题可能在其他地方。


1
谢谢Alexey的回答。正如我在问题中提到的,我尝试过了,但并没有起作用。 - Michael P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接