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。功能很强大。还有低音增强,加混音。。。很好用,我一直在用