Android 实现歌词同步

了解歌词同步原理,我们可以想到要做如下工作:

1. LRC 解析

2. LRC 歌词显示

3. 歌词与播放音乐同步

4. 歌词的获取

一 LRC解析

这边我推荐YOYOPlayer 音乐播放开源项目. 源代码已经非常好的支持了LRC解析. 我拿过来就用了.

过程大概如此: 把LRC文件读到内存里面,用 sentence数据结构存放. Sentence里面有 Fromtime, Totime, content三个成员变量。显示的时候需要这些数据。

二. LRC歌词显示

歌词的绘制通过重写 OnDraw方法.

绘制的代码贴出来:


long t = tempTime;

int index = getNowSentenceIndex(t);

if (index == -1) {

return;

}

Sentence now \= list.get(index);

float f = (t - now.getFromTime()) \* 1.0f/ (now.getToTime() - now.getFromTime());

if (f > 0.98f) { 

f \= 0.98f; 

}

Shader shader \= new LinearGradient(0, 0,

now.getContentWidth(mTxtPaint), 0, new int\[\] { Color.RED,

Color.BLUE }, new float\[\] { f, f + 0.01f },TileMode.CLAMP);

mTxtPaint.setShader(shader);

canvas.drawText(now.getContent(), 0, 20, mTxtPaint); 

上面的代码很简单,关键一个函数是getNo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值