2012-08-29 37 views
1

我一直在嘗試生成一個音調(444赫茲,1000赫茲等),然後在Android中播放它。我的第一次搜索給了我this堆棧溢出問題。雖然這個效果很好,但我寧願使持續時間無限(可循環)。Android:創建一個可循環音調

首先,我只使用整數值作爲音調,因爲這意味着我可以使用1秒鐘,它應該正確循環。但是仍有一些頻率不能循環播放。

第二我認爲我只能計算1個正弦波週期,然後循環。然而我發現that is not a viable approach

我怎麼能,給定任何頻率,產生一個音調,我可以循環?

+0

你怎麼用它來播放音頻? – eyurdakul

+0

將'byte's數組推送到'AudioTrack' – Flynn

+0

Hi @Flynn,16位PCM如何循環? [鏈接](http://stackoverflow.com/questions/17436187/how-to-change-the-duration-of-the-audiotrack-by-an-infinite-loop) – ephramd

回答

0

您可以創建將運行你的語氣每隔一段時間一個線程(例如2秒):

private Runnable startSoundRunnable = new Runnable() { 
    @Override 
    public void run() { 
    while (true) { 
     try { 
     toneGenerator.startTone(ToneGenerator.TONE_CDMA_ALERT_AUTOREDIAL_LITE, 2000); 
     sleep(2000); 
     } catch (Exception ex) {} 
    } 
    } 
}; 

// Run thread 
new Thread(startSoundRunnable).start();