如何在android中使用.pls文件进行流式处理?

如何在android中使用.pls文件进行流式处理?,android,android-mediaplayer,audio-streaming,Android,Android Mediaplayer,Audio Streaming,我想用这个url为我的android应用程序播放一个.pls文件http://playerservices.streamtheworld.com/pls/VIRGINRADIO_DUBAIAAC.pls 我知道无法使用MediaPlayer直接播放.pls文件。因此,我使用pls解析器解析了此文件,并将每个url设置为媒体播放器。但它不起作用。还显示了错误错误(1,-2147483648) 公共类播放分析器{ 专用缓冲读卡器; 公共播放列表分析器(字符串url){ 试一试{ URL plsFil

我想用这个url
为我的android应用程序播放一个.pls文件http://playerservices.streamtheworld.com/pls/VIRGINRADIO_DUBAIAAC.pls
我知道无法使用MediaPlayer直接播放.pls文件。因此,我使用pls解析器解析了此文件,并将每个url设置为媒体播放器。但它不起作用。还显示了错误
错误(1,-2147483648)

公共类播放分析器{
专用缓冲读卡器;
公共播放列表分析器(字符串url){
试一试{
URL plsFileUrl=新URL(URL.trim());
URLConnection URLConnection=plsFileUrl.openConnection();
//InputStream输入=新的BufferedInputStream(urlConnection.openStream());
InputStream iStream=urlConnection.getInputStream();
this.reader=新的BufferedReader(新的InputStreamReader(iStream));
//this.reader=new BufferedReader(new FileReader(file),1024);
}捕获(格式错误){
Log.e(“PlayParser”,“Get-MalformedURLException=“+e.getMessage());
}捕获(IOE异常){
Log.e(“playlyparser”,“Got IOException=“+e.getMessage());
}
}
公共列表getURL(){
LinkedList URL=新建LinkedList();
while(true){
试一试{
字符串行=reader.readLine();
如果(行==null){
打破
}
字符串url=parseLine(行);
if(url!=null&&!url.equals(“”){
添加(url);
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
返回URL;
}
专用字符串解析行(字符串行){
如果(行==null){
返回null;
}
String trimmed=line.trim();
if(trimmed.indexOf(“http”)>=0){
返回trimmed.substring(trimmed.indexOf(“http”);
}
返回“”;
}
}
playlparser playlparser=新的playlparser(URL\u PLS\u流媒体);
List playList=playlparser.geturl();
if(playList!=null&&!playList.isEmpty()){
用于(字符串url:播放列表){
MediaPlayer=新的MediaPlayer();
试一试{
mediaPlayer.setDataSource(playList.get(0));/“http://stream2.streamq.net:8020/");
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(新的OnPreparedListener(){
@凌驾
已准备好公开作废(MediaPlayer mp){
mp.start();
}
});
//mediaPlayer.prepare();
}捕获(IllegalArgumentException e){
Log.e(“MainActivity”、“Get-IllegalArgumentException=“+e.getMessage());
}捕获(非法状态){
Log.e(“MainActivity”,“Get-IllegalStateException=“+e.getMessage());
}捕获(IOE异常){
Log.e(“MainActivity”、“Got IOException=“+e.getMessage());
}
}
}
我如何播放这个。请存档?我找不到一个很好的参考资料。我还想播放、暂停和回放这些文件

提前感谢

从.pls文件获取URL 这将返回如下URL

package com.direct.radio.global;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.net.URLConnection;
导入java.util.LinkedList;
导入android.content.Context;
导入android.util.Log;
公共类GetStreamingUrl{
私有静态字符串LOGTAG=“GetStreamingUrl”;
私有上下文;
公共GetStreamingUrl(上下文){
Log.i(LOGTAG,“调用构造函数”);
this.mContext=上下文;
}
公共链接列表getStreamingUrl(字符串url){
i(LOGTAG,“获取流媒体url”);
最终缓冲头br;
字符串murl=null;
LinkedList murls=null;
试一试{
URLConnection mUrl=新URL(URL).openConnection();
br=新的BufferedReader(
新的InputStreamReader(mUrl.getInputStream());
murls=新链接列表();
while(true){
试一试{
String line=br.readLine();
如果(行==null){
打破
}
murl=parseLine(行);
如果(murl!=null&&!murl.equals(“”){
添加(murl);
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
}捕获(格式错误){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
Log.i(LOGTAG,“指向流的url:+murl”);
返回murls;
}
专用字符串解析行(字符串行){
如果(行==null){
返回null;
}
String trimmed=line.trim();
if(trimmed.indexOf(“http”)>=0){
返回trimmed.substring(trimmed.indexOf(“http”);
}
返回“”;
}
} 
活动\u Player.java或服务\u Player.java 您可以根据需要编写此代码,定义此方法

LinkedList URL;
私有链接列表fGetPlayableUrl(字符串mPls){
GetStreamingUrl oGetStreamingUrl=新建GetStreamingUrl(活动\u Splash.this);
URL=oGetStreamingUrl.getStreamingUrl(mPls);
返回URL;
}
这里,
fGetPlayableUrl(字符串mPls)
pass
.pls
URL。现在您有了流式URL

MediaPlayer=newmediaplayer();
现在,将URL传递给

mmediplayer.setDataSource(url.toString());
mMediaPlayer.prepareAsync();
mmediplayer.start();

显示处理pls文件.mmediplayer.setDataSource(“”)的代码,此处url为pls文件的url或解析pls文件的url
public class PlayListParser {

    private BufferedReader reader;

    public PlayListParser(String url) {
        try {
            URL plsFileUrl = new URL(url.trim());
            URLConnection urlConnection = plsFileUrl.openConnection();
           // InputStream input = new BufferedInputStream(urlConnection.openStream());
            InputStream iStream = urlConnection.getInputStream();
            this.reader = new BufferedReader(new InputStreamReader(iStream));
            // this.reader = new BufferedReader(new FileReader(file), 1024);
        } catch (MalformedURLException e) {
            Log.e("PlayListParser", "Got MalformedURLException  = " + e.getMessage());
        } catch (IOException e) {
            Log.e("PlayListParser", "Got  IOException = " + e.getMessage());
        }
    }

    public List<String> getUrls() {
        LinkedList<String> urls = new LinkedList<String>();
        while (true) {
            try {
                String line = reader.readLine();
                if (line == null) {
                    break;
                }
                String url = parseLine(line);
                if (url != null && !url.equals("")) {
                    urls.add(url);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return urls;
    }

    private String parseLine(String line) {
        if (line == null) {
            return null;
        }
        String trimmed = line.trim();
        if (trimmed.indexOf("http") >= 0) {
            return trimmed.substring(trimmed.indexOf("http"));
        }
        return "";
    }
}


PlayListParser playListParser = new PlayListParser(URL_PLS_STREAMING);
List<String > playList = playListParser.getUrls();
if(playList != null && ! playList.isEmpty()){
    for(String url : playList){
        MediaPlayer mediaPlayer = new MediaPlayer();
        try {
        mediaPlayer.setDataSource(playList.get(0));//"http://stream2.streamq.net:8020/");
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mediaPlayer.prepareAsync();
        mediaPlayer.setOnPreparedListener(new OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.start();

            }
        });
        //mediaPlayer.prepare();
        } catch (IllegalArgumentException e) {
        Log.e("MainActivity","Got IllegalArgumentException = " + e.getMessage());

        } catch (IllegalStateException e) {
        Log.e("MainActivity","Got IllegalStateException = " + e.getMessage());

        } catch (IOException e) {
        Log.e("MainActivity","Got IOException = " + e.getMessage());

        }
    }
}