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相关推荐

  1. android 添加定位点,Android 高德基础地图定位、设置Marker、可视中心点实现步骤...

    一.基础地图部分 1.获取APPKey 在高德地图注册开发者账号,然后创建应用,使用SHA1和PackageName得到Key image.png 创建应用 输入你的应用名称 选择你的应用类型 点击确 ...

  2. android 添加splash,$Android启动界面(Splash)的两种实现方法

    (一)用2个Activity实现 用Handler对象的postDelayed方法来实现延迟跳转的目的. 补充:Handler的常用方法: // 立即执行Runnable对象 public final ...

  3. android添加imageview,android – 以编程方式将ImageView添加到Layout

    我想创建从屏幕上方向下的图像. 到今天为止我有这个: ImageView mario = (ImageView) findViewById(R.id.mario); TranslateAnimatio ...

  4. android 添加黄油刀,Android Butterknife 黄油刀的使用

    1.ButterKnife是一个由JakeWharton写的开源框架,它使用注解处理将属性和方法和View绑定,以生成模板代码. Eliminate findViewById calls by usi ...

  5. android添加语言,android如何添加一种新语言

    前些时候,因为客户要求加波斯语,但是目前android2.3.1并没有这种语言,在客户要求一定要有波斯语的情况,经过长时间的摸索与在网上求助,终于将波斯语给加出来了. 下面讲讲新增加一种语言的步骤: ...

  6. android 添加so,Android studio 中添加 .so 文件

    场景:Android studio 编译我的项目(项目中有运用的jni),编译没有报错,正常的安装到我的机器上,可是运行的时候就报错,没有找到*.so文件... 可是明明在libs,目录下有加相关的文 ...

  7. android 添加todo,Android程序ToDoList增加配置项页面

    2 Intent和Activity Android应用程序的三种核心的组件:Activity,Service, Brocast Receiver.这三种组件互相或者内部进行交互的消息就叫做Intent ...

  8. android 添加异常,android – 坏标记异常 – 无法添加窗口(Marshmallow – 浮动工具栏)...

    我一直在努力寻找这个例外的原因有一段时间,我从来没有能够重现自己,但我的一些客户正在体验它.它只发生在 Android 6.0.1上,由于SDK本身的崩溃发生,很难弄清楚它是如何发生的. 关于这个问题 ...

  9. android添加横幅广告,Android关于横幅banner广告的实现

    前言 前些时间在接入一个广告sdk,遇到了一件很棘手的事情,就是接入banner广告展示时,通过sdk提供的接口,只能够获得广告展示的数据,如图片,详情,标题等内容,并不会直接通过设置参数,把具体的内 ...

  10. android中menu菜单扩增_【已解决】Android添加Menu菜单

    [背景] 想要在Android中添加Menu菜单. 目前已经有了menu的xml定义了: /res/menu/activity_main.xml android:id="@+id/menu_ ...

最新文章

  1. java转换CSV文件生成xml格式数据
  2. 《可穿戴创意设计:技术与时尚的融合》一一第2章 与可穿戴设备有关的故事...
  3. WPF 自定义控件的坑(蠢的:自定义控件内容不显示)
  4. 台湾国立大学郭彦甫Matlab教程笔记(13) 3D
  5. python二级考time库吗_学python第十七节:time库的学习
  6. 第42讲:scrapy框架的基本使用
  7. ccs加载out文件_类加载流程、类加载机制及自定义类加载器详解
  8. A Spy in the Metro UVA - 1025
  9. 软件测试--缺陷报告
  10. 腾讯离职领导的建议:如果可以,去做大数据,不要做报表
  11. Windows2008管理---第12章 终端服务器
  12. 软件版本控制Subversion和Git
  13. import pymysql 没有模块_python模块与包
  14. MFC之学习绘制矩形、画刷使用
  15. 行政界线类型代码_行政区划代码的代码表
  16. 美团java后端_美团笔试题(Java后端5题2小时)(示例代码)
  17. Vue中el-table追加行后固定列滚动错位问题
  18. ROP Emporium ret2csu
  19. 根据快码的类型获取快码Lookup Code设置
  20. kali 安装搜狗拼音

热门文章

  1. php window.onload,tp_window.onload+相应操作
  2. 关于map对key自定义排序
  3. c语言程序编写一朵花,一朵花(中英双语)
  4. 字符串格式化成时间格式_JAVA | 常用的日期/时间格式化方式
  5. 谷歌浏览器怎么设置中文
  6. 腾讯视频电脑版下载_腾讯视频~如何用腾讯视频
  7. js将中文转换成编码 java解析_JS实现的汉字与Unicode码相互转化功能分析
  8. 什么是Eureka? 单机版Eureka如何使用?
  9. @RequestParam详解
  10. python内置函数详解总结篇_Python内置函数详解——总结篇