在我的JumbledWords遊戲應用程序中,我提供了打開和關閉聲音的選項。問題是我無法做到這一點。我爲它編寫了代碼,但它不起作用。如何在Android中以編程方式設置聲音開啓和關閉
SplashScreen.java
RadioButton rbSoundOn, rbSoundOff;
JumbledWords jw = new JumbledWords();
@Override
public void onCreate(Bundle bundle)
{
super.onCreate(bundle);
//set the full screen view of the activity
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.splash_screen);
rbSoundOn = (RadioButton)findViewById(R.id.optSoundOn);
rbSoundOff = (RadioButton)findViewById(R.id.optSoundOff);
if(rbSoundOn.isChecked() == true)
{
jw.setSoundOn(true);
}
else
{
jw.setSoundOn(false);
}}
JumbledWords.java
static boolean soundOn;
public void setSoundOn(boolean soundOn)
{
this.soundOn = soundOn;
}
public boolean isSoundOn()
{
return soundOn;
}
public void checkWord()
{
if(abcd.equalsIgnoreCase(etGuessedWord.getText().toString()))
{
WordLibrary.setMyInt(WordLibrary.getMyInt() + 10);
tvScore.setText(String.valueOf(WordLibrary.getMyInt()));
if(soundOn == true)
{
mp = MediaPlayer.create(this, R.raw.clap);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener(){
@Override
public void onCompletion(MediaPlayer arg0) {
// TODO Auto-generated method stub
mp.release();
}
});
}
}
else
{
if(soundOn == true)
{
mp = MediaPlayer.create(this, R.raw.oop);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener(){
@Override
public void onCompletion(MediaPlayer arg0) {
// TODO Auto-generated method stub
mp.release();
}
});
}
}
}
我的問題是,如果我使用關閉選項,我的聲音響起,這絕不能在這種情況發生案件。請幫幫我。 1)初始化時,他們不要創建對象:
JumbledWords jw = new JumbledWords();
是不正確的
一個潛在的問題可能是你應該調用'mp.setOnCompletionListener() '**之前**'mp.onStart()'。您可能無法正確釋放MediaPlayer實例。不過,我不確定這是否真的會導致你的問題。 – 2011-06-14 09:47:45