question的答案表明,我们可以使用AudioTrack
在Android上制作可靠而精确的节拍器。我们也可以使用MediaPlayer
,SoundPool
,Thread
和Timer
,但它们总是会造成延迟。我们如何使用自定义音频文件实现相同的效果,而不是使用AudioTrack
生成合成声音?
答案 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()