---------------------------------------------------- ### 1.1.4 (2017-09-19) * 增加速度、方向、开始偏移、自定义paint接口 ### 1.1.3 (2017-06-06) 修复了bug。 ### 1.1.2 (2017-03-20) 增加新接口,修复已知问题 ``` /** * 设置开始绘制波形的启始时间 * @param startWaveTime 毫秒 * */ public void setStartWaveTime(long startWaveTime) /** * 是否画出基线 * * @param drawBase */ public void setDrawBase(boolean drawBase) ``` ### 1.1.0 * fix bug. ### 1.0.9 * fix some bug(like 'AudioTrack retrieve' and 'Short == null') ### 1.0.8 * 最低API16 * 增加了波形播放边播边缓存(cache)功能 * 修复了潜在bug ``` /** * add cache url when play */ public void setUrlString(Context context, boolean cache, String urlString) ``` ### 1.0.7 最低API调整到15 ### 1.0.6 * **更新了对部分6.0的支持** ### 1.0.5 * **增加了播放对seekTo和获取时长与播放进度的支持** ### 1.0.4 * **增加了录制和播放时的暂停功能** ``` /** * 是否暂停 */ public void setPause(boolean pause) ``` ### 1.0.3 * **增加了录制波形和播放波形会根据声音频率变色的功能** ###效果 - GIF上颜色和帧数有些失真混在一起了 ``` //将播放器或者录制器设置进去即可生效 audioWave.setBaseRecorder(player); ···· /** * 三种颜色,不设置用默认的 */ public void setChangeColor(int color1, int color2, int color3) /** * 是否更具声音大小显示清晰度 */ public void setAlphaByVolume(boolean alphaByVolume) ``` ### 1.0.1 * 增加了录制的播放MP3时也可以显示波形 主要是通过MP3RadioStreamPlayer修改之后实现。 * 原理是使用AudioTrack播放流,通过系统的MediaCodec解码MP3,目前只支持本库录制下来的MP3: AudioFormat.CHANNEL_OUT_MONO 单声道 AudioFormat.ENCODING_PCM_16BIT 16位 ``` if (player != null) { player.stop(); player.release(); player = null; } player = new MP3RadioStreamPlayer(); player.setUrlString(uri);//可以是本地uri或者网络URL player.setDelegate(this); int size = getScreenWidth(this) / dip2px(this, 1);//控件默认的间隔是1 player.setDataList(audioWave.getRecList(), size); audioWave.startView(); //可以设置循环播放 ``` ## AudioWaveView 声音波形显示,可单可双,自动调整波形高度适应高度 ``` audioWave.startView(); //开始绘制 audioWave.stopView(); //停止绘制 ``` ## MP3Recorder 来至AndroidMP3Recorder,不过目前该作者已经停止维护。 该项目在此项目基础上增加了音频录制的权限判断和数据提取 ``` ··· mRecorder = new MP3Recorder(new File(filePath)); //控件默认的间隔是1dp int size = getScreenWidth(this) / dip2px(this, 1); //设置数据提取的list和最大数据存储数(一般就是控件的大小处于间隔) 这个list直接用AudioWaveView的lsit mRecorder.setDataList(audioWave.getRecList(), size); //错误回调 mRecorder.setErrorHandler(new Handler() { ··· /** * 获取真实的音量。 * * @return 真实音量 */ public int getRealVolume() /** * 获取相对音量。 超过最大值时取最大值。 * * @return 音量 */ public int getVolume() ``` ## AudioPlayer 音频播放 ``` ··· audioPlayer = new AudioPlayer(this, new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case AudioPlayer.HANDLER_CUR_TIME://更新当前的时间 break; case AudioPlayer.HANDLER_COMPLETE://播放结束 break; case AudioPlayer.HANDLER_PREPARED://播放开始 break; case AudioPlayer.HANDLER_ERROR://播放错误 break; } } }); audioPlayer.playUrl(filePath); ```