在我的Android应用中,用户可以点击不同的视图来制作钢琴音色。我的声音存储在原始文件夹(do_note.mp3,re_note.mp3,...)
中我的问题是,当用户点击视图时,会产生声音但是在6或7次点击后声音停止并且之后不再发出声音。 这是我的功能代码:
public int playSound(String tag){
id = context.getResources().getIdentifier(tag, "raw", context.getPackageName());
int soundId = sp.load(context, id,1);
MediaPlayer mPlayer = MediaPlayer.create(context,id);
mPlayer.start();
}
答案 0 :(得分:1)
始终检查mPlayer是否已停止
@Override
public void onClick(View v) {
if(mPlayer.isPlaying())
{
mPlayer.stop();
mPlayer.reset();
}
try {
AssetFileDescriptor afd;
afd = getAssets().openFd("your.sound");
mPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
mPlayer.prepare();
mPlayer.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
您可以更改onClick()方法并将代码放入函数
希望这有助于你
答案 1 :(得分:1)
感谢JakSok
你的回答指导我找到解决方案,事实上我必须为我的MediaPlayer调用重置和释放方法,这是我的解决方案:
if(mPlayer.isPlaying()) {
mPlayer.stop();
}
int id = getResources().getIdentifier(fileName, "raw", getPackageName());
mPlayer.reset();
mPlayer.release();
mPlayer = MediaPlayer.create(this,id);
mPlayer.start();