我正在创建一个打乱文字游戏应用程序,它根据成功或失败播放两种声音。猜测成功后,游戏会播放一个声音文件。如果猜测失败,游戏会播放另一个声音文件。我写了下面的代码
public void checkWord()
{
MediaPlayer mp;
if(abcd.equals(etGuessedWord.getText().toString()))
{
WordLibrary.setMyInt(WordLibrary.getMyInt() + 10);
tvScore.setText(String.valueOf(WordLibrary.getMyInt()));
new AlertDialog.Builder(JumbledWords.this).setMessage("Awesome!!!")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
wordIdx = (wordIdx + 1) % getSize();
sWord = getScrambledWord(word_list[wordIdx]);
tvScrambledWord.setText(sWord);
abcd = word_list[wordIdx];
++word_array_length;
etGuessedWord.setText("");
if(word_array_length >= word_list.length)
{
new AlertDialog.Builder(JumbledWords.this).setMessage("Level Complete!!! ")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
start = 0;
finish();
}
}).create().show();
}
}
}).create().show();
**mp = MediaPlayer.create(this, R.raw.clap);**
mp.start();
}
else
{
new AlertDialog.Builder(JumbledWords.this).setMessage("Wrong. Try Again")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
etGuessedWord.setText("");
}
}).create().show();
**mp = MediaPlayer.create(this, R.raw.oop);**
mp.start();
}
}
代码 mp = MediaPlayer.create(this,R.raw.oop) 给出异常。我已尽力避免出现 IOException 等异常。应用程序在中间停止并给出“强制关闭”。代码有什么问题吗?还有其他编程方式来加载声音吗?请帮助我。
最佳答案
问题是您用来创建对象的上下文,“this”是一个 Activity 上下文,在某些条件下,不包含对原始对象的引用。我遇到了同样的问题,我通过使用应用程序上下文而不是 Activity 上下文解决了这个问题。
尝试将您的创建代码更改为以下内容:
上下文appContext = getApplicationContext();
mp = MediaPlayer.create(appContext, resid);
关于android - 如何在android中播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6280669/