首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止MediaPlayer文件

停止MediaPlayer文件
EN

Stack Overflow用户
提问于 2016-03-15 22:31:51
回答 2查看 35关注 0票数 0

我只想停止我的MediaPlayer文件,我真的不明白为什么会这么复杂。我有一种开始音乐的方法:

代码语言:javascript
复制
 public void startMusic() {
    mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy);
        mediaPlayer1.start();
        mediaPlayer1.setVolume(0.2f, 0.2f);
        mediaPlayer1.setLooping(true);
        play = true;
    } 

我想用这种方法停止音乐:

代码语言:javascript
复制
  public void stopMusic(){
    mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy);
    if(play){
        mediaPlayer1.stop();
        mediaPlayer1.reset();
        mediaPlayer1.release();
        mediaPlayer1 = null;
        play = false;
    }

当我调用startMusic方法时,音乐就开始了,但是当我调用stopMusic方法时,没有人知道如何做,请响应。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-15 22:41:59

代码语言:javascript
复制
mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy);

在这一行中,您正在创建一个新的MediaPlayer对象,并且丢失了旧的对象引用(它将继续播放直到gc)。使用相同的对象,如下所示

代码语言:javascript
复制
 public void stopMusic(){
    if (mediaPlayer1 != null){
      if(mediaPlayer1.isPlaying()){
        mediaPlayer1.stop();
        mediaPlayer1.reset();
        mediaPlayer1.release();
        mediaPlayer1 = null;
      }
   }
票数 1
EN

Stack Overflow用户

发布于 2016-03-15 22:43:20

您将再次创建MediaPlayer实例并停止新实例。但是,您需要做的是停止运行和播放音频的现有MediaPlayer实例。改变你的stopMusic() -

代码语言:javascript
复制
public void stopMusic(){

    if(play && mediaPlayer1 != null){
        mediaPlayer1.stop();
        mediaPlayer1.reset();
        mediaPlayer1.release();
        mediaPlayer1 = null;
        play = false;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36023508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档