适用于Android的精确节拍器

时间:2015-11-12 02:32:04

标签: java android

question的答案表明,我们可以使用AudioTrack在Android上制作可靠而精确的节拍器。我们也可以使用MediaPlayerSoundPoolThreadTimer,但它们总是会造成延迟。我们如何使用自定义音频文件实现相同的效果,而不是使用AudioTrack生成合成声音?

1 个答案:

答案 0 :(得分:4)

您可以尝试使用System.nanoTime()创建自己的时间计数器,当您需要精确度时,您始终可以使用此计时器。

  

public static long nanoTime()

     

返回最多的当前值   精确可用的系统计时器,以纳秒为单位。这种方法只能   用于衡量经过的时间,与任何其他概念无关   系统或挂钟时间。返回的值表示   因为一些固定但是任意的时间(也许在   未来,所以价值观可能是负面的)。该方法提供纳秒级   精度,但不一定是纳秒精度。没有保证   关于价值变化的频率。连续的差异   超过约292年(263纳秒)的呼叫   由于数字溢出,将无法准确计算经过的时间。

     

例如,要测量一些代码执行所需的时间:

     

long startTime = System.nanoTime(); // ...代码正在   测量... long estimatedTime = System.nanoTime() - startTime;
  返回:系统计时器的当前值,以纳秒为单位。以来:   1.5

来源:

Oracle文档https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html#nanoTime()