高周波音波を介して非常に低帯域幅の通信を可能にするアプリの作成に取り組んでいます。周波数を作成し、フーリエ変換を実行できるようになりました (Audalyzer 用のMoonblinkのオープン ソース コードの助けを借りて)。
しかし、ここに私の問題があります。正しいタイミングでコードを実行することができません。コードを 10 ミリ秒ごとに実行したいとします。これを行うにはどうすればよいでしょうか。
TimerTask を使用してみましたが、コードが実際に実行されるまでに最大 100 ミリ秒の大きな遅延があります。
また、現在の時刻にpingを実行し、その時間が経過したときにのみ実行するだけで、この方法を試しました。しかし、まだ遅延の問題があります。何かアイデアはありますか?
Thread analysis = new Thread(new Runnable()
{
@Override
public void run()
{
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_DISPLAY);
long executeTime = System.currentTimeMillis();
manualAnalyzer.measureStart();
while (FFTransforming)
{
if(System.currentTimeMillis() >= executeTime)
{
//Reset the timer to execute again in 10ms
executeTime+=10;
//Perform Fourier Transform
manualAnalyzer.doUpdate(0);
//TODO: Analyze the results of the transform here...
}
}
manualAnalyzer.measureStop();
}
});
analysis.start();