【问题标题】:Stop the audio when other is clicked单击其他时停止音频
【发布时间】:2017-05-21 18:24:29
【问题描述】:
public class MainActivity extends AppCompatActivity {

    //Media Player Loops

    //Loops
    MediaPlayer dk1;
    MediaPlayer dk2;   

    //Mediaplayer Location
    dk1 = MediaPlayer.create(this, R.raw.dholak01);
    dk2 = MediaPlayer.create(this, R.raw.dholak03);
}



//Looping and start Media Player

public void playdk1 (View view) {
    if (dk1.isPlaying() == true) {
        dk1.stop();
        return;
    }

    if (dk2.isPlaying() == true) {
        dk2.stop();
    } else {
        dk1.start();
        dk1.setLooping(true);
    }
}

public void playdk2 (View view) {
    if (dk2.isPlaying() == true) {
        dk2.stop();
        return;
    }

    if (dk1.isPlaying() == true) {
        dk1.stop();
    } else {
        dk2.start();
        dk2.setLooping(true);
    }
}

我的 UI 中有两个按钮...这两个按钮分别有两个音频,我提到它为 dk1 和 dk2。我想要

1.按下dk2时停止dk1

2.一直重复这个过程

3.我想再创建6个像上面dk1和dk2一样的音频

问题: 我不能像这样玩 1 次

请帮帮我....

【问题讨论】:

    标签: java android audio


    【解决方案1】:

    我猜你的代码有一些错误,因为这两种方法是一样的。我假设它们是两种不同的方法:playdk1playdk2 播放不同的音频。

    Version1:当按钮被点击时,音频停止并播放另一个音频。

    public void playdk1 (View view) {
        if (dk1.isPlaying() == true) {
            dk1.stop();
            dk1.reset();
    
            return;
        }
    
        if (dk2.isPlaying() == true) {
            dk2.stop();
            dk2.reset();
        }
    
        dk1.start();
        dk1.setLooping(true);
    }
    
    public void playdk2 (View view) {
        if (dk2.isPlaying() == true) {
            dk2.stop();
            dk2.reset();
    
            return;
        }
    
        if (dk1.isPlaying() == true) {
            dk1.stop();
            dk1.reset();
        }
    
        dk2.start();
        dk2.setLooping(true);
    }
    

    版本 2:单击按钮时,音频停止。第二次单击该按钮时,将播放另一个音频。

    public void playdk1 (View view) {
        if (dk1.isPlaying() == true) {
            dk1.stop();
            dk1.reset();            
    
            return;
        }
    
        if (dk2.isPlaying() == true) {
            dk2.stop();
            dk2.reset();
        } else {
            dk1.start();
            dk1.setLooping(true);
        }
    }
    
    public void playdk2 (View view) {
        if (dk2.isPlaying() == true) {
            dk2.stop();
            dk2.reset();
    
            return;
        }
    
        if (dk1.isPlaying() == true) {
            dk1.stop();
            dk1.reset();
        } else {
            dk2.start();
            dk2.setLooping(true);
        }
    }
    

    【讨论】:

    • 有两个音频
    • 好的,所以我的假设是正确的。代码有两个版本。您使用适合您情况的那一种。
    • 我该怎么办
    • 我改进了我的答案。你可以试试看现在能不能用。
    • 对不起,应该是return
    【解决方案2】:

    使用 stop() 方法

      public void playdk2 (View view) {
        if (dk2.isPlaying() == true) {
            dk2.stop();
        } else {
            dk2.start();
            dk2.setLooping(true);
        }
    

    【讨论】:

    • 如果我正在播放音频 1 并突然单击音频 2 ...它们都会播放...当我单击音频 1 并停止它时,我无法再次播放。 ..请
    • 只改变 stop();将停止整个音乐并且当时不会播放该音乐......所以我使用了 pause();
    • 使用可以使用服务来启动和停止音乐。
    【解决方案3】:
    public void clickFirst(View view)
    {
       if(firstMedia.isPlaying())
       {
       firstMedia.stop();
       secondMedia.start();
       secondMedia.setLooping(true);
       }
       else
       {
         firstMedia.start();
         firstMedia.setLooping(true);
         secondMedia.stop();
       }
    
    }
    
    public void clickSecond(View view)
    {
       if(secondMedia.isPlaying())
       {
       secondMedia.stop();
       firstMedia.start();
       firstMedia.setLooping(true);
       }
    
       else
       {
         secondMedia.start();
         secondMedia.setLooping(true);
         firstMedia.stop();
       }
    }
    

    【讨论】:

    • 我在哪里可以添加循环
    • @JobyReuben 立即查看
    • 但是当我播放第一个媒体时,我无法播放第二个媒体,而当我播放第一个媒体时,我无法播放第二个媒体
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多