Reputation: 463
i am new to android i have written the code on which links the mediaplayer to play songs
i have created a folder path="//localhost/Android/sd/vande.mp3 file is present
public class MainActivity extends Activity {
Button start,pause,stop;
boolean flag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start=(Button)findViewById(R.id.button1);
pause=(Button)findViewById(R.id.button2);
stop=(Button)findViewById(R.id.button3);
final MediaPlayer mp=new MediaPlayer();
try{
mp.setDataSource(Environment.getExternalStorageDirectory().getPath()+"/Android/music/vande.mp3");
mp.prepare();
}catch(Exception e){e.printStackTrace();}
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
public void onPrepared(MediaPlayer player)
{
//mp.start();
flag = true;
}
});
if(flag ==true)
{
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mp.start();
}
});
}
else
{
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mp.stop();
}
});
}
pause.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mp.pause();
}
});
}}
but file is not playing when i checked the logcat there is an error popped up "start called in state 0 error (-38,0)
can anyone help to resolve this code
thanks in advance
Upvotes: 1
Views: 9789
Reputation: 133580
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
}
Upvotes: 5