💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
开发好硬件抽象层模块之后,我们通常还需要在应用程序框架层中实现一个硬件访问服务。硬件访问服务通过硬件抽象层模块来为应用程序提供硬件读写操作。由于硬件抽象层模块是使用C++语言开发的,而应用程序框架层中的硬件访问服务是使用Java语言开发的,因此,硬件访问服务必须通过Java本地接口(Java Native Interface,JNI)来调用硬件抽象层模块的接口。 Android系统的硬件访问服务通常运行在系统进程System1中,而使用这些硬件访问服务的应用程序运行在另外的进程中,即应用程序需要通过进程间通信机制来访问这些硬件访问服务。Android系统提供了一种高效的进程间通信机制——Binder进程间通信机制2,应用程序就是通过它来访问运行在系统进程System中的硬件访问服务的。Binder进程间通信机制要求提供服务的一方必须实现一个具有跨进程访问能力的服务接口,以便使用服务的一方可以通过这个服务接口来访问它。因此,在实现硬件访问服务之前,我们首先要定义它的服务接口。 在本节接下来的内容中,我们将为在2.1小节中介绍的虚拟硬件设备freg开发一个硬件访问服务FregService,它所实现的硬件访问服务接口为IFregService。接下来,我们就首先介绍硬件访问服务接口IFregService的定义,然后介绍硬件访问服务FregService的实现,包括它的内部实现以及调用硬件抽象层模块的JNI实现,最后介绍如何在系统进程System中启动硬件访问服务FregService。 > 1. 第11章将详细分析Android系统的系统进程System。 > 2. 第5章将详细分析Android系统的Binder进程间通信机制。