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

Cha*_*kar 0 audio android andengine

我正在尝试为游戏创建设置,允许用户保存是否需要声音(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();
Run Code Online (Sandbox Code Playgroud)

做完之后

mActivity.getEngine().getEngineOptions().getAudioOptions().setNeedsSound(false);
mActivity.getEngine().getEngineOptions().getAudioOptions().setNeedsMusic(false);
Run Code Online (Sandbox Code Playgroud)

声音仍在播放.
如何禁用每个声音?

或者,我必须这样做:

if(mSettingPreferences.getBoolean("isSoundEnabled", false)){
     pMySound.play();
}
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*ael 5

你可以遍历所有的MusicSound目标,并呼吁stop(),pause()setVolume(0,0)在他们身上.


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

mActivity.getEngine().getMusicManager().setMasterVolume(0);
mActivity.getEngine().getSoundManager().setMasterVolume(0);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果您想降低功耗,最好暂停/停止所有音乐/声音,而不是仅将音量设置为0. (2认同)