如何使音池静音?

Posted

技术标签:

【中文标题】如何使音池静音?【英文标题】:How to mute a soundpool? 【发布时间】:2018-02-26 09:45:50 【问题描述】:

我想允许用户使用按钮将应用程序静音,有人建议我“在按下静音按钮时将布尔值粘贴到您设置为 false 的 MediaPlayerPool 上。然后在您的 playSound 方法中,如果值为 false,则不执行任何操作。''但我不知道该怎么做。有人可以发布一个示例代码吗? 池代码:

public class MediaPlayerPool 

    private static MediaPlayerPool instance = null;
    private Context context;
    private List<MediaPlayer> pool;

    public static MediaPlayerPool getInstance(Context context) 
        if(instance == null) 
            instance = new MediaPlayerPool(context);
        
        return instance;
    

    private MediaPlayerPool(Context context) 
        this.context = context;
        pool = new ArrayList<>();
    

    public void playSound(int soundId) 
        MediaPlayer mediaPlayer = MediaPlayer.create(context, soundId);

        mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) 
                mediaPlayer.release();

                pool.remove(mediaPlayer);
                mediaPlayer = null;

            
        );

        pool.add(mediaPlayer);
        mediaPlayer.start();
    


【问题讨论】:

【参考方案1】:

给你的MediaPlayerPool类添加一个变量,我们称之为mute

public boolean mute = false;

有一个静音/取消静音按钮及其onClick 方法(将切换):

MediaPlayerPool.getInstance().mute = !MediaPlayerPool.getInstance().mute

你的playSound 方法变成了

public void playSound(int soundId) 
    if(!mute) 
        // stick your current code here
    

【讨论】:

以上是关于如何使音池静音?的主要内容,如果未能解决你的问题,请参考以下文章

两个音池音量控制

Android 音池不工作

增加音池持续时间

Android 音池计时

如何快速制作静音和取消静音按钮?

如何从 PowerShell 静音/取消静音