Как я могу заставить функцию ждать перед вызовом себя - PullRequest
0 голосов
/ 14 января 2020

Java, Android Studio

У меня есть функция, которая раздает карты, пока все не получат карты. Я хочу воспроизвести звук во время раздачи, и я хочу остановить функцию на 1 или 2 секунды, так что это не будет похоже на то, что я разыграл все карты в 0.1 se c. Я уже пробовал:

Thread.sleep();

Я не хочу замораживать свое приложение, я просто хочу, чтобы рекурсивная функция ожидала, пока она сама не вызовет.

1 Ответ

1 голос
/ 14 января 2020

вы можете воспроизвести звук и остановиться в Handler с помощью Handler (). PostDeleyed (). абстрактный пример будет выглядеть так:

//code to play sound
new Handler().postDelayed(new Runnable(){
     @Override
     public void run(){
          //stop the sound
     }
}, 1000); // 1000 is in millisec which means 1 seconds.

например, этот фрагмент кода будет проигрывать и приостанавливать воспроизведение музыки c через 1 секунду:

final MediaPlayer player = new MediaPlayer();
AssetFileDescriptor afd = 
   this.getResources().openRawResourceFd(R.raw.hangout_ringtone);
player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), 
afd.getLength());
afd.close();
player.setAudioStreamType(AudioManager.STREAM_ALARM);
player.prepare();
player.start();
new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                mMediaPlayer.stop();
            }
        }, 1000);//millisec.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...