Skip to content

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 前调用。

  • 参数
参数名类型默认值描述
mApplicationApplication-安卓 Application 对象,不可为 null
logDebugboolean-SDK log 开关。true:打印所有级别日志;false:仅打印 error 级别日志
aidConnectCallbackAidConnectCallback-初始化结果回调,回调在 Binder 线程触发,若需更新 UI 请切换到主线程,不可为 null
  • 返回
类型描述
AidConnect返回 AidConnect 单例对象
  • 注意
条件行为
mApplication 为 null打印日志并返回 null
aidConnectCallback 为 null打印日志并返回 null

addChannelWithName()

java
public static synchronized Set<String> addChannelWithName(String name, int size)

根据用户定义的通道名字和大小,创建通信通道,并返回所有通道名字的集合。

  • 参数
参数名类型默认值描述
nameString-通道名称,不可为 null 或空字符串,需全局唯一
sizeint-通道大小,单位为 MB,取值范围 > 0
  • 返回
类型描述
Set<String>当前所有已创建的通道名字集合
  • 异常
条件行为
name 为 null 或空字符串打印日志并返回当前通道名称集合
size ≤ 0抛出 IllegalArgumentException
通道名称已存在打印日志并返回现有集合,不重复创建

removeChannelWithName()

java
public static synchronized Set<String> removeChannelWithName(String name)

根据名称移除对应的通信通道,并返回剩余所有通道名字的集合。

  • 参数
参数名类型默认值描述
nameString-要移除的通道名称,不可为 null
  • 返回
类型描述
Set<String>移除后剩余的所有通道名字集合
  • 异常
条件行为
name 为 null打印日志并返回当前通道名称集合
name 对应的通道不存在返回现有集合,无副作用

aidConnectWithName()

java
public static synchronized AidConnect aidConnectWithName(String name)

根据已创建的通道名字,获取管理该通道交互的核心类 AidConnect 实例。

  • 参数
参数名类型默认值描述
nameString-已通过 addChannelWithName() 创建的通道名称
  • 返回
类型描述
AidConnect对应通道的 AidConnect 实例,用于数据读写操作
  • 异常
条件行为
name 对应的通道不存在返回 null
  • 前置条件

    必须先调用 addChannelWithName() 创建对应通道。

setBytes()

java
public boolean setBytes(byte[] bytes)

向当前通道写入字节数据。

  • 参数
参数名类型默认值描述
bytesbyte[]-待写入的字节数组,不可为 null,长度不可超过通道大小
  • 返回
类型描述
booleantrue:写入成功;false:写入失败(bytes 为 null 或空数组、通道未就绪、或数据超出通道容量)

getBytes(int)

java
public byte[] getBytes(int len)

根据指定的字节长度从通道读取数据。

  • 参数
参数名类型默认值描述
lenint-要读取的字节长度,必须 > 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)

将通道数据读取到预分配的字节数组中,避免重复内存分配,适合高频调用场景。

  • 参数
参数名类型默认值描述
bytesbyte[]-预分配的目标字节数组,不可为 null、不可为空,且其长度必须等于 len
lenint-要读取的字节长度,必须 > 0 且必须等于 bytes.length
  • 返回
类型描述
byte[]填充数据后的字节数组(即传入的 bytes 引用);如果通道未就绪(如未初始化或已释放),返回 null
  • 异常
条件行为
bytes 为空数组抛出 Exception
len ≤ 0抛出 Exception
bytes.lengthlen抛出 Exception
通道未初始化或已释放返回 null(不抛异常)

release()

java
public static synchronized int release()

释放 AidConnect 持有的所有通道资源并销毁单例。调用后所有 AidConnect 实例不可再使用。

  • 参数

  • 返回
类型描述
int0:释放成功;非 0:释放失败(错误码含义见下表)
  • 错误码
错误码含义
0成功
-1通道已释放或未初始化
  • 注意

    释放后再调用 setBytes() / getBytes() 将产生未定义行为。

setStateCallback()

java
public static void setStateCallback(RemoteSDKStatusCallBack remoteSDKStatusCallBack)

设置服务连接状态监听回调,用于接收服务端状态变化通知。

  • 参数
参数名类型默认值描述
remoteSDKStatusCallBackRemoteSDKStatusCallBack-服务状态回调接口实例
  • 注意

    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");
        }
    }
});