2.3之後,google 為mediaplayer 類新增了eq支援,如果你需要使用這個eq功能,有兩點需要注意,分別為如下:
為了使應用程式能夠支援波段變化,我們需要重新定義乙個view物件,在ondraw 方法畫頻譜,**如下:
class
visualizerview extends view
public
visualizerview(context context)
public
void
updatevisualizer(
byte
mbyte)
@override
protected
void
ondraw(canvas canvas)
if(mpoints
==null
||mpoints.length
<
mbytes.length *4
) mrect.
set(0,
0, getwidth(), getheight());
for(
inti =0
; i
<
mbytes.length -1
; i++
) canvas.drawlines(mpoints, mpaint);}}
另外,為了使用eq和頻譜視覺化,我們必須了解以下兩個類:
具體使用**和注釋見下面:/**
* 通過mmediaplayer返回的audiosessionid建立乙個優先順序為0均衡器物件 並且通過頻譜生成相應的ui和對應的事件
*/private
void
setupequalizefxandui()
@override
public
void
onstarttrackingtouch(seekbar seekbar)
@override
public
void
onprogresschanged(seekbar seekbar,
intprogress,
boolean fromuser)
});row.addview(mindbtextview);
row.addview(seekbar);
row.addview(maxdbtextview);
mlayout.addview(row);}}
/*** 生成乙個visualizerview物件,使音訊頻譜的波段能夠反映到 visualizerview上
*/private
void
setupvisualizerfxandui()
@override
public
void
onfftdatacapture(visualizer visualizer,
byte
fft,
intsamplingrate)
}, visualizer.getmaxcapturerate() /2
, true
, false);}
進入程式後,在程式入口載入如下**:
mstatustextview
=new
textview(
this
);mlayout
=new
linearlayout(
this
);mlayout.setorientation(linearlayout.vertical);
mlayout.addview(mstatustextview);
setcontentview(mlayout);
mmediaplayer
=mediaplayer.create(
this
, r.raw.eason);
setupvisualizerfxandui();
setupequalizefxandui();
mvisualizer.setenabled(
true
);mmediaplayer.setoncompletionlistener(
newoncompletionlistener()
});mmediaplayer.start();
mstatustextview.settext(""
); 完整執行效果:
試試改變一下拖動條,聽一下音訊有什麼變化。
音訊頻譜操作
注:原始碼內沒有包含音訊檔案,測試的話自行新增乙個***檔案即可。
Android自帶音訊均衡器MusicFx分析
種種原因,我要簡單分析乙個android 中built in 的音訊均衡器 musicfx 重點是它的預設值的來歷。網上很少有文章講了這個的除了這篇 com.android.musicfx設定音效流程 從 到audioflinger 注 android 系統版本為 4.2.2 r1。到audiofl...
音訊EQ 均衡器
我們通常所說的人聲,歌聲以及樂聲都是乙個復合音,也就是由聲音的基音和一系列的泛音所構成的。這些泛音都是基音頻率的倍數,物理學中叫分音,電聲學中叫諧波,中則把它們稱做泛音。可以說,泛音對音色的特性有著非常重要的影響。它們的數量以及幅度的不同構成音色的頻率特性曲線。這條曲線就體現了音色的表現力。一般來說...
負載均衡器
負載均衡器f5 負載均衡是高可用網路基礎架構的關鍵元件,通常用於將工作負載分布到多個伺服器來提高 應用 資料庫或其他服務的效能和可靠性。負載均衡器可以處理什麼樣的請求?負載均衡器的管理員能主要為下面四種主要型別的請求設定 規則 負載均衡器如何選擇要 的後端伺服器?負載均衡器一般根據兩個因素來決定要將...