00:00
好,同学们,早上我们讲到的这个解析歌词,你看X解析,然后嘞到这里了,对吧,好把这个呢去解析,然后如果等于负一就返回了,那如果不等于负一的话,那相当于这种负曲面构呢去解析成功了。好,那那么相当于在循环第二遍的时候,就变成这个样子了。好,那假如说再循环一次,它会把这个变为多少啊,啊是把这个变成是。这个就在结合的时候,是又相对于把这部分截断了,就略掉后面这部分了,那这个还那如果是取它的零,那取的这个左边括号,右边括号是不是还是等于零和九啊好,然后这个。二它等于负一吗?不等对不对?好,那接下来这个地方里面,这个时候得到的内容又是多少。
01:00
是这个时候是接起第一个位置,到最后一个位置是又把这个又得到啊好得到得过后,然后再把这个转换为我们的毫秒,所以的话又放到集合里面,就这问题吧,好接下来它。得到过后,它不等于负一吧,想再循环,再循环过后它从这个状态变成什么。他又从。排是S这个地方,然后加一,这时候它变成什么呢?文字了,那这个时候它等于多少?是等于负一啊,负一,那么还有机会进来吗?好,就结束了,明白了吧,就这么循环,OK,然后有了过后这个最终它都变成一个什么,我在里欢笑,所以的话嘞,在这个地方里面。好,我们是可以在这里面我们是可以捋称的,捋称回去什么意思吧,那轮回去是肯定有值啊,肯定是有值的,然后注意了,在这个过程中,我们现在已经得到了这个时间吧,那这个里面的集合它就变成多少了。
02:24
是相当于得得得得得得得是三个时间呢,当然这个书随意写的肯定不是它吧,行的,那也就是说我们最终要把它这个时间,这个时间和跟它对应起来吧,所以的话还要自己写,在负循环的外边写一个循环。这循环干嘛嘞啊,是要根是要根据这个这个得到和这个歌词匹配起来啊好,那之前用的I,这个时候我们还还敢还能用I吗?接对吧,换一个从零开始接加加啊接啊小于我们的谁啊。
03:10
求这个的谁,所以它的什么,它的一个长度吧,接加加是这样的呀,那有过后,然后我们就要去取我们的这个值了,那有了过后呢,我们这个地方里面啊,去去取出来,首先如果我们的这个去取接它不等于这个零。那么就是有值,因为默,因为这个数组是默,如果六的话是默认,如果我们六长度为四,它本身有三个,那第四个元,第三个元素,也就最后元素里面它默认是多少?是零吧,只要不等于零,它不等于默认指数都有值啊。
04:02
对不对,好,那么我这个地方里面呢,只要不等于零,我们就重新因为零的话,一一般不会有零吧。对不对,好,然后有了过后,我们接下来就要去在这方里面去录一个这个歌词,这是歌词绿出来的吧,那歌词这三句的内容,这一句这句这句那是都是它,所以不管你怎么循环。我都要去算我们的内容,内容为多少啊,这么问题吧,好,接下来还要去设置我们的什么。时时间点呐,休眠时间我们有吗?没有从时间点,那时间点是就从这个地方去取啊,同学们去取好取第几啊几挨个去把它算到面去,OK搞定。但是这个地方是只六一个啊,应该又怎么办?所以先要把它放到集合中啊,那个集合我们六了吗?这六了吧,ADD,好,把这个放到这个题头中,那有了过后是不是再溜一遍了,好,这个结构大家会吗?是我们之前用过啊好。
05:21
他仔细看一下,首先进来溜,它溜过后是没有值对吧,然后再设设过后呢,放到集合,然后再溜一个是重新把这些覆盖了,但是之前添加进去的有作用吗?是肯定不会变的啊,因为我相对每六一个我就添加进去了啊。好,那么这个返回什么东西是无所谓了吧,它返回什么东西,因为它肯定会走,这对不对,好,所以的话下面你不用管它,好,当然如果的话就这样啊,如果他的话就这里OK。没问题吧,好,那有过后咱们解析歌词是不是顺利完成了,好,那么这就是我们来解析歌词底部对吧,所以我们每次返回。
06:07
这个值,那如果它不为空过后,那它继续循环,如果一旦为空,是相当于读到空格的这个地方了,这时候呢,它就会。它不会进来,是不是关闭了,好接下来我们要歌词要排序了吧,排序就用到我们的,然后呢,它有一个说的方法,把我们的歌词存进来,然后这个地方里面呢,它是还要实现我们的一个一个接口吧,好,我们来class,然后实现我们的这个的一个接口。是是谁是这个吗?这个对吧,好,然后他要从我们的那个Y进去,好这时候呢,重启我们的方法。是吧,然后怎么排序啊。
07:05
是他的get什们的时间点,然后好,那么是我们要区分一下小于大于这种情况啊,好一幅,然后它的这个它的时间点,然后小于这个就返回多少啊负一吧,我们point,那就返回一个return负一。如果else if,如果是大于,就返回一个一吧,否则返回零对不对,Get point,然后大于这个right的这个右边刚才我们的就返回多少,Return,返回个一吧,好,然后否则的话就反成什么里看这个零是相等的,修反应啊好,就这样OK,然后把这个门给什么。
08:02
你出来。好,那排序后,接下来就排序过后就变成什么规规矩矩的了吧,之前没有排序是不是。是没有先后之分的,好,那接下来给我拍戏过后,好,这个时候大家看好,那么我就要做一个或循环性环,该I等于零,I小于YC,然后点SI加加,然后去取第邻句吧。好,注意我接下来要做的,记住每句高亮时间,每句高亮时间怎么做啊,是第二句减掉第零句的时刻,然后得到第零句的休眠时间呢?比如说这句高粱多长时间,它是等于。前面的后面这句减掉它自身,然后设置它的休眠时间吧,好,那这个时候我就要去,首先要去得到第一句好,LYC,然后Y,这个LYRC,然后这个去get我们的位置,哎。
09:19
还有了过后呢,好,如果我们的这个啊。就是说有了过后这个时候呢,呃,我们。这是第第一句对吧,然后呢,我们接下来第二句I。就是加一是不是电距啊,小于c size,那这个时间段是取第几距啊,是第二句啊,好,这个时候是two。题说是Q啊,然后是得到电距了,电距应该是加上多少对吧?你看在一个循环中里面,它是执行它也执行它呀,所以这个是如果默认是这个零的话,那么这是第零句,那么加一是上面之前它的后一句啊,后句过后,那这一句它的休眠时间short跟他一个sleep,它就等于第二句的实际时刻。
10:28
这个时刻啊减掉啊减掉。啊,第一句的时刻OK,搞定。明白了吧,就这一个算法好,你做后它里面的对象是不是这个集合里面的所有对象的数据被变化了啊,它的数据就是说它多了一个休眠时间吧,对不对?好那么你做完过后,这个时候呢,这个们呢就不搞搞搞定了对吧?好那么也就是说这个就解析好了,这工具我们用了吗?还没有用啊,还要把它用上。
11:05
那么我们显示歌词这个这个假歌词我们需要吗?不需要了,那这个集合是我们在工具里面六了,我们需要还需要六吗?不需要了,对不对?好,所以的话呢,我们就要在播放器这里面把工具。给搞定就是我们的,呃,这个。那个从这里面的时候,是不是也是开启的歌词这里啊,我开始去六日公主嘞,因是工具类,那这个工具类的话,那接下来它这里面它存一个。播放地址过来啊。好,注意啊,我们现在去读读歌词的地址啊。歌词注意,我们现在有这样的一个规律,就是我先读歌词了,过后才能解析吧,歌词地址,因为我们一般呢是放在跟他放在一块,但是以后大家真正工作可能不放一块吧,但我们要方便放在一块,其实这种是比较乱的,好放在这里SD卡你看你看一下这个audio是这一块啊。
12:17
歌词在一块啊。那也就是说我们要想去解析。要想去得到的歌词,那我们是要得到他。我们要得到得到这一部分。然后再加上点L啊谁是的呀,所以我要把因为这个我们直接可以得到它吗?不可以吧,因为我播放的歌是谁。播放它是把它给这个点,把后面部分给截截掉啊,然后再加上LC就变成它了。那假如说以后真正情况他不放在一块,他可能放在额外的目录是不是。是不是的话,我们就加一个某个目录就可以了,但是名字肯定是一样,对不对,肯定有相对规律嘛,对吧?好,那对于我们而言的话,我们呢啊,就要去得到他的当前播放音乐的路径吧,当前播放音乐的路径咱们有过吗?
13:19
好,有对吧,但是我们还没有写接口,写在里面吧,好,那这个时候我们就要去得到,然后有一个叫啊media service get,我们的test还没有吧,好,就是我们的all pass pass没有啊这个方法。没有吧,那没有怎么办啊,是先要个借口啊。好ID老师写一下吧,然后在这里好返回什么类型呢?韵律型对吧,好那么这个时候呢,得到我们的这个是得到得到。
14:05
得到谁呀,音频的这个播放绝对路径是不是,然后我们再改啊好,那我们就要运行起来,运行起来过后他肯定会报错啊。好一会的话呢,你看水泥就报错了,好这个时候呢,我们在服务里面肯定也报错了。好浮里面好,这时候我们要多写一个什么方法。好这个方法的话呢,这时候我们去掉好这个方法有了吗?肯定没有对吧,刚加的嘛。好把它给创建出来。好,那这个路径在哪里啊,Me it里面是有一个叫get什么data,这是绝对路径的啊,这个是音频播放的绝对是吧?啊路径对吧?诶等到路径过后,是不是就很可以做很多事情了。
15:11
好,我们这个时候来到我们的这个好H底面,好这个时候得到过后,它就是一个实际类型,嗨,好这里面肯定会报错吧,好把那个补货住。好,然后有过后大家看好这个路径,它假如它得到的是mnt下SD hard的下的o do下的某一首歌,比如说北经点MP3,那这个时候我要把这个节奏起来吧。对不对,所以的话呢,这个时候我们俩就这么做了。我们呢,这个时候就要去截断,怎么截断它就等于点这个。
16:02
啊,沙是沙,就是一个截断,截断的话是从哪个地方开始截断呢?对不对,从从零开始吧,然后截断到这个点这个位置吧,好,它里面就有一个index,然后是这个点吧,这里是不是,那这个得到的值是多少啊。我们要的是这部分吧,那就这部分,这没问题吧,零是从这里开始吧。嗯,大家看好。这个参数N的吧,啊,这个S里面。这个参数sub里面这个是开始都是N的吧,那么我们可以看源代码,你看都是开始和结束吧,没问题吧。好。然后的话返回转把字给给赋值了这问题吧,那也就是说这个参数就变成下面这部分了这题吧,好,然后我们六一个five。
17:13
File一个file好,然后呢,我们在这个地方里面就是呃,有了过后加上点LRC是这样的话就变成一个完整的类似于。它的基础上变成是点北京点L啊C这的格式文件了,好,那这个文件是也有可能不存在啊,如果这个文件不存在。那怎么办啊,不存在,是战略,再做一个TST的好,TXT是两种格式文件呢。
18:00
TST对吧,好,那这个时候如果存在,那来这里过后我就要去解析了吧。好,那就说给这个工具是有机会了,好,它这个地方里面要去读取反是不是。好,那么这是解析歌词了吧,解析过后它重新就是开始解析吧,那这个集合我们要要要给它一个外界传,要把它get好,然后去做一个get,主要get要set吗。不需要get,不需要就是要得到歌词列表对吧。好。诶,那这个时候就要去得到了吧,然后从这个工具里面得到吧,好,然后get歌词列表,然后这个就是啊,然后LC。
19:02
歌词列表得到了这个词列表是最终放到这个显示的控件里面啊先控件我们有有没有,只有它的实力啊,啊叫L这个。啊,这个空间就它吧,然后set我们的是现实歌设置歌词这个方法有了没有,它里面没有,那就是我要,也就是说这个不是六出来,要通过外界设置进来,好这个的话呢,选中它啊这个out into输入那有一个设的方法吧。好,这时候就设置什么,设置歌词列表对不对,你看啊。要射到里面去吧,好,回来。那这里接下来要设置了,好,你看是有了这个方法好。稍等去,那我们可以再减写一点吗?可以这样子可以减了。
20:02
好,那么把这个我们干掉,是不是这设置那设置歌词过后大家想一想。那么一发消息过后,这个时候这个就开始死循环了吧,那如果没有歌词存在,我们需要发吗?不需要,所以我们最后再写一个方法,在工具类型里面判断它有没有歌词,好,那么这时候呢,我们再写一个玻类型is啊is。这个LYRC好默认呢不存在,那么如果它这个的话,应该负于多少负,如果存在的为多少Q对吧,那么就把这个根本呢设置一个啊。诶。把它设置一个呃,Get方法,它就变成什么。
21:04
是否存在,是得到啥啊?这是否存在歌词啊,是否存在歌词,是否存在歌词?好,那大家好,来到哪里啊?Play里面好,这个时候呢,我就判断了,哎呀,如果你存在歌词,我就发消息,否则就消是。一服,然后把这哥们复制一下,粘贴一字存在歌词我就发,否则不发啊好,那这个把这个呢,整理过来了,怎么地方好这一部分注意就是要显示歌词的,我单独抽一个方法。好。一个重构一个方法,它重构方法这快键还记得吗?Al shift什么对吧?好我们叫shift RC,好点击一下。
22:06
就可以了,好,那我们检查代码下,当我们给到路径,然后呢,解析格式,这这是这是开始这个传这个文件进入解析歌词工具类是不是,然后呢,这个地方里面就存进去,诶从这个存到哪里去啊。把什么解析什么好的歌词,什么传入显示歌词,显示歌词的什么控件上吧。好。然有过后嘞,在我们地方里面的话嘞,就把它给传到里面去了,对吧,它里面去所据那就又可以用了,然后注意发个消息过后,它就可以来这里给不断的循环对不对,循环然后传到当前位置不断更新对吧。
23:03
好,我们来运行起来,我们看第八个一下啊,第8UG一下,我们看看对不对,来到哪里呢?来到这里,刚才这个叫秀秀秀锤。超过了。嗯,我们看看啊,这就这对吧,好,我们点击这个断点处,然后呢,啊运行起来。注意看啊,我怎么debug的,这debug也是一个绝活呀,是不是大家一定要会是吧,咱们一个程序员比一下会,大家平时看一些电视啊,有些人会骑摩托走钢丝是吧,那是他玩的是吧,咱们程序员要玩,咱们把我们绝活玩出来对不对?好。我们呢,运起来,那写过后点击它好,这个时候呢,我要点一个点这个。好,链接一下。好,然后呢,选择它。
24:02
好,大家好哦,我点一首歌啦,比如说我们点北京北京。呃,北京,北京的话呢,这样,呃,我想换这首难的歌词。那首男的呢,这个里面看到没有这首,因为我们是以他为案例嘛,好,然后把它这个放到这里来。好,我们我们打开它。来了吧,然后放到mnt。SD卡。本金美金是要把那个替换掉啊。好,然后来到。蚊帐。把这哥们呢,拖到。这里。再投一遍应该没问题了,好,那这个时候他去读读读读它了吧。
25:03
好,我现在是debug状态了,对不对,好大家看看啊,我就点了,我先要北京。对了,但是但是我没有debug啊,他虽然解析了,但是我想看这个过程,嗯,怎么做呢,选择他刚才是好像debug失败了,为啥?因为他是不是当我们打开这个的时候好像就不行,对吧。好,我们再去。啊,别着急,然后呢,我们退出,我们再点一下可以来了吧,好我我们我们这样,呃,先把这个声音调小,哎,这没办法调小,只能调这里小,好再往下走。看一下是得到这个了吧,这是一整个个了吧。
26:00
好,然后接下来往下走。好,它改变后变成什么呢?是MP3去掉了吧,好,同学们,第八个你别小看,它特别的重要,为什么呢?因为你知道你的代码写的对不对,明白吗?明白吗?所以以前我作为一个初级程序员的时候,D bug真的是用了N多遍,所以他特别的重要,包括我们去做一个创新代码,网上你又找不到,那只能是自己写,就是你第8UG挨个条得看好。一点你看拼音和路径,大家仔细看一下,拼对了没有,是对了吧,好,然后往下走,这个是不存在,他才有这个贴梯啊,确实不存在的,这个我们是贴梯啊,好往下走他就拼了,这个是不是往下走开始他开始读了吧,是我点是点这个才进去,这里面其实我没有打断点对不对,好进去好是走这样走这。
27:03
好,接下来走,这好,他会应该。这个后来他应该读一行了。好得一行吧,这行,你看我这里欢笑,哎,我这里欢笑是不是三句啊,就他。好,My god一下子解决完了,我没有打断点,哎呀,后悔了哦,在这里应该打个断点,好往下走到北京北京去了啊,这只有一句了啊,一句我们也看看它怎么解析的,点击进去,好这个时候这个得到的是多少零,这个得到是多少九对吧?好,往后走满足了吧,好,这个时候。它数组它创建多多大二是不是啊,是不是二好啊,这个这个的话一句的话没啥意思,他一下子解决好了,根本里面都不进来,他他进来过后,你看直接就是这勘探的直接就是内容了,看到没有根本没就他不会走下面了,因为这个地方你看他直接就是负一了吧,就不会走里面了,那直接就就得的一句了,就没啥意思,我们重新来,呃,我我要。
28:19
你看关闭。然后呃,在这里。点赞点进来好,然后选他。好,那我要点北京,北京好大看好拿走喽,好前面都几bug了对吧。好。我来了,这个是是我这里欢笑这三句吧,好,往里面走,这是他创建了多少句啊,四句吧。好,那上去过后。
29:00
这个时候这个线这个里面是有多少,是有三句啊,现在截段要得到这部分对不对,这部分好大家看一下,这是它这个地方,它得到的是。是这个毫秒吧,那接下来他把这个要转合为毫秒吧,好,我们看一下这个工具它怎么做的,因为我是在这里打,多锻炼走。然后的话呢,刚好打到这个位置了,他跳过去了,好往下走,好,那走过后现在content是不是还是三句啊,那这个时候它截段前句好,这个content变多少了,少一个时间了,好再往下走。这个得到的肯定是,这里面得到的是应该是零吧,这应该得到是多少九再往下走,满足肯定能能进来吧,好,接下来看到你又是200,他要取取什么呢。
30:03
取我们的直播内容。就内容对吧,然后再点进去。你看他就开始处理,就是挨个去切吧,他也就是这么切啊切啊,最后呢,拼起来拼起来。好好,这个时候大家看一下数组里面有四个,四个的话有两个有内容,好吧,变成这样转成这样的子啊,往下走往走,然后再第变好这个时候C变成多少了,只有一个了,好再解析,再解析好再解析好再看一下啊好,这个时候我们再来看一下这个根content编程是。
31:01
一个了,好,接下来再往下走,看现在变成变成多少了,是不是在这方向了,好那么往下走他就进不来了,从此以后好接下来他三解,解了几个,解了三个,看到没有三个刚好有三句啊是多一个是我们不搭理它,好因为因为它默认,你看大家看一下,这根本如果没有值,但它默认多少为零呢?是不等于零,我们就要去去去处理啊,就是说不等于零,你看,所以为什么判断不等于零呢,对不对,是原因的,好然后去挨过几家,好这里面这个集合里面是有,有了这个数据啊,我再分下时间点,那这个休眠时间有吗?没有对吧,然后添加进去,好接下来这个集合里面是刚才被我们添加有一个长度了,只有这个,对不对,但是休眠时间也没有啊,这是第一句。我再。
32:01
在欢笑,接下来第二句应该也是我这里欢笑吧,好,然后,但是时间是不一样啊,大家看一下有两句啦。是都是五代方向,但是时间你看一下是不一样啊,是不同的时刻唱的呀,好然后再往下走,好然后往下走好你看一下这里面的话呢,第三句了,对吧,三句好,第三句是不时间不一样啊,好第四句但是他没有机会进来了,是不是好接下来往回走往回走。循环好,接下来讲下下去了,这这个这我们打断你到这来是不是刚开始还是解析异常啊,是他结婚很多很多啊,我们是不没有空搭理了,直接到排序这里,好,但是他还会进来,我就把这断点取消掉好好他还会进来,直接把一个蹲点取消掉,好这哦,到这里来了,看到没有排序了啊排序那刚才的这个是就是这么一个集合,总共有多少句啊,现在16句是不是啊,你看哇塞,这么多我在这里欢笑,我在这里哭泣,你看北京美女看按这个顺序来啊,但是还没排好序对吧,那接下来我在这里欢笑,我看正大区在哪里啊,我这里欢笑欢笑,嗯,然后的话呢,是吧,好,然后接下来往下走,好这。
33:43
来他排有序,排有序过在计算啊这个这个哦,一进来过后,他排有序了,这个他们去看的时候已经排有序了,那在在没有这个资金之前才没有序,没没有还好吧,好接下来来计算回去回去好这样的话呢,好就看这个过程了,就这么解析的,所以的话,大家看到了,你看就可以往前走了,好看啊。
34:14
这个你看吃鸡吧,泣是吧,是不是是真的,同学们就解决好了,对不对,所以解析歌词。他用到的钱是我们是之前学的教教基础吧,对不对,特别的简单,但是呢,你会发现如果你不熟的话,就特别的复杂,对吧,他挨个算诶错一个东西都不行。你你把这个改为比如说你随便改一个都有可能没说错,当然你不用怕,你你怎么办呢?第bug调大家一要学会,第八个我在第一次选的歌词的时候,你知道吗?跳了N多debug,然后然后debug后就知道它的原理是怎么个流程了,就debug才知道的,你看代码可能看不懂。
35:15
一样,第八个一遍跟一遍跟,哎,哦,原来是这么解析的,又可以改了,知道吧,好,那同学们,这就是我们解析歌词对吧?好,就是解析每一句歌词搞定了好把。
我来说两句