0

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

当用户取消选中它时,我想禁用所有进一步的声音。

这就是我正在做的

// 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();
}

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

4

2 回答 2

5

您可以遍历所有您的MusicSound对象并调用stop(),pause()setVolume(0,0)对它们进行调用。


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

mActivity.getEngine().getMusicManager().setMasterVolume(0);
mActivity.getEngine().getSoundManager().setMasterVolume(0);
于 2013-04-11T09:48:30.197 回答
3

正如迈克尔所说,您可以暂停声音而不是将音量设置为零。

mActivity.getEngine().getSoundManager().onPause();

这将停止所有声音。无需遍历每个声音并暂停每个声音。恢复:

mActivity.getEngine().getSoundManager().onResume();
于 2013-12-22T12:39:32.117 回答