Skip to Content

快速开始

5分钟快速集成 StreamInd Java SDK 到你的项目。

前置要求

  • Java 8+ - 支持 Java 8, 11, 17, 21
  • Maven 或 Gradle - 项目构建工具
  • StreamInd 平台账号 - 获取租户ID和产品认证信息

获取平台认证信息

在使用 SDK 前,你需要从 StreamInd 平台获取以下认证信息:

  1. tenantId(租户ID)- 你的组织/账户唯一标识
  2. productId(产品ID)- 设备所属产品的标识
  3. productKey(产品密钥)- 产品的访问密钥

登录 StreamInd 控制台,在 开发配置菜单 中可以查看和管理这些认证信息。

安装 SDK

Maven

pom.xml 中添加依赖:

<dependency> <groupId>com.streamind</groupId> <artifactId>streamind-sdk</artifactId> <version>1.0.0</version> </dependency>

Gradle

build.gradle 中添加依赖:

dependencies { implementation 'com.streamind:streamind-sdk:1.0.0' }

手动安装

下载 JAR 文件并添加到项目的类路径中:

  1. 访问 GitHub Releases 
  2. 下载 streamind-sdk-1.0.0.jar
  3. 将 JAR 文件添加到项目的 libs 目录
  4. 在 IDE 中配置类路径

第一个应用

完整示例

创建 Main.java

import com.streamind.sdk.*; import com.streamind.sdk.callbacks.*; public class Main { public static void main(String[] args) { // 1. 创建配置 Config config = new Config.Builder() .deviceId("device-001") // 设备唯一ID .deviceType("sensor") // 设备类型 .endpoint("wss://your-platform.com/signals") // WebSocket端点 .tenantId("your-tenant-id") // 替换为你的租户ID .productId("your-product-id") // 替换为你的产品ID .productKey("your-secret-key") // 替换为你的产品密钥 .build(); // 2. 创建SDK实例 SDK sdk = new SDK(); // 3. 注册终端 sdk.registerTerminal("terminal-1", config); // 4. 设置指令回调 sdk.setDirectiveCallback("terminal-1", new DirectiveCallback() { @Override public void onDirective(Directive directive) { System.out.println("收到指令: " + directive.getName()); Payload payload = directive.getPayload(); // 处理指令... } }); // 5. 设置连接状态回调(可选) sdk.setConnectionCallback("terminal-1", new ConnectionCallback() { @Override public void onConnectionChange(String status, String message) { System.out.println("连接状态: " + status + ", 消息: " + message); } }); try { // 6. 连接到平台 sdk.connect("terminal-1"); System.out.println("已连接到StreamInd平台"); // 7. 发送信号 Signal signal = new Signal("sensor.data"); Payload payload = signal.getPayload(); payload.setNumber("temperature", 25.5); payload.setString("unit", "celsius"); sdk.sendSignal("terminal-1", signal); System.out.println("信号已发送"); // 保持连接 Thread.sleep(60000); // 8. 断开连接 sdk.disconnect("terminal-1"); System.out.println("已断开连接"); } catch (Exception e) { e.printStackTrace(); } } }

运行应用

Maven

mvn compile exec:java -Dexec.mainClass="Main"

Gradle

gradle run

直接运行

javac -cp streamind-sdk-1.0.0.jar Main.java java -cp .:streamind-sdk-1.0.0.jar Main

预期输出

已连接到StreamInd平台 信号已发送 收到指令: your.directive.name 已断开连接

代码解析

1. 创建配置

Config config = new Config.Builder() .deviceId("device-001") // 必需:设备唯一标识 .deviceType("sensor") // 必需:设备类型 .endpoint("wss://...") // 必需:WebSocket服务端点 .tenantId("...") // 必需:租户ID .productId("...") // 必需:产品ID .productKey("...") // 必需:产品密钥 .build();

2. 注册和连接

SDK sdk = new SDK(); sdk.registerTerminal("terminal-1", config); // 注册终端 sdk.connect("terminal-1"); // 连接

3. 发送信号

Signal signal = new Signal("sensor.data"); // 创建信号 Payload payload = signal.getPayload(); // 获取载荷 payload.setNumber("temperature", 25.5); // 添加数字数据 payload.setString("unit", "celsius"); // 添加字符串数据 sdk.sendSignal("terminal-1", signal); // 发送

4. 接收指令

sdk.setDirectiveCallback("terminal-1", new DirectiveCallback() { @Override public void onDirective(Directive directive) { System.out.println("指令名称: " + directive.getName()); Payload payload = directive.getPayload(); // 读取数据 double value = payload.getNumber("param_name"); } });

常见场景

发送音频数据

// 读取OPUS音频文件 byte[] audioData = Files.readAllBytes(Paths.get("audio.opus")); // 发送音频 sdk.sendAudioData("terminal-1", audioData);

多终端管理

// 注册多个终端 Config config1 = new Config.Builder()...build(); Config config2 = new Config.Builder()...build(); sdk.registerTerminal("terminal-1", config1); sdk.registerTerminal("terminal-2", config2); // 批量连接 Map<String, Boolean> results = sdk.connectAll(); // 向不同终端发送信号 sdk.sendSignal("terminal-1", signal1); sdk.sendSignal("terminal-2", signal2);

配置可选参数

Config config = new Config.Builder() .deviceId("device-001") .deviceType("sensor") .endpoint("wss://...") .tenantId("...") .productId("...") .productKey("...") .heartbeatIntervalMs(30000) // 设置心跳间隔(默认30秒) .connectionTimeoutMs(10000) // 设置连接超时(默认10秒) .maxReconnectAttempts(10) // 设置最大重连次数(默认10次) .build();

使用 Lambda 表达式 (Java 8+)

// 简洁的回调设置 sdk.setDirectiveCallback("terminal-1", directive -> { System.out.println("收到指令: " + directive.getName()); }); sdk.setConnectionCallback("terminal-1", (status, message) -> { System.out.println("状态: " + status); });

错误处理

try { sdk.connect("terminal-1"); } catch (ConnectionException e) { System.err.println("连接失败: " + e.getMessage()); } try { sdk.sendSignal("terminal-1", signal); } catch (SendException e) { System.err.println("发送信号失败: " + e.getMessage()); }

使用配置文件

创建 config.properties

device.id=sensor-001 device.type=temperature_sensor streamind.endpoint=wss://api.streamind.com/signals streamind.tenant.id=your-tenant-id streamind.product.id=your-product-id streamind.product.key=your-secret-key

加载配置:

import java.util.Properties; import java.io.FileInputStream; Properties props = new Properties(); props.load(new FileInputStream("config.properties")); Config config = new Config.Builder() .deviceId(props.getProperty("device.id")) .deviceType(props.getProperty("device.type")) .endpoint(props.getProperty("streamind.endpoint")) .tenantId(props.getProperty("streamind.tenant.id")) .productId(props.getProperty("streamind.product.id")) .productKey(props.getProperty("streamind.product.key")) .build();

Spring Boot 集成

import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import com.streamind.sdk.*; @SpringBootApplication public class Application { @Bean public SDK streamindSDK() { SDK sdk = new SDK(); Config config = new Config.Builder() .deviceId("${streamind.device.id}") .deviceType("${streamind.device.type}") .endpoint("${streamind.endpoint}") .tenantId("${streamind.tenant.id}") .productId("${streamind.product.id}") .productKey("${streamind.product.key}") .build(); sdk.registerTerminal("terminal-1", config); return sdk; } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

下一步

故障排查

无法连接

  1. 检查 endpoint 是否正确
  2. 检查 tenantIdproductIdproductKey 是否正确
  3. 检查网络连接和防火墙设置

编译错误

  1. 确认 Java 版本 >= 8
  2. 确认 SDK JAR 文件已添加到类路径
  3. 检查 Maven/Gradle 配置

依赖冲突

如果遇到依赖冲突,可以排除特定依赖:

<dependency> <groupId>com.streamind</groupId> <artifactId>streamind-sdk</artifactId> <version>1.0.0</version> <exclusions> <exclusion> <groupId>conflicting-group</groupId> <artifactId>conflicting-artifact</artifactId> </exclusion> </exclusions> </dependency>
Last updated on