以下步骤是操作MainActivity类

1、导入包

  import android.os.ILedService

2、添加成员变量

  private ILedService iLedService = null;

3、在OnCreate中对上面新增加的成员变量赋值

  iLedService =ILedService.stub.asInterface(ServiceManager.getService("led"));

4、使用它:

  iLedService .ledCtrl();

安装以上操作编译应用程序的时候会出错,提示找不到android.os.ILedService,原因是该接口文件被android系统声明为一个隐藏类,可以看到系统生成的ILedService.java中有个hide说明,其不能被导出去给应用使用,那么怎么才能使用这些隐藏类呢

使用mmm frameworks/base show commands>log.txt 2>&1重新生成ILedService.java,查看日志看起涉及哪些文件,看到最后发现其会生成一个framework.jar,那么是否是包含这个jar文件,结果是不行,因为framework.jar是dex格式,其是Android对源代码优化后的格式,而我们在编译的时候需要原生态的文件。

怎么去使用Android SDK with Hidden and internal APIs available(隐藏接口和内部api接口)

A、包含什么

out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classer.jar复制出来导入到应用工程

B、怎么包含

使用Android Studio->File->Project Structure->点击右上角的“+”号->Import .JAR/.AAR Package->选择classer.jar

接着使用Android Studio->File->Project Structure->在左边目录中选择我们的app,在右边会出现点击Dependencies->点击右边的“+”号,选择Module dependency->选择classer,ok

重新编译解决了找不到android.os.ILedService的问题

现在又出现找不到ServiceManager,输入import android.os.ServiceManager  再次rebuild project,提示一些代码必须处理某系异常,选中指定的代码,按下CTRL+ALT+T,在选择try/catch,会自动添加处理异常

再次编译

出错:android studio java.lang.OutOfMemoryError:GC overhead limi exceeded

解决方法:在build.gradle中添加dexOptions{javaMaxHeapSize "4g"},工具会提示你“sync Now”同步,点击它

再次编译

出错:android studio Too many method references

解决方法:首先在build.gradle中的defaultConfig中添加一句“multiDexEnabled true”

     在build.gradle中的dependencies中添加一句“compile ‘com.android.support:multidex:1.0.0’”

     修改AndroidMainfest.xml文件在application字段中添加android:name = "android.support.multidex.MultiDexApplication"

     点击syncNow后编译运行

6.3 Android硬件访问服务APP代码的更多相关文章

  1. 2.Android硬件访问服务编写系统代码【转】

    本文转载自:https://blog.csdn.net/qq_33443989/article/details/76696772 版权声明:本文为博主(Tower)自学笔记,欢迎转载! :-)     ...

  2. 6.1、Android硬件访问服务之框架

    1.通过前面led点亮的例子,其流程如下 Android app(java)(通过loadLibrary)——>C library(C库做如下事情)——>1.JNI_Onload 2.jn ...

  3. 6.4 Android硬件访问服务编写HAL代码

    JNI向上提供本地函数,向下加载HAL文件,并调用HAL的函数: HAL负责访问驱动程序执行硬件操作 JNI和HAL都是用c语言或者C++语言编写的,JNI加载HAL的实质就是使用dlopen加载动态 ...

  4. 6.2、Android硬件访问服务编写系统代码

    1.实现接口文件给App使用,接口文件是应用程序查询获得服务时获得 使用AIDL(Android接口定义语言)来实现ILedService.java接口 定义ILedService.aidl inte ...

  5. 6.5 Android硬件访问服务使用反射

    1.前面的例子中App为了能够范问ILedService接口,把classes.jar导入到应用程序中,但是我们不想把classes编进apk包里面去,这样导致我们的apk程序会很大(解压缩apk会发 ...

  6. Android硬件访问服务中的HAL-查看打印的信息

    JNI  向上提供本地函数,向下加载HAL文件并调用HAL的函数 HAL 负责访问驱动程序执行硬件操作. external\chromium_org\third_party\hwcplus\src\h ...

  7. LED硬件访问服务(2)——JNI/HAL

    一.系统编程 1.SystemServer.java类中提供了main()方法,说明它是以一个进程的方式存在的,启动后直接执行其run() 2.注册服务ServiceManager.addServic ...

  8. 硬件访问服务学习笔记_WDS

    1.Android驱动框架App1 App2 App3 App4-------------------硬件访问服务-------------------JNI-------------------C库 ...

  9. 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务(老罗学习笔记5)

    在数字科技日新月异的今天,软件和硬件的完美结合,造就了智能移动设备的流行.今天大家对iOS和Android系统的趋之若鹜,一定程度上是由于这两个系统上有着丰富多彩的各种应用软件.因此,软件和硬件的关系 ...

随机推荐

  1. Android学习笔记进阶20 之得到图片的缩略图

    <1>简介 之前往往是通过Bitmap.Drawable和Canvas配合完成,需要写一系列繁杂的逻辑去缩小原有图片,从而得到缩略图. 现在我给大家介绍一种比较简单的方法:(网上有) 在A ...

  2. [ Java ] [ Eclipse ] 加速 Eclipse 載入速度-轉載

    加速 Eclipse 載入速度-轉載 https://read01.com/NJjNOB.html

  3. 设置https验证方式

    if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))

  4. deep-in-es6(六)

    箭头函数 Arrow Functions 箭头函数在JavaScript诞生是就存在,JavaScript建议在HTML注释内包裹行内脚本,这样可以避免不支持JS代码的浏览器将JS显示为文本. < ...

  5. JavaScript--数据结构与算法之二叉树

    树是一种非线性的数据结构,以分层的方式存储数据. 二叉树:查找非常快,而且二叉树添加或者删除元素也非常快. 形象的可以描述为组织结构图,用来描述一个组织的结构.树是由边连接的点组成.树的一些基本概念: ...

  6. NewtonSoft对象转json时,把 NULL 转 "" , 过滤 NULL, DateTime 时间类型去除 T

    IsoDateTimeConverter timeConverter = new IsoDateTimeConverter(); timeConverter.DateTimeFormat = &quo ...

  7. 在Xampp中添加memache扩展

    1.首先下载phpmemcache,地址为: http://up.2cto.com/2012/0522/20120522094758371.rar 解压下的文件,解压后有以下文件: 接着以管理员身份打 ...

  8. linux6.0系统如何安装portmap

    因为在6.0的系统里,portmap已经改名了.在Redhat或CentOS5中可以使用 service portmap start启动服务,然后在启动nfs服务,实现挂载. 6里面可是试试 serv ...

  9. Windows 98 二十岁了,这些功能都是从它开始的(虽然 Windows 98 不如 Windows 95 那样具有革命性,但完成度更高,更加成熟。到最后还是:相见不如怀念。)

    1998 年 6 月 25 日午夜,美国著名连锁零售店 CompUSA 门外挤满了狂热的消费者和媒体,他们在等待一款软件发售:Windows 98,即使明知它要到当天早上才正式上市. ▲ 在 Comp ...

  10. 【编程】概念的理解 —— socket

    socket:A socket is something into which something is plugged or fitted (also called a receptacle). A ...