简体   繁体   English

在 Android 上单击 ImageButton 时播放随机声音

[英]Playing random sound when ImageButton is clicked on Android

I'm new in android and I'm trying to play random sound when ImageButton is clicked.我是 android 新手,我试图在单击ImageButton时播放随机声音。

I'm still getting the same audio when I press the button.当我按下按钮时,我仍然收到相同的音频。 It should play different sounds every time the button is pressed.每次按下按钮时,它应该播放不同的声音。 Also I would like to add a stop button later.另外我想稍后添加一个停止按钮。

Here is my code:这是我的代码:

import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.media.MediaPlayer;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;

import java.util.Random;

public
class MainActivity extends AppCompatActivity {

    MediaPlayer mp;
    ImageButton soundbutton;

    int[] sounds = {R.raw.audi, R.raw.berlin, R.raw.bratanki, R.raw.budzik, R.raw.cztery, R.raw.drzyz, R.raw.dziewczyny, R.raw.emeryt, R.raw.enter, R.raw.faza};
    Random r = new Random();
    int rndm = r.nextInt();

    @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);

        //media player

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

Thank you for your help.感谢您的帮助。

You need to give a maximum to your Random.您需要为您的随机数提供最大值。 You have 10 sounds so you want a number between 0-9.您有 10 个声音,因此您需要一个介于 0-9 之间的数字。

rndm = r.nextInt(10); 

This will give you a number between 0-9.这会给你一个 0-9 之间的数字。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM