跳到主要内容

Android SDK 1.0.0 API 接口参考

SDK Version: 1.0.0
Platform: Android

本页是客户可调用接口的签名索引与行为卡。每张表同时给出用途、前置条件、默认值、结果/错误、线程和配对清理;可复制代码在“示例”列链接页面。诊断能力不属于客户 API。

通用规则

  • timeoutMs 均为毫秒且必须非负;等待 GATT、AT、RF 或设备 callback 的方法在后台线程调用。
  • Boolean 只表示该接口定义的成功,不保证后续异步业务已完成;文件/连接等最终状态看 callback。
  • 返回 null 表示无合法值、失败、超时或不支持;除非接口明确允许,否则不要用旧缓存替代。
  • AT、Auth、Init、文件和模式切换共享无线通道,不得并发。
  • 所有 add...Listener(x)remove...Listener(x) 使用同一个 x 配对。

XTalkBleClient:初始化、状态与连接

完整签名用途/前置返回、错误、线程/生命周期示例
setApplicationContext(context: Context?)初始化前保存 Application ContextUnitnull 清除;主线程可调用初始化
ensureInitialized(): InitResult初始化核心与 callbacks;可重复INIT_OK 继续;主线程可首次调用初始化
addListener(listener: DeviceStateCallback)扫描/连接状态Unit;回调主线程;配 removeListener扫描
removeListener(listener: DeviceStateCallback)释放状态 listener必须同实例清理
startScan(timeoutMs: Int = 5000, minRssiDbm: Int = -100, serviceUuids: List<String> = emptyList()): ScanStartResult权限/蓝牙/Init请求结果;callback 给设备;配 stopScan扫描
stopScan(): Unit取消扫描幂等;连接前/离页调用扫描
connect(device: XTalkDevice, timeoutMs: Int = 5000, maxReconnectAttempts: Int? = null): ConnectResult选中设备;后台线程请求结果,不等于 CONNECTED连接
awaitConnected(macAddress: String? = null, timeoutMs: Long = 8000): Boolean等 CONNECTED;后台线程断线/ERROR/超时 false;内部 listener 自动清理全流程
ensureGattServicesOpened(forceReset: Boolean = false): UnitCONNECTED;后台线程打开 GATT 服务;forceReset 先清绑定连接契约
awaitBleReady(timeoutMs: Long = 8000): BooleanCONNECTED;后台线程GATT/AT 稳定为 true连接
disconnect(sendRemoteCommand: Boolean = true): DisconnectResult结束会话;后台线程清缓存/ready;破损链路可传 false清理
awaitDisconnected(timeoutMs: Long = 6000): Boolean等本地 DISCONNECTED;后台ERROR/超时 false连接契约
stopAutoReconnect(reason: String): Boolean明确终止自动重连manager 不存在/不支持为 false连接契约
forceResetDisconnected(reason: String, clearLastRequestedDevice: Boolean = true): Unit本地/物理状态不一致的高级恢复清追踪、ready、AT;正常路径不用连接契约
getConnectedDevice(): XTalkDevice?查询当前设备未连接为 null状态门槛
getConnectionState(): DeviceEventState查询状态即时快照状态门槛
hasActiveBleLink(): BooleanCONNECTED 物理门槛不代表 Auth/Init状态门槛
getDeviceLongId(): Long?读已应用结构化 DID未认证/可疑值为 nullAuth
awaitDeviceLongId(timeoutMs: Long = 3000): Long?后台等待 DID断线/超时 nullAuth
isWirelessReady(): Boolean查询 Init ready即时状态状态门槛
awaitWirelessReady(timeoutMs: Long = 4000): Boolean后台等无线配置结果断线/失败/超时 falseInit
isReadyForSend(): Boolean业务总门槛CONNECTED 且 wireless ready全流程
markWirelessInitRequired(reason: String, resetAtMode: Boolean = true): Unit使 Auth/Init 状态失效清 ready;通常由 Auth 调用Auth
setWirelessInitReady(ready: Boolean, reason: String): UnitAuth/Init 集成写状态客户业务不得伪造 trueInit

XTalkBleClient:AT、无线与高级状态

完整签名契约结果/错误/线程示例
isAtXorEnabled(): Boolean当前连接 AT 编码即时编码选择
setAtXorEnabledForConnection(enabled: Boolean, reason: String): UnitAuth/适配器切换编码Advanced;连接/断开重置编码选择
chooseAtXorModeByFreqProbeResult(timeoutMs: Long = 1500, log: Boolean = true): AtXorModeProbeResult?普通/XOR 探测后台;不可用/超时 null编码选择
withWirelessOpLock(block: () -> T): T串行客户高级操作后台;block 异常透传;不可递归等待AT
runAtCommand(command: String, timeoutMs: Long = 3000, log: Boolean = true, errorPolicy: BleAtErrorPolicy = FAIL_FAST, stopWhen: ((List<String>) -> Boolean)? = null, drainResponseTailAfterStop: Boolean = false): List<String>独占 AT 事务;CONNECTED未连接/服务/发送/ERROR/超时可抛;后台AT
sendAtCommand(command: String): SendResult发送 AT,不取响应后台;枚举结果AT
sendAtCommandNoWait(command: String): Boolean低延迟写 AT只表示受理AT
sendEncryptedAt(bytes: ByteArray): Boolean已编码 AT 字节Advanced;只表示发送受理AT
setPassthroughListener(listener: ((ByteArray) -> Unit)?): Unit底层透传唯一所有者Advanced;null 释放;会与 AT 事务冲突AT
restoreTextPttDefaults(defaultRateMode: Int = 7, defaultAddtl: Int = 1, defaultWorkMode: Int = 21): Boolean恢复业务模式后台;全部 AT 成功才 true无线设置
setRateMode(rateMode: Int): Boolean设置 0..255 rate后台;设备不支持/断线 false无线设置
setChannelFrequency(freqHz: Long, timeoutMs: Long = 3000): Booleancallback 配置 channel后台;失败/超时 false无线设置
setFrequencyHz(freqHz: Long, timeoutMs: Long = 3000): BooleanAT 设置四路频率后台;异常/超时 false无线设置
setRealtimeWorkModeOverride(workMode: Int?): Unit会话覆盖 work modenull 清除语音
getRealtimeWorkModeOverride(): Int?查询 override未设置 null语音

AtXorModeProbeResult 字段为 useXor: BooleannormalFreqAccepted: BooleanBleAtErrorPolicyFAIL_FASTCOLLECT_UNTIL_COMPLETE

XTalkBleClient:发送、媒体、设备

完整签名返回/生命周期示例
sendBinaryFrame(data: ByteArray): SendResult普通二进制;后台二进制
sendRfPayloadAndWaitSendFinish(rawPayload: ByteArray, timeoutMs: Long): Boolean等完成;后台;失败/超时 falseRF
sendRfPayloadNoWait(rawPayload: ByteArray): Boolean实时受理;空包 false;调用方节流RF
sendText(text: String): SendResult文本;接收看 Text listener文本
sendFile(fileBytes: ByteArray): SendResult请求;最终看 FileSend callback文件
cancelFileSend(): SendResult取消发送请求文件
cancelFileReceive(): SendResult取消接收请求文件
startPttVoiceCapture(enablePcmCallback: Boolean = true): CaptureStartResult需录音权限;配 stopPttVoiceCapture语音
stopPttVoiceCapture(): CaptureStopResult停 PTT语音
startRealtimeVoiceCapture(peopleCount: Int = 2, mute: Int = 0): CaptureStartResult需录音权限;配 stopRealtimeVoiceCapture语音
stopRealtimeVoiceCapture(): CaptureStopResult停实时采集语音
stopVoiceCaptureLocal(): CaptureStopResult本地异常清理语音
startVoicePlayback(pcm: ByteArray): PlaybackStartResultPCM 格式按交付要求;配 stop播放
stopVoicePlayback(): PlaybackStopResult停播放播放
transcodeImage(imageBytes: ByteArray, targetTier: ImageTargetTier, inputFormat: ImageInputFormat? = null): ImageTranscodeResult离线;大图后台;无需 BLE图片
setCryptoKey16(key16: ByteArray): Boolean必须 16 字节;失败禁止加密业务密钥
getHardwareVersion(timeoutMs: Long = 2000): String?后台;缓存;失败/不支持 null设备查询
getFirmwareVersion(timeoutMs: Long = 2000): String?同上设备查询
getBatteryLevel(timeoutMs: Long = 4000): Int?后台;最多内部尝试;失败/不支持 null设备查询

Listener 接口

添加/移除签名Callback线程与数据规则
addDataListener(DataReceivedCallback) / removeDataListener(...)bytes/len/SNR/RSSII/O;只读 len 范围
addDeviceManageListener(DeviceManageCallback) / removeDeviceManageListener(...)type/value主线程;按 type 转换 value
addTextListener(TextReceivedCallback) / removeTextListener(...)source/text/SNR/RSSI主线程
addVoiceListener(VoiceReceivedCallback) / removeVoiceListener(...)source/PCM/len/metrics/isLast实时线程,不阻塞
addVoiceCaptureListener(VoiceCaptureCallback) / removeVoiceCaptureListener(...)PCM/len/isLast主线程
addFileSendListener(FileSendCallback) / removeFileSendListener(...)progress/sent/total/result主线程
addFileReceiveListener(FileReceiveCallback) / removeFileReceiveListener(...)progress/received/total/result/bytes主线程;客户保存最终 bytes

BLE 顶层工具

签名结果
requiredBluetoothPermissions(): List<String>当前系统扫描/连接权限
requiredStartupPermissions(): List<String>BLE + 录音 + 适用时通知权限
hasBluetoothPermissions(context: Context): Boolean全部 BLE 权限是否已授予
hasStartupPermissions(context: Context): Boolean全部 startup 权限是否已授予
sanitizeBleDeviceName(rawName: String?): String?合法显示名或 null
isSupportedBleDeviceName(rawName: String?): Boolean是否匹配支持名称
isSupportedBleDevice(device: XTalkDevice): Boolean同上,设备版
bleDeviceDisplayName(device: XTalkDevice): String合法名或大写 MAC
mergeBleDeviceIdentity(reported: XTalkDevice?, fallback: XTalkDevice?): XTalkDevice?合并结果或 null
XTALK_SCAN_UUID_5632G: String扫描服务 UUID 常量

其他模块

  • RadioTransportBleRadioTransportRadioTransportEventBridgeRadioTransportRouter、模型、listeners 和 Advanced 解析器:完整传输层参考
  • DeviceAuthenticator 的 transport、Result 和全部 6 个公开操作:Auth 完整契约
  • DeviceInitializer 的 transport、5 个模型和全部操作:Init 完整契约
  • 每个公开标识符的逐项核对:API 覆盖矩阵

错误码与常见问题