00:00
我们要做另外一个功能。就是我这个里面呢,有一个非常非常简单的一个界面。来看它这中间这界面上有个按钮。电话一来了以后吧,我点击这个按钮可以吧。电话给他挂断。啊,是做这样的一个工作。那先要跟大家有一个说明,就Android里面并没有提供一个公开结束通话的一个API。就像我们的平常启动activity service啊,这样的API没有。啊,如果需要结束通话,必须使用adl。与电话管理的服务进行通信。啊,并调用服务中的API去实现结束通话的方法。啊,这个地方就需要啊。SDK里面呢,提供给我们的一个AI文件。
01:02
这个文件呢,它已经定义好了,知道吧,服务也本来就是启动的。就说电话管理的服务早已经启动了。啊,我们现在就要通过AIDL来去做这样一个事。那个AI文件呢,我已经附在这里了,嗯,大家只需要来看到我来去做一下啊。先把这个基本工作一步一步给大家做一下来,右键六一个Android工程叫APP07,这个里面呢是remote remote service。把它写一下。Next next。好,Finish。
02:01
下面看着我,我把当前的这个文件呢拷贝过来。嗯,这一个文件是不是本来有一个包名呢。我们说过了,客户端的AI文件要跟服务器的aid文件。要同一个包名,包名是不能变化的。借一个猫咪。给他拖过去,但拖过去以后呢,发现还报错,报错是因为什么呢?他引入了一些其他的文件。这个文件呢,这些我们不需要用。哪里报错把哪个删掉。差不多啊,就是这个意思,来把这些删掉。把这个报错的都删掉。其实我们主要用一个方法跟大家说一下。叫挂断电话或者叫结束电话。
03:01
叫什么呢?N的括。对吧,按括号什么意思,结束一个电话呗,对吧,结束一个通话,嗯,我们主要用它好了,一旦不报错了。会有一个什么结果?是不是生成一个对应的通信类啊,或者叫接口对吧,嗯,就它。啊,它里面呢,有一个我们特别想要的方法。叫什么N的括方法?对吧。好,下面我们继续啊看着。这个里面下一步该怎么下一步比较重要。大家看到我啊,我们呢,现在是可以去调用一个看看啊,我把这些代码把那个前面的基存的先搞一下,这里面有一个八台。
04:00
有了吧,好,这个button呢,是叫。叫什么挂断电话?好,挂了电话呢,需要有一个on。叫我就叫sport,嗯,N吧,我也叫好,那我要把这个基本的行为跟他定义一下来,N Co呗,Public,他UV呗这一个东西吧。嗯,我要想办法去调用这个类的这个N的括号方法,这个怎么调了啊,这么调的I telephoneon类接口点tu点它这里面有一个这样的一个东西,好,现在啊,暂时我我这个地方它需要关键的是需要一个挨棒的对象。
05:03
对吧。这个I帮对象以前我们是不是通过那个连接对象得到的,但现在不需要连接了。嗯,给大家写一下,大家看啊,我基本上已经差不多了,我先把它这个空吧,我先把它这一空啊,我让它先产生,这里面不有一个I tiny空吗?Telephone这个telephone里呢,已经有这样一个方法了,叫什么方法呢?N的破方法,现在啊,他给你抛一勺,给他声明抛出,大家看这里。我就他们现在不知道怎么做。是吧,这个棒的冰箱。不知道怎么得。主关键就是它难度的地方就在这里。好了,我们来看一下PPT下面怎么说的。大家看着啊。这个时候这一个I棒的对象是从哪来的呢?这个题用了什么技术啊?
06:02
是不是反射啊,他在用哪一个类在做,叫service manager是吧,叫服务的管理器。啊,还是挺重要的一个类,你看Android o SOS不是系统的包啊,啊还还是挺重要一个类,核心的一个类来看一下,它看吸不泄气啊,什么核心的找都找不到。是吧?啊,这一个类呢,它被隐藏了。你直接看了看不见,就他自己在用,那怎么办呢?我来去找一下来看到我。这不有源码的吗?对吧,嗯,来我们来找一下啊。有那吗?大家哈,不同的还有不同里面那个这里为险有多个呢,是因为我们是有不同的版本呢,嗯,随便打开一个。
07:05
这个这个打开呢,大家,嗯,看的不是很明显,我要打开一个有写的注解的是最好的这个打开。这里面有一个注,有个注释。叫什么意思,隐藏?就这一个类呢,它被隐藏了。那你不能直接调用。但它里面有个很好的方法。是不是叫变service得到一个什么?I棒微笑,我不就需要一个I棒了吗?对吧,那关键是不被隐藏的话,我也掉不了啊。反射调用。你这个地方一定要通过反射去调用隐藏的API啊,其实这个才重要啊。
08:07
好,怎么个调法呢?首先我要得到这一个类的class对象吧,对吧,那怎么样得到这个类的class对象当说。是不是全国列名去得啊,得到隐藏内的class对象。嗯,大写的啊。看到class.for传一个旋律名,看看这个旋律名怎么简单。是不是他这是报名吧,点我的内名好了吧,返回一个美女吧。
09:00
好啦,得到拉以后。下面我要调用一个方法,需要得到什么。什么对象啊?这样得到方法所对应的埋的对象。是吧,怎么读呀?c.get me,好了。高化名。我到底要调用哪个方法呀?是不是get service?好get设是下面传参数类型是不是均点class啊好均点class。返回的就是一个method。不用管它啊,来我自己写一下。好了吧,好了,下面这个怎么做,是不是掉了麦手的呀。
10:02
啊,调用方法怎么调用呢?My evoke好了,这个地方需要传的第一个参数,知道是什么吗?就哪个对象去调用这个方法吧,大家想哪个对象呢。这个是一个静态方法,那静态方法还需要指定对象吗?不需要,那是第一个什么呀,No,好,关键是这一个给什么是吧。就这一个叫什么问题。好了,我跟大家说一下,系统里面有很多核心的一些服务,我们这一次用的服务呢,是这个叫T。Service啊,我先写一下,写上以后再给大家看啊。大家看看。啊,有telephone service啊,还有一些别的一些,比如说我看看大家有没有,有没有大家能看懂的。
11:02
什么WiFi的对吧,嗯,还有什么这个连接相关的。这个能干嘛呢?有一个呢叫connectivity manager,我们手机是不是有有联网状态的呀。对吧,甚至有你是连的是WiFi了,还是连接的是3G还是2G,对不对。通过它就可以去得到。系统里面很多不同的一些服务。这个地方必须指定那个服务的名称,这个是不用大家去记住,它里面必须的值,就是这个名称啊,这个常量。好,这个一个执行,它返回的是一个O键的,但是我们知道肯定返回的是什么类型,是不是这个类型呢?嗯,那我就可以把它定义成棒的类型呗。
12:01
好,那我把这个爱帮的传给谁呀?是不是传给这一个参数啊。就过去了吧,啊,这个地方应该很多异常,给他抛出去。这里面。接口这下好了,下面。是不是结束通话呀,结束通话,嗯,就看这意思好了。你挂断电话了,这个东西。它是一个比较重要的功能。大家爱用什么呀?权限。对吧,一个应用它随随便便就拥有了挂断电话的功能,那这个东西得声明一下。等一下,生病呢,来找找。看看大家能不能找到啊,大家觉得应该是什么方什么样的学院?
13:04
啊,Co是吧,有ABC Co啊。有一个叫N的方法,好像。Nice。没有吗?来,我随便先整一个看看啊,看有没有。哎,还真没有,这个叫什么呢,叫。啊,这个你看一下是一个打电话的一个权限是吧,那你结束通话啊,也需要他不或者这样没关系,你不知道是不是。不知道,先放着不写。报错再说是吧。这是必杀技,是在那好来啊,看到现在呢,我的应用已经启动了,我点击它。
14:07
I see。报错是吧,我就来看一下,有人说你电话都没打,你点个啥。那不是为了找出他吗?叫什么是不过呢,就是无论你去打电话还是结束通话。他其实都需要这个权限。没问题吧?嗯。好了,来,下面我们把它再运行一下。一会儿就要该打电话了啊。随便写一个。就开始播。我想听。
15:00
好,下面我想去挂断。关键这个咋整啊,这过不去呀。我我都我都没没诶查看是吧,看看能不能过去啊好看一下来点一下零七。就过来了啊,这是正在通话呀。好。挂了没有,是不是挂了了,嗯,挂上了。啊,这是这一个啊。其实也并不难,这里面主要大家要知道如何来去调用隐藏API的一些方法。就是反射,说白了啊。其他的都没有什么,太多了。
我来说两句