每个按钮播放一个音频片段

时间:2018-12-05 02:46:40

标签: android

作为android studio编程的绝对新手,请尝试编写三个按钮,每个按钮将播放一个音频片段,但不会同时播放所有音频片段。在给定的时间内只能播放一个乐曲。这些按钮可以正常工作并且正在播放,但是问题在于,如果按下所有按钮,它们会同时播放。这是MainActivity的副本:

    package com.naomitan.multibuttonaudio;

    import android.media.MediaPlayer;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;

     public class MainActivity extends AppCompatActivity {

        MediaPlayer mp1, mp2, mp3;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        }

        public void firstButton(View view) {
        mp1 = MediaPlayer.create(this, R.raw.a);
        if(mp1.isPlaying() == true){
            mp1.pause();
        }else{
            mp1.start();
            mp2.pause();
            mp3.pause();

            if(mp2.isPlaying() == true){
                mp2.pause();
            }else{
                mp2.start();
                mp1.pause();
                mp3.pause();

                if(mp3.isPlaying() == true){
                    mp3.pause();
                }else{
                    mp3.start();
                    mp1.pause();
                    mp2.pause();
                }
            }
        }
        }

        public void secondButton(View view) {
        mp = MediaPlayer.create(this, R.raw.b);
        if(mp.isPlaying() == true){
            mp.pause();
        }else{
            mp.start();
        }
        }

        public void thirdButton(View view) {
        mp = MediaPlayer.create(this, R.raw.c);
        if(mp.isPlaying() == true){
            mp.pause();
        }else{
            mp.start();
        }
        }
        }

1 个答案:

答案 0 :(得分:0)

问题出在您的按钮功能上,您有以下几个错误:

您在第二个和第三个按钮上都使用了 var y = [] for(let i=0;i < word.length;++i){ if(word[i] == "A"|| word[i] == "a"){ y.push(0) } else if(word[i] == "B"|| word[i] == "b"){ y.push(1); } else if(word[i] == "C"|| word[i] == "c"){ y.push(2); } else if(word[i] == "D"|| word[i] == "d"){ y.push(3); } and so on.. return(y); } ,而不是分别使用mm2

根据情况,您可能会在第一个按钮上启动m3m2

要解决此问题,只需对所有按钮进行相同的检查,然后检查每个按钮是否正在播放(如果是,则暂停,否则播放)以及其他两个按钮是否正在播放(如果是,则暂停)。

m3