【问题标题】:How do i make 1 button play random sounds each time i press the button using android studio每次使用 android studio 按下按钮时,如何让 1 个按钮播放随机声音
【发布时间】:2018-08-12 19:08:48
【问题描述】:
public class MainActivity extends AppCompatActivity { 
MediaPlayer mp; 
ImageButton soundbutton; 

//这是正在添加的声音

int[] sounds ={R.raw.yeet1, R.raw.yeet2, R.raw.yeet3, R.raw.yeet4, R.raw.yeet5, R.raw.yeet6, R.raw.yeet7, R.raw.yeet8, R.raw.yeet9, R.raw.yeet10, R.raw.yeet11, R.raw.yeet12, R.raw.yeet13}; 
Random r = new Random(); 
int Low = 0; 
int High= 13; 
int rndm = r.nextInt(High-Low) + Low; 

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

//创建媒体播放器

    soundbutton = (ImageButton) this.findViewById(R.id.button_view); 
    mp = MediaPlayer.create(getApplicationContext(),sounds[rndm]); 
    soundbutton.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
            try { 
                if (mp.isPlaying()) { 
                    mp.stop(); 
                    mp.release(); 
                    rndm = r.nextInt(High - Low) + Low; 
                    mp = MediaPlayer.create(getApplicationContext(), sounds[rndm]); 
                } 
                mp.start(); 
            } catch (Exception e) { 
                e.printStackTrace(); 
            } 
        }

此代码无法运行,我不确定是什么原因导致它感谢您的帮助!

【问题讨论】:

    标签: java android android-studio audio random


    【解决方案1】:

    mp 没有播放时,if 块不会被执行。
    改为:

    @Override
    public void onClick(View view) {
        try {
            if (mp.isPlaying()) {
                mp.stop();
                mp.release();
            }
            rndm = r.nextInt(High - Low) + Low;
            mp = MediaPlayer.create(getApplicationContext(), sounds[rndm]);
            mp.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    

    【讨论】:

    • 它说将“this.findViewById(R.id.button_view)”转换为“Imagebutton”是多余的。
    • 删除(ImageButton)
    • @SNGACDLoqi 有问题吗?
    • 是的,构建成功,但我的应用程序停止工作,我查看 logcat 它说:Caused by: java.lang.ClassCastException: android.support.v7.widget.AppCompatButton cannot be cast to android .widget.ImageButton
    • 那么它是一个按钮而不是 ImageButton。更改 ImageButton 声音按钮;到Button soundbutton;
    猜你喜欢
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2014-11-02
    • 2015-05-01
    • 1970-01-01
    相关资源
    最近更新 更多