Ответ 1
Я нашел два способа добиться этого, отредактировав DemoPlayer
из ExoPlayer.
Хороший:
В основном вам нужно получить audioTrackRenderer
, который является ExoPlayerComponent
, и отправить ему сообщение.
Итак:
-
Добавьте
audioRenderer
член и установите его вonRenderers
:// Complete preparation. this.videoRenderer = renderers[TYPE_VIDEO]; this.audioRenderer = renderers[TYPE_AUDIO];
-
Добавить общедоступный метод:
public void setMute(boolean toMute){ if(toMute){ player.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 0f); } else { player.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 1f); } }
Использование:
немой: player.setMute(true);
unmute: player.setMute(false);
Другой:
Это нехорошее решение, которое игроку нужно будет откорректировать при отключении.
Состоит из изменения звуковой дорожки на пустой:
// mute
player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DISABLED);
// Unmute
player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DEFAULT);