java - android媒体播放器流超过1个URL

标签 java android stream media-player

我在 Android 应用程序中使用 mediaPlayer 从在线流式传输 MP3 url。我怎样才能流式传输 5 个网址来逐个播放,而不是只播放 1 个网址?这是我的代码

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();


                }
                }

        );

最佳答案

只需创建一个列表来保存所有 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();

        }
    });

关于java - android媒体播放器流超过1个URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23858418/

相关文章:

iOS 使用基于 Cookie 的身份验证从服务器流式传输音频

android - 如何从直接视频链接将视频流式传输到 VLC(适用于 Android 或 iPhone)

java - 从请求中获取发布数据

java - 我可以去掉这个开关和枚举吗?

android - 如何在android中创建Unlock Slider类型的自定义控件?

android - 启用文本过滤器时如何引用列表项的原始位置?

c - 从两个文件读取输入并将其写入 C 中的另一个文件

Java 使用未知大小的条目创建 tar 存档

java - 为什么 Java 将方法的大小限制为 65535 字节?

java - Android TextView.setText() 在 Thread.sleep() 阻塞之前调用并返回,直到 sleep() 返回。为什么?