快速开始
5分钟快速集成 StreamInd Java SDK 到你的项目。
前置要求
- ✅ Java 8+ - 支持 Java 8, 11, 17, 21
- ✅ Maven 或 Gradle - 项目构建工具
- ✅ StreamInd 平台账号 - 获取租户ID和产品认证信息
获取平台认证信息
在使用 SDK 前,你需要从 StreamInd 平台获取以下认证信息:
- tenantId(租户ID)- 你的组织/账户唯一标识
- productId(产品ID)- 设备所属产品的标识
- 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 文件并添加到项目的类路径中:
- 访问 GitHub Releases
- 下载
streamind-sdk-1.0.0.jar - 将 JAR 文件添加到项目的
libs目录 - 在 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);
}
}下一步
故障排查
无法连接
- 检查
endpoint是否正确 - 检查
tenantId、productId、productKey是否正确 - 检查网络连接和防火墙设置
编译错误
- 确认 Java 版本 >= 8
- 确认 SDK JAR 文件已添加到类路径
- 检查 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