我正在为一个在线电台建立一个简单的应用程序。我使用此代码来使用MediaPlayer来流式传输站。它在一个问题上效果很好。我不知道如何向听众展示他们实际上在听什么。 我的代码:您如何从MediaPlayer获取艺术家和歌曲标题?
package com.xxxx.android;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.provider.MediaStore.Audio;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
@SuppressWarnings("unused")
public class MainActivity extends Activity implements OnClickListener {
private final static String RADIO_STATION_URL = "http://";
private Button buttonPlay;
private Button buttonStopPlay;
private MediaPlayer player;
private TextView showdisplay;
private String strInfo;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initializeUIElements();
initializeMediaPlayer();
}
private void initializeUIElements() {
buttonPlay = (Button) findViewById(R.id.buttonPlay);
buttonPlay.setOnClickListener(this);
buttonStopPlay = (Button) findViewById(R.id.buttonStopPlay);
buttonStopPlay.setEnabled(false);
buttonStopPlay.setOnClickListener(this);
showdisplay = (TextView) findViewById(R.id.lblDisplay);
}
public void onClick(View v) {
if (v == buttonPlay) {
startPlaying();
} else if (v == buttonStopPlay) {
stopPlaying();
}
}
private void startPlaying() {
buttonStopPlay.setEnabled(true);
buttonPlay.setEnabled(false);
showdisplay.setText("Buffering..");
player.prepareAsync();
player.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
player.start();
}
});
}
private void stopPlaying() {
if (player.isPlaying()) {
player.stop();
player.release();
initializeMediaPlayer();
}
buttonPlay.setEnabled(true);
buttonStopPlay.setEnabled(false);
}
private void initializeMediaPlayer() {
player = new MediaPlayer();
try {
player.setDataSource(RADIO_STATION_URL);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
player.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {
public void onBufferingUpdate(MediaPlayer mp, int percent) {
Log.i("Buffering", "" + percent);
}
});
}
@Override
protected void onPause() {
super.onPause();
if (player.isPlaying()) {
player.stop();
}
}
如何... specifically..and非常详细......我更新的TextView“showdisplay”与艺术家和歌曲名称从MediaPlayer的无线流下来?
感谢
没有人知道如何去做这个?让MediaPlayer实际流式播放shoutcast服务器是件小事,但却不知道从该流中显示艺术家/歌曲的方法? – user1446579
@ user1446579我编辑了我的回复以包含代码片段。不过,我觉得你甚至没有检查我评论之前包含的链接。您没有告诉我您为解决问题所做的工作以及为什么我的解决方案无法正常工作。我觉得你想要为你编写代码,这并不酷。 – acattle