AidConnect Android 接口文档
class AidConnect
SDK 核心类,负责初始化、通道生命周期管理及数据读写。
线程安全性:
initialize()、addChannelWithName()、removeChannelWithName()、aidConnectWithName()、release()方法使用synchronized保证线程安全;setBytes()、getBytes()系列方法未加锁,若在多线程场景下调用需由调用方自行保证同步。
@since V1.0.0
Public Member Functions
initialize()
java
public static synchronized AidConnect initialize(Application mApplication, boolean logDebug, AidConnectCallback aidConnectCallback)初始化 SDK,配置日志级别并注册初始化回调。采用单例模式,重复调用返回同一实例。必须在使用其他 API 前调用。
- 参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| mApplication | Application | - | 安卓 Application 对象,不可为 null |
| logDebug | boolean | - | SDK log 开关。true:打印所有级别日志;false:仅打印 error 级别日志 |
| aidConnectCallback | AidConnectCallback | - | 初始化结果回调,回调在 Binder 线程触发,若需更新 UI 请切换到主线程,不可为 null |
- 返回
| 类型 | 描述 |
|---|---|
| AidConnect | 返回 AidConnect 单例对象 |
- 注意
| 条件 | 行为 |
|---|---|
| mApplication 为 null | 打印日志并返回 null |
| aidConnectCallback 为 null | 打印日志并返回 null |
addChannelWithName()
java
public static synchronized Set<String> addChannelWithName(String name, int size)根据用户定义的通道名字和大小,创建通信通道,并返回所有通道名字的集合。
- 参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| name | String | - | 通道名称,不可为 null 或空字符串,需全局唯一 |
| size | int | - | 通道大小,单位为 MB,取值范围 > 0 |
- 返回
| 类型 | 描述 |
|---|---|
| Set<String> | 当前所有已创建的通道名字集合 |
- 异常
| 条件 | 行为 |
|---|---|
| name 为 null 或空字符串 | 打印日志并返回当前通道名称集合 |
| size ≤ 0 | 抛出 IllegalArgumentException |
| 通道名称已存在 | 打印日志并返回现有集合,不重复创建 |
removeChannelWithName()
java
public static synchronized Set<String> removeChannelWithName(String name)根据名称移除对应的通信通道,并返回剩余所有通道名字的集合。
- 参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| name | String | - | 要移除的通道名称,不可为 null |
- 返回
| 类型 | 描述 |
|---|---|
| Set<String> | 移除后剩余的所有通道名字集合 |
- 异常
| 条件 | 行为 |
|---|---|
| name 为 null | 打印日志并返回当前通道名称集合 |
| name 对应的通道不存在 | 返回现有集合,无副作用 |
aidConnectWithName()
java
public static synchronized AidConnect aidConnectWithName(String name)根据已创建的通道名字,获取管理该通道交互的核心类 AidConnect 实例。
- 参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| name | String | - | 已通过 addChannelWithName() 创建的通道名称 |
- 返回
| 类型 | 描述 |
|---|---|
| AidConnect | 对应通道的 AidConnect 实例,用于数据读写操作 |
- 异常
| 条件 | 行为 |
|---|---|
| name 对应的通道不存在 | 返回 null |
前置条件
必须先调用
addChannelWithName()创建对应通道。
setBytes()
java
public boolean setBytes(byte[] bytes)向当前通道写入字节数据。
- 参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| bytes | byte[] | - | 待写入的字节数组,不可为 null,长度不可超过通道大小 |
- 返回
| 类型 | 描述 |
|---|---|
| boolean | true:写入成功;false:写入失败(bytes 为 null 或空数组、通道未就绪、或数据超出通道容量) |
getBytes(int)
java
public byte[] getBytes(int len)根据指定的字节长度从通道读取数据。
- 参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| len | int | - | 要读取的字节长度,必须 > 0 且不超过通道中可读数据长度 |
- 返回
| 类型 | 描述 |
|---|---|
| byte[] | 读取到的字节数组;如果通道未就绪(如未初始化或已释放),返回 null |
- 异常
| 条件 | 行为 |
|---|---|
| len ≤ 0 | 抛出 Exception |
| 通道未初始化或已释放 | 返回 null(不抛异常) |
getBytes()
java
public byte[] getBytes()读取通道中上一次写入的全部字节数据(长度自动匹配写入时的长度)。
- 返回
| 类型 | 描述 |
|---|---|
| byte[] | 读取到的完整字节数组;如果通道未就绪(如未初始化或已释放),返回 null |
- 异常
| 条件 | 行为 |
|---|---|
| 通道未初始化或已释放 | 返回 null(不抛异常) |
getBytes(byte[], int)
java
public byte[] getBytes(byte[] bytes, int len)将通道数据读取到预分配的字节数组中,避免重复内存分配,适合高频调用场景。
- 参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| bytes | byte[] | - | 预分配的目标字节数组,不可为 null、不可为空,且其长度必须等于 len |
| len | int | - | 要读取的字节长度,必须 > 0 且必须等于 bytes.length |
- 返回
| 类型 | 描述 |
|---|---|
| byte[] | 填充数据后的字节数组(即传入的 bytes 引用);如果通道未就绪(如未初始化或已释放),返回 null |
- 异常
| 条件 | 行为 |
|---|---|
bytes 为空数组 | 抛出 Exception |
len ≤ 0 | 抛出 Exception |
bytes.length ≠ len | 抛出 Exception |
| 通道未初始化或已释放 | 返回 null(不抛异常) |
release()
java
public static synchronized int release()释放 AidConnect 持有的所有通道资源并销毁单例。调用后所有 AidConnect 实例不可再使用。
- 参数
无
- 返回
| 类型 | 描述 |
|---|---|
| int | 0:释放成功;非 0:释放失败(错误码含义见下表) |
- 错误码
| 错误码 | 含义 |
|---|---|
| 0 | 成功 |
| -1 | 通道已释放或未初始化 |
注意
释放后再调用
setBytes()/getBytes()将产生未定义行为。
setStateCallback()
java
public static void setStateCallback(RemoteSDKStatusCallBack remoteSDKStatusCallBack)设置服务连接状态监听回调,用于接收服务端状态变化通知。
- 参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| remoteSDKStatusCallBack | RemoteSDKStatusCallBack | - | 服务状态回调接口实例 |
注意
SDK 内部在初始化时已默认设置了回调实例,仅在需要自定义监听时调用此方法。
interface AidConnectCallback
SDK 初始化结果回调接口。
| 方法 | 说明 |
|---|---|
initCallback(boolean isInitSuccess, Set<String> keys) | 初始化完成时回调;isInitSuccess 为 true 表示成功,keys 为当前所有通道名称集合(失败时为 null) |
interface RemoteSDKStatusCallBack
服务端连接状态监听接口,用于接收 AidLux 服务的状态变化事件。
| 方法 | 说明 |
|---|---|
statusCallBackVisible() | AidLux 服务变为可见状态时回调 |
statusCallBackInvisible() | AidLux 服务变为不可见状态时回调 |
sendMessage(String message) | 接收服务端发送的消息 |
getAllFileDescriptors(Map<String, ParcelFileDescriptor> parcelFileDescriptorMap) | 服务端返回所有通道文件描述符时回调,标志初始化完成 |
serviceDisConnected() | 与 AidLux 服务断开连接时回调 |
使用示例
java
// 1. 初始化 SDK(返回单例对象)
AidConnect instance = AidConnect.initialize(getApplication(), true, new AidConnectCallback() {
@Override
public void initCallback(boolean isInitSuccess, Set<String> keys) {
if (isInitSuccess) {
// 2. 创建通道(10MB)
AidConnect.addChannelWithName("video_channel", 10);
// 3. 获取 AidConnect 实例
AidConnect conn = AidConnect.aidConnectWithName("video_channel");
if (conn == null) {
Log.e("AidConnect", "Channel not found");
return;
}
// 4. 写入数据
byte[] data = getVideoFrame();
boolean success = conn.setBytes(data);
// 5. 读取数据
byte[] received = conn.getBytes();
// 6. 移除通道
AidConnect.removeChannelWithName("video_channel");
// 7. 释放所有资源(静态方法)
AidConnect.release();
} else {
Log.e("AidConnect", "Init failed");
}
}
});