Oubaida
Oubaida

Reputation: 1756

enquiry about MediaPlayer.setDatasource(URL);

I'm a Beginner in android programming and I want to programming mp3 app to call some mp3 files from URL, so when I show "Media Player" in android developer I put the URL in the setDataSource and it's work fine, but the problem is the Activity take a lot of time to display it and in the sometimes app will be crashed. This is the part of my code :

    file_url = Mp3_Linkes[num];

    //Set Source
    try {   
        mp.setDataSource(file_url); 
    } catch (Exception e) {

        Toast.makeText(this, "Source Error !!", Toast.LENGTH_LONG).show();
    }


    //Prepare
    try {
        mp.prepare();
    }catch(Exception e)
    {
        Toast.makeText(this, "Prepare Error !!", Toast.LENGTH_LONG).show();
    }



    //Start
    mp.start();

Upvotes: 1

Views: 1841

Answers (1)

Mr.Me
Mr.Me

Reputation: 9276

Your activity is blocking because you are calling prepare on your Main Thread (UI thread)

Instead You can use prepareAsynch and OnPreparedListener to start specially when loading from remote source:

code :

try {

     mp.setDataSource(file_url);

    mp.setOnPreparedListener(new OnPreparedListener() {
         public void onPrepared(MediaPlayer player) {

                player.start();
        }
     });
    mp.prepareAsync();

Upvotes: 1

Related Questions