Я пытаюсь сделать метроном. Он имеет звук и вибро. Начальный метроном Service
, и после запуска звука вибро синхронизировано, но когда я нажимаю home button
, поворот метронома в фоновый режим, звук и вибро не работают в такт (вибрация приостанавливается некоторое время).Темы Android не работают должным образом в фоновом режиме
public int onStartCommand(final Intent intent, int flags, int startId) {
bpm = intent.getIntExtra(Constants.BPM, 60);
vibrator = (Vibrator) getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
Thread sound = new Thread(new Runnable() {
@Override
public void run() {
metronome.setBeat(Constants.BEATS);
metronome.setNoteValue(Constants.NOTE_VALUE);
metronome.setBpm(bpm);
metronome.setBeatSound(Constants.BEAT_SOUND);
metronome.setSound(Constants.SOUND);
try {
metronome.play();
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
});
Thread vibro = new Thread(new Runnable() {
@Override
public void run() {
long pattern[] = new long[3];
pattern[0] = 0;
pattern[1] = 50;
pattern[2] = 950;
vibrator.vibrate(pattern, 0);
}
});
sound.start();
vibro.start();
Как их синхронизировать?
P.S. Также мои вибрации останавливаются, если я блокирую экран (но звук продолжается).
EDIT
Я пытался использовать CyclicBarrier
и обнаружили, что проблема была не в теме. Проблема существует из-за «родных» вибраций, что у home button
есть. Итак, насколько я понимаю, эти вибрации создают очередь, и поэтому мой метроном вибро теряет темп.
Что я могу сделать? Я сделал перезапуск метронома Service
по методу onStart
и onStop
, но он неуклюжий и не решает проблему, когда я нажимаю menu-button
.
благодарит за ваш ответ. Это не помогло. Я изменил свой пост. –