android - AndEngine-停止所有声音和音乐运行时-更改引擎的AudioOptions

标签 android audio andengine

我正在尝试为游戏创 build 置,允许用户保存您是否需要声音(复选框)。

当用户取消选中它时,我想禁用所有其他声音。

这就是我在做什么

// Create Dialog
final SexyAlertDialog dialog = new SexyAlertDialog(mActivity,R.layout.settings,R.style.SettingDialog,false);

// Find CheckBox
final CheckBox isSoundEnabled = (CheckBox) dialog.findViewById(R.id.isSoundEnabled);

// Check SharedPreferences to get isSoundEnabled value
if(mSettingPreferences.getBoolean("isSoundEnabled", false)){
    isSoundEnabled.setChecked(true);
}else{
    isSoundEnabled.setChecked(false);
}

// OnCheckedChangeListener on Checkbox in AlertDialog
isSoundEnabled.setOnCheckedChangeListener(new OnCheckedChangeListener(){
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(isChecked){
            mSettingEditor.putBoolean("isSoundEnabled", true);
            mSettingEditor.commit();

            // Enable Music and Sound
            mActivity.getEngine().getEngineOptions().getAudioOptions().setNeedsSound(true);
            mActivity.getEngine().getEngineOptions().getAudioOptions().setNeedsMusic(true);

            Toast.makeText(mActivity, "Audio Enabled", Toast.LENGTH_LONG).show();
        }else{
            mSettingEditor.putBoolean("isSoundEnabled", false);
            mSettingEditor.commit();

            // Disable Music and Sound
            mActivity.getEngine().getEngineOptions().getAudioOptions().setNeedsSound(false);
            mActivity.getEngine().getEngineOptions().getAudioOptions().setNeedsMusic(false);

            Toast.makeText(mActivity, "Audio Disabled  !! ", Toast.LENGTH_LONG).show();
        }
    }
});

    dialog.show();

即使这样做
mActivity.getEngine().getEngineOptions().getAudioOptions().setNeedsSound(false);
mActivity.getEngine().getEngineOptions().getAudioOptions().setNeedsMusic(false);

声音仍在播放。
如何禁用每种声音?

或者,我是否必须这样做:
if(mSettingPreferences.getBoolean("isSoundEnabled", false)){
     pMySound.play();
}

对于我的应用程序中的每个声音?

最佳答案

您可以遍历所有MusicSound对象,并在它们上调用stop()pause()setVolume(0,0)

您还可以通过将主音量设置为0来尝试使所有声音静音:

mActivity.getEngine().getMusicManager().setMasterVolume(0);
mActivity.getEngine().getSoundManager().setMasterVolume(0);

关于android - AndEngine-停止所有声音和音乐运行时-更改引擎的AudioOptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15945194/

相关文章:

android - AndEngine Sprite/Box2D Body 移除会导致我的程序崩溃且没有错误/异常信息?

android - 使用 ActionBarSherlock 看不到我的 fragment

android - 在 Android 中检查 WiFi 和 GPS 是否已连接?

java - 如何在 Java 中使用 .aiff 文件?

android - 如何将 16 位 .wav 音频文件读入适合写入 Android AudioTrack 的缓冲区?

java - Andengine视差背景

Android私有(private)样式使用

android - 将折叠工具栏标题更改为微调器

java - 通过 Java(可能还有 Linux)在 Windows 7 中启用 "Listen to this device"

安卓 : AndEngine pixel perfect collision GLES2?