首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Exoplayer: getAudioComponent为空

Android Exoplayer: getAudioComponent为空
EN

Stack Overflow用户
提问于 2019-11-01 14:48:44
回答 1查看 271关注 0票数 0

我正在与exoplayer流式音频,我想有一个按钮,以静音和取消静音的音频。

我正在使用这些依赖项:

代码语言:javascript
复制
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'

播放器初始化代码:

代码语言:javascript
复制
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:

代码语言:javascript
复制
private MediaSource buildMediaSource(Uri uri) {
        DataSource.Factory dataSourceFactory =
                new DefaultDataSourceFactory(context, "exoplayer-codelab");
        return new ProgressiveMediaSource.Factory(dataSourceFactory)
                .createMediaSource(uri);
    }

这就是我尝试静音和取消静音的方法:

代码语言:javascript
复制
    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抛出空指针异常:

代码语言:javascript
复制
 Attempt to invoke interface method 
   'com.google.android.exoplayer2.Player$AudioComponent 
    com.google.android.exoplayer2.Player.getAudioComponent()' on a null object reference

音频流正常,所有控件都正常工作,但我无法获取或设置音量。

EN

回答 1

Stack Overflow用户

发布于 2019-11-02 02:57:18

只需使用player.setVolume(0.0f);即可

我建议先获取当前音量,然后将其静音。当你要取消静音时,你可以给用户相同的音量。

代码语言:javascript
复制
float currentvolume;
currentvolume = player.getVolume();
player.setVolume(0.0f);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58655204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档