Я транслирую аудио с exoplayer, и мне нужна кнопка для отключения и включения звука.
Я использую следующие зависимости:
implementation 'com.google.android.exoplayer:exoplayer-core:2.10.5'
implementation 'com.google.android.exoplayer:exoplayer-dash:2.10.5'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.10.5'
Код инициализации проигрывателя:
private void initializePlayer() {
player = ExoPlayerFactory.newSimpleInstance(context);
playerView.setPlayer(player);
playerView.setControllerHideOnTouch(false);
playerView.setControllerShowTimeoutMs(0);
Uri uri = Uri.parse(mediaUrl);
MediaSource mediaSource = buildMediaSource(uri);
player.addListener(playbackStateListener);
player.setPlayWhenReady(playWhenReady);
player.seekTo(currentWindow, playbackPosition);
player.prepare(mediaSource, false, false);
}
buildMediaSource:
private MediaSource buildMediaSource(Uri uri) {
DataSource.Factory dataSourceFactory =
new DefaultDataSourceFactory(context, "exoplayer-codelab");
return new ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(uri);
}
Вот как я пытаюсь отключить и включить звук:
float currentAudioLevel = player.getAudioComponent().getVolume();
mute.setOnClickListener(view -> {
if(!muteAudio) {
Objects.requireNonNull(player.getAudioComponent()).setVolume(0);
mute.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.ic_volume_off));
muteAudio = true;
}else{
Objects.requireNonNull(player.getAudioComponent()).setVolume(currentAudioLevel);
mute.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.ic_volume_on));
muteAudio = false;
}
});
getAudioComponent выдает исключение нулевого указателя:
Attempt to invoke interface method
'com.google.android.exoplayer2.Player$AudioComponent
com.google.android.exoplayer2.Player.getAudioComponent()' on a null object reference
Звук воспроизводится правильно, все элементы управления работают, но я не могу получить или установить громкость.