我正在尝试为游戏创建设置,允许用户保存是否需要声音(CheckBox)。
当用户取消选中它时,我想要禁用所有其他声音。
这就是我正在做的事情
// 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();
}
对于我应用中的每个声音?
答案 0 :(得分:5)
您可以迭代所有Music
和Sound
个对象,并在其上调用stop()
,pause()
或setVolume(0,0)
。
您也可以尝试通过将主音量设置为0来静音所有声音:
mActivity.getEngine().getMusicManager().setMasterVolume(0);
mActivity.getEngine().getSoundManager().setMasterVolume(0);
答案 1 :(得分:3)
如迈克尔所述,您可以暂停声音,而不是将音量设置为零。
mActivity.getEngine().getSoundManager().onPause();
这将停止所有声音。 无需迭代每个声音并暂停每个声音。 要恢复:
mActivity.getEngine().getSoundManager().onResume();