3
我没有太多经验,所以我从某处复制代码;但现在我可以得到国家媒体播放器;我想要做的就是获得mediaplayer的当前状态,然后在播放时显示暂停按钮;并在暂停/缓冲时播放按钮;在Android中获取MediaPlayer的当前状态
我正在使用shoutcast streaming;我想在最初加载时显示暂停按钮或某些加载状态(缓冲);当它被加载并开始播放暂停按钮时;当由于某种原因它又开始缓冲时,它应该在主要活动上显示播放按钮或加载状态
这里是我的代码;
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");
}
}
类似于'mpLoop.isPlaying()'。 – g00dy
我想它会在每次被调用的时候得到mediaplayer的状态;但我想要一些能够自动更新mediplayer状态的东西。我的意思是听众。 –
但是你有类似'startRadio()','stopRadio()'和'resumeRadio()'的函数,你可以把它放在这些函数中,因为它们只是实际改变'MediaPlayer'状态的函数。 – g00dy