我正在创建一个允许通过高频声波进行非常低带宽通信的应用程序。我已经到了可以创建频率并进行傅立叶变换的地步(借助 Moonblink 的 Audalyzer 开源代码)。
但这是我的问题:我无法让代码以正确的时间运行。假设我希望每 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();