存储卡
更新时间:2025-05-27 11:40:25
提供存储卡录制不同方式的播放能力
package com.polaris.iot.appsdk.libplayback
object SDCardService {
/**
* 按时间段获取SD卡录制文件
*
* @param params 请求参数 [SDCardRecordQueryReq]
* @param listener 回调 [OnResultListener]<[RecordQueryRsp]>
*/
@JvmStatic
fun recordTimeQuery(params: SDCardRecordQueryReq, listener: OnResultListener<RecordQueryRsp>)
/**
* 按文件获取SD卡录制文件
*
* @param params 请求参数 [SDCardRecordQueryReq]
* @param listener 回调 [OnResultListener]<[RecordFileQueryRsp]>
*/
@JvmStatic
fun recordFileQuery(params: SDCardRecordQueryReq, listener: OnResultListener<RecordFileQueryRsp>)
/**
* 按时间段获取事件文件
*
* @param params 请求参数 [SDCardEventQueryReq]
* @param listener 回调 [OnResultListener]<[EventQueryRsp]>
*/
@JvmStatic
fun eventTimeQuery(params: SDCardEventQueryReq, listener: OnResultListener<EventQueryRsp>)
/**
* 按月查询录制统计
*
* @param monthQueryReq
* @param listener
*/
@JvmStatic
fun monthRecordQuery(monthQueryReq: SDCardRecordMonthQueryReq, listener: OnResultListener<MonthQueryRsp>)
}
按时间录制列表
时间跨度不能超过7天,开始时间不能大于结束时间
返回列表倒序排列
/**
* SD卡查询条件
*
* @property productKey
* @property deviceName
* @property beginTime 查询开始时间。
* @property endTime 查询结束时间。
* @property pageSize
* @constructor Create empty S d card record query req
*/
data class SDCardRecordQueryReq(
var productKey: String,
var deviceName: String,
var beginTime: Long,
var endTime: Long,
var pageSize: Int
) {
constructor(productKey: String, deviceName: String, beginTime: Long, endTime: Long) : this(productKey, deviceName, beginTime, endTime, 100)
/**
* 录像类型:0 计划录像,1 报警录像,2 主动录像 99:所有类型
*/
var recordType: Int = 99
/**
* 是否压缩数据 0不压缩(默认) 1压缩 版本要求:v1.4.1
* 需要区分设备是否有压缩能力
*/
var compressAck: Int = 0
}
示例
String iotId = ""
long endTime = System.currentTimeMillis();
long beginTime = endTime - 6 * 3600 * 1000;
final RecordQueryReq recordQueryReq = new SDCardRecordQueryReq(mPlayDeviceInfo.getProductKey(), mPlayDeviceInfo.getDeviceName(), beginTime, endTime);
//mPanelDevice 见物模型初始化
//初始化成功后调用判断设备是否具有压缩能力 默认不压缩
int compressAck = mPanelDevice.supportAbility(ThingAbilityEnum.COMPRESS_DATA) ? 1 : 0;
recordQueryReq.setCompressAck(mCompressAck);
SDCardService.recordTimeQuery(recordQueryReq, new OnResultListener<RecordQueryRsp>() {
@Override
public void onError(@NonNull IoTSDKError error) {
}
@Override
public void onResult(RecordQueryRsp result) {
final List<TimelineRecordInfo> RecordInfoList = result.getRecordFileList();
}
});
按时间录制列表播放
IoTPlayerParam param = new IoTPlayerParam();
//从录制数据接口返回
boolean isSDCardPlayback = true;
IoTPlayerSeekParam seekParam = new IoTPlayerSeekParam(beginTime,endTime,isSDCardPlayback )
mPlayerCtrl.prepare(param,seekParam);
mPlayerCtrl.start();
//回看seek
IoTPlayerSeekParam seekParam = new IoTPlayerSeekParam(beginTime,endTime,isSDCardPlayback)
mPlayerCtrl.seekTo(seekParam);
按文件录制列表
时间跨度不能超过7天,开始时间不能大于结束时间
返回列表倒序排列
String iotId = ""
long endTime = System.currentTimeMillis();
long beginTime = endTime - 6 * 3600 * 1000;
SDCardRecordQueryReq recordQueryReq = new SDCardRecordQueryReq(mDeviceInfo.getProductKey(), mDeviceInfo.getDeviceName(), beginTime, endTime);
//mPanelDevice 见物模型初始化
//初始化成功后调用判断设备是否具有压缩能力 默认不压缩
int compressAck = mPanelDevice.supportAbility(ThingAbilityEnum.COMPRESS_DATA) ? 1 : 0;
recordQueryReq.setCompressAck(mCompressAck);
SDCardService.recordFileQuery(recordQueryReq, new OnResultListener<RecordFileQueryRsp>() {
@Override
public void onError(@NonNull IoTSDKError error) {
}
@Override
public void onResult(RecordFileQueryRsp result) {
List<SDCardRecordFileInfo> recordInfoList = result.getRecordFileList();
}
});
按文件录制播放
IoTPlayerParam param = new IoTPlayerParam();
//录制文件名
String filename = ""
//播放绝对时间
long beginTime;
//录制文件结束时间(绝对时间)
long endTme;
//播放绝对时间相对于文件起始时间(绝对时间)的偏移时间
int seekPos;
IoTPlayerSeekParam seekParam = new IoTPlayerSeekParam(beginTime,endTime,filename, seekPos)
mPlayerCtrl.prepare(param,seekParam);
mPlayerCtrl.start();
//回看seek
IoTPlayerSeekParam seekParam = new IoTPlayerSeekParam(beginTime,endTime,filename, seekPos)
mPlayerCtrl.seekTo(seekParam);
录制事件列表
时间跨度不能超过7天,开始时间不能大于结束时间
返回列表倒序排列
事件播放同按时间录制列表播放
data class SDCardEventQueryReq(
var productKey: String,
var deviceName: String,
/**
* 查询开始时间。单位秒。
*/
var beginTime: Long,
/**
* 查询结束时间。单位秒。
*/
var endTime: Long,
var pageSize: Int
) {
constructor(productKey: String, deviceName: String, beginTime: Long, endTime: Long) : this(productKey, deviceName, beginTime, endTime, 100)
/**
* 报警类型 不传默认全部
*/
var eventType: Int? = null
/**
* 是否压缩数据 0不压缩(默认) 1压缩 版本要求:v1.4.1
* 需要区分设备是否有压缩能力
*/
var compressAck: Int = 0
}
示例
String iotId = ""
long endTime = System.currentTimeMillis();
long beginTime = endTime - 6 * 3600 * 1000;
final SDCardEventQueryReq queryReq = new SDCardEventQueryReq(mDeviceInfo.getProductKey(), mDeviceInfo.getDeviceName(), beginTime, endTime);
//mPanelDevice 见物模型初始化
//初始化成功后调用判断设备是否具有压缩能力 默认不压缩
int compressAck = mPanelDevice.supportAbility(ThingAbilityEnum.COMPRESS_DATA) ? 1 : 0;
queryReq.setCompressAck(mCompressAck);
SDCardService.eventTimeQuery(queryReq, new OnResultListener<EventQueryRsp>() {
@Override
public void onError(@NonNull IoTSDKError error) {
}
@Override
public void onResult(EventQueryRsp result) {
final List<TimelineEventInfo> eventInfoList = result.getEventList();
}
});
按月统计录制
按月查询每天是否有录制,使用场景:在日历上加小红点
示例
private void startRecordMonthQuery() throws ParseException {
Date queryDate = getQueryBeginTime();
Calendar calendar = Calendar.getInstance();
calendar.setTime(queryDate);
SDCardRecordMonthQueryReq params = new SDCardRecordMonthQueryReq(
mDeviceInfo.getProductKey(),
mDeviceInfo.getDeviceName(),
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH) + 1
);
SDCardService.monthRecordQuery(params, new OnResultListener<>() {
@Override
public void onError(@NonNull IoTSDKError error) {
hideLoading();
showToast("月录制查询失败," + error.getMessage());
}
@Override
public void onResult(MonthQueryRsp result) {
runOnUiThread(() -> {
hideLoading();
List<CommonListItem> list = new ArrayList<>();
for (MonthQueryItem item : Objects.requireNonNull(result.getDayCntList())) {
list.add(new CommonListItem(item.getDateStr(), String.valueOf(item.getCount())));
}
mCommonListAdapter.setDataList(list);
showToast("月录制查询成功");
});
}
});
}