【问题标题】:Sound does not stop after calling stop() and release() android调用 stop() 和 release() android 后声音不会停止
【发布时间】:2012-04-22 14:52:23
【问题描述】:

我有一个活动,它会在分数屏幕上循环播放一首简单的歌曲,具体取决于玩家在我的游戏中是赢还是输。但是,在退出我的 Score Activity 后,声音会继续循环,直到发生垃圾回收。以下是我的代码的 sn-ps。我目前强制垃圾收集停止声音!为什么 stop() 或 release() 不起作用?

public void onPause(){
    super.onPause();
    _sounds.release();
}

public void load(){
    _victory = MediaPlayer.create(mActivity, R.raw.victory);
    _victory.setLooping(true);

    _failure = MediaPlayer.create(mActivity, R.raw.flutedeath);
    _failure.setLooping(true);
}

public void release(){
    _victory.stop();
    _victory.release();
    _victory = null;

    _failure.stop();
    _failure.release();
    _failure = null;
    System.gc();
}

【问题讨论】:

    标签: android audio media-player release


    【解决方案1】:

    您是否尝试过使用类似这样的 OnCompletionListener:

          try {
                mp = MediaPlayer.create(this, fileId);
                mp.start();
    
                mp.setOnCompletionListener(new OnCompletionListener() {
    
                    public void onCompletion(MediaPlayer mp) {
                        mp.release();
                        mp = null;
    
                    }
                });
            } catch (Exception exception) {
            }
    

    【讨论】:

    • 如果 MediaPlayer 没有循环播放,您的建议有效。然而,在我的三星 Galaxy SII 上,声音继续像以前一样循环,尽管 stop() 和 release()。
    猜你喜欢
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多