【问题标题】:android mediaplayer: how to get player status except isPlaying?android mediaplayer:如何获取除isPlaying之外的播放器状态?
【发布时间】:2013-12-02 02:19:27
【问题描述】:

mediaplayer 有 isPlaying,但只有这个。我怎么知道播放器是 isPaused 还是 isStopped ?

播放可以暂停和停止,以及当前播放位置 可以调整。可以通过 pause() 暂停播放。当调用 pause() 返回,MediaPlayer 对象进入 Paused 状态。笔记 从 Started 状态到 Paused 状态的转换和 反之亦然,在播放器引擎中异步发生。可能需要 在调用 isPlaying() 更新状态之前的某个时间,它 在流式内容的情况下可以是几秒。从: MediaPlayer.html#isPlaying

【问题讨论】:

    标签: android media-player


    【解决方案1】:

    您看到的所有方法都是唯一可用的方法。对于其他事情,您可以使用:

    try {
      //command
    } finally {
      //only called once the calls in the try clause are completed
    }
    

    【讨论】:

    • 即使我不叫 isPlaying at 更好?因为它的状态有几秒钟的延迟。
    • 查看监听器。这可能会有所帮助
    【解决方案2】:

    截至目前,MediaPlayer API 中除了播放与否之外,没有可用的方法来获取当前状态。

    MediaPlayer.isPlaying() 方法在当前播放时返回 true,否则返回 false,如果在无效状态下调用可能会抛出 IllegalStateException。

    if(mPlayer.isPlaying()){
     // MediaPlayer is in play state
    }
    else{
     // MediaPlayer is not in play state 
    }
    

    我建议你保留一个枚举标志来识别每个状态,例如

    public enum PlayerStates{PAUSED,STOPPED,PLAYING};
    PlayerStates state;
    ...
    
    public void pause(){
    mPlayer.pause();
    state=PlayerStates.PAUSED;
    }
    
    public void play(){
    mPlayer.start();
    state=PlayerStates.PLAYING;
    }
    
    public void stop(){
    mPlayer.stop();
    state=PlayerStates.STOPPED;
    }
    
    
    // returns the current state of MediaPlayer
    public PlayerStates getState(){
        return state;
    }
    

    我希望这对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      相关资源
      最近更新 更多