2013-08-01 42 views
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"); 
    } 

} 

回答

7

你可以做到这一点像(见here):

if(MediaPlayer.isPlaying()){ 
    //show the pause button 
} 
else{ 
    //show the play button 
} 

入住这tut了。

+0

类似于'mpLoop.isPlaying()'。 – g00dy

+0

我想它会在每次被调用的时候得到mediaplayer的状态;但我想要一些能够自动更新mediplayer状态的东西。我的意思是听众。 –

+0

但是你有类似'startRadio()','stopRadio()'和'resumeRadio()'的函数,你可以把它放在这些函数中,因为它们只是实际改变'MediaPlayer'状态的函数。 – g00dy