新增LED设备--从上层到底层理解安卓架构之APP篇
扫描二维码
随时随地手机看文章
点击上方蓝字关注我哦~
经过驱动、HAL、JNI、SERVICE一层一层精心浇筑,新增的LED设备调用接口终于可以被APP调用了。举个不恰当的比喻,就好像建造一座海洋石油钻井平台,从海底一段一段钢架、油管连接起来,最终在海面上建造出了一个平台(面向应用层的接口),从平台的接口(油管)就可以调用海底的石油了。现在就剩下制作一个APP去调用这个接口啦。
01
创建TestLedMangager.jar
由于led的这个接口是我们自己建立的,原来的安卓并没有,在as的工程中虽然导入了对应安卓版本的sdk库,但是库里并没有我们定义的这些接口函数。为了使得工程编译不报错,我们需要创建一个空的TestLedMangager.jar,内部的函数名与framework中的TestLedManager.java完全一致,但是不需要实现。APK工程编译时,调用jar中的函数,实际在设备上运行时,调用的是TestLedManager.java内的同名真实函数。
(1)创建一个JavaLibrary。New->New Module->选择Java Library
(2)包名填 android.app,LibraryName:TestLedManager,Java class name: TestLedManager把安卓工程里面的函数名都拷过来,函数内容留空。
TestLedManager.java的内容如下:
package android.app;
public class TestLedManager {
public TestLedManager() {
}
public void SetLed1(int on) {
}
public void SetLed2(int delay) {
}
}
(3) 编译生成TestLedManager.jar
生成的路径为APK工程/TestLedManager/build/libs。
02
导入jar并调用接口
(1)导入jar。将/TestLedManager/.jar拷贝到需要使用此接口的apk工程的lib目录下。
(2)As界面左侧的在libs下面TestLedManager.jar,右键选择AddAsLibrary
(3) 调用接口
创建EditText和两个按钮,分别调用两个led的操作接口。
TestLedManager tlm;
tlm = (TestLedManager)mContext.getSystemService("TestLed");
tlm.SetLed1(1);//led1开与关
tlm.SetLed2(freq);//led2设置闪烁频率
至此,我们通过一个简单的led灯控制demo,描述了安卓的层次,以及他们之间的关联。安卓就是由无数条这样由底层到上层的线,组合成了一个广阔的开放式平台,应用开发者在这个平台上开发出丰富多彩的APP。
各个层面的开发者,只需要大致了解层次的构成后,专注于本层次的开发即可。例如驱动开发工程质量,关于kernel层的驱动开发以及与HAL层的接口,framework系统开发工程师详细的了解framework中的各个组件,同时需要了解HAL的调用以及对应用层的接口,APP开发工程师熟悉安卓提供的sdk,并开发出最终面向用户的应用。
除此之外进阶的开发者还要有能力将一条线从底层到上层捋出来。
/ The End /
本文系嵌入式案例Show原创出品,未经许可,请勿转载。
扫码关注我们
看更多嵌入式案例
喜欢本篇内容请给我们点个在看
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!