00:00
想我们是不是已经相当于这个架构基本就做出来啦,那就差把本地视频给显示出来了吧,标题有了,这个有了,那接下来中间这边是历史入就可以了,是这个地方不用管了,因为它已经有了,好,那也就是说同学们,我们只需要在我们的这个里面。在我们的这个。本地视频这里面把这个特殊文本改成隶书就可以了吧,好,那在改之前呢,我们把先把代码提交一下,大家可以看对吧?好,那么点击提交,OK,那这个文本我们是可以干掉了,干掉。啊。干掉好,这个时候呢,我们就把它。变成是一个线性布局啊,把它变成是一个历史入了,所以我们可以直接录一个历史入,所以也可以啊,但是有一个问题就是以后我们家里是不是还有个圈圈呢?执行律师任肯定不行啊,这要写个布局对不对?
01:00
那也就是说我们要去做成这样的一个效果。早上好,点击。诶,这这这个这么快啊。这哥们太快了。那也就是说。这样我退出。退出过后点击。啊,挺快的,那也就是说。那也就是说,如果刚加载的时候有没有圈圈呢。是不是或者是没有视频要提示吧,好,那也就说我们地方里面呢啊,就要去外面套一个相对布局,里面有隶view,有progress,有test文本,是不是这样的呀?好,那么view in,第一个是上下文,这个是R点雷out。是哪个,下面这个吧,然后就是我们要讲的video可是吧。
02:02
好,然后有个后把这根们呢,除法给它呀,对不对,好把它给串出来。好用什么布局啊,好用的布局。好,那么它要填充铺装题,然后接下来我们应该历史又把。好。是的,六平方体平方体。然后注意加上这个这个的话呢,有一个好处就是在低版本的时候呢,你按的话不变不变色知道吧,像这个在高版本的话可以忽略了。然后ID写一下LV,然后v do啊,这LV就是历史V的一个简称,我们就是v do理解是吧,一个就是用,然后这地方里面有一个text文本。
03:03
测试文本,这个文本的话呢,在我们地方里面啊,包括包裹,然后就说如果是没有视频的话,就告诉他没有找到视频吧,没有找到视频。然后派十的一个颜色应该没应该是黑色吧,好。好,黑色,然后T的一个size应该是18个P。然后TV。这个ID,然后。TV,然后是no media,就是没有没有这个多媒体信息,就是没有视频。用音频我们也要用它呀,所以的话呢,叫这个名字。好,那么有了后,同学们在我们这个地方里面的话呢,它是在副窗体居中吧。
04:06
是不是啊,我去。好,那这个时候呢,大家可以看一下这哥们呢,就是这样一个样子,那么没有的话要刷新一下。看一下刷新。这个地方里面。我直接看这我就。对呀。看到吧,好,所以呢,再来到这里,应该就它也有了是吧,好,那有的客户是这样的一个效果啊。那如果是没有视频的话,是把这些历史隐藏,把这个显示出来,好注意它还有一个。改为SPA。
05:00
然后这个时候呢,就是我们的加载都顶的是吧,好这个圈圈呢,也是这样子,这个背景呢,不需要也这个大小也不需要。是这样子的。好,那这个时候改一改是吧,PB对不对,好,那有的是,接下来把这三个门实力画出来啊。好,那实例画出来,我们的方里面就把它给实例画出来,怎么实例画呀。先把它给定义出来吧,好,一个是list view对吧,好,这是一个,还有一个是text。TV,然后me是吧,好,然后还也是一个PB。一个楼顶是吧。
06:00
好,那么分别把它实例化,注意实例化的话呢,一定要用用啊,没用的话会什么会会控制异常对吧?好。然后这个时候就是LV这个把那个强制类型转换吧。好。然后的话呢,总共有。这个这个。View,它等于id.ID点击空间,然后把它给强制类型转换。然后再把这个。六等于YD8.id这个。是吧,好把那个强制类型转换一下什么问题吧,是相当于把这些实例化了吧,接下来这个地方里面是用来请求网络,是请求我们的网络的。
07:01
或者是加来本地的吧,好,那注意了,我们本地的视频是有可能很多啊,这时候我们很多的话能在主建成吗?啊不能对吧,这个时候我们就应该在子线程。一下这个方法。是不是用了这个方法之后,六一个什么六一个子线程。哎,那的,然后。括号start。这里面把我们的乱方法写在这。对吧,好,那这个时候我们去加载本地的视频了吧。好,那本地视频它是怎么回事呢?是这样的,在我们手机SD卡里面有很多视频和图片,有个叫媒体扫描器呢,它会把这些信息扫描收集成我们的数据库中。那数据库的话,有它有视频的一个列表啊,就视频的一张表,有音频的表,有图片的表,那这时候我们要到视频的表去读就可以了,对吧,那么这个时候呢,他就通过我们的内容启用者。
08:09
的,就像我们联系人一样,大家知道吧,人是不是我们可以。呃,可以去读取它的数据啊,多媒体的信息也一样,知道吧,好,那这个时候呢,我们就可以去获取的这个信息。好,那这个时候我们就怎么去获取呢?这个地方里面就是首先拿到我们的一个get,我们的content。然后它返回的就这个个吧,好,其实这个门就相当于一个上下文,对吧,好诶这个好。那有那过后它这里面有个方法叫查询好,这里面查询过后呢,我们用这个方法。第一个参数,注意第一个参数就是我们的视频的那个扫描的路径。
09:02
好,那这个是UI吧,好UI,然后我们把它给。放置出来。好,然后等于me看到没有里面啊,存储里面有一个。Video,然后呢,Video,然后注意有内部和外部,看到没有,这是外部存储吧,内部是吧,就是我们手机内部就是外部,就指的是我们SD卡外部存储的。好。那么我们呢?去用它就可以了。第二个参数。是什么呢?就是我们关心的。列,就是说我们关心这个表里面的名称呢,还是关心什么,知道吧,好,那么我们关心的是什么呢?好给大家给创建出来。
10:00
好。我们关心的是它的名称,好,也就是拿这个复制过来。卡,一个是在SD卡显示名称。啊。诶。在SD卡。显示的什么名称?所以就就说就是你SD卡的时候,这个视频名字叫什么,那么呢,我们就可以把它显示出来,就就是这个字段知道吧,好就相当于通过这个字段去我们的那个数数据工去查询好,然后过后视频是还有我们的。长度啊好,就这些。
11:00
好视频的。好,然后还有。视频的一个文件大小。视频文件看下,好,还有一个就是我们的播放地址。这个很重要。视频的绝对地址就是SD卡的地址,我们是拿到这绝地址才能播啊。好,所以这都要这些字段好把它存进去好后面的参数呢,都不都不用关心了,主要是这些。好,还有一个。好,明白了吧,它返回的是一个什么cos。See you。RSO,是吧,So,好。
12:01
怎么问题吧,所用过吧,好有了之后同学们在我们这个地方里面的话呢,好,首先要判断它不等于空,是有可能为空啊好,那如果不为空,好那就是不要循环,他就去看有没有下一个是不是啊好,然后我这个时候就可以得到他的这个视频的名称。第几第几个零个,接下来注意这场调到视频的弄类型,他是弄类型说get第几个,第一个第二个也是弄类型S。给他个。好地址是对,就是我们的实际类型,第三。
13:04
这问题吧,好,大家可以看一下它这里面什么类型看一下。就是类型是int,但是单位是吧。这个好。大家看一下它是论类型。啊,但是呢,它是什么毫秒,MS是毫秒来吧,好。这个有什么呢,是吧。好,这个就是我们的一个绝对播放地址啊,播放地址。好,那么有的时候我们。就是一个视频是包含这些信息啊,其实还有很多,只是我们只要这部分而已,明白吧,所以这个字段的作用在在在于干嘛。我只对我感兴趣的字段,那也就是说我把这些字段都放在一个对象里面吧,好,接下来就要创建一个什么。病是吧,这问题吧,一个包。
14:00
妹妹,这里面呢,我们去创建一个类,这个类叫媚点,是又包含视频又包含音频的,以后的话都用这个类叫may点。啊,没没一点就是我们。就是我们一个视频或者是一个音频,它的作用是代表一个视频或者音频好,那这里面他现在他有的字段,就就刚才那几个好内蒙。好,还有就是我们的,还有就是什么。还是播放地址吧。啊,这对吧,然后接下来把它的set get的方法修写一下。出近视选一下出进不选也可以吗?可以,只是我们到时候你bug的时候来打字的时候可以看到它的这字段,哪里学数据对吧。
15:10
好,那有了过后,我们地方里面这这时候一进来过后,我们就可以留一个留一个类是吧,好勾的方法我们不写可以吧。就默不默认自带一个构造方法嘛,对不对,好所以的话呢,不用担心。好,那接下来这里面就设置他的什么算是内蒙是不是,这里面设置谁求类型没问题吧,跟得上吧,算我们的。Size。是吧,接设置什么。好,那也就是说我们一会要把这些数据,每一个每一个的数据把它放到这个列表中吧,那是要最终这个列表是历史,又历史又识别的,是集合吧,所以我们还定一个什么集合。
16:12
你看这是都是我们之前学的了,对吧。好,这集合一定要在装之前使用吧,好,你在外面去六或在里面60都可以啊,但是一定要在用之前去溜对不对,好。然后有了过后,在里面挨个把它添加进去,把这个信息把把我们的视频添加到列表中,是不是ad。回来就可以了,好,那这个时候添加过后,我们能够在下面直接设置设备器吗。为什么?这是子线程,那这是不是切换到主线程去啊好,那这个时候我们就要去看了,在外面不管怎么样,我是都让你直线,如果你在里面是有可能不执行的。
17:10
好,所以的话,这样我们做完过后还不要忘了把它给什么。死掉吧,关掉好。那也就是说在。浪这里。我一定要把消息发出去,是这样的,看到的。好憨的,那这个憨的现在上没有啊,好,我们去把它给定义出来。憨德了,这个时候因为为什么用了啊啊为什么憨了同学们,是因为我们在在这个子线程里面,它是不能设置设备器,这时候既然你在子线不能设置是的主线层的,那你怎么切换过去啊。又憨着的是不是明白吧,好,这时候呢,他就发个消息,随便发一个是都可以啊,需要延迟发吗?随便发一个。
18:09
好,那这个时候就发货,他就在里面,这个时候执行就在那里主线程了吧,主线程主线程这个时候我们就可以设置适配器了吧,设置适配器对吧。好,那就是如果有数据,我就把它一次是不是没有数据是显示没有找到啊好,这个时候我就判断到美艾四,首先它不能等于二。并且这哥们呢的一个size它是大于零,这是就有数据啊好,那么我们的那个TV,这哥们要设置隐藏吧。隐藏啊,还有那个普是要也该,因为也数据已经OK了吧,好这个时候这个。
19:05
PB,然后也是设置要隐藏吧。好。警察。是不是啊,那么如果是没有数据。没有数据的话,那也就是说。这个时候。是都要隐藏啊,但是这个没有视频这个文本应该把它什么显示出来是不是。好,适配器应该是有数据在这里面是有数据吧,所以设置适配器好,这个时候LV。这个要设置我们的什么自备器。那四倍器我们去选的话就很简单了吧,好来这方里面class,好,我们就叫video video啊V这个理解的一个A带。
20:00
A,是不是这样的,继承贝是什么是吧,好,然后有那个后。把它给圈出来,那这地方里面过后呢,好同学们啊。我们就要去使用它了,好直接把它六是不是可以呀,好,那有的后这个总数就是我们的什么呀的一个什么。好在这里面是某一条啊,好,某一条长什么样子啊。是这个样子啊,那也就是说这个怎么做呢?这个一条注意这根线要是我们自己做的。啊,那也就是说这是一个高和宽60DP这么一个图片,那这个文本是一个限定布,这是一个限定布局啊,那这个是。啊,这个是一个啊,文本底部对齐对不对,好就可以了,好然后我们去做一做,然后等于多少啊那。
21:11
然后在地方里面它就对吧,上下文,然后r.lay out。我们叫什么名字啊,艾特。Video。黑雕黑。是吧,好他的一个艾呗,是不是这个为那。好,那有了过后一会肯定是返回它吧,好,这个把它给串出来,好,那像这样的同学们。用什么布局比较好啊,箱的布局,因为左边嘛,这个是右边底部嘛,对不对?好只能用箱的布局,用其他布局也可以,但是麻烦对吧。
22:01
好相对布局。能跟得上吗?同学们,跟上是吧,好,那这个时候。有了过后高应该是100往前10DP。对吧,宽的话也没问题吧,然后左边有一个图片好60个DP。好60DP好,这个时候呢,默认去设置它一个图片,这图片的话呢,我们看一下。在这个视频这里面,它不是有一个外面是有一个图片嘛,是吧,考不过来。好。Video。好,这个。余九,这个是不是有了?
23:02
好,那么可以给大家看一下。刷新。啊,那如果没有的话,我们在这个这个领域刷新。哦,少了一个DP,这哥们呢?不识别对吧,先有了吧。我们可以65大一点,65大一点。六六吧,好,然后他内部。应该是什么速度放进垂直集中是不是这样的,然后它距离左边。八个DP啊,是不是这样的话就好看了。然后有了过后呢,这个是默认的对吧,有这个图片,然后接下来我们定义一个。线性布局。宽包裹,高包裹。然后方向是什么。垂直方向对吧。
24:00
然后这个时候呢,上面是一个T文档。然后这个时候就是我们的这个文字啊,就比如说假如是个视频对吧,三个火枪手对吧?好,那这个文字的话,注意这个文字的话。是黑色啊好。这个是看的。黑色。黑色高贵是吧,123456。然后这个地方里面呢,T文字的大小好2P。好,然后有了过后呢,这地方里面也太大了。18。好在我们这个地方里面呢,好这个根们下就在它的右边呢,求谁谁谁的右边对吧?好所以的话我们ID还得选呢,本来想省略选个DV抗。
25:06
是不是还写了ID呀,要不怎怎么知道谁的前面呢,对不对,好,先ID,然后I。是跑到右边去了,好,然后有了过后,呃,文字大小,有了ID也写一下。TV,然后视频的名称。然后这个时候有了过后呢,这里面就有了这个信息,然后这个地方也得距离左边有个八个DP吧。好,然后有过后。复制下。就是这个门,你如果行数太多的话,是不是应该有一个叫做单行啊维对不对。好,谢谢。呃,其实就单行就行了,对吧。好,那有了过后把它复制一下。
26:04
下面的文字颜色要淡一点吧?对吧,那这个时候就是我们的一个这个是什么信息啊时间。是不是啊?其实就是就是。啊,其实这个时间应该是总时长吧,所以我们不能叫碳,应该叫勒,是不是时长啊,好,大家发现这个根本是不居中啊,好,内部。然后他。实际中。好,这哥们。啊。作用。那我看看啊。那就让他。
27:03
哦,这个呢。跑到下面来了。好,然后它是一个包裹包裹啊。他跑到下面这个跑到下面去了,我看看啊,他是在有没有在谁,只在他右边,没有在说下边对吧,那么也就是说。我们竖直方向。他内部已经水平了,你说作用。没有。啊行,那就是我们在这个内部里面如何干掉呢,干掉呢好。那我这样啊。啊,到时候我们运行起来再说,如果有问题啊,它有时候可能补丁号,那这样我们肯定本身它也太近了,我们是也要让它距离顶部有点距离啊好。
28:11
这个有八个DP啊,显得有点多了。然后蚊子呢,他们也太小了点。20这个16。这样子,因为这个是名称的嘛,要凸显他一点对吧。好,那这个时候呢。就做这样的一个事情。好。那有那个后。在它的左边啊,行,到时候我们运行起来有问题,我们再再看,当然我们也可以从这地方距离顶部有距离,到时候我们可以再调,对吧。好,这个时候注意了,在右下方有一个图片了。这个包裹。
29:01
这个是距离右边吧。好,那也就是说我们在地方里面右边是有张小。我没有,因为有个文本是不是好斯特。对吧,好文本的话呢,在铺上你的右边。是吧,然后我就说这个信息就是3MB大小啊。然后右边,然后他他不能在谁谁谁的。右边,然后这样。就跑到右边来了吧,对不对。好,那这个有了之后。
30:01
嗯,这个的话,SIC是这个要改一改啊好,这不是就是我们要把这个。改成是我们之前的另外一个图片。啊,这根本就没有图片吧,好。对,好,这时候搞定了吧,好,然后这里面再有一根线。所以它距离右边有距离,是不是应该底部一样有点距离啊好。Button。也要八个DP。啊,八个DPOK,好。嗯,在我们这个地方里面的话呢,我觉得是这个已经数字居中了,但是这个还不起作用,我们这样我们看看能否。内部,内部居中,相对于父亲居中。
31:02
你看这些。是消耗。应该在。就是这个居中。对,我想加上这个这个就可以了,这哥们都加上你看是吧。这样的话就好看了吧,好加上它这个明白吧,这个是不是针对于父亲竖直方向居中啊,好,这个不用管它,好还加上一条线。压线的话呢。我们可以做一个view,注意有的同学一不小心把这个写小写,我跟你说死活都放崩溃,你知道吧,他说找不到,找半天找不到,所以这个一量大写啊,有同学遇到这种问题没办法,这个。刚出江湖特别容易出错是吧,好。啊,找半天找不到他小写了。
32:00
他他而且报错,他就只报布局是吧,你不知道哪里错,因为有很难发现嘛,是吧。好,那么跟左边。有个。发个。Mark right。发个DP。然后这条线呢,注意了。这些的话应该是啊高的话应该是一个DP。宽的复状体,这没问题吧,然后背景要设为黑色。井号123456。是有了吧,在床底的右边。不是啊。有条线的吧,这线太黑了,应该把它。14,是不是这样的话,就就有了这条线了吧。好,那么我们去来到这里。好,那这个时候算进一个容器来开始要。
33:04
好,因为这个图片呢,我们用不着就就没有替换它,那就是只是这个。和这个三个,三个都是特文本吧,好,我们用谁就设置它是class hold test view。然后TV。是吧,还有一个特的六。好TV。一个size。是大小啊,这个好像。我们写了没有?这个是ID没有选呢,好,那这个时候呢,有了这信息,接下来是不是要把这个后的定出来用好的,然后把它给六一用。
34:06
好。在下面溜吧。然后这里面有一个TV name。这这个是怎么做啊,对ID是不是很熟了,同学们这些好。那就是一个TV内蒙吧。好,然后把它给成了转换,总有几个三个。好,然后三个TVTV的一个。哎,他们都长样是吧,好TV的一个size。好,不要忘了设置一个什么设置我们的。
35:00
好,那有set就有什么对吧。好,以后的它就等于这个去get我们的要强制性转换吧,好,那接下来这个时候我们就根据位置去得到我们的数据了吧,好,这个数据叫media item吧,好,根据这个集合去获取数据吧,这没问题吧。然后接下来我们去设置。名称。这很简单了,名称的话设置我们的。好,Media item get的name是不是好?这还有一个就是就类型。还有大小,我们先看大小。Set的一个。好,那这个刚才我们得的大小,刚才说了是贝吧,要转化这转化吧,好用这个工具好,第一个是上下文,第二个好就是我item,然后get我们的。
36:09
Size是不是好注意这个工具的话,它在记的时候不知道你们讲过没有。在对方里面,你看调查,调查过后大家看好,如果你纯新的是。如果BY的话,如果是BY的话,如果我们的这个在这块里面,你存进来的,如果是。这个值如果是大于900,它就总会为KB吧,KB如果你大于900,它总会MB,然后你大于900就总会GB,然后B还大于TBTB之间在硬盘很大了,然后接下来你还大于的话,就P是吧,P的话也就是大家看到的是做那个。做做那种云服务器的那种公司了,对吧,可以放很多片是吧?啊就可以把那个岛国啊韩国的片全部那个电视剧给装进来了,是吧,是不是啊韩国是吧?好,那有过后是不是这个地方还设置一个时间啊同学们这时间是转换了,因为我们这个是毫秒是方便转换一下,好我们这地方呢有一个工具。
37:20
有一个叫啊,这个工具用来干嘛嘞,总合时间的啊这个工具呢,我们直接拿过来。复制这是不是我们要插一个U包啊,创建一下四包。好,然后拿过来。好,那这里面有乱码怎么办呢?是吧,把这个复制。好,改一下包。是不是搞定了吧,好,那他就是把这个人把这样的毫秒转成这样的格式,是我们才能识别啊这个类,注意它是静态吗?不是,所以需要把这个门实例化吧,好来到这地方。
38:15
好,有了过后接下来。当构造方法一串的时候,是把它给什么列出来了,好,然后有了过后,同学们在我们这个地方里面就要去用了。你刚才好了吧。好。然后是一个size啊,Set我们tax啊,然后set我们的text,然后这地方你看它有个转换。把我们的充电器。里面去get我们的。把它给强转一下in可了吧。
39:00
好,那这个时候同学们你看很简单吧,其实好多东西都是学过吧,我们学的新东西是哪些啊?就是在这个地方里面,就得读取这个本地的这个什么。就得到本地的这个这个。这个音频这是新知识对吧,好,注意,如果是在5.0以上的模拟器。啊,需要加上这个权限。啊,加上一个权限,这个权限的话,我好像呃,叫做。好像是绿的。对,读取外部存储啊,加上这个权限知道吧,这权限就可以了,在在我的这个模拟器不需要好,那我们看一下同学们,我们来去把它运行起来。你起来。好,没有视频,那我们这确实没有视频,那我们要把它什么拖进去。
40:01
就是模拟器,你们尝试过往里面塞图片塞东西吗?没有是吧?好,同学们,我们要塞一塞了,这里面你看SD卡。里面这是SD卡吧,什么塞没有啊?好,同学们,大家看好我们怎么塞的?来到这里。这里面不是有个也是我们的资料里面对吧,好,你把这个目录。啊,大家看好。点赞啊,不用复制。你找到SD卡了吧,往里面。拖好哒哒哒。是吧,稍等片刻已进去了,对吧,好看一下。这是有有视频了吧,要过后大家看好这地方里面呢,我们把这个呢退出再点一下。怎么还没有啊好,没有的话是因为你看我刚才说了这个多媒体信息啊,它是什么时候扫描啊,在开机完成过后,还是SD卡插好过后,那我们再重启一下,其实没必要,这地方呢有一个工具。
41:08
就是。这里面有一个叫media。好点扫描,你不要点插入啊,插入的话增加就帮你做一些库啊,好,你就直接点扫描就行了。大家好。这里面的话呢,要退退出一下。就有了吧,对不对,有了过后,好我们设置点击事件呢,好尽快设置点事件播起来就结束了啊。好在我们地方里面。在地方里面到过后,我们这个时候呢,去点击事件在哪里设置啊在这里。好设置,点击事件。哦,是吧,这个吧。然后你点击的时候,我是得到每条信息啊好,这里面从这里面去根据位置去得到吧,那这时候我们呢。
42:08
可以这样子去启动系统播放器来播。点intent intent,然后等于一个intent。好,然后intent的话呢,去我们的。Date and time。好,我们的这个时候呢,就uri转换,就是把这个media里面的标成内蒙转换,然后类型的就是video。型号。这样的话呢,就他就什么,就发一个播放器播动视频的一个请求,知道吧,啊上下文,然后是大二条。好,那这个时候我们最终是得到它了。好,不均匀起来。好,这时候呢,就可以播起来啊,所以这时候我们播放器是没有了,但是呢,我们。
43:05
这个。别就是其他地方用别的播放器看到没有弹出来吧,好一点。特别点这个。起来啦。很快吧,是不是好点,它就得把边吊起来。啊,其实咱们也自己可以自己做一个播放器,很简单,很快就搞定了。对吧,要做要做吗?还是好好那么先保存一下啊,保存一下,这是我们的一个视频列表,就是视频列表的一个完成对吧。好。
我来说两句