更多详情参考:http://blog.csdn.net/ygm_linux/article/details/25593769
项目描述:
实现歌曲播放、歌词滚动同步显示、歌曲快进快退、任意时间播放、进度条显示功能
功能概述:通过物理按键和触摸屏按键控制歌曲的start stop 快进 快退 下首 上首,以及LCD显示歌词播放时间等信息
流程描述: 主要是给mplayer发送命令让执行 和 从mplayer回复中获得信息两大部分
因为启动mplayer时候需要用到exec家族函数,而该函数会替换当前进程的,因此需要用到vfork创建子进程并执行exec,
父进程将来创建线程处理逻辑部分;(注意:vfork保证了子进程先执行,后执行父进程,这样mplayer就已经执行起来了)
而启动mplayer时候需要给他传递一个fifo,用于获取命令的。即父进程向fifo写入命令,mplayer就会去执行命令;
父进程中一个线程负责不断监听物理按键的按下,获得键值传递响应的cmd给fifo即可;
一个线程负责不断监听触摸屏按键的按下,获得键值传递响应的cmd给fifo即可;
因为要显示歌曲信息和当前播放时间,另一线程负责不断发送命令给fifo告诉mplayer去执行;
因为mplayer的回复信息默认是输出到stdout的,因此需要把它重定向到pipe,建另一个线程负责不断读取pipe解析获得歌曲信息和当 前播放时间;
因为要显示当前歌曲播放时的歌词,利用全局变量知道当前播放的哪首歌曲,利用歌曲名打开响应的LRC文件,建另个线程利用当前播放时间找 到对应歌词显示即可。