android 歌词同步代码,android手机音乐播放器实现歌词同步
最近在做一款android手机上的音乐播放器,学习到了很多东西,像是Fragment,ActionBar的使用等等,这里就先介绍一下歌词同步的实现问题。
歌词同步的实现思路很简单:获取歌词文件LRC中的时间和歌词内容,然后在指定的时间内播放相应的内容。获取不难,难就在于如何在手机屏幕上实现歌词的滚动。
先上效果图:
先从最基本的读取歌词文件开始:
Public class LrcHandle {
private List mWords = new ArrayList();
private List mTimeList = new ArrayList();
//处理歌词文件
public void readLRC(String path) {
File file = new File(path);
try {
FileInputStream fileInputStream = new FileInputStream(file);
InputStreamReader inputStreamReader = new InputStreamReader(
fileInputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(
inputStreamReader);
String s = "";
while ((s = bufferedReader.readLine()) != null) {
addTimeToList(s);
if ((s.indexOf("[ar:") != -1) || (s.indexOf("[ti:") != -1)
|| (s.indexOf("[by:") != -1)) {
s = s.substring(s.indexOf(":") + 1, s.indexOf("]"));
} else {
String ss = s.substring(s.indexOf("["), s.indexOf("]") + 1);
s = s.replace(ss, "");
}
mWords.add(s);
}
bufferedReader.close();
inputStreamReader.close();
fileInputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
mWords.add("没有歌词文件,赶紧去下载");
} catch (IOException e) {
e.printStackTrace();
mWords.add("没有读取到歌词");
}
}
public List getWords() {
return mWords;
}
public List getTime() {
return mTimeList;
}
// 分离出时间
private int timeHandler(String string) {
string = string.replace(".", ":");
String timeData[] = string.split(":");
// 分离出分、秒并转换为整型
int minute = Integer.parseInt(timeData[0]);
int second = Integer.parseInt(timeData[1]);
int millisecond = Integer.parseInt(timeData[2]);
// 计算上一行与下一行的时间转换为毫秒数
int currentTime = (minute * 60 + second) * 1000 + millisecond * 10;
return currentTime;
}
private void addTimeToList(String string) {
Matcher matcher = Pattern.compile(
"[d{1,2}:d{1,2}([.:]d{1,2})?]").matcher(string);
if (matcher.find()) {
String str = matcher.group();
mTimeList.add(new LrcHandle().timeHandler(str.substring(1,
str.length() - 1)));
}
}
}
一般歌词文件的格式大概如下:
[ar:艺人名]
[ti:曲名]
[al:专辑名]
[by:编者(指编辑LRC歌词的人)]
[offset:时间补偿值] 其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的。
但也不一定,有时候并没有前面那些ar:等标识符,所以我们这里也提供了另一种解析方式。
歌词文件中的时间格式则比较统一:[00:00.50]等等,00:表示分钟,00.表示秒数,.50表示毫秒数,当然,我们最后是要将它们转化为毫秒数处理才比较方便。
android 歌词同步代码,android手机音乐播放器实现歌词同步相关推荐
- java歌词高亮显示滚动_js如何处理音乐播放器的歌词文件达到高亮以及滚动的效果?...
原理 把每句歌词都输出为一个li元素,添加data-timeline为该歌词的时间 监听 audio的timeupdate时间,遍历第1步添加的歌词,检测data-timeline为当前audio播放 ...
- [转]全方位对比 安卓手机音乐播放器推荐
现在手机应用发展迅速,各种只怕想不到,不怕做不到的应用也是如雨后春笋般应运而生.听歌早已经告别了以前庞大.笨拙.不便带来的烦恼,之后mp3播放器的普及更是随处都可见戴着耳机听歌的人.而手机近几年来革命 ...
- Android应用开发--MP3音乐播放器滚动歌词实现
Android应用开发--MP3音乐播放器滚动歌词实现 2013年6月2日 简.美音乐播放器开发记录 -----前话 有网友给我博客评论说,让我借鉴好的Android代码,代码贴出来的时候最好整体先 ...
- 张利国,龚海平,王植萌.android移动开发入门与进阶,开题报告-基于Android的手机音乐播放器的设计与实现.doc...
盐城师范学院 毕业设计开题报告 题 目: 基于android的手机音乐播放器 的设计与实现 姓 名: 二级学院: 信息工程学院 专 业: 软件工程 班 级: 12(1) 学 号: 指导教师: 职称: ...
- 基于Android的手机音乐播放器的设计与实现
源码及论文下载:http://www.byamd.xyz/tag/android/ 摘 要 随着Android系统和移动互联网的快速崛起,手机已经成为人们生活不可缺的一部分,在现代人的生活中,人们生活 ...
- 一个手机android音乐播放器,酷我听听 Android最好用的手机音乐播放器
歌曲播放与听听曲库 添加好自己手机中的歌曲之后,用户就能够选择歌曲进行播放收听了.酷我听听的播放页面非常华丽哦.支持歌曲专辑图片,以及歌词同步.小编试听了两首歌曲许嵩的<素颜>以及柯有伦的 ...
- Android应用开发 MP3音乐播放器滚动歌词实现
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Andr ...
- [内附完整源码和文档] 基于Android的手机音乐播放器的设计与实现
摘 要 随着Android系统和移动互联网的快速崛起,手机已经成为人们生活不可缺的一部分,在现代人的生活中,人们生活节奏的加快,生活压力越来越大,碎片化的时间越来越多,那么一个可以在碎片化的时间内调节 ...
- Android项目:基于Android的手机音乐播放器的设计
本次程序的设计,对手机音乐播放器的框架进行了精心的构思和实现,采用主要开发工具Eclipse+Java语言,Android Development Tool的插件和Android SDK版本来完成的. ...
最新文章
- C++实现九九乘法表
- js 前端操作的分页路由设计
- Tensorflow【实战Google深度学习框架】使用 HDF5 处理大型数据集with TFLearn
- ES6--基础语法(一)
- 小米usb3.0修复补丁_今日热闻 | Redmi 10X系列发布、小米手环5产品外观曝光、Win10补丁导致蓝屏、AXON 11 SE 6月发布...
- ros::spin() 和 ros::spinOnce()
- jvm面试之 Java内存模型之线程独占部分,线程共享部分,常问问题分析
- 2018安卓应用安全白皮书:超98%安卓应用存有安全风险
- 转摘:工厂方法模式(Factory Method Pattern)
- PHP composer
- 鼠标宏会不会封号_每天一个英雄联盟封号技巧:峡谷先锋可以连续撞塔两次,你会吗?...
- wps android 安装包下载地址,WPS Office手机版下载安装_WPS Office下载软件安卓版13.0.1...
- python极简讲义 pdf_Python极简讲义:一本书入门数据分析与机器学习
- python开发微信点餐_微信点餐平台开发 (一)
- 渠道类:新APP上线都有哪些具体的推广方式可以学习(最新)
- c语言陈湘骥答案,c语言程序设计教程陈湘骥答案
- 计算机专业排名211大学排名,计算机专业大学排名,计算机专业强的211!
- 推动外部董事高效履职,提高国资国企治理能力
- 如何有效管理自己电脑里的文件
- 完美解决Win10“无法登陆到你的账户”问题,无法登录账户的全方面解决方案!