android Media Player流多于1个URL

时间:2014-05-25 18:11:09

标签: java android stream media-player

我在Android应用程序中使用mediaPlayer从在线流式传输MP3网址。而不只是播放1个网址,我如何流式传输5个网址来一个接一个地播放?这是我的代码

Uri myUri = Uri.parse("https://db.tt/9nBgouRf");


        final MediaPlayer sdrPlayer = new MediaPlayer();



        try {
            sdrPlayer.setDataSource(this, myUri);
            sdrPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            sdrPlayer.prepare(); //don't use prepareAsync for mp3 playback
        } catch (IOException e) {

            e.printStackTrace();            
            Toast.makeText(channelx.this,
                    "Please turn on WiFi and try again", Toast.LENGTH_LONG).show();
        }




        play.setOnClickListener( new OnClickListener() {

            @Override
            public void onClick(View v) {

                    sdrPlayer.start();


                }
                }

        );

1 个答案:

答案 0 :(得分:1)

只需创建一个List即可保存所有URI

设置一些类变量:

    private int playlistPos = 0;
    private List<Uri> myUris = new ArrayList<Uri>();
    private MediaPlayer sdrPlayer = new MediaPlayer();

设置初始化歌曲的方法:

    public initSong(Uri myUri) {
        try {
            sdrPlayer.setDataSource(this, myUri);
            sdrPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            sdrPlayer.prepare(); // don't use prepareAsync for mp3 playback
        }
        catch (IOException e) {

            e.printStackTrace();
            Toast.makeText(channelx.this,
                       "Please turn on WiFi and try again",
                       Toast.LENGTH_LONG).show();
        }
    }

然后在onCreate()

    myUris.add(Uri.parse("https://db.tt/9nBgouRf"));
    // Add the others as well...

    initSong(myUris.get(playlistPos);

    sdrPlayer.setOnCompletionListener(new OnCompletionListener() {
        public void onCompletion(MediaPlayer mp) {
            playlistPos++;
            initSong(myUris.get(playlistPos));
            sdrPlayer.start(); // Start it as well if you wish
        }
    });

    play.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            sdrPlayer.start();

        }
    });