Android デバイス用のミュージック シーケンサー アプリを作成しようとしていますが、堅実なタイミング機能を実現する方法についてアドバイスをいただければ幸いです。
Runnable を Handler.postDelayed に渡し、x ミリ秒の遅延時間を指定した場合、その Runnable は正確に x ミリ秒で実行されることが保証されますか?
Handler で安定した正確なタイミングを達成できない場合、他にどのような選択肢がありますか?
前もって感謝します
多くのグーグル検索の後、私はここで答えを見つけることができました:
http://masterex.github.com/archive/2012/05/28/android-audio-synthesis.html
ハンドラー、Thread.sleep()、およびタイマーは、どうやら進むべき道ではないようです。
DrA さん、ご回答ありがとうございます。感謝の気持ちでいっぱいです。
「ハードリアルタイム」プログラミングは不可能だと思います。オプションは、何かが起こったことを知らせるイベントを探すことのようです。これは、独自のフラグを作成し、他のスレッドでそのフラグの値をポーリングすることで実行できます。
CountDownTimerを使用して、経過する必要のある特定の時間の長さをミリ単位で指定できます。
システムクロックを使用して、経過時間をポーリングすることにより、独自のタイマーを作成できます。
また、FileObserverと呼ばれる便利なクラスがあり、特定のファイルを監視したり、OpenedやClosedなどのイベントを聞いたりすることができます。これらの信号を使用すると、次の操作に進む時間であることがわかります。
考えられる最悪のバグは、特定のハードウェアで発生するがほとんどの場合には発生しないタイミングの問題があることです。私がそれらすべてを所有しているわけではなく、タイミングの問題を見つけるのが難しい場合の問題。私は、他の人がこの問題に対してより良い、またはより多くの答えを持っていることを望んでいます。