Android 音频可视化

1.参考了https://github.com/zhaolewei/MusicVisualizer
大神用的是录音显示,其实我只需要显示已有音乐的可视化,所以就借用了大神写的类自己改了一个demo(百度盘自取,可直接使用)也可以去看看大神的文章跟着改
链接:https://pan.baidu.com/s/1AtjPG3xG_orH_RVhyTI1tg
提取码:bzwe
复制这段内容后打开百度网盘手机App,操作更方便哦
2.一些小笔记

  • 将demo里面这三个东西copy进自己的项目
    -在这里插入图片描述
  • 尤其重要记得把读写权限和麦克风权限打开
 private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
        Manifest.permission.READ_EXTERNAL_STORAGE,
        Manifest.permission.WRITE_EXTERNAL_STORAGE,
        Manifest.permission.RECORD_AUDIO,
        Manifest.permission.MODIFY_AUDIO_SETTINGS
};


public static void verifyStoragePermissions(Activity activity) {
    // Check if we have read or write permission
    int writePermission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
    int readPermission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE);
    int hasAudioPermission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.RECORD_AUDIO);
    if (writePermission != PackageManager.PERMISSION_GRANTED || readPermission != PackageManager.PERMISSION_GRANTED ||hasAudioPermission  != PackageManager.PERMISSION_GRANTED) {
        // We don't have permission so prompt the user
        ActivityCompat.requestPermissions(
                activity,
                PERMISSIONS_STORAGE,
                REQUEST_EXTERNAL_STORAGE
                );
    }

}
  • 使用参考mainactivity里的代码
  • 如果要调节频谱图的数量适应于你的控件请使用这个函数(注意此函数在一个控件内一个只需要调用一次)
audioView.setLump(audioView.getWidth(), audioView.getHeight());

该段代码在AudioView里面

 /**
     * 设置柱体的数量(liuliu)
     *
     * @param width:当前控件的宽度
     *        higeht:当前控件的高度
     */
    public void setLump(int width, int hight) {
        System.out.println("width:" + width + "  hight:" + hight);
        int allwidth = LUMP_COUNT * LUMP_SIZE;
        //LUMP_MAX_HEIGHT = (int) ((hight/2)*0.9);
        LUMP_MAX_HEIGHT = hight;
        SCALE = LUMP_MAX_HEIGHT / LUMP_COUNT;

        if (allwidth > width){
            while (allwidth > width) {
                LUMP_COUNT = (int) (LUMP_COUNT * 0.9);
              //  LUMP_MAX_HEIGHT = (int) (LUMP_MAX_HEIGHT * 0.9);
                allwidth = LUMP_COUNT * LUMP_SIZE;
            }
            while (allwidth < width) {
                LUMP_COUNT = (int) (LUMP_COUNT * 1.1);
                // LUMP_MAX_HEIGHT = (int) (LUMP_MAX_HEIGHT * 1.1);
                allwidth = LUMP_COUNT * LUMP_SIZE;
            }
        }else if(allwidth<width){
            while (allwidth < width) {
                LUMP_COUNT = (int) (LUMP_COUNT * 1.1);
               // LUMP_MAX_HEIGHT = (int) (LUMP_MAX_HEIGHT * 1.1);
                allwidth = LUMP_COUNT * LUMP_SIZE;
            }
        }

    }

-设置要柱状图还是曲线图,直接在AudioView里面修改
在这里插入图片描述

  • 最后效果
    在这里插入图片描述
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值