如何在 Android 中播放在线广播流 url。如何在 android 中播放 .pls 广播流 url
Posted
技术标签:
【中文标题】如何在 Android 中播放在线广播流 url。如何在 android 中播放 .pls 广播流 url【英文标题】:How to play online radio streaming url in Android. How to play .pls radio streaming url in android 【发布时间】:2016-04-28 23:46:37 【问题描述】:我在我的服务器中创建了一个 XML 文件。它包含title
和link
标签。我获取标签并将它们显示为ListView
中的链接。从那里,当用户单击链接时,我想在 Radio Station 应用程序中播放 .pls
文件。
这是我的 XML 文件:
<item>
<title> Kushi FM </title>
<link>http://108.163.197.114:8071/listen.pls</link>
</item>
我不知道如何在下一个活动中播放链接。
MainActivity
:
public class MainActivity extends AppCompatActivity
// All static variables
static final String URL1 = "http://servernmae.com/stations";
// XML node keys
static final String KEY_ITEM = "item"; // parent node
static final String KEY_TITLE = "title";
static final String KEY_LINK = "link";
URL url;
URLConnection urlConnection;
//Context context;
ListView listview;
int images=R.drawable.radio;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// isNetworkAvailable(this);
listview = (ListView) findViewById(R.id.list);
if(isNetworkAvailable(this))
new GetData().execute();
else
Toast.makeText(getApplicationContext(), "Please Connect to Internet and Check Again ! Thanks)",
Toast.LENGTH_LONG).show();
private boolean isNetworkAvailable(Context context)
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null)
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
Log.w("INTERNET:",String.valueOf(i));
if (info[i].getState() == NetworkInfo.State.CONNECTED)
Log.w("INTERNET:", "connected!");
return true;
return false;
class GetData extends AsyncTask<String, String, String>
String xml = "error";
@Override
protected String doInBackground(String... params)
try
url = new URL(URL1);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader isw = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isw);
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null)
sb.append(line + "\n");
br.close();
xml = sb.toString();
catch (MalformedURLException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
return xml;
@Override
protected void onPostExecute(String s)
super.onPostExecute(s);
final ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
ArrayList<String> title= new ArrayList<>();
//title.add("");
Document doc = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
doc = db.parse(is);
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
for (int i = 0; i < nl.getLength(); i++)
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
Log.e("TAg1", getValue(e, KEY_TITLE));
//Log.e("TAg2", getValue(e, KEY_LINK));
map.put(KEY_TITLE, getValue(e, KEY_TITLE));
map.put(KEY_LINK, getValue(e, KEY_LINK));
menuItems.add(map);
title.add(getValue(e, KEY_TITLE));
catch (ParserConfigurationException e)
Log.e("Error: ", e.getMessage());
catch (SAXException e)
Log.e("Error: ", e.getMessage());
catch (IOException e)
Log.e("Error: ", e.getMessage());
String[] dataArr = new String[title.size()];
dataArr = title.toArray(dataArr );
CustomAdapter adapter = new CustomAdapter(getApplicationContext(), dataArr );
listview.setAdapter(adapter);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener()
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
//HashMap<String, String> selectedMap = menuItems.get(position);
HashMap<String,String> selectedMap= menuItems.get(position);
String urls = selectedMap.get(KEY_LINK);
Intent intent = new Intent(MainActivity.this, Service_Player.class);
intent.putExtra("url",urls);
startActivity(intent);
);
public final String getElementValue(Node elem)
Node child;
if (elem != null)
if (elem.hasChildNodes())
for (child = elem.getFirstChild(); child != null; child = child.getNextSibling())
if (child.getNodeType() == Node.TEXT_NODE)
return child.getNodeValue();
return "";
public String getValue(Element item, String str)
NodeList n = item.getElementsByTagName(str);
return this.getElementValue(n.item(0));
Service_player.java
public class Service_Player extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_service__player);
startService(new Intent(this, MediaPlayerService.class));
String url = getIntent().getStringExtra("url");
if (!TextUtils.isEmpty(url))
startMediaPlayer(url);
@Override
protected void onResume()
super.onResume();
registerReceiver(receiverFromservice, new IntentFilter(MediaPlayerService.SERVICE_TO_ACTIVITY));
private String currentPlayerStatus = "N/A";
private BroadcastReceiver receiverFromservice = new BroadcastReceiver()
@Override
public void onReceive(Context context, Intent intent)
String action = intent.getAction();
if (MediaPlayerService.SERVICE_TO_ACTIVITY.equalsIgnoreCase(action))
/*
* To get current status of player
* */
currentPlayerStatus = intent.getStringExtra(MediaPlayerService.PLAYER_STATUS_KEY);
Log.e("Player Mode", "" + currentPlayerStatus);
;
@Override
protected void onPause()
super.onPause();
unregisterReceiver(receiverFromservice);
public void startMediaPlayer(String url)
Intent intent = new Intent();
intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE);
intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.PLAY_MEDIA_PLAYER);
intent.putExtra(MediaPlayerService.PLAYER_TRACK_URL, url);
sendBroadcast(intent);
MediaPlayerService.java
public class MediaPlayerService extends Service
public static final String BROADCAST_TO_SERVICE = "com.mediaplayer.playerfunction";
public static final String SERVICE_TO_ACTIVITY = "com.mediaplayer.currentPlayerStatus";
public static final String PLAYER_FUNCTION_TYPE = "playerfunction";
public static final String PLAYER_TRACK_URL = "trackURL";
public static final int PLAY_MEDIA_PLAYER = 1;
public static final int PAUSE_MEDIA_PLAYER = 2;
public static final int RESUME_MEDIA_PLAYER = 3;
public static final int STOP_MEDIA_PLAYER = 4;
public static final int CHANGE_PLAYER_TRACK = 5;
public static final String PLAYER_STATUS_KEY = "PlayerCurrentStatus";
@Nullable
@Override
public IBinder onBind(Intent intent)
return null;
@Override
public int onStartCommand(Intent intent, int flags, int startId)
IntentFilter intentFilter = new IntentFilter(BROADCAST_TO_SERVICE);
registerReceiver(playerReceiver, intentFilter);
if (mPlayer != null && mPlayer.isPlaying())
sendPlayerStatus("playing");
return START_STICKY;
private BroadcastReceiver playerReceiver = new BroadcastReceiver()
@Override
public void onReceive(Context context, Intent intent)
String action = intent.getAction();
if (BROADCAST_TO_SERVICE.equalsIgnoreCase(action))
String trackURL = intent.hasExtra(PLAYER_TRACK_URL) ? intent.getStringExtra(PLAYER_TRACK_URL) : "";
int function = intent.getIntExtra(PLAYER_FUNCTION_TYPE, 0);
switch (function)
case CHANGE_PLAYER_TRACK:
changeTrack(trackURL);
break;
case STOP_MEDIA_PLAYER:
stopPlayer();
break;
case PLAY_MEDIA_PLAYER:
startMediaPlayer(trackURL);
break;
case PAUSE_MEDIA_PLAYER:
pausePlayer();
break;
case RESUME_MEDIA_PLAYER:
resumePlayer();
break;
;
private MediaPlayer mPlayer;
private void pausePlayer()
if (mPlayer != null && mPlayer.isPlaying())
mPlayer.pause();
sendPlayerStatus("pause");
private void resumePlayer()
if (mPlayer != null && !mPlayer.isPlaying())
mPlayer.start();
sendPlayerStatus("playing");
private void changeTrack(String url)
stopPlayer();
startMediaPlayer(url);
private void stopPlayer()
if (mPlayer != null)
mPlayer.stop();
mPlayer.release();
mPlayer = null;
sendPlayerStatus("stopped");
public void startMediaPlayer(String url)
if (TextUtils.isEmpty(url))
return;
if (mPlayer == null)
mPlayer = new MediaPlayer();
try
mPlayer.setDataSource(url);
mPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener()
@Override
public boolean onError(MediaPlayer mp, int what, int extra)
if (extra == MediaPlayer.MEDIA_ERROR_SERVER_DIED
|| extra == MediaPlayer.MEDIA_ERROR_MALFORMED)
sendPlayerStatus("erroronplaying");
else if (extra == MediaPlayer.MEDIA_ERROR_IO)
sendPlayerStatus("erroronplaying");
return false;
return false;
);
mPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener()
public void onBufferingUpdate(MediaPlayer mp, int percent)
Log.e("onBufferingUpdate", "" + percent);
);
mPlayer.prepareAsync();
mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
public void onPrepared(MediaPlayer mp)
mPlayer.start();
sendPlayerStatus("playing");
);
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
@Override
public void onCompletion(MediaPlayer mp)
Log.e("onCompletion", "Yes");
sendPlayerStatus("completed");
);
mPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener()
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra)
return false;
);
catch (IllegalArgumentException e)
e.printStackTrace();
catch (IllegalStateException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
private void sendPlayerStatus(String status)
Intent intent = new Intent();
intent.setAction(SERVICE_TO_ACTIVITY);
intent.putExtra(PLAYER_STATUS_KEY, status);
sendBroadcast(intent);
Manifest.xml
<!-- Internet Permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Network State Permissions -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Service_Player"
android:label="@string/title_activity_service__player" >
</activity>
<service android:name=".MediaPlayerService"></service>
</application>
【问题讨论】:
【参考方案1】:如果您使用 MediaPlayer 流式传输或普通 MediaPlayer 创建应用程序,我建议您使用 Service。可以轻松处理播放器背景和集中处理。
要在Service中使用媒体播放器,您可以根据您的要求将其与BroadCastReceiver或绑定服务一起使用。如果您保留MediaPlayer相关服务会很好running in foreground 下面的代码我没有处理,请检查给定的链接。
在示例代码中,我使用广播接收器将命令从 Activity 发送到 MediaPlayer 的服务(如播放、暂停、更改曲目等),反之亦然。
现在要获取您从 Activity onItemClickListner 发送的 url,您需要从 Intent 获取。
String url = getIntent().getStringExtra("url");
播放器屏幕
public class PlayerScreen extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.player);
startService(new Intent(this, MediaPlayerService.class));
findViewById(R.id.btnChangeTrack).setOnClickListener(clickListener);
findViewById(R.id.btnStartMediaPlayer).setOnClickListener(clickListener);
findViewById(R.id.btnStopMediaPlayer).setOnClickListener(clickListener);
ToggleButton toggleButton = (ToggleButton) findViewById(R.id.togglePauseResume);
toggleButton.setOnCheckedChangeListener(checkedChangeListener);
/*
* To get url which is passing from the previous activity listitem click.
* If url which is pass from listitem click is not empty it will start player
* */
String url = getIntent().getStringExtra("url");
if (!TextUtils.isEmpty(url))
startMediaPlayer(url);
private ToggleButton.OnCheckedChangeListener checkedChangeListener = new ToggleButton.OnCheckedChangeListener()
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
if (!isChecked)
Intent intent = new Intent();
intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE);
intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.PAUSE_MEDIA_PLAYER);
sendBroadcast(intent);
else
Intent intent = new Intent();
intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE);
intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.RESUME_MEDIA_PLAYER);
sendBroadcast(intent);
;
private View.OnClickListener clickListener = new View.OnClickListener()
@Override
public void onClick(View v)
Intent intent;
switch (v.getId())
case R.id.btnChangeTrack:
intent = new Intent();
intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE);
intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.CHANGE_PLAYER_TRACK);
intent.putExtra(MediaPlayerService.PLAYER_TRACK_URL, "http://69.64.41.64:9938");
sendBroadcast(intent);
break;
case R.id.btnStartMediaPlayer:
startMediaPlayer("http://108.163.197.114:8071/listen.pls");
break;
case R.id.btnStopMediaPlayer:
intent = new Intent();
intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE);
intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.STOP_MEDIA_PLAYER);
sendBroadcast(intent);
break;
;
@Override
protected void onResume()
super.onResume();
registerReceiver(receiverFromservice, new IntentFilter(MediaPlayerService.SERVICE_TO_ACTIVITY));
private String currentPlayerStatus = "N/A";
private BroadcastReceiver receiverFromservice = new BroadcastReceiver()
@Override
public void onReceive(Context context, Intent intent)
String action = intent.getAction();
if (MediaPlayerService.SERVICE_TO_ACTIVITY.equalsIgnoreCase(action))
/*
* To get current status of player
* */
currentPlayerStatus = intent.getStringExtra(MediaPlayerService.PLAYER_STATUS_KEY);
Log.e("Player Mode", "" + currentPlayerStatus);
;
@Override
protected void onPause()
super.onPause();
unregisterReceiver(receiverFromservice);
/**
* TO start media player.It will send broadcast to Service & from service player will start
*
* @param url
*/
public void startMediaPlayer(String url)
Intent intent = new Intent();
intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE);
intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.PLAY_MEDIA_PLAYER);
intent.putExtra(MediaPlayerService.PLAYER_TRACK_URL, url);
sendBroadcast(intent);
MediaPlayerService
public class MediaPlayerService extends Service
public static final String BROADCAST_TO_SERVICE = "com.mediaplayer.playerfunction";
public static final String SERVICE_TO_ACTIVITY = "com.mediaplayer.currentPlayerStatus";
public static final String PLAYER_FUNCTION_TYPE = "playerfunction";
public static final String PLAYER_TRACK_URL = "trackURL";
public static final int PLAY_MEDIA_PLAYER = 1;
public static final int PAUSE_MEDIA_PLAYER = 2;
public static final int RESUME_MEDIA_PLAYER = 3;
public static final int STOP_MEDIA_PLAYER = 4;
public static final int CHANGE_PLAYER_TRACK = 5;
public static final String PLAYER_STATUS_KEY = "PlayerCurrentStatus";
@Nullable
@Override
public IBinder onBind(Intent intent)
return null;
@Override
public int onStartCommand(Intent intent, int flags, int startId)
IntentFilter intentFilter = new IntentFilter(BROADCAST_TO_SERVICE);
registerReceiver(playerReceiver, intentFilter);
if (mPlayer != null && mPlayer.isPlaying())
sendPlayerStatus("playing");
return START_STICKY;
private BroadcastReceiver playerReceiver = new BroadcastReceiver()
@Override
public void onReceive(Context context, Intent intent)
String action = intent.getAction();
if (BROADCAST_TO_SERVICE.equalsIgnoreCase(action))
String trackURL = intent.hasExtra(PLAYER_TRACK_URL) ? intent.getStringExtra(PLAYER_TRACK_URL) : "";
int function = intent.getIntExtra(PLAYER_FUNCTION_TYPE, 0);
switch (function)
case CHANGE_PLAYER_TRACK:
changeTrack(trackURL);
break;
case STOP_MEDIA_PLAYER:
stopPlayer();
break;
case PLAY_MEDIA_PLAYER:
startMediaPlayer(trackURL);
break;
case PAUSE_MEDIA_PLAYER:
pausePlayer();
break;
case RESUME_MEDIA_PLAYER:
resumePlayer();
break;
;
private MediaPlayer mPlayer;
private void pausePlayer()
if (mPlayer != null && mPlayer.isPlaying())
mPlayer.pause();
sendPlayerStatus("pause");
private void resumePlayer()
if (mPlayer != null && !mPlayer.isPlaying())
mPlayer.start();
sendPlayerStatus("playing");
private void changeTrack(String url)
stopPlayer();
startMediaPlayer(url);
private void stopPlayer()
if (mPlayer != null)
mPlayer.stop();
mPlayer.release();
mPlayer = null;
sendPlayerStatus("stopped");
public void startMediaPlayer(String url)
if (TextUtils.isEmpty(url))
return;
if (mPlayer == null)
mPlayer = new MediaPlayer();
try
mPlayer.setDataSource(url);
mPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener()
@Override
public boolean onError(MediaPlayer mp, int what, int extra)
if (extra == MediaPlayer.MEDIA_ERROR_SERVER_DIED
|| extra == MediaPlayer.MEDIA_ERROR_MALFORMED)
sendPlayerStatus("erroronplaying");
else if (extra == MediaPlayer.MEDIA_ERROR_IO)
sendPlayerStatus("erroronplaying");
return false;
return false;
);
mPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener()
public void onBufferingUpdate(MediaPlayer mp, int percent)
Log.e("onBufferingUpdate", "" + percent);
);
mPlayer.prepareAsync();
mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
public void onPrepared(MediaPlayer mp)
mPlayer.start();
sendPlayerStatus("playing");
);
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
@Override
public void onCompletion(MediaPlayer mp)
Log.e("onCompletion", "Yes");
sendPlayerStatus("completed");
);
mPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener()
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra)
return false;
);
catch (IllegalArgumentException e)
e.printStackTrace();
catch (IllegalStateException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
private void sendPlayerStatus(String status)
Intent intent = new Intent();
intent.setAction(SERVICE_TO_ACTIVITY);
intent.putExtra(PLAYER_STATUS_KEY, status);
sendBroadcast(intent);
player.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_>
<TextView
android:id="@+id/section_label"
android:layout_
android:layout_
android:layout_below="@+id/ab_tool"
android:text="Home" />
<Button
android:id="@+id/btnStartMediaPlayer"
android:layout_
android:layout_
android:layout_below="@+id/section_label"
android:text="Start Player" />
<ToggleButton
android:id="@+id/togglePauseResume"
android:layout_
android:layout_
android:layout_below="@+id/btnStartMediaPlayer"
android:checked="true"
android:textOff="Resume"
android:textOn="Pause" />
<Button
android:id="@+id/btnChangeTrack"
android:layout_
android:layout_
android:layout_below="@+id/togglePauseResume"
android:text="Chanage Track" />
<Button
android:id="@+id/btnStopMediaPlayer"
android:layout_
android:layout_
android:layout_below="@+id/btnChangeTrack"
android:text="STOP" />
</RelativeLayout>
清单
<activity android:name=".PlayerScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".MediaPlayerService"></service>
要从流式 url 标头数据中获取数据,您可以 check this answer
出于测试目的,我在这里使用了两个网址
更新 玩家活动
public class PlayerScreen extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.player);
startService(new Intent(this, MediaPlayerService.class));
/*
* To get url which is passing from the previous activity listitem click.
* If url which is pass from listitem click is not empty it will start player
* */
String url = getIntent().getStringExtra("url");
if (!TextUtils.isEmpty(url))
startMediaPlayer(url);
@Override
protected void onResume()
super.onResume();
registerReceiver(receiverFromservice, new IntentFilter(MediaPlayerService.SERVICE_TO_ACTIVITY));
private String currentPlayerStatus = "N/A";
private BroadcastReceiver receiverFromservice = new BroadcastReceiver()
@Override
public void onReceive(Context context, Intent intent)
String action = intent.getAction();
if (MediaPlayerService.SERVICE_TO_ACTIVITY.equalsIgnoreCase(action))
/*
* To get current status of player
* */
currentPlayerStatus = intent.getStringExtra(MediaPlayerService.PLAYER_STATUS_KEY);
Log.e("Player Mode", "" + currentPlayerStatus);
;
@Override
protected void onPause()
super.onPause();
unregisterReceiver(receiverFromservice);
/**
* TO start media player.It will send broadcast to Service & from service player will start
*
* @param url
*/
public void startMediaPlayer(String url)
Intent intent = new Intent();
intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE);
intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.PLAY_MEDIA_PLAYER);
intent.putExtra(MediaPlayerService.PLAYER_TRACK_URL, url);
sendBroadcast(intent);
如果有任何事情请告诉我。
【讨论】:
谢谢,但是当用户在 Listview 中单击 Fm 名称时,下一个 Activity 将自动播放,我们该怎么做??? 这是我在 NextActivity 中编写的代码,对吗?意图意图= getIntent();最终字符串 selectedData = intent.getStringExtra("url"); fmname.setText(selectedData); mMediaPlayer = new MediaPlayer();尝试 mMediaPlayer.setDataSource(selectedData); mMediaPlayer.prepareAsync(); mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() public void onPrepared(MediaPlayer mp) mMediaPlayer.start(); );Player
我的回答中的 Activity 将是您在 Player
活动的 onCreate
方法中的 Service_Player
它将从意图中获取 url 数据及其调用 startMediaPlayer
方法将启动播放器
谢谢,我明白了,但我的疑问是在下一个活动中我没有放置任何按钮(如开始或停止)它是一个空的活动,收音机想要在这里播放..但是在你的 Coading 中通过按钮 id 使用 Switch 语句并播放该文件,但我没有使用任何按钮我们该怎么做? @user1140237
让我们continue this discussion in chat。【参考方案2】:
MediaPlayer mp;
mp=MediaPlayer.create(getApplicationContext(),Uri.parse(url))
//Example url of .pls file http://50.xx.xxx.xx:xx40/)
mp.start();
mp.pause();
mp.release() (or mp.reset() as applicable)
【讨论】:
以上是关于如何在 Android 中播放在线广播流 url。如何在 android 中播放 .pls 广播流 url的主要内容,如果未能解决你的问题,请参考以下文章