我知道Visualizer在使用android Media Player播放音頻時顯示一些波。如何在Android中錄製音頻時使用Visualizer
但我想在錄製音頻的同時錄製視頻展示,同時錄製我想顯示基於用戶語音節拍改變的線性波形。
是否有可能在android中完成。
我知道Visualizer在使用android Media Player播放音頻時顯示一些波。如何在Android中錄製音頻時使用Visualizer
但我想在錄製音頻的同時錄製視頻展示,同時錄製我想顯示基於用戶語音節拍改變的線性波形。
是否有可能在android中完成。
通過調用每x毫秒的MediaRecorder.getMaxAmplitude(),你要去有(從official documentation):
因爲到 最後一次調用這個方法被採樣的最大絕對幅度。
然後,您可以實時處理此值以繪製圖形或更改某些視圖屬性。
並不完美,但我希望它有助於=)
編輯:只是讓你知道,檢索到的值將是相同的在所有的Android設備:0和32767之間(我有超過10,000用戶報告當他們吹麥克風時給我這個數值)。
您可能需要使用AudioRecorder類代替MediaRecorder。
檢查AudioRecorder#read(...)將音頻數據放到byte []而不是直接放到文件中的方法。
要顯示圖形的變化,您必須分析數據(以PCM 8或16位編碼 - link)並實時更新圖形。
兩個重要的事情:
由於您使用實時圖表來繪製這些點 使用SurfaceView。
轉換記錄字節數值參考: Android: Listener to record sound if any sound occurs在那裏你會看到變量「TEMP」握着你的聲音的數值。
Plot points 這些數字值表示您的Y值,並以X(時間間隔)值(0,1,2 ..)爲增量繪製曲線圖。使用SurfaceView 例如..,
//canvas.drawLine(previous X value,previous Y value,X,Y, paint); canvas.drawPoint(X,Y,paint); SurfaceHolder.unlockCanvasAndPost(canvas);
你不必繪製所有值,效率可以用你的條件和一定的時間間隔情節過濾那些值。
希望這有助於:)
將水平儀是足夠的,還是你需要每個頻率級別? – elgui
我需要atleast一些節拍值來繪製我自己使用圖形api的圖形 – koti
隨着時間間隔的增加繪製記錄的字節..請參閱下面的答案 – everlasto