android添加hidl,android hidl
1、定义.hal接口文件,如:
在vendor/sprd/interface中新建目录hello,其中定义好hidl接口,如:
1 package [email protected]1.0;2
3 interfaceIHello {4
5 helloWorld(string name) generates (stringresult);6
7 };
2、利用hidl-gen工具生成通信框架及业务类模板
# [email protected]
# LOC=vendor/sprd/interfaces/hello/1.0/default/
# hidl-gen -o $LOC -Lc++-impl -r vendor.sprd.hardware:vendor/sprd/interfaces -r android.hidl:system/libhidl/transport $PACKAGE
# hidl-gen -o $LOC -Landroidbp-impl -r vendor.sprd.hardware:vendor/sprd/interfaces -r android.hidl:system/libhidl/transport $PACKAGE
这样在default下,可见新生成Hello.cpp Hello.h文件,此为我们将要实现的业务逻辑类
1 struct Hello : publicIHello {2 //Methods from ::vendor::sprd::hardware::hello::V1_0::IHello follow.
3 Return helloWorld(const hidl_string& name,helloWorld_cb _hidl_cb) override;4
5 //Methods from ::android::hidl::base::V1_0::IBase follow.
6
7 };8
9 //FIXME: most likely delete,this is only for passthrough implementations10 //extern "C" IHello* HIDL_FETCH_IHello(const char* name);
在Hello.cpp中实现之
3、运行业务逻辑,上面的Hello.cpp代码需要在进程中运行,所以需要新建一个
创建文件service.cpp、[email protected],
上面的业务类可以编译成so加载到此进程中,也可以把代码直接编译成bin文件运行。这里采取前者
bp文件如下:
1 cc_binary {
2 name: "[email protected]",3 init_rc: ["[email protected]"],4 relative_install_path: "hw",5 vendor: true,6 7 srcs: [ 8 "Hello.cpp",9 "service.cpp" 10 ],11 12 shared_libs: [ 13 "libcutils",14 "liblog",15 "libhidlbase",16 "libhidltransport",17 "libhardware",18 "libutils",19 "[email protected]",20 ],21 }
sevice.cpp:
1 intmain() {2 ALOGD("Hello hidl main()...");3
4 android::sp hello = newHello();5
6 configureRpcThreadpool(1,true /*callerWillJoin*/);7
8 if (hello !=nullptr) {9 if (::android::OK != hello->registerAsService()) {10 ALOGE("Error while registering IHello service");11 return 1;12 }13 } else{14 ALOGE("Can‘t create instance of Hello,nullptr");15 }16
17 joinRpcThreadpool();18
19 return 0; //should never get here
20 }
4、至此,命令行下启动[email protected]可执行文件,即可运行该hidl服务
5、测试文件:
1 intmain() {2 intret;3
4 android::sp service =IHello::getService();5 if (service ==nullptr) {6 printf("Failed to get service\n");7 return -1;8 }9
10 service->helloWorld("Trump",[&](hidl_string result) {11 printf("%s\n",result.c_str());12 });13
14 return 0;15 }
android添加hidl,android hidl相关推荐
- android 添加定位点,Android 高德基础地图定位、设置Marker、可视中心点实现步骤...
一.基础地图部分 1.获取APPKey 在高德地图注册开发者账号,然后创建应用,使用SHA1和PackageName得到Key image.png 创建应用 输入你的应用名称 选择你的应用类型 点击确 ...
- android 添加splash,$Android启动界面(Splash)的两种实现方法
(一)用2个Activity实现 用Handler对象的postDelayed方法来实现延迟跳转的目的. 补充:Handler的常用方法: // 立即执行Runnable对象 public final ...
- android添加imageview,android – 以编程方式将ImageView添加到Layout
我想创建从屏幕上方向下的图像. 到今天为止我有这个: ImageView mario = (ImageView) findViewById(R.id.mario); TranslateAnimatio ...
- android 添加黄油刀,Android Butterknife 黄油刀的使用
1.ButterKnife是一个由JakeWharton写的开源框架,它使用注解处理将属性和方法和View绑定,以生成模板代码. Eliminate findViewById calls by usi ...
- android添加语言,android如何添加一种新语言
前些时候,因为客户要求加波斯语,但是目前android2.3.1并没有这种语言,在客户要求一定要有波斯语的情况,经过长时间的摸索与在网上求助,终于将波斯语给加出来了. 下面讲讲新增加一种语言的步骤: ...
- android 添加so,Android studio 中添加 .so 文件
场景:Android studio 编译我的项目(项目中有运用的jni),编译没有报错,正常的安装到我的机器上,可是运行的时候就报错,没有找到*.so文件... 可是明明在libs,目录下有加相关的文 ...
- android 添加todo,Android程序ToDoList增加配置项页面
2 Intent和Activity Android应用程序的三种核心的组件:Activity,Service, Brocast Receiver.这三种组件互相或者内部进行交互的消息就叫做Intent ...
- android 添加异常,android – 坏标记异常 – 无法添加窗口(Marshmallow – 浮动工具栏)...
我一直在努力寻找这个例外的原因有一段时间,我从来没有能够重现自己,但我的一些客户正在体验它.它只发生在 Android 6.0.1上,由于SDK本身的崩溃发生,很难弄清楚它是如何发生的. 关于这个问题 ...
- android添加横幅广告,Android关于横幅banner广告的实现
前言 前些时间在接入一个广告sdk,遇到了一件很棘手的事情,就是接入banner广告展示时,通过sdk提供的接口,只能够获得广告展示的数据,如图片,详情,标题等内容,并不会直接通过设置参数,把具体的内 ...
- android中menu菜单扩增_【已解决】Android添加Menu菜单
[背景] 想要在Android中添加Menu菜单. 目前已经有了menu的xml定义了: /res/menu/activity_main.xml android:id="@+id/menu_ ...
最新文章
- java转换CSV文件生成xml格式数据
- 《可穿戴创意设计:技术与时尚的融合》一一第2章 与可穿戴设备有关的故事...
- WPF 自定义控件的坑(蠢的:自定义控件内容不显示)
- 台湾国立大学郭彦甫Matlab教程笔记(13) 3D
- python二级考time库吗_学python第十七节:time库的学习
- 第42讲:scrapy框架的基本使用
- ccs加载out文件_类加载流程、类加载机制及自定义类加载器详解
- A Spy in the Metro UVA - 1025
- 软件测试--缺陷报告
- 腾讯离职领导的建议:如果可以,去做大数据,不要做报表
- Windows2008管理---第12章 终端服务器
- 软件版本控制Subversion和Git
- import pymysql 没有模块_python模块与包
- MFC之学习绘制矩形、画刷使用
- 行政界线类型代码_行政区划代码的代码表
- 美团java后端_美团笔试题(Java后端5题2小时)(示例代码)
- Vue中el-table追加行后固定列滚动错位问题
- ROP Emporium ret2csu
- 根据快码的类型获取快码Lookup Code设置
- kali 安装搜狗拼音
热门文章
- php window.onload,tp_window.onload+相应操作
- 关于map对key自定义排序
- c语言程序编写一朵花,一朵花(中英双语)
- 字符串格式化成时间格式_JAVA | 常用的日期/时间格式化方式
- 谷歌浏览器怎么设置中文
- 腾讯视频电脑版下载_腾讯视频~如何用腾讯视频
- js将中文转换成编码 java解析_JS实现的汉字与Unicode码相互转化功能分析
- 什么是Eureka? 单机版Eureka如何使用?
- @RequestParam详解
- python内置函数详解总结篇_Python内置函数详解——总结篇