【问题标题】:Media Player stream url, then play next url媒体播放器流 url,然后播放下一个 url
【发布时间】:2011-06-14 03:15:42
【问题描述】:

我目前有一个播放 mp3 文件的媒体播放器。当该文件完成后,它进入下一个 url/mp3 的代码是什么?

还有,是否有代码可以获取文件名并显示它?我该怎么做呢?

谢谢

编辑

请参阅下面的代码:

package com.example.m3uplayer;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.media.MediaPlayer.OnCompletionListener;

public class m3uPlayer extends Activity implements MediaPlayer.OnCompletionListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //

        //http://dl.dropbox.com/u/24535120/AfroJack-UMF11-clip2.mp3

        //http://dl.dropbox.com/u/24535120/Avicii%20clip%201.mp3


        Uri myUri = Uri.parse("http://dl.dropbox.com/u/24535120/AfroJack-UMF11-clip2.mp3");

        MediaPlayer sdrPlayer = new MediaPlayer();

        try {
            sdrPlayer.setDataSource(this, myUri);//"http://mp1.somafm.com:8032");
            sdrPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            sdrPlayer.prepare(); //don't use prepareAsync for mp3 playback
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        sdrPlayer.start();
    }

    @Override
    public void onCompletion(MediaPlayer sdrPlayer) {
        Uri myUri5 = Uri.parse("http://dl.dropbox.com/u/24535120/Avicii%20clip%201.mp3");

        try {
            sdrPlayer.setDataSource(this, myUri5);
            sdrPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            sdrPlayer.prepare(); //don't use prepareAsync for mp3 playback
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        sdrPlayer.start();
    }
}

【问题讨论】:

    标签: android audio streaming media-player filenames


    【解决方案1】:

    您可以使用媒体播放器注册OnCompletionListener。当它收到回调通知时,您需要在媒体播放器上调用reset()setDataSourceprepare() 以获得下一个URL。

    我不相信 api 中有任何内容可以告诉您媒体播放器正在使用什么数据源。您需要自己跟踪。

    【讨论】:

    • 感谢泰德的帮助。那么当从 URL 播放歌曲时,就没有办法让歌曲的标题出现?
    • 另外,一个随机的问题...是否可以创建一个包含多个 URL 的数组并让媒体播放器播放该数组?如果可能的话,我还需要设置一个完成监听器吗?谢谢
    • 我所知道的提取歌曲标题的api中没有任何内容。我唯一能建议的就是自己处理 mp3 流,然后通过本地文件将其提供给媒体播放器。在 Reuben Scratton 对this query 的回答中有实验代码可以做到这一点。至于你的第二个问题,我认为你必须自己使用完成监听器来遍历 url 数组。
    • 嗯好的。感谢您的链接。所以我一直在尝试使用上面的代码,它没有播放第二个网址。有什么建议吗?它只是重播第一首歌
    • 这个想法是在您的 OnCompletionListener 中,您将继续访问下一个 url。你的代码总是用同一个调用setDataSource
    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    相关资源
    最近更新 更多