android开发-aidl的初步认识

这几天写项目用到蓝牙连接小票打印机,里面有个知识点就是用到了aidl,这个东西不太清楚怎么用的,是做什么的。

在慕课上学习了一下课程,大概也了解了一些。

首先aidl的使用场景,多线程、多客户端调用、IPC,这个IPC就不清楚是做什么的了。然后联想到打印机的这种使用情况,正好符合多客户端调用的场景。
这是我的理解,可能比较浅显。

aidl可以简单的理解为两个不同的进程需要交互,比如说应用a想复用应用b的一些功能接口,为了节省开发时间,提高开发效率。但是应用a是无法直接调用b的,这也是因为应用之间有这样的保护避免一些安全方面的问题。
所以,就用到了aidl,应用a通过系统底层调用应用b,应用b相对应的也要把复用的接口暴露给应用a。
这里我们把应用b当作服务端,把应用a当作客户端。

有一点需要注意,服务端和客户端的包名需要保持一致。

创建AIDL Folder文件夹,而不是普通的目录。

android studio创建客户端的aidl后,需要重新编译,才会生成接口文件供调用。

回到调用小票打印机这块,导入打印机技术方提供的sdk。创建aidl文件夹并创建aidl文件。

package com.gprinter.aidl;
interface GpService{  
	int openPort(int PrinterId,int PortType,String DeviceName,int PortNumber);
	void closePort(int PrinterId);
	int getPrinterConnectStatus(int PrinterId);
	int printeTestPage(int PrinterId);   
  	void queryPrinterStatus(int PrinterId,int Timesout,int requestCode);
  	int getPrinterCommandType(int PrinterId);
	int sendEscCommand(int PrinterId, String b64);
  	int sendLabelCommand(int PrinterId, String  b64);
	void isUserExperience(boolean userExperience);
	String getClientID();
	int setServerIP(String ip, int port);
} 

aidl的语法很熟悉,类似与我们的普通接口。支持基本的数据类型,不包括short。也可以自定义类型。上面的aidl文件中是调用打印机的一些方法。

具体调用和实现后续再做整理吧。

发布了139 篇原创文章 · 获赞 35 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/kanglovejava/article/details/98315843
今日推荐