Отключение звука на ExoPlayer
Я использую Google new MediaPlayer с именем ExoPlayer и не могу найти способ отключить звук
есть ли простой способ отключить звуковую дорожку на Google ExoPlayer ? Или изменение громкости ?
5 ответов
я нашел два способа достичь этого путем редактирования 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);
новый способ отключения звука и громкости с версии 2.3.1 можно сделать следующим образом:
int currentvolume = player.getVolume();
обязательно вызовите линию выше после запуска игрока, иначе вы получите исключение nullpointerexception
чтобы отключить громкость:
player.setVolume(0f);
для включения громкости:
player.setVolume(currentVolume);
попробовать
player.setSelectedTrack(DemoPlayer.TYPE_AUDIO, DemoPlayer.TRACK_DISABLED);
аналогично эта строка кода
Я рекомендую сначала получить текущий объем, а затем отключить его. Когда вы будете включать, вы можете дать пользователю тот же объем.
float currentvolume;
currentvolume = player.getVolume();
player.setVolume(0.0f);