Запуск MediaPlayer с таймера - PullRequest
0 голосов
/ 07 июня 2019

Я разрабатываю приложение Battery Alarm.и я хочу воспроизводить музыку, используя медиаплеер каждую минуту, используя Таймер , а также хочу повторить музыку 2 раза в течение одной минуты.

Это прекрасно работаетв первый раз, когда Timer вызывает метод * 8playAlarm () **, но через одну минуту, когда Timer снова вызывает метод playAlarm () , он воспроизводит только музыкуодин раз.


     @Override
        public void onCreate() {
            super.onCreate();

            mStartTime=preferencesAlert.getInt("alert",0);  // 0 == immediately
            mInterval=preferencesInterval.getInt("interval",1);  // 1==1 minute

            mSongUri=preferencesSongUri.getString("uri","android.resource://"+getPackageName()+"/raw/celesta");

            timer = new Timer();
            TimerTask hourlyTask = new TimerTask() {
                @Override
                public void run () {
                    playAlarm();
                }
            };
            // schedule the task to run starting now and then every time interval...
            timer.schedule (hourlyTask,60000*mStartTime, 60000*mInterval);

    }

метод playAlarm ()


     private void playAlarm(){

            playerAlarm=MediaPlayer.create(getApplicationContext(),Uri.parse(mSongUri));
            playerAlarm.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mp) {

                    repeatMax=preferencesRepeat.getInt("repeat",2);

                    if(repeatMin<=repeatMax){
                        repeatMin++;

                        if(playerAlarm!=null && !playerAlarm.isPlaying()) {
                            mp.seekTo(0);
                            mp.start();
                        }
                    }else {
                        mp.reset();
                        mp.release();
                    }
                }
            });
            playerAlarm.start();
        }

Я хочу воспроизводить музыку два раза в каждую минуту, но она воспроизводится только один раз

Ответы [ 2 ]

1 голос
/ 07 июня 2019

первый раз работает, потому что ваш repeatMin все еще имеет свое первое значение, но после того, как вы не установили его снова в 0 в своем коде

repeatMin = first int value; // you have to reinitialize your repeatMin somewhere when the sound 
                 has been played for the second time 
0 голосов
/ 07 июня 2019

Я полагаю, потому что вы выполняете метод в onCreate, который вызывает только один раз.Может быть, вы можете сделать это в какой-нибудь фоновой службе и звонить ей каждую минуту

...