在视频列表中静音/取消静音的最佳方法是什么

时间:2017-04-25 07:00:33

标签: android android-recyclerview android-viewholder notifydatasetchanged

我正在使用TextureViewMediaPlayer显示视频列表。我想为所有视频静音/取消静音。

有什么问题

问题在于,当我使用notifyDataSetChanged()方法时,播放视频会重新加载,因为onBindViewHolder()会在notifyDataSetChanged()之后执行。

静音/取消静音图标代码

case R.id.volume_button:
                if (isToPlaySoundInitially) {
                    volumeKey.setImageResource(R.drawable.unmute_video);
                    isToPlaySoundInitially = false;
                    mVideoView.unMuteVideo();

                } else {
                    volumeKey.setImageResource(R.drawable.mute_video);
                    isToPlaySoundInitially = true;
                    mVideoView.muteVideo();

                }
                notifyDataSetChanged();
                break;

静音/取消静音的方法

public void muteVideo() {
    if (this.mp != null) {
        mp.setVolume(0, 0);
    }
}

public void unMuteVideo() {
    if (this.mp != null) {
        mp.setVolume(1, 1);
    }
}

请建议如何为列表中的所有项目静音/取消静音。

谢谢。

1 个答案:

答案 0 :(得分:0)

使用MediaPlayer类的setVolume函数将音量设置为0。 不要使用AudioManager类,因为如果将音量设置为0,则使用AudioManager,然后将MediaPlayer和VideoView的所有实例的音量设置为0。

但是如果你将使用MediaPlayer的setVolume()方法,那么它只会使该实例的音量静音。

使用VideoView也不容易将音量设置为0,因为VideoView是MediaPlayer类的包装器,只允许访问MediaPlayer的少数功能。