メトロノームを作ろうとしています。それは音と振動を持っています。 Service
メトロノームを開始し、音を開始した後は振動が同期していますが、をクリックしてメトロノームをバックグラウンドモードにすると、サウンドとバイブロがビートに機能しません(振動がしばらく停止します)。バックグラウンドモードで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
を使用しようとしました。問題は、 "ネイティブ"振動のために、そのが存在します。だから私が理解しているように、これらの振動はキューを作るので、私のメトロノームの振動はテンポを失う。
どうすればよいですか?メトロノームService
をonStart
とonStop
の方法で再起動しましたが、それは不器用で、menu-button
をクリックしても問題は解決しません。
ご返信ありがとうございます。それは助けになりませんでした。私は私のポストを変更しました。 –