为了改变低音,中音,高音,不需要使用
该AudioTrack对象(即使使用该对象,您也只能
播放未压缩的PCM数据)。
您只需要使用您的 对象来调整适当的频段级别即可。要获取可用频段的数量,只需致电:
Equalizer
myEqualizer.getNumberOfBands()
Considering the number of available bands, you can now set the level for each
band using the following method:
myEqualizer.setBandLevel(band, level);
where:
频段:将具有新增益的频段。
频段编号从0开始,以(频段数量-1)结束。级别:将以给定频段设置的新的千分之一增益。
getBandLevelRange()将定义最大值和最小值。
更新
要实现一个简单的平衡效果,只是区别左/右
您的播放器的音量(MediaPlayer,SoundPool,…):
mediaPlayer.setVolume(left, right)
要获得单声道效果,您可以考虑使用
Virtualizer,
它提供立体声加宽效果。您可以
使用以下方法设置虚拟化效果的强度:
virtualizer.setStrength(1000); //range is [0..1000]
您需要 仔细阅读
文档
,以检查
基础系统是否真正支持虚拟机的当前配置。
无论如何,这不是真正的单声道输出,我认为如果
不使用诸如
AudioTrack(实际上Poweramp的音频
管道依赖于本地JNI库)这样的低级API,就无法在立体声扬声器上获得单声道输出。如果你想使用的AudioTrack播放,你需要
考虑的,它仅支持PCM数据(WAV)作为输入:你会不会这个手段
能够直接,因为你玩压缩的音频文件(,…如MP3,FLAC)
需要首先手动解码压缩的音频文件。
[Compressed File (MP3)] ===> depre() ===> [PCM data] ===> customEffect() ===> AudioTrack playback()
因此,为了使用和AudioTrack播放压缩的音频(并
最终创建自定义效果),需要执行以下步骤:
- 使用解码器解码压缩文件(没有可用的PUBLIC SYSTEM API,您需要手动进行!!!)。
- 如有必要,以与AudioTrack兼容的PCM格式转换未压缩的数据
- (最终)将转换应用于PCM数据流(例如,您可以合并两个L / R通道并创建单声道效果)
- 使用AudioTrack播放PCM流
我建议您跳过此效果;)
关于低音增强效果,您需要检查
正在运行的设备(例如虚拟器)是否支持当前配置。
看看这里为更多信息
这一点。



