没有合适的资源?快使用搜索试试~ 我知道了~
首页[Android][frameworks][HIDL]使用HIDL新建虚拟HAL以实现system_server与native进程双向通信(三)——JAVA客户端
前言 在上一篇中已经完成了服务端的集成,手机软件此时已经可以自动启动服务端,且运行无异常。 接下来我们就要实现我们的终极目标了:system_server(JAVA端)与服务端相互通信; 预处理 首先先解释下一个“玄学”的情况:在前两章的操作完成后,我们不需要添加任何JAVA类,即可直接使用; 究其原因,是因为在我们之前使用hidl-gen的时候,生成的Android.bp中包含这个字段: hidl_interface { ... gen_java: true, } 字段定义与实现可在这里查到:/system/tools/hidl/build/hidl_interface.
资源详情
资源推荐
[Android][frameworks][HIDL]使用使用HIDL新建虚拟新建虚拟HAL以实现以实现
system_server与与native进程双向通信(三)进程双向通信(三)——JAVA客户客户
端端
前言前言
在上一篇中已经完成了服务端的集成,手机软件此时已经可以自动启动服务端,且运行无异常。
接下来我们就要实现我们的终极目标了:system_server(JAVA端)与服务端相互通信;
预处理预处理
首先先解释下一个“玄学”的情况:在前两章的操作完成后,我们不需要添加任何在前两章的操作完成后,我们不需要添加任何JAVA类,即可直接使用;类,即可直接使用;
究其原因,是因为在我们之前使用hidl-gen的时候,生成的Android.bp中包含这个字段:
hidl_interface {
...
gen_java: true,
}
字段定义与实现可在这里查到:/system/tools/hidl/build/hidl_interface.go,在此先不讲解,后续有时间再补上:
JAVA代码代码
添加Android.bp依赖:
static_libs: [
"vendor.zsui.hardware.example-V1.0-java",
]
核心代码:
import vendor.zsui.hardware.example.V1_0.IExample;
...
try {
IExample example = IExample.getService();
Slog.d("ZSUI", "example HELLO WORLD result = " + example.helloWorld("ZSUI"));
} catch (Exception e) {
e.printStackTrace();
}
...
需要注意一点,在vendor.zsui.hardware.example@1.0-service.rc中我们定义该服务的类别为HAL(class hal),这会导致它
的启动可能比system_server中的核心服务(AMS/PowerMS等)晚,所以实际使用中需要做容错判断;
至此,一切似乎都处理好了,编译也通过了,是不是可以看到Hello World了呢?
02-26 12:33:21.407 449 449 W hwservicemanager: getTransport: Cannot find entry vendor.zsui.hardware.example@1.0::IExample/default in either
framework or device manifest.
02-26 12:33:21.407 1467 1574 W System.err: java.util.NoSuchElementException
02-26 12:33:21.408 1467 1574 W System.err: at android.os.HwBinder.getService(Native Method)
02-26 12:33:21.408 1467 1574 W System.err: at android.os.HwBinder.getService(HwBinder.java:91)
02-26 12:33:21.408 1467 1574 W System.err: at vendor.zsui.hardware.example.V1_0.IExample.getService(IExample.java:48)
02-26 12:33:21.408 1467 1574 W System.err: at vendor.zsui.hardware.example.V1_0.IExample.getService(IExample.java:52)
02-26 12:33:21.408 1467 1574 W System.err: at
com.android.server.am.ActivityManagerService.bootAnimationComplete(ActivityManagerService.java:8246)
02-26 12:33:21.408 1467 1574 W System.err: at
com.android.server.wm.WindowManagerService.performEnableScreen(WindowManagerService.java:3495)
02-26 12:33:21.408 1467 1574 W System.err: at com.android.server.wm.WindowManagerService.access$1100(WindowManagerService.java:272)
02-26 12:33:21.408 1467 1574 W System.err: at
com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:4975)
02-26 12:33:21.408 1467 1574 W System.err: at android.os.Handler.dispatchMessage(Handler.java:106)
02-26 12:33:21.408 1467 1574 W System.err: at android.os.Looper.loop(Looper.java:193)
02-26 12:33:21.408 1467 1574 W System.err: at android.os.HandlerThread.run(HandlerThread.java:65)
02-26 12:33:21.408 1467 1574 W System.err: at com.android.server.ServiceThread.run(ServiceThread.java:44)
这个是由于Vintf机制要求,需要在manifest.xml中声明这个HIDL,因此将如下内容添加到对应文件中即可:
在device///manifest.xml或等效的位置添加:
weixin_38535364
- 粉丝: 11
- 资源: 923
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功