java - Android Studio音板: How to start a loop with a mediaplayer button?

标签 java android loops android-studio

我正在尝试使用开关在每个按钮播放声音时打开或关闭循环。 当开关切换时,我希望在此之后按下的任何按钮都循环播放,直到开关关闭。

我有大约 30 个按钮,它们都有自己的 setOnClickListener,原始文件夹中有一个 mp3。 最初,我使用 soundPool 但它停止工作,所以我切换到 MediaPlayer,但我没有取得任何真正的成功。

我最新的更改是使用 Try and Catch 而不是 if,但我不知道它是否真的有帮助。

package com.goatman.soundboard;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Switch;

public class MainActivity extends Activity {

public static MediaPlayer mp;



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


    Button playBruh1 = (Button) findViewById(R.id.bruhonebutton);
    Button playBruh2 = (Button) findViewById(R.id.bruhtwobutton);
    Button playBruh3 = (Button) findViewById(R.id.bruhthreebutton);
    Button playNani = (Button) findViewById(R.id.nanibutton);
    Button playYes = (Button) findViewById(R.id.yesbutton);
    Button playAyaya = (Button) findViewById(R.id.ayayabutton);
    Button playTop5BruhMoments = (Button) findViewById(R.id.topfivebruhmomentsbutton);
    Button playTop10NWords = (Button) findViewById(R.id.toptennwordsbutton);
    Button playTop10FunnyWoman = (Button) findViewById(R.id.toptenfunnywomanbutton);
    Button playArab1 = (Button) findViewById(R.id.arabonebutton);
    Button playArab2 = (Button) findViewById(R.id.arabtwobutton);
    Button playArab3 = (Button) findViewById(R.id.arabthreebutton);
    Button playHell1 = (Button) findViewById(R.id.hellonebutton);
    Button playHell2 = (Button) findViewById(R.id.helltwobutton);
    Button playHell3 = (Button) findViewById(R.id.hellthreebutton);
    Button playNWord1 = (Button) findViewById(R.id.nwordonebutton);
    Button playNWord2 = (Button) findViewById(R.id.nwordtwobutton);
    Button playNWord3 = (Button) findViewById(R.id.nwordthreebutton);
    Button playWindows1 = (Button) findViewById(R.id.windowsonebutton);
    Button playWindows2 = (Button) findViewById(R.id.windowstwobutton);
    Button playWindows3 = (Button) findViewById(R.id.windowsthreebutton);
    Button playGun1 = (Button) findViewById(R.id.gunonebutton);
    Button playGun2 = (Button) findViewById(R.id.guntwobutton);
    Button playGun3 = (Button) findViewById(R.id.gunthreebutton);
    Button playFrench1 = (Button) findViewById(R.id.frenchonebutton);
    Button playFrench2 = (Button) findViewById(R.id.frenchtwobutton);
    Button playFrench3 = (Button) findViewById(R.id.frenchthreebutton);
    Button playCBT = (Button) findViewById(R.id.cbtbutton);
    Button playChicken = (Button) findViewById(R.id.chickenbutton);
    Switch playLoop = (Switch) findViewById(R.id.loop);


        playLoop.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    mp.setLooping(true);
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp.start();
            }
        });

        playBruh1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.bruh1);
                mp.start();
            }
        });
        playBruh2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.bruh2);
                mp.start();
            }
        });
        playBruh3.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.bruh3);
                mp.start();
            }
        });
        playArab1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.arab1);
                mp.start();
            }
        });
        playArab2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.arab2);
                mp.start();
            }
        });
        playArab3.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.arab3);
                mp.start();
            }
        });
        playNani.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.nani);
                mp.start();
            }
        });
        playYes.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.yes);
                mp.start();
            }
        });
        playAyaya.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.ayaya);
                mp.start();
            }
        });
        playTop5BruhMoments.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.top5bruhmoments);
                mp.start();
            }
        });

        playTop10NWords.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    try {
                        mp.stop();
                        mp.release();
                        mp=null;
                    }
                    catch (Exception e)
                    {
                        e.printStackTrace();
                    }
                    mp = MediaPlayer.create(MainActivity.this, R.raw.top10nwords);
                    mp.start();
                }
            });

        playTop10FunnyWoman.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.top10funnywoman);
                mp.start();
            }
        });

        playHell1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.arab2);
                mp.start();
            }
        });

        playHell2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.hell2);
                mp.start();
            }
        });

        playHell3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.hell3);
                mp.start();
            }
        });

        playNWord1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.nword1);
                mp.start();
            }
        });

        playNWord2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.nword2);
                mp.start();
            }
        });

        playNWord3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.nword3);
                mp.start();
            }
        });

        playWindows1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.windows1);
                mp.start();
            }
        });

        playWindows2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.windows2);
                mp.start();
            }
        });

        playWindows3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.arab2);
                mp.start();
            }
        });

        playGun1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.gun1);
                mp.start();
            }
        });

        playGun2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.gun2);
                mp.start();
            }
        });

        playGun3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.gun3);
                mp.start();
            }
        });

        playFrench1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.french1);
                mp.start();
            }
        });

        playFrench2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.french2);
                mp.start();
            }
        });

        playFrench3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.arab2);
                mp.start();
            }
        });

        playCBT.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.cbt);
                mp.start();
            }
        });

        playChicken.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.stop();
                    mp.release();
                    mp=null;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                mp = MediaPlayer.create(MainActivity.this, R.raw.chicken);
                mp.start();
            }
        });
    }
}

最佳答案

mp.setLooping(true);

每次开始新声音之前调用此函数。 我希望这有帮助:D

关于java - Android Studio音板: How to start a loop with a mediaplayer button?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60262890/

相关文章:

java - Vaadin 14 时间选择器 - 居中对齐

java - 如何处理 REST API 中的响应重定向?

android - 用小数限制android中的编辑文本

javascript - 在数组 javascript (ES5) 中添加相似对象的数量

javascript - 如何在循环中为 jQuery 函数的变量设置动画?

java - 是否可以使用 $x 从 Matcher 获取组?

java - 如何给三角形添加空格

android - 通过 App Inventor 在 Android 中连接、发送和显示数据

java - 隐藏没有 child 的组 - ExpandableListView

javascript - vue 模板内循环内循环