2017-02-26 64 views
0

我只是好奇。我正在製作一款非常簡單的遊戲,並且我希望在用戶拍手時包含遊戲邏輯(就像做出響亮的聲音一樣)。在libgdx中可能嗎?在libgdx中拍手聲音檢測

+0

我希望它能夠每幀錄製聲音並獲得振幅。 – durisvk

回答

0

在libgdx中有與AudioRecorder接口相同的。您可以通過PC或Android手機上的麥克風訪問PCM數據。

int samples = 44100; 
boolean isMono = true; 
AudioRecorder recorder = Gdx.audio.newAudioRecorder(samples, isMono); 

這將創建一個與AudioRecorder 44.1kHz的採樣率,在單聲道模式。如果記錄器無法創建,則會拋出GdxRuntimeException。

樣品可以理解爲16位帶符號PCM:在JavaScript/WebGL的後端不支持

int seconds = 5; 
final short[] data = new short[samples * seconds]; 
recorder.readSamples(data, 0, data.length); 

錄音。

+0

但如何記錄每一幀的聲音? – durisvk

+0

根據我在libgdx中,你無法獲得每幀的聲音幅度,但是在android中它可能並且可以通過接口使用。 – Aryan

+0

通常,您可以使用單獨的線程讀取麥克風,通過使用postRunnable https://github.com/libgdx/libgdx/wiki/Threading進行音頻分析(RMS在預定義窗口中)並將事件觸發到GLThread。 –