分类: 嵌入式
2010-12-06 14:53:30
自定义Android核心服务实践
Daniel Wood 20101203
转载时请注明出处和作者
文章出处:http://danielwood.cublog.cn
作者:Daniel Wood
------------------------------------------------------------------------
参照参考文献及实例,实现自定义计算器服务CalService,服务提供加、减、乘、除四项简单运算。
主要分以下五个部分实现:
1) 服务CalService实现
文件:
CalService.h
CalService.cpp
Android.mk
2) 启动CalService服务
这里采用的方法是用一个C++的应用程序去启动服务,当然也可以修改Android的源代码,使得自定义的服务随系统的启动而启动(修改init.rc文件)。
文件:
addserverapp.cpp
Android.mk
3) CalService服务Bp端实现(封装)
完成对CalService服务的封装,提供JNI对服务的调用。
文件:
Cal.h
Cal.cpp
Android.mk
4) 实现JNI层,完成对底层CalService服务的调用,给上层java framework层提供服务接口(库)。
文件:
com_android_service_cal.cpp
Android.mk
5) 编写java应用程序调用CalService服务。
文件:
|-- Android.mk
|-- AndroidManifest.xml
`-- src
`-- com
`-- example
`-- android
`-- simpleservice
`-- CalServiceTest.java
主体目录结构
.
|-- addserverapp
| |-- Android.mk
| `-- addserverapp.cpp
|-- calservicetest
| |-- Android.mk
| |-- AndroidManifest.xml
| `-- src
| `-- com
| `-- example
| `-- android
| `-- simpleservice
| `-- CalServiceTest.java
|-- jni
| |-- Android.mk
| `-- com_android_service_cal.cpp
|-- libcal
| |-- Android.mk
| |-- Cal.cpp
| `-- Cal.h
`-- libcalservice
|-- Android.mk
|-- CalService.cpp
`-- CalService.h
在实现的时候我是将这5个文件夹放在源代码framework目录下面新建的目录myservice,其实可以随意放到源代码的任意目录,当然不要是out目录:-)