我正在爲一個在線電臺建立一個簡單的應用程序。我使用此代碼來使用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