跳到主要内容

云回看

更新时间:2025-03-22 13:54:05

云端存储录像与事件

object CloudPlayback{
/**
* 查询录制列表
*
* @param params [RecordQueryReq]
* @param listener [OnResultListener]<[RecordQueryRsp]>
*/
fun recordQuery(params: RecordQueryReq, listener: OnResultListener<RecordQueryRsp>)
/**
* 获取录制播放地址
*
* @param vodUrlGetReq [VodUrlGetReq]
* @param listener [OnResultListener]<[VodUrlRsp]>
*/
fun getVodPlayUrl(vodUrlGetReq: VodUrlGetReq, listener: OnResultListener<VodUrlRsp>)
/**
* 查询录制统计
*
* @param monthQueryReq [MonthQueryReq]
* @param listener [OnResultListener]<[MonthQueryRsp]>
*/
fun monthRecordQuery(monthQueryReq: MonthQueryReq, listener: OnResultListener<MonthQueryRsp>)
/**
* 查询录制事件
*
* @param params [EventQueryReq]
* @param listener [OnResultListener]<[EventQueryRsp]>
*/
fun eventQuery(params: EventQueryReq, listener: OnResultListener<EventQueryRsp>)
/**
* 获取事件播放地址
*
* @param vodUrlGetReq [VodUrlGetReq]
* @param listener [OnResultListener]<[VodUrlRsp]>
*/
fun getEventPlayUrl(vodUrlGetReq: VodUrlGetReq, listener: OnResultListener<VodUrlRsp>)
/**
* 查询事件统计
*
* @param monthQueryReq [MonthQueryReq]
* @param listener [OnResultListener]<[MonthQueryRsp]>
*/
fun monthEventQuery(monthQueryReq: MonthQueryReq, listener: OnResultListener<MonthQueryRsp>)
/**
* 录制删除
*
* @param recordDeleteReq [RecordDeleteReq]
* @param listener [OnResultListener]<Any>
*/
fun recordDelete(recordDeleteReq: RecordDeleteReq, listener: OnResultListener<Any>)

/**
* 事件批量删除
*
* @param iotId 设备ID
* @param eventList List<[TimelineEventInfo]>
* @param listener [OnResultListener]<Any?>
*/
fun eventBatchDelete(iotId: String, eventList: List<TimelineEventInfo>, listener: OnResultListener<Any?>)
/**
* 获取设备事件描述(查最新一条数据时间,做显示小红点使用)
*
* @param descReq
* @param listener [OnResultListener]<[DeviceDescRsp]>
*/
fun getDeviceEventDesc(descReq: DeviceEventDescReq, listener: OnResultListener<DeviceDescRsp>)
/**
* 消息列表(消息中心)
*
* @param params [EventQueryReq]
* @param listener [OnResultListener]<[EventQueryRsp]>
*/
fun msgCenterEventQuery(params: EventQueryReq, listener: OnResultListener<EventQueryRsp>)
/**
* 消息查询统计
*
* @param monthQueryReq [MonthQueryReq]
* @param listener [OnResultListener]<[MonthQueryRsp]>
*/
fun msgEventMonthQuery(monthQueryReq: MonthQueryReq, listener: OnResultListener<MonthQueryRsp>)
/**
* 获取设备消息描述(查最新一条数据时间,做显示小红点使用)
*
* @param descReq [DeviceMsgDescReq]
* @param listener [OnResultListener]<[DeviceDescRsp]>
*/
fun getDeviceMsgDesc(descReq: DeviceMsgDescReq, listener: OnResultListener<DeviceDescRsp>)
/**
* 消息批量删除
*
* @param iotId 设备ID
* @param eventList List<[TimelineEventInfo]>
* @param listener [OnResultListener]<Any?>
*/
fun msgBatchDelete(iotId: String, eventList: List<TimelineEventInfo>, listener: OnResultListener<Any?>)
}

录制列表查询

时间跨度不能超过7天,开始时间不能大于结束时间

import com.polaris.iot.appsdk.libplayback.CloudPlayback;
import com.polaris.iot.appsdk.libplayback.model.EventQueryReq;
import com.polaris.iot.appsdk.libplayback.model.EventQueryRsp;
import com.polaris.iot.appsdk.libplayback.model.RecordDeleteReq;
import com.polaris.iot.appsdk.libplayback.model.RecordQueryReq;
import com.polaris.iot.appsdk.libplayback.model.RecordQueryRsp;
import com.polaris.iot.appsdk.libplayback.model.RecordInfo;
import com.polaris.iot.appsdk.libplayback.model.TimelineEventInfo;
import com.polaris.iot.appsdk.libplayback.model.TimelineRecordInfo;
import com.polaris.iot.appsdk.libcommon.constants.IoTSDKError;
import com.polaris.iot.appsdk.libcommon.hook.OnResultListener;


String iotId = ""
long endTime = System.currentTimeMillis();
long beginTime = endTime - 6 * 3600 * 1000;

final RecordQueryReq recordQueryReq = new RecordQueryReq(iotId, beginTime, endTime);
CloudPlayback.recordQuery(recordQueryReq, new OnResultListener<RecordQueryRsp>() {
@Override
public void onError(@NonNull IoTSDKError error) {

}

@Override
public void onResult(RecordQueryRsp result) {
final List<TimelineRecordInfo> RecordInfoList = result.getRecordFileList();
}
});

录制播放地址获取

多目设备需要区分镜头时,需要传递lensId

import com.polaris.iot.appsdk.libplayback.CloudPlayback;
import com.polaris.iot.appsdk.libplayback.model.VodUrlGetReq
import com.polaris.iot.appsdk.libplayback.model.VodUrlRsp

CloudPlayback.getVodPlayUrl(vodUrlGetReq, object : OnResultListener<VodUrlRsp> {
override fun onResult(result: VodUrlRsp) {
returnResult[0] = result.vodUrl
}

override fun onError(error: IoTSDKError) {
}

})

录制按每天维度查询数量

可在日历上显示哪天有录制

import com.polaris.iot.appsdk.libplayback.CloudPlayback;
import com.polaris.iot.appsdk.libplayback.model.VodUrlGetReq
import com.polaris.iot.appsdk.libplayback.model.VodUrlRsp
import com.polaris.iot.appsdk.libplayback.model.MonthQueryItem;

String iotId = "设备唯一ID";
long endTime = System.currentTimeMillis();
long beginTime = endTime - 3600L * 24 * 1000 * 30;
MonthQueryReq params = new MonthQueryReq(iotId, beginTime, endTime, TimeZoneUtils.getTimeZoneSetting().getStrTimeZone());
CloudPlayback.monthRecordQuery(params, new OnResultListener<MonthQueryRsp>() {
@Override
public void onError(@NonNull IoTSDKError error) {

}

@Override
public void onResult(MonthQueryRsp result) {
List<MonthQueryItem> list = result.getDayCntList()
}
});

录制删除

import com.polaris.iot.appsdk.libplayback.CloudPlayback;
import com.polaris.iot.appsdk.libplayback.model.RecordDeleteReq;

String iotId = "";
long etime = System.currentTimeMillis();
long stime = etime - 3600* 1000;

RecordDeleteReq recordQueryReq = new RecordDeleteReq(iotId, stime, etime);
CloudPlayback.recordDelete(recordQueryReq, new OnResultListener<Object>() {
@Override
public void onResult(Object result) {
showToast("删除录制成功");
}

@Override
public void onError(@NonNull IoTSDKError error) {
showToast("删除录制失败");
}
});

事件列表查询

仅有录制事件数据,一般用于timeline播放使用

时间跨度不能超过7天,开始时间不能大于结束时间

import com.polaris.iot.appsdk.libplayback.CloudPlayback;
import com.polaris.iot.appsdk.libplayback.model.EventQueryReq;
import com.polaris.iot.appsdk.libplayback.model.EventQueryRsp;
import com.polaris.iot.appsdk.libplayback.model.RecordDeleteReq;
import com.polaris.iot.appsdk.libplayback.model.RecordQueryReq;
import com.polaris.iot.appsdk.libplayback.model.RecordQueryRsp;
import com.polaris.iot.appsdk.libplayback.model.RecordInfo;
import com.polaris.iot.appsdk.libplayback.model.TimelineEventInfo;
import com.polaris.iot.appsdk.libplayback.model.TimelineRecordInfo;
import com.polaris.iot.appsdk.libcommon.constants.IoTSDKError;
import com.polaris.iot.appsdk.libcommon.hook.OnResultListener;


String iotId = ""
long endTime = System.currentTimeMillis();
long beginTime = endTime - 6 * 3600 * 1000;

final EventQueryReq eventQueryReq = new EventQueryReq(mPlayDeviceInfo .getIotId(), beginTime, endTime);
CloudPlayback.eventQuery(eventQueryReq, new OnResultListener<EventQueryRsp>() {
@Override
public void onResult(EventQueryRsp result) {
final List<TimelineEventInfo> eventInfoList = result.getEventList();
}

@Override
public void onError(IoTSDKError error) {
IoTLogger.e(TAG, "CloudPlayback.eventQuery", error);
}
});

TimelineEventInfo

/**
* Timeline event info
*
* @property beginTime
* @property endTime
* @property eventType
* @constructor Create empty Timeline event info
*/
data class TimelineEventInfo(
var beginTime: Long = 0,
var endTime: Long? = null,
var eventType: Int = 0,
) {
/**
* 事件ID
*/
var eventId: Long = 0

/**
* 事件缩略图
*/
var imgUrl: String? = null

/**
* 扩展数据
*/
var extraData: String? = null

var isSelected: Boolean? = false

/**
* 镜头ID
*/
var lensId: Int? = null

/**
* 数据类型 0:纯消息类型,1:录像类型,2:图片类型
*/
var dataType: Int? = null

/**
* 自定义事件的标识符
*
*/
var identifier: String? = null

}

事件播放地址获取

多目设备需要区分镜头时,需要传递lensId

import com.polaris.iot.appsdk.libplayback.CloudPlayback;
import com.polaris.iot.appsdk.libplayback.model.VodUrlGetReq
import com.polaris.iot.appsdk.libplayback.model.VodUrlRsp

CloudPlayback.getEventPlayUrl(vodUrlGetReq, object : OnResultListener<VodUrlRsp> {
override fun onResult(result: VodUrlRsp) {
returnResult[0] = result.vodUrl
}

override fun onError(error: IoTSDKError) {
}

})

事件按每天维度查询数量

可在日历上显示哪天有事件

import com.polaris.iot.appsdk.libplayback.CloudPlayback;
import com.polaris.iot.appsdk.libplayback.model.VodUrlGetReq
import com.polaris.iot.appsdk.libplayback.model.VodUrlRsp
import com.polaris.iot.appsdk.libplayback.model.MonthQueryItem;

String iotId = "设备唯一ID";
long endTime = System.currentTimeMillis();
long beginTime = endTime - 3600L * 24 * 1000 * 30;
MonthQueryReq params = new MonthQueryReq(iotId, beginTime, endTime, TimeZoneUtils.getTimeZoneSetting().getStrTimeZone());
CloudPlayback.monthEventQuery(params, new OnResultListener<MonthQueryRsp>() {
@Override
public void onError(@NonNull IoTSDKError error) {

}

@Override
public void onResult(MonthQueryRsp result) {
List<MonthQueryItem> list = result.getEventCntList()
}
});

事件批量删除

传入选中的事件对象(事件列表返回)进行删除

import com.polaris.iot.appsdk.libplayback.CloudPlayback;

String iotId = "设备唯一ID";
List<TimelineEventInfo> eventList = mEventListAdapter.getSelectedEvents()

CloudPlayback.eventBatchDelete(iotId, eventList, new OnResultListener<>() {
@Override
public void onError(@NonNull IoTSDKError error) {
hideLoading();
showToast(R.string.tip_remove_failed);
}

@Override
public void onResult(Object result) {
hideLoading();
showToast(R.string.tip_remove_success);
exitDelMode();
findViewById(R.id.ivQueryBtn).callOnClick();
}
});

事件描述获取

用于判断是否有新事件产生,显示小红点

import com.polaris.iot.appsdk.libplayback.CloudPlayback;

CloudPlayback.getDeviceEventDesc(DeviceEventDescReq(iotId), object : OnResultListener<DeviceDescRsp> {
override fun onResult(result: DeviceDescRsp) {
val latestTime = SharedPreferenceUtil.getLong(Constants.SP_EVENT_LATEST_TIME_PREFIX + iotId, 0)
if (result.latestBeginTime > latestTime) {
showDot(1, true)
}

}

override fun onError(error: IoTSDKError) {
}

})

消息中心事件列表

包有所有事件数据,一般用于消息展示界面

时间跨度不能超过7天,开始时间不能大于结束时间

import com.polaris.iot.appsdk.libplayback.CloudPlayback;
import com.polaris.iot.appsdk.libplayback.model.EventQueryReq;
import com.polaris.iot.appsdk.libplayback.model.EventQueryRsp;
import com.polaris.iot.appsdk.libplayback.model.RecordDeleteReq;
import com.polaris.iot.appsdk.libplayback.model.RecordQueryReq;
import com.polaris.iot.appsdk.libplayback.model.RecordQueryRsp;
import com.polaris.iot.appsdk.libplayback.model.RecordInfo;
import com.polaris.iot.appsdk.libplayback.model.TimelineEventInfo;
import com.polaris.iot.appsdk.libplayback.model.TimelineRecordInfo;
import com.polaris.iot.appsdk.libcommon.constants.IoTSDKError;
import com.polaris.iot.appsdk.libcommon.hook.OnResultListener;


String iotId = ""
long endTime = System.currentTimeMillis();
long beginTime = endTime - 6 * 3600 * 1000;
final EventQueryReq eventQueryReq = new EventQueryReq(mPlayDeviceInfo .getIotId(), beginTime, endTime);
//根据事件类型查询 -128:自定义事件类型 1移动侦测 2 声音侦测 等
eventQueryReq.setEventTypes(List.of(0));
//根据自定义上报事件的标识符查询
eventQueryReq.setIdentifiers(List.of(""));

CloudPlayback.msgCenterEventQuery(eventQueryReq, new OnResultListener<EventQueryRsp>() {
@Override
public void onResult(EventQueryRsp result) {
final List<TimelineEventInfo> eventInfoList = result.getEventList();
}

@Override
public void onError(IoTSDKError error) {
IoTLogger.e(TAG, "CloudPlayback.eventQuery", error);
}
});

消息批量删除

传入选中的事件对象(消息列表返回)进行删除

import com.polaris.iot.appsdk.libplayback.CloudPlayback;

String iotId = "设备唯一ID";
List<TimelineEventInfo> eventList = mEventListAdapter.getSelectedEvents()

CloudPlayback.msgBatchDelete(iotId, eventList, new OnResultListener<>() {
@Override
public void onError(@NonNull IoTSDKError error) {
hideLoading();
showToast(R.string.tip_remove_failed);
}

@Override
public void onResult(Object result) {
hideLoading();
showToast(R.string.tip_remove_success);
exitDelMode();
findViewById(R.id.ivQueryBtn).callOnClick();
}
});

消息按天统计

可在日历上显示哪天有消息

import com.polaris.iot.appsdk.libplayback.CloudPlayback;

String iotId = "设备唯一ID";
long endTime = System.currentTimeMillis();
long beginTime = endTime - 3600L * 24 * 1000 * 30;
MonthQueryReq params = new MonthQueryReq(iotId, beginTime, endTime, TimeZoneUtils.getTimeZoneSetting().getStrTimeZone());

CloudPlayback.msgEventMonthQuery(iotId, eventList, new OnResultListener<>() {
@Override
public void onError(@NonNull IoTSDKError error) {
showToast(R.string.tip_remove_failed);
}

@Override
public void onResult(MonthQueryRsp result) {
List<MonthQueryItem> list = result.getEventCntList()
}
});

消息描述获取

用于判断是否有新消息产生,显示小红点

import com.polaris.iot.appsdk.libplayback.CloudPlayback;

CloudPlayback.getDeviceMsgDesc(DeviceMsgDescReq(iotId), object : OnResultListener<DeviceDescRsp> {
override fun onResult(result: DeviceDescRsp) {
val latestTime = SharedPreferenceUtil.getLong(Constants.SP_MSG_LATEST_TIME_PREFIX + iotId, 0)
if (result.latestBeginTime > latestTime) {
showDot(2, true)
}

}

override fun onError(error: IoTSDKError) {
}

})

设备云存储套餐

package com.polaris.iot.appsdk.libplayback

/**
* 设备云套餐
*
* @constructor Create empty cloud service mgr
*/
object CloudServiceMgr {
/**
* 设备当前套餐
* @param iotId 设备唯一ID
* @param iotCallback [IoTCallback]
*/
@JvmStatic
fun deviceCurrentService(iotId: String, iotCallback: IoTCallback)

/**
* 设备历史套餐
* @param deviceServiceHistoryReq [DeviceServiceHistoryReq] 查询参数
* @param iotCallback [IoTCallback]
*/
@JvmStatic
fun deviceServiceHistory(deviceServiceHistoryReq: DeviceServiceHistoryReq, iotCallback: IoTCallback)
}

设备当前套餐

当前设备可用套餐

val iotId = ""
CloudServiceMgr.deviceCurrentService(iotId, object : IoTCallback {
override fun onFailure(request: IoTRequest?, exception: IoTSDKError) {

}

override fun onResponse(request: IoTRequest, response: IoTResponse) {
val data = response?.data as DeviceCurrentServiceRsp?
}
})

设备历史套餐

包含当前生效套餐及过期套餐(不包含备用套餐)

private void getDeviceServiceList() {

showLoading();

long endTime = System.currentTimeMillis();
long beginTime = endTime - 3600 * 1000 * 24 * 365L;
final DeviceServiceHistoryReq queryReq = new DeviceServiceHistoryReq(mDeviceInfo.getIotId(), beginTime, endTime);


CloudServiceMgr.deviceServiceHistory(queryReq, new IoTCallback() {
@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
hideLoading();
DeviceServiceHistoryRsp rsp = (DeviceServiceHistoryRsp) response.getData();
List<DeviceServiceHistoryRspItem> serviceList = rsp.getCommodityList();
IoTLogger.d(TAG, "套餐列表查询成功 size=" + serviceList.size());
showToast("套餐列表查询成功");

runOnUiThread(() -> mServiceListAdapter.setDataList(serviceList));
}

@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
hideLoading();
showToast("套餐列表查询失败," + exception.getMessage());
}

});

}