将SDK集成到AndroidStudio中
本章节主要介绍如何快速将SDK集成到AndroidStudio当中,编译通过,并且获取到直播数据。
准备工作
- AndroidStudio (本章节使用的版本为 3.6)
- Android SDK文件。
- Jar
IvyIoSdkJni.jar |
---|
- so文件
有3种架构(arm64-v8a / armeabi / armeabi-v7a),每种架构下含有以下文件
libcrypto.so |
---|
libfaac.so |
libIOTCAPIs.so |
libIvyIoSdkJni.so |
libmi_decoder.so |
libmp4v2.so |
libopenal.so |
libopenal_aec.so |
libp2pJni.so |
libRDTAPIs.so |
libssl.so |
开始集成SDK
- 新建一个项目
给工程命名
MyAndroi位工程目录,在工程目录目录下app/src/main/ 创建 jniLibs文件夹
将 arm64-v8a / armeabi / armeabi-v7a 拷贝到jniLibs下
将IvyIoSdkJni.jar拷贝到app/libs下
返回左侧工程目录查看,IvyIoSdkJni.jar和arm64-v8a / armeabi / armeabi-v7a会显示出来
选择 File->Project Structure,准备设置导入jar
选择Dependencies - >app -> + -> 2 jar Dependency
选择Step1.下选择框种的libs\IvyIoSdkJni.jar
- 工程设置完毕,编译运行通过!
获取设备直播图像数据
- 搜索局域网内设备, 搜索到的每个设备节点包含IP/端口/MAC/UID等信息
DiscoveryNode nodes[] = new DiscoveryNode[32];
int count = IvyIoSdkJni.discovery(nodes, 32);
- 创建设备句柄
Url url = new Url();
url.url = nodes[0].ip;
url.port = nodes[0].port;
// 默认设备的用户名是"admin"
// 如果设备UID的第22位(从0开始)为'89ABCDEF'其中的任意一个字符,
// 设备的默认密码需要通过算法生成,具体参见本章后边 <生成默认密码> 章节
// 其他情况,默认密码为""(长度为0的字符串)
int handle = IvyIoSdkJni.create(url, nodes[0].uid, nodes[0].mac, "dev_username", "dev_password", P2PMode.P2P_MODE_UDP);
- 登录设备,如果设备在复位状态,需要修改密码后重新登录。
int rst = IvyIoSdkJni.login(handle, 1000 * 10); // 单位是毫秒
if (Result.OK == rst)
{
// 登录设备成功。
}
else if (OK_ON_RESET_STATE == rst)
{
// 设备处于复位状态需要,重新设置一个密码
// 如果不重新设置密码,打开直播将会失败。
}
else
{
// 其他错误
}
- 打开直播
OpenVideoArgsType0 open = new OpenVideoArgsType0();
open.streamType = 0;
rst = IvyIoSdkJni.openVideo(handle, open, 1000 * 5, 0);
- 获取直播数据
FrameData frame = new FrameData();
IvyIoInteger speed = new IvyIoInteger(0);
while (bRunning) {
int rst = IvyIoSdkJni.getStreamData(handle, StreamType.STREAM_VIDEO, frame, speed, DecodeFormat.RGBA32, 0);
if (rst == Result.OK && frame.dataLen > 0) {
// 成功获取到解码后的视频数据,解码后的数据格式位RGBA32
} else {
SystemClock.sleep(10);
}
}
更改设备密码
// After login successful
String cmdJsonData = String.format("{\"usr\":\"%s\", \"pwd\":\"%s\", \"newUsr\":\"%s\", \"newPwd\":\"%s\"}", "dev_username","dev_password","newUsername", "newPassword");
Response rspJson = new Response();
rst = IvyIoSdkJni.sendCommand(handle, 22023, cmdJsonData, rspJson, 1000 * 5);
if (Result.OK == rst)
{
// rspJson.resp种的ret字段位0,表示更改成功。
// 否则,失败
}
else
{
// failed!
}
生成默认密码
注意:需要导入IvyCryptoJni.jar和libIvyCryptoJni.so两个文件到工程内(方法和导入SDK文件一致,libIvyCryptoJni.so也分别有3个平台的文件arm64-v8a / armeabi / armeabi-v7a,文件名字都一样),这个库用来生成设备默认密码的库
String password = IvyCryptoJni.generatePassword(nodes[0].uid);
// password 为生成的默认的密码
文档更新时间: 2024-01-10 17:02 作者:庄小婵