您的位置:首页 > 移动开发 > Android开发

Android关于音频歌词同步实现思路(一)

2013-05-30 17:09 267 查看
最近项目需要用到音频和歌词同步的功能,网上有单一的小功能,比如说单独的读取lrc文件的歌词功能,有MediaPlayer和seekbar的使用。没有结合起来的方法,我已经实现,并且定位和时间点的定位比较准确。今天谈一下,怎么将mediaplayer和seekbar还有lrc文件的歌词显示联系起来的一些思路。

首先说一下,MediaPlayer来播放音频,如果用真机开发就没有麻烦,如果用模拟器开发,需要注意如果将音频文件存在sd卡中,需要通过在cmd下建立sd卡镜像,并在cmd下装载sd卡镜像到你的模拟器中一同启动,这样模拟器才可以使用SD卡(具体方法google吧)。说完设备,我们来说一下使用到的控件,首先我们先实现将音频文件可以在终端上播放出声音来,并且可以通过滚动条控制的功能。这里需要开始和暂停两个button和歌曲总时长,当前歌曲时长两个textview,还有seekbar用来显示歌曲播放进度,最重要的当然是MediaPlayer。

这里我只介绍思路,至于调用什么方法,代码上怎么实现我想有基础的自己就应该会弄额。接下来,通过MediaPlayer的基本函数调用和监听可以获得你的音频文件是否准备好,歌曲总的时长,歌曲当前播放的时长,设置歌曲播放的位置这几个重要函数。这个地方需要注意MediaPlayer调用的生命周期,不然会有很多莫名的bug。现在MediaPlayer的准备工作准备完成,说说seekbar怎么和MediaPlayer结合。

首先在seekbar初始化时将它本身的MAX值设置为当前歌曲的总时长,这为以后算法上会省掉不少麻烦。在MediaPlayer播放器start的时候我们可以通过线程,每一秒钟调用一次去获取MediaPlayer的当前播放时长,去赋给seekbar的进度,并且监听seekbar,在seekbar的onStopTrackingTouch方法中设置MediaPlayer的位置。这样MediaPlayer的播放就和seekbar绑定一起了。我们第一步完成了,如果想知道歌词怎么和MediaPlayer还有seekbar控制放一起,看下一篇,快下班了,明天再写。

注意:

MediaPlayer的生命周期。

MediaPlayer的基本函数调用。

MediaPlayer的监听器用法。

seekbar的监听。

seekbar的基本函数用法。

如果用虚拟器需要知道cmd下对android模拟器的控制。

转载注明沈阳斌子原创
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: