Ich versuche, ein Metronom zu machen. Es hat Sound und Vibro. Die Service
starten Metronom, und nach dem Starten des Sounds sind die Vibro synchron, aber wenn ich auf home button
klicke, drehen Metronom in den Hintergrundmodus, Sound und Vibro funktionieren nicht im Takt (Vibration pausiert für eine Weile).Android-Threads funktionieren nicht ordnungsgemäß im Hintergrundmodus
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();
wie man sie synchronisiert?
P.S. Auch meine Vibrationen hören auf, wenn ich den Bildschirm sperre (aber der Ton geht weiter).
EDIT
Ich versuchte CyclicBarrier
und gefunden zu verwenden, das Problem nicht in einem Thread war. Problem existiert wegen "nativer" Vibrationen, die home button
hat. Also, wie ich verstehe, machen diese Vibrationen eine Schlange und deshalb verliert mein Metronom-Vibro das Tempo.
Was kann ich tun? Ich habe das Metronom Service
bei der onStart
und onStop
Methode neu gestartet, aber es ist ungeschickt und es löst das Problem nicht, wenn ich auf menu-button
klicke.
danke für Ihre Antwort. Es hat nicht geholfen. Ich habe meinen Posten gewechselt. –