Хотя я думаю, что до сих пор не существует доступного правила для выполнения такой вещи, здесь доступна выборочная облачная функция, которая делает это:
https://github.com/firebase/functions -samples / дерево / мастер / лимитных детей
Вам здесь не нужен цикл, что вы можете сделать, взяв boolean
установить значение true, если музыка играет, и false, если остановить просто, верно?
Вы можете просто сделать это:
// Delcare a boolean as an attribute to be accessible inside the listener
private boolean isPlaying = false;
// Inside onCreate(), set a listener on your Button myButton
Mediaplayer mp = MediaPlayer.create(this, R.raw.yourfile);
myButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (!isPlaying) {
// Not playing music
// START RANDOM MUSIC with mp.start()
mp.start()
isPlaying = true;
}
else {
// Playing music
// STOP CURRENT PLAYED MUSIC with mp.stop()
mp.stop()
isPlaying = false;
}
}
});
РЕДАКТИРОВАТЬ : класс MediaPlayer имеет метод для этого!
// Inside onCreate(), set a listener on your Button myButton
Mediaplayer mp = MediaPlayer.create(this, R.raw.yourfile);
myButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (!mp.isPlaying()) {
// Not playing music
// START RANDOM MUSIC with mp.start()
mp.start()
}
else {
// Playing music
// STOP CURRENT PLAYED MUSIC with mp.stop()
mp.stop()
}
}
});
Лучший
В вашем случае нет необходимости добавлять какие-либо дополнительные переменные, измените код на.
public class MainActivity extends Activity {
private final int[] SOUNDS = {R.raw.blizzardlowquaility, R.raw.onebite_dansgaming, R.raw.nagur_dansgaming};
private final int LOW = 0;
private final int HIGH = 3;
private MediaPlayer mMediaPlayer;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageButton Testy = findViewById(R.id.imageButton);
Testy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mMediaPlayer == null) {
int random = (new Random()).nextInt(HIGH - LOW) + LOW;
mMediaPlayer = MediaPlayer.create(getApplicationContext(), SOUNDS[random]);
mMediaPlayer.start();
} else {
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
}
});
}
}