You need to wait till the media player is prepared before calling start
mp.setOnPreparedListener(
new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer player)
{
mp.start();
}
});
If you want to start the player on button click. You can have a flag. boolean flag=false;
Then
public void onPrepared(MediaPlayer player)
{
flag= true;
}
Then in onClick
if(flag ==true)
{
mp.start();
}else
{
// media player not prepared
}