我在资源文件夹中添加了两个声音文件。一个是“正确”的声音,另一个是“错误”的声音。
我写了两个函数,每个函数都可以播放其中一个playRight()
和playWrong()
。
以下是代码:
public void playWrong(){
try {
AssetFileDescriptor descriptor = getAssets().openFd("Wrong");
MediaPlayer m = new MediaPlayer();
m.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
descriptor.close();
m.prepare();
m.start();
}catch (IOException e){
}
}
public void playRight(){
try {
AssetFileDescriptor descriptor = getAssets().openFd("Right");
MediaPlayer m = new MediaPlayer();
m.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
descriptor.close();
m.prepare();
m.start();
}catch (IOException e){
}
}
启动功能playWrong()
工作正常,我可以听到声音。但是开始playRight()
让我有一个例外,虽然在我看来这两个函数应该以相同的方式工作。
有人看到我的错误吗?
答案 0 :(得分:0)
尝试此功能
public void playRight() {
try {
if (m.isPlaying()) {
m.stop();
m.release();
m = new MediaPlayer();
}
AssetFileDescriptor descriptor = getAssets().openFd("Right.mp3");
m.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
descriptor.close();
m.prepare();
m.start();
} catch (Exception e) {
e.printStackTrace();
}
}