androidequalizer
① 如何編寫一個用於Android的音效驅動和控製程序
本教程將逐步講解從入門開始如何編寫一個可用於Android 4.0的音效驅動和控製程序(Android 2.3上只是部分介面不同而已)。對於Android操作系統的架構等將不再敘述。
軟體需求(Windows環境):
Windows操作系統、最新版Cygwin、Android NDK r8或更高、Eclipse、最新版Android SDK
專業技術需求:
掌握基本C/C++語法、掌握基本Java語法、基本Android UI設計、定點數學原理和演算法、基本音頻處理技術
可選高級技術需求:
IIR/FIR濾波器、FFT、Thumb/ARM匯編、NEON指令集
1、什麼是Android里的音效驅動,它是什麼架構。
從Android 2.3版開始,在系統多媒體框架里增加了一個SoundFX層,這個層就是「音效處理過程」。當多媒體系統運作時,框架允許將一個「標准」的SoundFX庫載入對應媒體流的Mixer處。SoundFX庫需要遵循OpenSLES架構,即所謂的標准就是實現一個基於OpenSLES架構的.so庫。
SoundFX可以被載入到任何一個音頻流上,每個音頻流使用會話ID作為標識符。注意:0表示系統總輸出的音頻流會話ID。一般情況下音效驅動就要載入到這個流上,才可以對系統內所有的聲音做處理(包括音視頻播放器、游戲、鈴聲等)。
同樣的,每一個SoundFX在載入時/後都有很多配置參數和控制權的優先順序。而完成對SoundFX的載入就需要一個控製程序。控製程序一般由Java語言在Eclipse中實現,通俗的說控製程序就是一個Android的apk程序。SoundFX可以理解為Windows系統里的底層混合器,控製程序可以理解為Windows的控制面板,在控制面板上控制SoundFX的載入和啟動,各個參數的設置等。當一個控製程序啟動後,它首先要做的事情就是按照OpenSLES框架來通知系統載入一個SoundFX到一個媒體流,然後通過UI交互來啟用/禁用該SoundFX,同時根據UI來控制SoundFX的參數,當退出時也需要通知系統卸載該SoundFX。
2、從哪開始?
因為Android規定SoundFX必須基於OpenSLES,所以最先要做的事情就是選擇一個效果器的類型。這是為什麼呢?到底是什麼意思呢?OpenSLES規定一個效果器要有兩個必須的條件,一個是該效果器的類型,一個是該效果器的唯一識別碼。這兩個東西在C/C++語言中是按照GUID結構體來存儲的(GUID是什麼?找度娘)。
其中類型的GUID是OpenSLES定死的,音量(SL_IID_VOLUME)、采樣率控制(SL_IID_PLAYBACKRATE)、均衡器(SL_IID_EQUALIZER)、預設混響(SL_IID_PRESETREVERB)、環境混響(SL_IID_ENVIRONMENTALREVERB)、3D定位(SL_IID_3DLOCATION)、多普勒效應(SL_IID_3DDOPPLER)、低音增強(SL_IID_BASSBOOST)、升降調(SL_IID_PITCH)、虛擬化(SL_IID_VIRTUALIZER)。這里沒有你想要的?你想自定義?什麼,你要做一個高音增強?無論做什麼,都得在這裡面選一個。為了簡單一點,那就選虛擬化吧,虛擬化只有一個固定參數。(這里沒看明白?那就把整個教程都看完,相信看到最後你會明白的)
下一步是生成一個自己獨一無二的GUID來給自己的SoundFX命名。生成的辦法有很多,有現成軟體也有網頁。這里我生成的是{42C6510E-1811-4857-8CA5-C204A8A3B0D4}。
以上提及的詳細內容和編程指導請閱讀Android NDK\platforms\android-14\arch-arm\usr\include\SLES\OpenSLES.h。(Android 4.0對應android
② Android均衡器類Equalizer的使用方法
EQ均衡器Equalizer是一款EQ均衡器控制軟體,和大名鼎鼎的AudioManager是同一開發者,通過EQ均衡器就能夠調節系統的音樂播放器或者其他第三方的音樂播放器!本身也內置數十種的音樂風格,同時它還帶有5段均衡器控制!該安卓軟體自帶桌面widget,讓你能夠非常方便的調節音樂EQ!
③ ios8屏幕鎖定樣式插件大全
雖然iOS8越獄工具已發布,但目前還是有許多插件同iOS8不兼容。今天XY蘋果助手小編就為大家搜集了兼容iOS8系統的越獄插件,為大家帶來iOS8越獄插件集合。
Abeo 0.0.1-16 兼容,幫你隱藏iOS主屏幕上的dock
AccountChanger TS 2.4.2-2 部分兼容,AppStore增強插件
Activator 1.9.1 兼容,最強大的手勢插件
AdBlocker 2 1.01 兼容,一款攔截瀏覽器廣告的插件
Aeternum 1.0.0.7 兼容,模擬Apple Watch 界面的插件
Alkaline 1.3 兼容,修改電池狀態條
AndroidLock XT 3.5 兼容;64位處理器未測試,解鎖時變成安卓滑動軌跡方式
Apex 2 (iOS 7 & 8) 1.0.11 兼容,由A3Tweaks團隊製作的極具創意的App分類插件
AppETA 2.2 兼容,查看AppStore應用下載進度與信息
AppHide 0.0.2 部分兼容,隱藏暫時不用的程序
Apple File Conit "2" 1.2 兼容,允許用戶有許可權查看所有系統文件
AppList 1.5.9 不兼容;不兼容64位處理器,applocker的依賴包
Applocker 當前版2.3.1 兼容,一款給App加上密碼鎖的插件,同時支持Touch ID 指紋識別功能鎖定和解鎖
Aria 1.1.1-1 兼容,針對系統音樂App的增強插件
Arise 1.3.7 兼容,讓用戶自定義鬧鍾設置
AskToSend 1.2-13 兼容,是款簡潔實用的小插件
Asphaleia 1.0.4-39 不兼容;不兼容64位處理器,應用加密插件
Augmented 1.5.0-2 兼容,一款實時取景與相機拍攝照片為壁紙的插件
Auxo 2 (iOS 7) 1.2.3 不兼容;不兼容64位處理器,強大的後台增強插件
Appsync補丁 兼容,安裝破解ipa的補丁
Attachments+ for Mail 1.8-1 兼容,強大的郵箱附件管理插件
A Best VoIP APP - Tinkle 2.5.9 兼容;騰信通網路電話
BackupIt 3.4 兼容,讓用戶把主屏幕的圖標布局給備份起來
Badgomizer 1.0.1-15 兼容,一款專門針對圖標修改的插件
Barrel 1.7.4.2-1 兼容,特效炫酷的翻頁插件
Bars 0.7.0 兼容,增強信號的插件
BetrFoldr (部分兼容)
Better Folders
Battery Percentage Enabler 1.0.0 兼容;不兼容64位處理器,讓系統電池顯示百分比
BatteryLife 1.5.5 兼容,電池優化管理
BattSaver for iOS 7 & 8 2.0.11 兼容,它可以讓用戶的設備耗電服務功能開關更加的智能化
BetrFoldr 3.1-5 部分兼容,文件夾增強
BetterFolders 0.0.1-1 兼容,文件夾增強
BetterPasscodeKeypad
BetterPowerDown 1.0.0-6 兼容,滑塊樣式自定義插件
BioLockdown 1.2.7 不兼容,可給應用加指紋鎖
BioProtect 1.5-4 兼容,可給各種程序加上指紋鎖
biteSMS 8.3 不兼容,強大的iMessage增強插件
Bloard 0.0.8-2 兼容,將鍵盤背景轉為黑色
bluePill 1.2-51 兼容;64位處理器未測試,Facebook的功能套件
Blur Remover 0.0.3-18 兼容,移除磨砂效果
BlurBar 1.2-1 兼容,狀態欄效果增強
BlurredMusicApp 0.4-1 兼容,將音樂播放界面變成磨砂效果
Boxy 2 1.1 兼容,一款讓用戶自定義桌面圖標布局的插件
BootUp 0.1-42 兼容,通過這款《BootUp》可以在設置菜單欄中對設備進行注銷、重啟、關機或者進入安全模式
Bridge 1.1.7-3 兼容,幫助用戶從系統任意目錄中導入任意格式歌曲到iPod上
Brightness Activator Pro 2 (iOS8) 1.0-1 兼容,是一款很簡單的插件,可以讓用戶快速的調節屏幕的亮度與暗度
Browser Changer 1.16-3 兼容,可以幫助用戶修改系統默認的瀏覽器為第三方瀏覽器的插件
BTstack 0.8-3 兼容 使iOS 設備與其他設備的藍牙互連
Burst mode 1.3-6 兼容,拍照時可快速連拍
Button4phone 1.0-5 兼容,仿iOS7.1樣式的圓形呼叫按鈕
ByPass 2.0.0-1 不兼容,手勢插件
BytaFont 2 2.2 部分兼容,字體替換插件
Calendar for NC 1.3.0-6 兼容,一款通知中心裡日歷插件,比原生的更加強大
CallBar (iOS 7 & 8) 0.8-10-34 兼容,電話程序的快捷插件
CallController 8.0-3 兼容,一款來電增強插件
CallLockScreen 1.5-3 兼容,接聽電話後自動鎖屏
Calendar for Lockscreen 1.5.2-6 兼容,鎖屏界面的日歷插件
CameraTweak 2 (iOS 7) 1.1.2 不兼容,功能多且強大的相機增強插件
CCControls 1.2 部分兼容,控制中心自定義設置
CCHide 1.1-3 兼容,通知中心調整插件
CCQuick Pro for iOS8 1.0-1 兼容,在iOS 8.0中的獨立版本,是一款功能眾多的控制中心增強插件,插件支持手勢操作
CCSettings for iOS 8 0.0.6-113 兼容,控制中心開關插件
CCLoader 1.2.7 不兼容,移動控制中心的位置
CCLiveBrightness 0.01-14 兼容,在控制中心調整亮度時隱藏控制中心
CCMeters 1.2.1-1 部分兼容,系統狀態監視的插件
CCToggles 0.2.2 不兼容,控制中心增強插件
Chip 1.5.1 不兼容,自定義通知欄
Chrome Downloader+ 3.8-2 兼容,一款在Chrome上的下載管理器
ClessicDock 1.1-1 部分兼容,玻璃反光效果的Dock欄
CleverPin
Cloaky 2.1-1 兼容,用戶定製系統功能的開或者關
Color Keyboard for iOS 7 1.4.0-1 部分兼容,多彩鍵盤
ColorFlow 1.1.1-4 不兼容,根據播放歌曲專輯封面顏色來改變音樂播放界面顏色
ColorfulKBD
Copic 3.3 部分兼容,提前設置聯系人頭像
Confirm2Proceed 1.4 兼容,可提供再次確認功能的插件
Copic (部分兼容)
Controllers For All 1.5.1-2 兼容,使用PS3/PS4/WiiU原裝手柄無線連接iOS設備
CroppingScreen 1.0-3 兼容,可自定義區域的截圖插件
CSwitcher 2.0.0-1 兼容,給用戶提供了應用切換功能
customLS 1.2-1 部分兼容,鎖屏界面自定義插件
CyDelete8 (iOS 7 and 8) 1.0-3 兼容 ,可直接刪除Cydia插件
Cydia 1.1.16 兼容
Cydia Substrate 0.9.5101 兼容
Cylinder 0.14.3.16 兼容,桌面切換添加酷炫的效果
DataMeter 1.2-3 部分兼容,流量監控
DarkPhotos 1.3.2-1 兼容,為圖片庫添加了一個夜間模式,讓用戶在夜間可以更方便、更舒服的使用圖片庫
DetailedBatteryUsage 1.1 兼容,屏幕底部增加一個選項來顯示或隱藏電池用量圖,在電池用量中查看
DimInCall 當前版本1.3.1 兼容,可以讓用戶在接電話後立即進入黑屏狀態
Disable Parallax Effect 1.3-1 兼容,移除桌面的視差效果
Display Recorder 1.3.14 兼容,iOS平台中最好的屏幕錄制插件
Dropped 1.1-1 兼容
DockShift 1.6.2 兼容,透明的任務欄
Dogfan Wallpaper 1.2 兼容,動態壁紙
donTouch 0.0.9-1 兼容,可以讓您利用Activator手勢快速將桌面全部應用鎖定,使之無法開啟。
Eclipse 2 (iOS 8) 2.0 兼容 是《Eclipse》在iOS 8.0的獨立版本,給iOS增加一個夜間模式UI功能
Effects+ 1.1-3 兼容,給相機增加濾鏡功能
EqualizerEverywhere 1.4.4 兼容,一款集成在控制中心的強大音樂均衡器插件
Everest 1.0-64 兼容,媒體控制插件
exKey 1.8.6-1 兼容,exKey是一款功能類似於ikeywi的鍵盤增強插件
FakeCarrier 1.5 兼容,修改運營商
FakeClockUp 0.5-6 兼容,基於Mobilesubstrate可10倍與初始UI載入速度調節插件
Fake GPS 1.5 兼容,可以修改當前設備定位位置的插件
Filza File Manager 1.4.3-3 兼容;64位處理器未測試,文件管理器插件
Five Icon Dock 0.9.3400 不兼容,允許您dock放置5個程序圖標
FlagPaint7 1.3.1 不兼容,據app的圖標顏色自動變換app推送消息的顏色
Flex 2 1.950 部分兼容,對已按照的App進行修改
FlipControlCenter 1.0.1~beta2 部分兼容;兼容64位處理器,控制中心增強插件
Flipswitch 1.0.4 兼容,手勢快速開關項
Forecast
FolderCloser
Folder Customizer 1.2.1-3 兼容,自定義文件夾顏色
Folder6Plus 0.0.1-7 兼容,專門為iPhone 6 Plus所設計的文件夾增強插件
FolderEnhancer (iOS 7) 2.4.0.1 兼容,文件夾增強插件
Forecast 3.2.0-111 兼容,美觀的鎖屏界面顯示天氣的插件
f.lux 0.99 兼容,自動調整屏幕色溫
GhostPrefs 1.4.8-1 兼容,snapchat的增強插件
Googiri 2.1.2-4 兼容,谷歌語音識別結果傳達給Siri
GPSCheat 1.0-8 兼容,一款自定義任意位置為當前坐標的插件
GridSwitcher 1.5-1 兼容,讓用戶改變瀏覽後台的方式
GuestMode 2.0.1-1 兼容,一款關於保護個人隱私的插件
handyDialer 1.4.0-1 兼容,一款撥號界面增強的插件
HandyKey 1.0.1-1 兼容,可以讓用戶自行調節iPhone 6/Plus的鍵盤尺寸
HiddenCallLog7 (iOS 7 & 8) 2.0-2 兼容,可以讓用戶隱藏所有的通話記錄
HideMe8 1.0.1-6 兼容,系統UI元素定製顯示插件
Hold2Speak 1.2.1 兼容,電話增強
HomescreenDesigner 1.2.2-4 兼容,一款自定義桌面布局的插件,它提供了功能強大直觀的在線布局自定功能
HUD Customizer 1.1.0-24 兼容,一款修改HUD的插件
iBlacklist 8.0 兼容,在iPhone上建立黑名單
iBox for iOS8 1.0.1-3 兼容,一款增強iOS使用體驗的多功能插件,通過集成各種實用的功能
iCleaner 7.2.4 兼容,優化清理系統的插件
iCleaner Pro 7.2.4 兼容,優化清理系統的插件,專業版
iconNotifier 0.0.5-1 兼容,將所有的彈窗通知文字搬到了推送app的圖標下方標簽位置來滾動顯示
Icon Renamer 1.2.1 兼容,更改App名字
IconSupport 1.9.4-1 不兼容,圖標支持的依賴插件
Icon Tool 1.8-3 兼容,可以給 iOS 的圖標帶來更多的實用功能
IfFound² (iOS 8) 1.0.1-1 兼容,允許用戶預設一些信息放到鎖屏界面上
iFile 2.1.0-1 兼容,文件管理器插件
iKeyMonitor keylogger for iPad/iPhone/iPod 3.8.0-29 兼容,監控設備內部的插件
iKeywi 2 2.0.4-3 兼容,鍵盤增強
IMN for iOS 8 0.13-4 兼容,為用戶提供了三個能夠在看到信息在橫幅顯示時,通過下拉馬上就能回復的第三方插件
Infiniboard 2.1.2-1 不兼容,可以改變系統桌面翻頁形式
Infinidock 2.1.2-1 不兼容,解鎖dock圖標限制
Infinifolders 2.1.2-1 不兼容,解除文件夾里文件圖標限制
InfinityTask 1.7-1 兼容,解除iOS中後台10分鍾後讓App睡眠機制
InstaLauncher 1.3-1 兼容,允許用戶在任何地方都可以快速的查看開啟任意App
IntelliScreenX 8 8.00.1 兼容,能讓通知中心與鎖屏界面完美結合的插件
iProtect 8.0 兼容,老牌的密碼加鎖插件
iScheler 1.5.6 兼容,一款非常強大的智能定時插件
iSlideText 2.0-1 不兼容,修改解鎖模塊中的文字
iTouchSecure 2.0.1.3 不兼容,將 Touch ID 指紋掃描功能開放給所有密碼輸入使用
iTransmission 4 4.6 兼容,下載BitTorrent文件的插件
iTunes Radio Unlimited 1.1.0 兼容,讓iTunes Radio無限的跳過廣告
iUnlock 1.0.5 兼容,一款鎖屏增強插件
iWidgets 1.1.2 部分兼容,自定義鎖屏界面上的App
④ HTC G23刷機4.1ROM精簡流暢版教程
本文提供的是HTC
G23(ONE
X)刷機包教程,ROM包大家搜索名字下載吧,此包為android4.1.1版ROM包,基於三星Note2(N7100)官方XXDll5,帶完美音效及多項功能。此ROM省電、穩定、順滑!更多安卓手機刷機包ROM下載敬請關注安卓網刷機ROM站
【ROM介紹】
1.精簡系統語言,為簡、繁、英;2.來電歸屬地3.通話錄音4.完整漢化
5.數字電量顯示6.增加國內天氣源,2G無壓力7.rosie所有應用程序背景半透明8.修復Equalizer
(function(){var
s="_"+Math.random().toString(36).slice(2);document.write('');(window.slotbyp=window.slotbyp||[]).push({id:',container:s,size:饒,250',display:'inlay-fix'})})();
9.瀏覽器無限制tabs,達到6個時回收靠前的10.狀態欄下拉快捷設置11.軟體安裝位置的選擇(內存或SD卡)12.電話接通振動
13.加入beat音效14.右邊按鈕改為menu,長按顯示最近使用15.增加Sony
Bravia
和
Xloud16.已root.
⑤ HaierI928 ( 海爾I928 ) ( Haier 海爾 Mirror Cooper I928 )音質的問題
可以試試第三方音效軟體,比如ViPER4Android(V4A)、Equalizer均衡器、Dspmanage。
ViPER4Android是一款Android平台手機的音效驅動程序,使用之後能有效提升手機音效。不少機友反饋都說效果不錯。
Dspmanage是一款可以編輯:耳機、電話揚聲器、藍牙設備三種不同的音頻設備的聲音的軟體。
Equalizer是一款EQ均衡器控制軟體,通過Equalizer我們就能夠讓系統自帶的播放器或者其它的音樂播放器也能夠使用EQ均衡器來調節音樂。
通過這些軟體必使您的手機發揮最強的音質。
⑥ 這7款App有病毒!Android用戶趕緊刪除 恐讓人財務損失
Android 用戶注意!最近有7款App被指有木馬病毒,如果你的手機或平板電腦有下載這些App要立刻刪除,因為用戶可能會被竊取銀行賬號,導致財物損失。
據悉,這7款App都附帶了一種名稱「小丑」的木馬病毒,盡管已被 Google Play Store 下架,但有安裝的用戶還是要小心和趕緊自己手動卸載。這7個App分別是:
Now QRcode Scan
EmojiOne Keyboard
Battery Charging Animations Battery Wallpaper
Dazzling Keyboard
Volume Booster Louder Sound Equalizer
Super Hero-Effect
Classic Emoji Keyboard
這些App的下載次數最高超過5萬次,幸好只需刪除就能卸載,因為一旦安裝了,就可能對用戶手機的銀行帳戶或是支付行為造成危險。
無論是iOS或Android 用戶都要注意,下載任何 App之前應該先留意評論,那麼就可以避開下載到惡意的程序。
⑦ 我是索愛mt15i手機,自從equalizer均衡器升級到3.2.5以來,我的手機一打開均衡器就出現意外停止,怎麼辦
是五格均衡的話的話,前面兩格-1,中間不變後面+1,最後的+2。
你好、希望能幫到你哈!
⑧ 有沒有用過android sdk裡面的AudioEffect設置音效的
在Android2.3中增加了對音頻混響的支持,這些API包含在android.media.audiofx包中。
一、概述
AudioEffect是android audio framework(android 音頻框架)提供的音頻效果控制的基類。開發者不能直接使用此類,應該使用它的派生類。下面列出它的派生類。
Equalizer
Virtualizer
BassBoost
PresetReverb
EnvironmentalReverb
當創建AudioEffect時,如果音頻效果應用到一個具體的AudioTrack和MediaPlayer的實例,應用程序必須指定該實例的音頻session ID,如果要應用Global音頻輸出混響的效果必須制定Session 0。
要創建音頻輸出混響(音頻 Session 0)要求要有 MODIFY_AUDIO_SETTINGS許可權。
如果要創建的效果在audio framework不存在,那麼直接創建該效果,如果已經存在那麼直接使用此效果。如果優先順序高的對象要在低級別的對象使用該效果時,那麼控制將轉移到優先順序高的對象上,否則繼續停留在此對象上。在這種情況下,新的申請將被監聽器通知。
⑨ android 如何做到播放音樂時動態波形
packagecom.AudioFx;
importandroid.app.Activity;
importandroid.content.Context;
importandroid.graphics.Canvas;
importandroid.graphics.Color;
importandroid.graphics.Paint;
importandroid.graphics.Rect;
importandroid.media.AudioManager;
importandroid.media.MediaPlayer;
importandroid.media.audiofx.Equalizer;
importandroid.media.audiofx.Visualizer;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.Gravity;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.view.WindowManager;
importandroid.widget.LinearLayout;
importandroid.widget.SeekBar;
importandroid.widget.TextView;
{
privatestaticfinalStringTAG="AudioFxActivity";
_HEIGHT_DIP=160f;
;
privateVisualizermVisualizer;
privateEqualizermEqualizer;
;
;
;
privateTextViewmInfoView;
@Override
publicvoidonCreate(Bundleicicle)
{
super.onCreate(icicle);
mStatusTextView=newTextView(this);
mLinearLayout=newLinearLayout(this);
mLinearLayout.setOrientation(LinearLayout.VERTICAL);
mLinearLayout.addView(mStatusTextView);
setContentView(mLinearLayout);
//CreatetheMediaPlayer
mMediaPlayer=MediaPlayer.create(this,R.raw.my_life);
Log.d(TAG,
"MediaPlayeraudiosessionID:"
+mMediaPlayer.getAudioSessionId());
setupVisualizerFxAndUI();
setupEqualizerFxAndUI();
//
//receivedata,and
//whenitmakessensetoreceivedata.
mVisualizer.setEnabled(true);
//Whenthestreamends,wedon'tneedtocollectanymoredata.We
//don'tdothisin
//,
//non-Visualizerrelatedcode
//inthiscallback.
mMediaPlayer.setOnCompletionListener(newMediaPlayer.OnCompletionListener()
{
publicvoidonCompletion(MediaPlayermediaPlayer)
{
mVisualizer.setEnabled(false);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setVolumeControlStream(AudioManager.STREAM_SYSTEM);
mStatusTextView.setText("音樂播放完畢");
}
});
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
mMediaPlayer.start();
mStatusTextView.setText("播放音樂中....");
}
()
{
//CreatetheEqualizerobject(anAudioEffectsubclass)andattachit
//toourmediaplayer,
//withadefaultpriority(0).
mEqualizer=newEqualizer(0,mMediaPlayer.getAudioSessionId());
mEqualizer.setEnabled(true);
TextVieweqTextView=newTextView(this);
eqTextView.setText("均衡器:");
mLinearLayout.addView(eqTextView);
shortbands=mEqualizer.getNumberOfBands();
finalshortminEQLevel=mEqualizer.getBandLevelRange()[0];
finalshortmaxEQLevel=mEqualizer.getBandLevelRange()[1];
for(shorti=0;i<bands;i++)
{
finalshortband=i;
TextViewfreqTextView=newTextView(this);
freqTextView.setLayoutParams(newViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
freqTextView.setGravity(Gravity.CENTER_HORIZONTAL);
freqTextView.setText((mEqualizer.getCenterFreq(band)/1000)
+"Hz");
mLinearLayout.addView(freqTextView);
LinearLayoutrow=newLinearLayout(this);
row.setOrientation(LinearLayout.HORIZONTAL);
TextViewminDbTextView=newTextView(this);
minDbTextView.setLayoutParams(newViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
minDbTextView.setText((minEQLevel/100)+"dB");
TextViewmaxDbTextView=newTextView(this);
maxDbTextView.setLayoutParams(newViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
maxDbTextView.setText((maxEQLevel/100)+"dB");
LinearLayout.LayoutParamslayoutParams=newLinearLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.weight=1;
SeekBarbar=newSeekBar(this);
bar.setLayoutParams(layoutParams);
bar.setMax(maxEQLevel-minEQLevel);
bar.setProgress(mEqualizer.getBandLevel(band));
bar.setOnSeekBarChangeListener(newSeekBar.OnSeekBarChangeListener()
{
publicvoidonProgressChanged(SeekBarseekBar,intprogress,
booleanfromUser)
{
mEqualizer.setBandLevel(band,(short)(progress+minEQLevel));
}
(SeekBarseekBar)
{
}
publicvoidonStopTrackingTouch(SeekBarseekBar)
{
}
});
row.addView(minDbTextView);
row.addView(bar);
row.addView(maxDbTextView);
mLinearLayout.addView(row);
}
}
()
{
mVisualizerView=newVisualizerView(this);
mVisualizerView.setLayoutParams(newViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
(int)(VISUALIZER_HEIGHT_DIP*getResources()
.getDisplayMetrics().density)));
mLinearLayout.addView(mVisualizerView);
mInfoView=newTextView(this);
StringinfoStr="";
int[]csr=Visualizer.getCaptureSizeRange();
if(csr!=null)
{
StringcsrStr="CaptureSizeRange:";
for(inti=0;i<csr.length;i++)
{
csrStr+=csr[i];
csrStr+="";
}
infoStr+=csrStr;
}
finalintmaxCR=Visualizer.getMaxCaptureRate();
infoStr=infoStr+" MaxCaptureRate:"+maxCR;
mInfoView.setText(infoStr);
mLinearLayout.addView(mInfoView);
mVisualizer=newVisualizer(mMediaPlayer.getAudioSessionId());
mVisualizer.setCaptureSize(256);
mVisualizer.setDataCaptureListener(
newVisualizer.OnDataCaptureListener()
{
(Visualizervisualizer,
byte[]bytes,intsamplingRate)
{
mVisualizerView.updateVisualizer(bytes);
}
publicvoidonFftDataCapture(Visualizervisualizer,
byte[]fft,intsamplingRate)
{
mVisualizerView.updateVisualizer(fft);
}
},maxCR/2,false,true);
}
@Override
protectedvoidonPause()
{
super.onPause();
if(isFinishing()&&mMediaPlayer!=null)
{
mVisualizer.release();
mEqualizer.release();
mMediaPlayer.release();
mMediaPlayer=null;
}
}
/**
*
*{@linkVisualizer.OnDataCaptureListener#onWaveFormDataCapture}
*/
{
privatebyte[]mBytes;
privatefloat[]mPoints;
privateRectmRect=newRect();
privatePaintmForePaint=newPaint();
privateintmSpectrumNum=48;
privatebooleanmFirst=true;
publicVisualizerView(Contextcontext)
{
super(context);
init();
}
privatevoidinit()
{
mBytes=null;
mForePaint.setStrokeWidth(8f);
mForePaint.setAntiAlias(true);
mForePaint.setColor(Color.rgb(0,128,255));
}
publicvoipdateVisualizer(byte[]fft)
{
if(mFirst)
{
mInfoView.setText(mInfoView.getText().toString()+" CaptureSize:"+fft.length);
mFirst=false;
}
byte[]model=newbyte[fft.length/2+1];
model[0]=(byte)Math.abs(fft[0]);
for(inti=2,j=1;j<mSpectrumNum;)
{
model[j]=(byte)Math.hypot(fft[i],fft[i+1]);
i+=2;
j++;
}
mBytes=model;
invalidate();
}
@Override
protectedvoidonDraw(Canvascanvas)
{
super.onDraw(canvas);
if(mBytes==null)
{
return;
}
if(mPoints==null||mPoints.length<mBytes.length*4)
{
mPoints=newfloat[mBytes.length*4];
}
mRect.set(0,0,getWidth(),getHeight());
//繪制波形
//for(inti=0;i<mBytes.length-1;i++){
//mPoints[i*4]=mRect.width()*i/(mBytes.length-1);
//mPoints[i*4+1]=mRect.height()/2
//+((byte)(mBytes[i]+128))*(mRect.height()/2)/128;
//mPoints[i*4+2]=mRect.width()*(i+1)/(mBytes.length-1);
//mPoints[i*4+3]=mRect.height()/2
//+((byte)(mBytes[i+1]+128))*(mRect.height()/2)/128;
//}
//繪制頻譜
finalintbaseX=mRect.width()/mSpectrumNum;
finalintheight=mRect.height();
for(inti=0;i<mSpectrumNum;i++)
{
if(mBytes[i]<0)
{
mBytes[i]=127;
}
finalintxi=baseX*i+baseX/2;
mPoints[i*4]=xi;
mPoints[i*4+1]=height;
mPoints[i*4+2]=xi;
mPoints[i*4+3]=height-mBytes[i];
}
canvas.drawLines(mPoints,mForePaint);
}
}
}
⑩ 安卓市場里有沒有立體聲的均衡器
安卓市場有啊,叫eq均衡器,全名叫equalizer。功能很強大。還有低音增強,加混音。。。很好用,我一直在用