[发明专利]一种音频频谱和进度条叠加方法有效
| 申请号: | 201710356773.7 | 申请日: | 2017-05-19 |
| 公开(公告)号: | CN107220048B | 公开(公告)日: | 2021-04-20 |
| 发明(设计)人: | 纪广兴 | 申请(专利权)人: | 北京酷我科技有限公司 |
| 主分类号: | G06F9/451 | 分类号: | G06F9/451;G06F3/0484;G06T13/00 |
| 代理公司: | 北京国标律师事务所 11753 | 代理人: | 姚克枫 |
| 地址: | 100080 北京市海淀区农大*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 音频 频谱 进度条 叠加 方法 | ||
1.一种音频频谱和进度条叠加方法,其特征在于,在动画显示音频频谱数据的同时,在上面绘制和处理进度条的展示与交互,包括如下步骤:
步骤1,基于View控件,自定义新的控件类mProgress,在构造函数处增加初始化方法;
步骤1中,自定义新的控件类mProgress包括:
创建频谱绘制使用的Path对象wavePath,并设置相应参数,所述参数至少包括频谱数组容量参数,
创建频谱变换使用缓存数组对象cacheFFTs,
创建两条贝赛尔曲线绘制使用的Paint对象mForePaint1,mForePaint2,
创建进度条绘制变量max、min、value,三个变量分别表示进度条最大值、最小值、当前值,所述自定义新的控件类mProgress使用这三个变量的换算值表示播放进度;
步骤2,进行频谱数据的接收、变换,准备好频谱绘制用图形对象,启动异步绘制循环调用;
步骤3,进度条控件变化,通过外部播放器的回调,通过对设置第一进度setProgress、设置第二进度setSecondProgress的设定进行进度更新,
或者:通过onTouchEvent函数,通过用户在控件上点击或触摸,改变进度Progress的位置;
步骤4,通过复写onDraw方法,实现频谱数据与进度条数据的绘制;具体步骤如下:
步骤4.1,调用View的onDraw父绘制方法,把设置的背景绘制显示;
步骤4.2,判断当前是否是暂停状态,暂停状态下,直接返回只绘制背景;非暂停状态下,开始分层绘制频谱动画和进度条;
步骤4.3,通过cacheFFTs数组,进行频谱贝塞尔曲线绘制:
首先计算绘制基线baseX和频谱可绘制最大高度值height,复位wavePath的内部数据,首先通过循环,获取cacheFFTs数组中的偶数位置的频谱数据,经过坐标x、y的计算,使用wavePath的quadTo函数,增加到wavePath中保存为贝塞尔曲线绘制点;
循环结束后,把最后的贝塞尔坐标与最开始的点通过调用close方法,进行直线封闭;
调用canvas对象,首先保存当前状态,然后调用drawPath方法,把wavePath通过mForePaint1画笔绘制到界面;
步骤4.4,wavePath进行复位,再从头循环频谱数组cacheFFTs,获取其奇数位置的频谱数据,通过quadTo转换为path数据保存到wavePath中,最后通过canvas的drawPath方法,使用mForePaint2画笔绘制到界面上;
步骤4.5,通过调用canvas的restore方法恢复canvas状态;
步骤4.6,通过进度条相关变量值,绘制缓冲进度与播放进度;
步骤5,停止频谱动画。
2.如权利要求1所述的音频频谱和进度条叠加方法,其特征在于:步骤1中,初始化方法包括:
初始化按键操作步进单位值,表示按键一次,变化多少;
初始化进度条背景绘制用Paint对象lingBgPaint,
初始化进度条进度绘制用Paint对象progressPaint,
初始化进度条缓冲绘制用Paint对象secondPaint。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京酷我科技有限公司,未经北京酷我科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710356773.7/1.html,转载请声明来源钻瓜专利网。





