私はあまり経験がないので、どこかからコードをコピーしました。しかし、これでメディアプレーヤーの状態を取得できます。私がやりたいのは、メディアプレーヤーの現在の状態を取得し、再生中に一時停止ボタンを表示することだけです。一時停止/バッファリング時の再生ボタン。
その中では、shoutcast ストリーミングを使用しています。最初にロードされているときに一時停止ボタンまたは何かのロードステータスを表示したい(バッファリング); ロードされて再生が開始されたら、一時停止ボタンを押します。何らかの理由で再びバッファリングを開始すると、再生ボタンまたはメイン アクティビティの読み込みステータスが表示されます。
これが私のコードです。
public class Myradio extends AsyncTask implements OnBufferingUpdateListener {
private static Context mContext;
// private static MyProgressDialog pdialog;
public static MediaPlayer mp = new MediaPlayer();
private MediaPlayer mpLoop = new MediaPlayer();
public Myradio(Context theContext) {
mContext = theContext;
mp.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
public void onBufferingUpdate(MediaPlayer arg0, int arg1) {
Log.v("Buffring Update", "");
// TODO Auto-generated method stub
}
});
}
public static void startRadio(String streamUrl) {
mp.reset();
mp.setOnErrorListener(new MediaPlayer.OnErrorListener() {
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.e(getClass().getName(), "Error in MediaPlayer: (" + what
+ ") with extra (" + extra + ")");
return false;
}
});
try {
mp.setDataSource(streamUrl);
mp.prepare();
mp.start();
} catch (IllegalArgumentException e) {
} catch (IllegalStateException e) {
} catch (IOException e) {
}
}
public static void stopRadio() {
mp.stop();
}
public static void resumeRadio() {
// mp.();
// mp.setLooping(false);
// mpLoop.stop();
}
@Override
protected Object doInBackground(Object... params) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
// TODO Auto-generated method stub
Log.v("Buffring Update", "Buffring Update");
}
}