Version: 0.0.1 | Updated: 2026-07-03
完整的 SDK API 参考,覆盖所有公开接口、参数说明和用法示例。
- 核心生命周期
- 设备发现
- 配对管理
- 连接管理
- 设备信息
- 显示控制
- 音频控制
- WiFi 管理
- 蓝牙网络共享
- 相机与录制
- 文件管理
- 提词器
- 媒体投屏
- 翻译
- AI 配置
- 数据转发
- 系统命令
- 蓝牙外设
- 高级接口
- 类型定义
初始化 SDK,请求蓝牙和位置权限,准备 BLE 协议栈。
static Future<XOSGlassesSDK> init({GlassesSDKConfig? config})| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
config |
GlassesSDKConfig? |
初始化配置 |
返回: Future<XOSGlassesSDK> — SDK 实例
示例:
final sdk = await XOSGlassesSDK.init(
config: GlassesSDKConfig(
autoReconnect: true,
enableDebugLog: false,
),
);释放 SDK 所有资源,断开设备连接,关闭流。
Future<void> dispose()示例:
@override
void dispose() {
sdk.dispose();
super.dispose();
}SDK 版本号。
String get sdkVersion启用/禁用调试日志。
void setDebugMode(bool enabled)扫描附近眼镜设备。结果通过 onDeviceDiscovered 流推送。
Future<void> startDiscovery()停止扫描。
Future<void> stopDiscovery()是否正在扫描。
bool get isScanning设备发现流。
Stream<DiscoveredDevice> get onDeviceDiscovered示例:
sdk.onDeviceDiscovered.listen((device) {
print('${device.name} | ${device.deviceId} | RSSI: ${device.rssi}');
});
await sdk.startDiscovery();获取系统蓝牙已配对的设备列表。
Future<List<PairedDevice>> getSystemPairedDevices()与指定设备配对(绑定)。
Future<bool> pair(String deviceId)| 参数 | 类型 | 说明 |
|---|---|---|
deviceId |
String |
设备 ID |
返回: true 表示配对成功
取消配对。
Future<bool> unpair(String deviceId)是否有已配对设备。
bool get hasPairedDevice当前已配对设备信息。
PairedDevice? get pairedDevice连接指定设备。
Future<bool> connect(String deviceId)| 参数 | 类型 | 说明 |
|---|---|---|
deviceId |
String |
设备 ID(来自扫描结果或配对列表) |
返回: true 表示连接成功并完成握手
连接已配对设备(快捷方法)。
Future<bool> connectToPairedDevice()断开当前连接。
Future<void> disconnect()连接状态。
bool get isConnected
bool get isReconnecting
bool get isConnectionFailed连接状态变化流。
Stream<ConnectionStateInfo> get onConnectionStateChanged示例:
sdk.onConnectionStateChanged.listen((state) {
switch (state.state) {
case ConnectionState.connected:
print('已连接: ${state.deviceName}');
case ConnectionState.failed:
print('失败: ${state.errorMessage}');
case ConnectionState.reconnecting:
print('重连中...');
}
});当前连接的设备。
DiscoveredDevice? get connectedDevice
String? get deviceDisplayName启用/禁用自动重连。
void enableAutoReconnect(String deviceId)
void disableAutoReconnect()设备信息和变更推送。
DeviceInfo? get deviceInfo
Stream<DeviceInfo> get onDeviceInfoChanged示例:
sdk.onDeviceInfoChanged.listen((info) {
print('电量: ${info.batteryLevel}%, 文件: ${info.fileCount}个');
});查询电池电量(0-100)。
Future<int> getBatteryLevel()是否正在充电。
Future<bool> isCharging()眼镜 WiFi 连接状态。
Future<WiFiStatus> getWiFiStatus()
Stream<WiFiStatus> get onWiFiStatusChanged眼镜 IP 地址(用于 WiFi Direct 传输)。
Future<String?> getDeviceIP()
Stream<String?> get onDeviceIPChangedSoftAP / WiFi Direct 连接信息。
Future<SoftAPInfo?> getSoftAPInfo()
Stream<SoftAPInfo?> get onSoftAPInfoChanged设置屏幕亮度。
Future<bool> setBrightness(int level)| 参数 | 说明 |
|---|---|
level |
0(最暗)~ 100(最亮) |
设置休眠超时。
Future<bool> setSleepTimeout(int seconds)| 参数 | 说明 |
|---|---|
seconds |
无操作后多少秒进入休眠 |
设置显示距离(影响字体渲染大小)。
Future<bool> setDisplayDistance(int centimeters)设置 RGB 色彩比例。
Future<bool> setRgbRatio({
required int red,
required int green,
required int blue,
})| 参数 | 范围 |
|---|---|
red / green / blue |
0 - 255 |
桌面模式视口设置。
Future<bool> setDesktopViewport({
required int x, required int y,
required int w, required int h,
})
Future<bool> resetDesktopViewport()获取当前显示设置。
Future<DisplaySettings> getDisplaySettings()设置音量。
Future<bool> setVolume(int level)| 参数 | 说明 |
|---|---|
level |
0(静音)~ 100(最大) |
由眼镜扫描附近 WiFi 网络。
Future<List<WiFiNetwork>> scanWiFiNetworks()返回: WiFi 网络列表
眼镜连接指定 WiFi。
Future<bool> connectWiFi(String ssid, String password)眼镜断开当前 WiFi。
Future<bool> disconnectWiFi()获取眼镜已保存的 WiFi 列表。
Future<List<WiFiNetwork>> getSavedWiFiNetworks()连接已保存的 WiFi。
Future<bool> connectSavedWiFi(String ssid)遗忘已保存的 WiFi。
Future<bool> forgetWiFiNetwork(String ssid)启用/禁用蓝牙网络共享(PAN)。
Future<bool> enableBluetoothTethering()
Future<bool> disableBluetoothTethering()蓝牙网络共享是否已启用。
Future<bool> isBluetoothTetheringEnabled()拍照。返回眼镜上的文件路径。
Future<String?> capturePhoto()返回: 照片文件路径(眼镜端路径),或 null
示例:
final path = await sdk.capturePhoto();
if (path != null) print('照片: $path');开始/停止录像。
Future<bool> startRecording()
Future<bool> stopRecording()录制状态。
Future<RecordingStatus> getRecordingStatus()
Stream<RecordingStatus> get onRecordingStatusChanged示例:
sdk.onRecordingStatusChanged.listen((status) {
if (status.isRecording) {
print('录制中: ${status.durationSeconds}秒');
}
});打开/关闭相机预览。
Future<bool> launchCamera()
Future<bool> closeCamera()请求眼镜文件列表。
Future<void> fetchFileList()获取眼镜文件数量。
Future<int> fetchFileCount()开始下载文件。SDK 自动选择 BLE 或 WiFi Direct 通道。
Future<FileTransferTask> startDownload({
required List<String> fileIds,
})| 参数 | 说明 |
|---|---|
fileIds |
文件 ID 列表(来自文件列表) |
返回: 传输任务,可跟踪进度
上传文件到眼镜。
Future<FileTransferTask> startUpload(String localFilePath)取消传输。
Future<bool> cancelTransfer(String taskId)文件相关事件流。
Stream<List<GlassesFile>> get onFileListReceived
Stream<int> get onFileCountReceived
Stream<FileTransferTask> get onTransferUpdated完整示例:
// 监听
sdk.onFileListReceived.listen((files) {
for (var f in files) {
print('${f.type}: ${f.name} (${f.size} bytes)');
}
});
sdk.onTransferUpdated.listen((task) {
print('${task.id}: ${(task.progress * 100).toStringAsFixed(1)}% - ${task.phase.name}');
});
// 请求列表
await sdk.fetchFileList();
// 下载
final task = await sdk.startDownload(fileIds: ['file_123']);发送提词器脚本文件到眼镜。自动分片传输。
Future<bool> sendTeleprompterFile(String localFilePath)| 参数 | 说明 |
|---|---|
localFilePath |
手机本地脚本文件路径 |
提词器同步状态流(当前行、播放状态、字符位置)。
Stream<TeleprompterState> get onTeleprompterSyncTeleprompterState 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
currentLine |
int |
当前行号 |
totalLines |
int |
总行数 |
isPlaying |
bool |
是否播放中 |
charPosition |
int? |
当前字符位置 |
滚动位置变化流。
Stream<TeleprompterScrollInfo> get onTeleprompterScroll示例:
// 发送脚本
await sdk.sendTeleprompterFile('/path/to/script.txt');
// 监听同步
sdk.onTeleprompterSync.listen((state) {
print('行 ${state.currentLine}/${state.totalLines} ${state.isPlaying ? "▶️" : "⏸️"}');
});投屏媒体到眼镜。
Future<bool> startMediaCasting({
required String mediaPath,
CastProtocol? protocol,
bool fullscreen = false,
bool soundEnabled = true,
})| 参数 | 说明 |
|---|---|
mediaPath |
媒体文件路径或 URL |
protocol |
投屏协议: CastProtocol.dlna 或 CastProtocol.rtsp |
fullscreen |
是否全屏 |
soundEnabled |
是否启用音频 |
开始屏幕镜像。
Future<bool> startScreenMirroring()停止投屏/镜像。
Future<bool> stopCasting()开始实时翻译。
Future<bool> startTranslation({
String sourceLang = 'auto',
String targetLang = 'en',
})| 参数 | 说明 |
|---|---|
sourceLang |
源语言代码(默认 auto 自动检测) |
targetLang |
目标语言代码(默认 en 英语) |
停止翻译。
Future<bool> stopTranslation()更新翻译显示样式。
Future<bool> updateTranslationStyle({
String? sourceTextColor,
String? targetTextColor,
int? sourceFontSize,
int? targetFontSize,
})| 参数 | 说明 |
|---|---|
sourceTextColor |
源文字颜色(如 "#FFFFFF") |
targetTextColor |
译文字颜色 |
sourceFontSize |
源文字体大小 |
targetFontSize |
译文字体大小 |
获取翻译状态。
Future<TranslationStatus> getTranslationStatus()翻译结果流(实时推送)。
Stream<TranslationResult> get onTranslationResult完整示例:
// 开始中译日
await sdk.startTranslation(sourceLang: 'zh', targetLang: 'ja');
// 监听结果
sdk.onTranslationResult.listen((result) {
print('${result.sourceText} → ${result.targetText}');
});
// 自定义样式
await sdk.updateTranslationStyle(
sourceTextColor: '#AAAAAA',
targetTextColor: '#00FF00',
targetFontSize: 18,
);
// 停止
await sdk.stopTranslation();获取/设置 AI 配置。
Future<AIConfig> getAIConfig()
Future<bool> setAIConfig(AIConfig config)AIConfig 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
voiceAI |
Map |
语音 AI 模型设置 |
visualAI |
Map |
视觉 AI 模型设置 |
voiceWake |
Map |
语音唤醒设置 |
获取/设置快捷中心配置(视觉 AI 触发词等)。
Future<QuickCenterConfig> getQuickCenterConfig()
Future<bool> setQuickCenterConfig(QuickCenterConfig config)QuickCenterConfig 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
triggerWords |
List<String> |
视觉 AI 触发词(最多 10 个) |
viewportX/Y/W/H |
int? |
覆盖层位置 |
发送 GPS 位置数据。
Future<bool> sendGPS({
required double lat,
required double lng,
double? accuracy,
double? speed,
double? bearing,
})| 参数 | 说明 |
|---|---|
lat / lng |
经纬度 |
accuracy |
精度(米) |
speed |
速度(m/s) |
bearing |
方位角(度) |
推送通知到眼镜。
Future<bool> sendNotification({
required String title,
required String content,
String? appName,
String? packageName,
})开始/结束导航。
Future<bool> startNavigation()
Future<bool> endNavigation()设置导航显示模式。
Future<bool> setNavigationDisplayMode(NavigationMode mode)| 枚举值 | 说明 |
|---|---|
NavigationMode.walk |
步行 |
NavigationMode.drive |
驾车 |
NavigationMode.bike |
骑行 |
同步提醒到眼镜。
Future<bool> syncReminders(List<Reminder> reminders)Reminder 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
id |
String |
唯一 ID |
title |
String |
提醒标题 |
time |
String |
时间(ISO 8601) |
repeatType |
String? |
重复类型: none/daily/weekly/monthly |
重启眼镜应用(OTA 升级后使用)。
Future<bool> restartGlassesApp()打开系统蓝牙设置页。
Future<void> openBluetoothSettings()经典蓝牙(A2DP)是否已配对。
Future<bool> isClassicBluetoothPaired()获取眼镜端蓝牙设备列表。
Future<List<PairedDevice>> getGlassesBluetoothDevices()通过眼镜连接蓝牙音频设备。
Future<bool> connectBluetoothAudio(String address)模拟键盘/鼠标输入。
Future<bool> hidKeyBack() // 返回键
Future<bool> hidKeyHome() // 主页键
Future<bool> hidKeyEnter() // 确认键
Future<bool> hidKeyRecent() // 最近任务键
Future<bool> hidMouseMove({required int x, required int y})
Future<bool> hidMouseClick({String button = 'left'}) // 'left' | 'right'原始 BLE 消息流(长协议解码后)。供高级用途使用。
Stream<Map<String, dynamic>> get onRawMessage发送原始 BLE 命令。优先使用类型化方法,此接口用于自定义命令。
Future<Map<String, dynamic>?> sendRawCommand(
Map<String, dynamic> command, {
int maxRetries = 2,
})| 参数 | 说明 |
|---|---|
command |
原始命令 Map(长协议格式) |
maxRetries |
失败重试次数 |
示例:
final resp = await sdk.sendRawCommand({
'type': 'custom_command',
'param1': 'value',
});class GlassesSDKConfig {
final bool autoReconnect; // 断线自动重连(默认 true)
final int scanTimeoutSeconds; // 扫描超时(默认 60 秒)
final bool enableDebugLog; // 调试日志(默认 false)
}class DiscoveredDevice {
final String deviceId; // 设备 ID
final String name; // 广播名称
final int rssi; // 信号强度 (dBm)
final String? serialNumber; // 序列号(如有)
final bool isPaired; // 是否已系统配对
}class DeviceInfo {
final String deviceId; // 设备 ID
final String? deviceModel; // 型号
final String? firmwareVersion; // 固件版本
final String? appVersion; // APP 版本
final int batteryLevel; // 电量 0-100
final bool isCharging; // 是否充电中
final int fileCount; // 文件总数
final int videoCount; // 视频数
final int photoCount; // 照片数
}class ConnectionStateInfo {
final ConnectionState state; // 连接状态枚举
final String? deviceName; // 设备名
final String? errorMessage; // 错误信息
}
enum ConnectionState {
disconnected, connecting, connected,
disconnecting, reconnecting, failed,
}class FileTransferTask {
final String id; // 任务 ID
final TransferDirection direction; // upload / download
final TransferPhase phase; // 传输阶段
final double progress; // 进度 0.0-1.0
final int transferredBytes; // 已传输字节
final int totalBytes; // 总字节
final List<String> fileIds; // 文件 ID 列表
final String? errorMessage; // 错误信息
}
enum TransferDirection { upload, download }
enum TransferPhase {
pending, connecting, transferring,
verifying, installing, completed, failed,
}| 类型 | 主要字段 |
|---|---|
WiFiStatus |
isConnected, ssid, ip, isHotspot |
WiFiNetwork |
ssid, signalStrength, isEncrypted |
SoftAPInfo |
ssid, ip, port, password, expiresIn |
RecordingStatus |
isRecording, durationSeconds |
TranslationStatus |
isActive, sourceLang, targetLang |
TranslationResult |
sourceText, targetText, sourceLang, targetLang |
AIConfig |
voiceAI, visualAI, voiceWake |
QuickCenterConfig |
triggerWords, viewportX/Y/W/H |
GlassesFile |
id, name, size, type, createdAt |
TeleprompterState |
currentLine, totalLines, isPlaying, charPosition |
TeleprompterScrollInfo |
scrollPosition |
Reminder |
id, title, time, repeatType |
DisplaySettings |
brightness, sleepTimeout, displayDistance, RGB |
PairedDevice |
deviceId, name, model, serialNumber, isClassicPaired |
| 值 | 说明 |
|---|---|
disconnected |
未连接 |
connecting |
连接中 |
connected |
已连接 |
disconnecting |
断开中 |
reconnecting |
自动重连中 |
failed |
连接失败 |
| 值 | 说明 |
|---|---|
walk |
步行导航 |
drive |
驾车导航 |
bike |
骑行导航 |
| 值 | 说明 |
|---|---|
dlna |
DLNA 投屏 |
rtsp |
RTSP 流媒体 |
| 值 | 说明 |
|---|---|
upload |
上传(手机→眼镜) |
download |
下载(眼镜→手机) |