许多音乐App上常见的音频可视化效果,读取音频数据并利用傅里叶转换成可视化的字节数据,再通过自定义View渲染而成. 组件源码目录:https://github.com/GitHubZJY/AudioVisualizeView/tree/master/audiovisualize demo目录:https://github.com/GitHubZJY/AudioVisualizeView/tree/master/app - 支持自定义可视化颜色
- 支持本地路径、url、raw的音频路径读取,或自定义外部MediaPlayer传入音频数据渲染
- 支持自定义频谱展示数目
- 支持多种可视化展示形式,包括圆形、水平、波浪、网状、粒子等
- 支持AndroidX
在项目根目录的build.gradle添加:
allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 在项目的build.gradle添加如下依赖:
implementation 'com.github.GitHubZJY:AudioVisualizeView:v1.0.0' <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />由于需要读取音频数据和音频文件,需要先动态申请所需的权限,例:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int checkCallPhonePermission = ContextCompat.checkSelfPermission(activity, Manifest.permission.RECORD_AUDIO); if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(activity, new String[]{permission}, requestCode); } }详情可参考本项目demo
<com.zjy.audiovisualize.view.SingleVisualizeView android:id="@+id/audio_visualize_view" app:visualize_ratio="2" android:layout_width="wrap_content" android:layout_height="wrap_content" />public class SingleVisualizeActivity extends AppCompatActivity { private AudioVisualizeView vAudioVisualize; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_single_visualize); vAudioVisualize = findViewById(R.id.audio_visualize_view); vAudioVisualize.doPlay(R.raw.sound); } @Override protected void onDestroy() { super.onDestroy(); if (vAudioVisualize != null) { vAudioVisualize.release(); } } }在需要播放的位置,调用 doPlay 方法,并传入对应的音频资源id或者音频文件路径,即可开始播放。 在页面销毁时记得调用release释放对应的音频资源,避免内存泄漏。
一个在奋斗路上的Android小生 欢迎关注简书: https://www.jianshu.com/u/4cb2688ddf31 




