【问题标题】:Android MediaPlayer.stop() pauses instead of stoppingAndroid MediaPlayer.stop() 暂停而不是停止
【发布时间】:2012-01-23 10:59:21
【问题描述】:

我已经为 android.media.mediaplayer 编写了两个类包装器。

如果我使用工厂 MediaPlayer.Create() 中的对象。然后 mediaplayer 对象在它的方法 stop 被调用时停止歌曲(也就是说,停止歌曲,所以当我调用 play() 时,它从歌曲的开头开始)。但是如果我使用默认构造函数,stop() 的行为与 pause() 完全一样,保持歌曲中的先前位置(除了它实际上处于停止状态)。

我必须在 prepare() 和 stop() 之后使用 seekTo(0) 来做我想做的事,但这不是文档所说的。

public void start() 自:API 级别 1

开始或恢复播放。如果之前已暂停播放, 播放将从暂停的地方继续。如果播放已 停止,或从未开始,播放将在 开始。

所以,如果我在 start() 停止时调用它应该从头开始。

这是我班级的 stopSong 方法的代码:

public void stopSong() {
    if(mpPrepared){
        mp.stop();
        try {
            mp.prepare();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        mp.seekTo(0);
    }
}

有人能告诉我为什么会这样吗?谢谢!

【问题讨论】:

    标签: android android-mediaplayer


    【解决方案1】:
        if(mp.isPlaying){
    
        try {
        mp.stop();
        mp.prepare();      
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }}
    

    希望有帮助

    【讨论】:

    • 我测试了它,但仍然只是暂停。我看不出改变条件会如何改变 stop() 行为。还是谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    相关资源
    最近更新 更多