我想测量声音的持续时间,我使用getDataBlock()收集并处理(FFT ...)数组中的声音
当声音大于平均值时,我会检测到声音,然后使用System.currentTimeMillis()来获取时间。并且我显示了重置为正常时的持续时间。 问题在于显示的时间是完全错误的,而且永远都不相同。 它在AsyncTask类中。
protected Void doInBackground(Void... params) {
while(getBlockingQueue()) {
// Get targetFq & averageNoise
int targetFq = getTargetFqMaxSignal();
double averageNoise = getAverageNoise();
int averageNoiseMultiplier = 6;
if (dataBlockingQueue.get(targetFq) > averageNoise * averageNoiseMultiplier) {
startBeep = System.currentTimeMillis();
alreadyBeep = true;
} else {
if (alreadyBeep) {
System.out.println("BEEP ms : " + (System.currentTimeMillis() - startBeep));
alreadyBeep = false;
startBeep = 0;
}
}
}
return null;
}