2015-11-12 27 views
8

這個question的答案表明,我們可以使用AudioTrack在Android上製作可靠和精確的節拍器。我們也可以使用MediaPlayer,SoundPool,ThreadTimer,但它們總是會造成延遲。我們如何使用自定義音頻文件實現相同效果,而不是使用AudioTrack生成合成聲音?精確的節拍器爲Android

回答

4

您可以嘗試使用System.nanoTime()創建自己的時間計數器,當您需要精度時,您始終可以使用它。

public static long nanoTime()

返回最 精確可用的系統計時器的當前值,在納秒。此方法只能使用 來測量已用時間,並且與系統或掛鐘時間的任何其他概念 無關。返回的值代表 納秒,因爲一些固定的但是任意的時間(可能在未來的 ,所以值可能是負值)。此方法提供了精確度爲納秒 ,但不一定是納秒精度。 沒有關於價值變化頻率的保證。在連續的 呼叫中,差異大於292年(263納秒) 由於數值溢出而無法準確計算經過時間。

例如,爲了測量一些代碼需要多長時間來執行:

長STARTTIME = System.nanoTime(); // ...代碼是 measured ... long estimatedTime = System.nanoTime() - startTime;
返回:系統定時器的當前值,以納秒爲單位。因爲: 1.5

來源:

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