简体   繁体   中英

Android Playing MediaPlayer in SeparateThread

I have a Mp3Link need to play it on my Device in a Separate Thread

I have tried this,But when i execute my code ,I'm not able to play the Music,Could any one look at My Code,What Went Wrong?

Here My Code:

Thread trd = new Thread(new Runnable(){
    public void run(){
        //code to do the HTTP request
        MediaPlayer mediaPlayer = new MediaPlayer();  
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);  
        try {  
            mediaPlayer.setDataSource(mp3Link);  
        } catch (IllegalArgumentException e) {  
            e.printStackTrace();  
        } catch (SecurityException e) {  
            e.printStackTrace();  
        } catch (IllegalStateException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        mediaPlayer.prepareAsync();  
        // You can show progress dialog here untill it prepared to play  
        mediaPlayer.setOnPreparedListener(new OnPreparedListener() {  
            public void onPrepared(MediaPlayer mp) {  
                // Now dismis progress dialog, Media palyer will start playing 
                Log.d("Mediaplyer>>>>>>>>", "Mediaplyer>>>>>>>>");
                mp.start();  
            }  
        });  
        mediaPlayer.setOnErrorListener(new OnErrorListener() {  
            public boolean onError(MediaPlayer mp, int what, int extra) {  
                // dissmiss progress bar here. It will come here when  
                // MediaPlayer  
                // is not able to play file. You can show error message to user  
                return false;  
            }  
        });  

    }
});
trd.start();

How about put

mediaPlayer.prepareAsync();

at the end of run() function ?

Thread trd = new Thread(new Runnable(){
    public void run(){
        //code to do the HTTP request
        MediaPlayer mediaPlayer = new MediaPlayer();  
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);  
        try {  
            mediaPlayer.setDataSource(mp3Link);  
        } catch (IllegalArgumentException e) {  
            e.printStackTrace();  
        } catch (SecurityException e) {  
            e.printStackTrace();  
        } catch (IllegalStateException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        // mediaPlayer.prepareAsync();  // <== Marked
        // You can show progress dialog here untill it prepared to play  
        mediaPlayer.setOnPreparedListener(new OnPreparedListener() {  
            public void onPrepared(MediaPlayer mp) {  
                // Now dismis progress dialog, Media palyer will start playing 
                Log.d("Mediaplyer>>>>>>>>", "Mediaplyer>>>>>>>>");
                mp.start();  
            }  
        });  
        mediaPlayer.setOnErrorListener(new OnErrorListener() {  
            public boolean onError(MediaPlayer mp, int what, int extra) {  
                // dissmiss progress bar here. It will come here when  
                // MediaPlayer  
                // is not able to play file. You can show error message to user  
                return false;  
            }  
        });  
        mediaPlayer.prepareAsync(); // <== Add

    }
});
trd.start();

Hope this helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM