1.定义硬件访问服务接口
framework/base/core/java/android/os/IFregService.aidl
![](https://img.haomeiwen.com/i10649299/896146fc43b3cd2c.jpg)
添加aidl文件到编译脚本文件中
修改文件路径:framework/base/Android.mk
![](https://img.haomeiwen.com/i10649299/b6217d0459ed7341.jpg)
2.实现硬件访问服务
framework/base/services/java/com/android/server/FregService.java
![](https://img.haomeiwen.com/i10649299/6423fd74d8307b22.jpg)
![](https://img.haomeiwen.com/i10649299/f23109f9b890b9a8.jpg)
3.实现硬件访问服务的jni方法
framework/base/services/jni/com_android_server_FregService.cpp
JNI方法编写完成之后,还需要在framework/base/services/jni/onload.cpp文件中,增加register_android_server_FregService函数的声明和调用。
![](https://img.haomeiwen.com/i10649299/3f0e1238d9e93b28.jpg)
最后,修改framework/base/services/jni/Android.mk来编译新增的com_android_server_FregService.cpp文件。
4.在系统进程System进程中启动服务
framework/base/services/java/com/android/server/SystemServer.java
![](https://img.haomeiwen.com/i10649299/aa7102dac9a55006.jpg)
硬件服务FregService注册到Service Manager之后,它的启动过程就完成了。
5.Android应用程序访问硬件服务
fregService=IFregService.Stub.asInterface(ServiceManager.getService("freg"));
网友评论