写道
/**
* 把显示歌词封装在一个线程里
* @param <T>
*/
public class LRCDisplayThread<T extends LRCDisplayAction> implements Runnable
{
/**
* 读取lrc文件必须的路径
*/
private final String filename;
/**
* 解析出的lrc对象
* <p>一个lrc对应一个显示线程,歌词显示完后
* ,该歌词对应的线程自然死亡,所以歌词对象用final</p>
* <p>要显示下一个歌词应该重启一个线程</p>
*/
private final Lyrics ls;
/**
* 运行该线程所在的对象,要求改对象需要实现接口LRCDisplayAction
*/
private final T t;
/**
* 是否处于暂停状态
*/
private boolean isPause = false;
public LRCDisplayThread(String filename, T t)
{
this.filename = filename;
LRC lrc = ReadLRC.readLRC(filename);
Lyrics ls = ParseLRC.parseLRC(lrc);
this.ls = ls;
this.t = t;
}
private void actionPause()
{
try
{
this.wait();
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getFilename()
{
return filename;
}
/**
* 暂停
*/
public void pause()
{
isPause = true;
}
@Override
public void run()
{
// TODO Auto-generated method stub
System.out.println("艺术家:" + ls.getAr());
System.out.println("专辑:" + ls.getAl());
System.out.println("歌曲:" + ls.getTi());
System.out.println("歌词制作:" + ls.getBy());
//Thread.sleep(ls.getOffset());//时间补偿暂未处理
for (Lyric l : ls.getLyrics())
{
//System.out.println(l.getTxt());
t.action(l);//显示歌词【更新UI】
try
{
if (isPause)
{//是暂停状态,则线程等待
this.actionPause();
}
Thread.sleep(l.getTimeSize());
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void unpause()
{
isPause = false;
this.notify();
}
}
分享到:
相关推荐
**LRC校验码自动生成** LRC(Longitudinal Redundancy Check)纵向冗余校验是一种简单而有效的错误检测方法,常用于串行通信和数据存储中。它的主要目的是确保数据在传输或存储过程中的完整性。在Java编程语言中,...
LRC歌词编辑器是一款专为音乐爱好者设计的工具,用于创建、编辑和管理LRC格式的歌词文件。LRC是Lyric Reduced Codec的缩写,是一种广泛用于存储带有时间戳的同步歌词的文本格式,常见于华语流行音乐中。LRC歌词与...
LRC(Longitudinal Redundancy Check)是一种简单的错误检测机制,主要用于检查数据传输或存储时的错误。在C语言中实现LRC校验,主要涉及到位运算、字节操作和循环冗余计算。下面我们将深入探讨LRC校验的工作原理、...
LRC(Low Redundancy Checksum)校验码是一种简单的错误检测机制,常用于音频文件的歌词同步数据中。在本文中,我们将深入探讨LRC校验码的原理、生成方法以及C++实现的细节。 LRC校验码的原理: LRC校验码是一种逐...
CRC(Cyclic Redundancy Check,循环冗余校验)和LRC(Longitudinal Redundancy Check,纵向冗余校验)是两种常见的错误检测技术,广泛应用于数据通信、存储系统以及文件传输中,以确保数据的完整性和正确性。...
LRC歌词文件转换器是一种工具,专门用于处理.LRC格式的歌词文件,这种格式常见于中文音乐领域,便于同步显示歌曲的歌词。.LRC文件由一系列时间戳和对应的歌词文本组成,时间戳指示了歌词在歌曲中的出现时刻。转换器...
《图新地球(LSV)自定义图源lrc》是一个专为图新地球(LSV)用户设计的资源包,旨在提供个性化的地图显示选项。这个资源包包含了一系列lrc格式的图源文件,这些文件是图新地球软件用来加载和解析地理信息数据的关键...
《LRC Maker:轻松制作LRC歌词的高效工具》 LRC Maker是一款专注于LRC歌词编辑的软件,其简洁的界面和易于上手的操作方式深受用户喜爱。LRC,全称为Lyrics ReferenCe,是一种专门用于存储歌曲歌词的文本格式,常...
《lrc歌词转换工具》是一款专为音乐爱好者设计的实用软件,主要功能是将lrc格式的歌词转换为其他类型的歌词格式,以满足不同设备或平台的播放需求。lrc歌词是网络上最常见的同步歌词格式,它包含了歌曲的逐句歌词和...
6. 使用LRC歌词:重新单击“播放”按钮,该软件会自动调用LRC歌词文件将歌词播放出来,此时可观察所编写的LRC歌词是否准确,如果是出现时间整体的偏移,可在“偏移”输入框中输入偏移量(单位为毫秒),输入正值,...
在众多的歌词格式中,KRC和LRC是比较常见的两种。本文将深入讲解酷狗KRC格式歌词以及如何将其转换为LRC格式,同时会涉及到Java运行环境的设置。 首先,KRC是酷狗音乐自定义的一种歌词格式,它包含了时间戳、歌词...
标题中的“将LRC文件转换成TXT文件的小软件”指的是一个特定的应用程序,该程序能够处理LRC格式的文件,并将其内容转化为TXT文本格式。LRC文件是一种常见的歌词文件格式,通常与音乐文件一起使用,用于显示同步的...
LRC(Longitudinal Redundancy Check,纵向冗余校验)是一种早期的数据校验方法,主要应用于磁带存储系统。LRC是通过对数据块中的每一位求和,然后对结果取反得到的。与CHECKSUM类似,LRC也能检测到单个比特翻转的...
标题中的“自定义加载:图源LRC”指的是利用LRC(Location Resource Configuration)文件来扩展图新地球的地图源,让用户能够加载自定义的地图数据,以增强软件的功能和个性化体验。 LRC文件是图新地球用来存储地图...
在使用过程中,用户需要先准备lrc字幕文件和对应的mp3音频文件,然后调用“create_bin”功能,指定输入的lrc和mp3文件,程序会分析lrc文件的时间戳,将其与mp3音频同步,并将它们打包成bin文件。 在实际操作中,...
MP3音频配合LRC字幕文件,为学习者提供了便捷、高效的听力与阅读同步训练方式。 MP3是一种广泛使用的音频文件格式,全称为MPEG-1 Audio Layer 3。这种格式通过有损压缩技术减小文件大小,但在人耳可接受的范围内...
在Android平台上,开发一款歌词显示应用,特别是支持LRC格式的歌词字幕,是一个常见的需求。LRC(Lyrics Repeat Control)是一种简单的文本格式,用于存储歌曲的逐句歌词及其对应的播放时间点,使得用户在听歌时可以...
LRC(Lyric)是一种歌词文件格式,常用于存储带有时间戳的歌词,使得音乐播放时能同步显示歌词。本文将深入探讨如何使用JS解析各种形式的LRC歌词,包括自定义标签的处理,并实现每字精准同步。 首先,LRC文件的基本...
【图新地球的自定义图源LRC】是一种在地理信息系统中实现个性化地图展示的方法,主要针对的是图新地球这款软件。图新地球是一款强大的、开源的桌面端三维地球浏览软件,它允许用户查看全球地形、卫星图像以及各种...