我真是个新人。所以我的问题可能很简单。我有一个按钮,想要点击该按钮后发出声音。这样可行。但我有更多的活动。过了一段时间我得到一个MediaPlayer(-19,0)错误,这意味着我必须释放媒体播放器。但我不知道如何发布它。请问你能帮帮我吗。这是按钮点击的代码:
final MediaPlayer mpButtonKlick = MediaPlayer.create(this, R.raw.sound);
btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
mpButtonKlick.start();
}
});
答案 0 :(得分:1)
初始化onResume中的资源并在onPause中释放它:
MediaPlayer mpButtonKlick;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ....
btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
mpButtonKlick.start();
}
});
// ...
}
@Override
protected void onResume() {
super.onResume();
mpButtonKlick = MediaPlayer.create(this, R.raw.sound);
}
@Override
protected void onPause() {
super.onPause();
mpButtonKlick.release();
mpButtonKlick = null;
}
答案 1 :(得分:1)
按以下方式更新您的代码
final MediaPlayer mpButtonKlick = MediaPlayer.create(this, R.raw.sound);
btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mpButtonKlick.isPlaying())
{
mpButtonKlick.stop();
mpButtonKlick.reset();
}
try {
AssetFileDescriptor afd;
afd = getAssets().openFd("AudioFile.mp3");
mpButtonKlick.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
mpButtonKlick.prepare();
mpButtonKlick.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
});
}
});