如何在android中使用.pls文件进行流式处理?
我想用这个url如何在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
为我的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());
}
}
}