Reputation: 37
i am a really newbi. So probably is my question very simple for you. I have a button and wanted to make a Sound after clicking on that button. That works. But I have more activities. And After a time I get a MediaPlayer (-19,0) error, which means that I have to release the mediaplayer. But I don't know how to release it. Could you help me please. Thats my code for the button click:
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();
}
});
Upvotes: 0
Views: 108
Reputation: 2124
Initialize the resources in onResume and release it in 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;
}
Upvotes: 1
Reputation: 223
Update your code as following
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();
}
});
}
});
Upvotes: 1