我正在与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音频流正常,所有控件都正常工作,但我无法获取或设置音量。
发布于 2019-11-02 02:57:18
只需使用player.setVolume(0.0f);即可
我建议先获取当前音量,然后将其静音。当你要取消静音时,你可以给用户相同的音量。
float currentvolume;
currentvolume = player.getVolume();
player.setVolume(0.0f);https://stackoverflow.com/questions/58655204
复制相似问题