IP cameras (IPCs) support the cloud storage service that allows users to save video footage on the IPCs to the cloud.
After the cloud storage service expires, the existing cloud-stored video files will be retained for a period, seven days in most cases. At the end of this period, all cloud-stored video files will be deleted.
Get the date on which the cloud-stored video files were created.
Get the data of the specified date, including cloud storage events, timeline data, and authentication information.
Select a cloud storage event or a time point to start cloud-stored video playback.
IThingIPCCloud provides a collection of cloud storage APIs, including those used to check the support for cloud storage capabilities.
API description
boolean isSupportCloudStorage(String devId);
Parameters
| Parameter | Description |
|---|---|
| devId | The device ID. |
Example
IThingIPCCloud cloud = ThingIPCSdk.getCloud();
if (cloud != null) {
isSupportCloudStorage = cloud.isSupportCloudStorage(devId);
}
To enable subscription to the cloud storage service, use open api.
IThingCloudCamera provides API methods to deal with cloud-stored video footage.
API description
Creates a cloud storage instance object.
IThingCloudCamera createCloudCamera();
Example
private IThingCloudCamera cloudCamera;
IThingIPCCloud cloud = ThingIPCSdk.getCloud();
if (cloud != null) {
cloudCamera = cloud.createCloudCamera();
}
API description
void queryCloudServiceStatus(String devId, IThingResultCallback<CloudStatusBean> callback);
Parameters
| Parameter | Description |
|---|---|
| devId | The device ID. |
| callback | The callback. |
Example
cloudCamera.queryCloudServiceStatus(devId, new IThingResultCallback<CloudStatusBean>() {
@Override
public void onSuccess(CloudStatusBean result) {
//Get cloud storage status
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
Data model of CloudStatusBean
| Parameter | Description |
|---|---|
| status | The status code. Valid values:
|
API description
void getCloudDays(String devId, String timezoneId, IThingResultCallback<List<CloudDayBean>> callback);
Parameters
| Parameter | Description |
|---|---|
| devId | The device ID. |
| timezoneId | The time zone ID. |
Example
cloudCamera.getCloudDays(devId, TimeZone.getDefault().getID(), new IThingResultCallback<List<CloudDayBean>>() {
@Override
public void onSuccess(List<CloudDayBean> result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
Data model of CloudDayBean
| Parameter | Description |
|---|---|
| uploadDay | The date on which video clips were uploaded. |
| currentDayStart | The start time of a period in which video clips are returned. |
| currentDayEnd | The end time of a period in which video clips are returned. |
API description
void getTimeLineInfo(String devId, long timeGT, long timeLT, IThingResultCallback<List<TimePieceBean>> callback);
Parameters
| Parameter | Description |
|---|---|
| devId | The device ID. |
| timeGT | The 10-digit start timestamp. |
| timeLT | The 10-digit end timestamp. |
| callback | The callback. |
Example
CloudDayBean dayBean = dayBeanList.get(0);
cloudCamera.getTimeLineInfo(devId, dayBean.getCurrentStartDayTime(), dayBean.getCurrentDayEndTime(), new IThingResultCallback<List<TimePieceBean>>() {
@Override
public void onSuccess(List<TimePieceBean> result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
API description
void getMotionDetectionInfo(String devId, long timeGT, long timeLT, int offset, int limit, IThingResultCallback<List<TimeRangeBean>> callback);
Parameters
| Parameter | Description |
|---|---|
| devId | The device ID. |
| timeGT | The 10-digit start timestamp. |
| timeLT | The 10-digit end timestamp. |
| offset | The page number starting from which target data is returned. Default value: 0. |
| limit | The maximum number of entries to be returned at a time. Default value: -1 to return all data. |
| callback | The callback. |
Data model of TimeRangeBean
| Parameter | Description |
|---|---|
| describe | The description of motion detection. |
| startTime | The time when the motion detection event was started. |
| endTime | The time when the motion detection event was ended. |
| snapshotUrl | The image of the motion detection event. |
| v | The version. A value of 2 indicates that the image is encrypted. |
Example
CloudDayBean dayBean = dayBeanList.get(0);
cloudCamera.getMotionDetectionInfo(devId, dayBean.getCurrentStartDayTime(), dayBean.getCurrentDayEndTime(), offset, limit, new IThingResultCallback<List<TimeRangeBean>>() {
@Override
public void onSuccess(List<TimeRangeBean> result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
The screenshots of cloud storage events are encrypted before they can be displayed by the image encryption component. For more information, see Encrypted Images.
API description
void getCloudSecret(String devId, ResultListener<JSONObject> callback)
Parameters
| Parameter | Description |
|---|---|
| devId | The device ID. |
| Business.ResultListener | The callback. |
Example
CloudBusiness cloudBusiness =new CloudBusiness();
cloudBusiness.getCloudSecret(devId, new Business.ResultListener<JSONObject>() {
@Override
public void onFailure(BusinessResponse bizResponse, JSONObject bizResult, String apiName) {
}
@Override
public void onSuccess(BusinessResponse bizResponse, JSONObject bizResult, String apiName) {
mEncryptKey = bizResult.getString("encryptKey");
}
});
| Error code | Description |
|---|---|
| -2000 | Failed to save the information about the cloud-stored video clips. |
| -2001 | The authentication information for cloud storage is empty. |
| -2002 | Failed to parse the URL for playing cloud-stored resources. |
Creates a device object.
API description
void createCloudDevice(String cachePath, String devId)
Parameters
| Parameter | Description |
|---|---|
| cachePath | The path through which video data is cached. |
| devId | The device ID. |
Example
cloudCamera.createCloudDevice(cachePath, devId);
API description
void deinitCloudCamera();
Example
cloudCamera.deinitCloudCamera();
API description
public void destroy();
Example
cloudCamera.destroy();
Registers a listener with IThingCloudCamera. Otherwise, video images cannot be displayed as expected.
API description
void registorOnP2PCameraListener(OnP2PCameraListener listener);
Parameters
| Parameter | Description |
|---|---|
| listener | The callback to invoke when a P2P smart camera listener is registered. |
Example
cloudCamera.registorOnP2PCameraListener(new AbsP2pCameraListener() {
@Override
public void onSessionStatusChanged(Object camera, int sessionId, int sessionStatus) {
super.onSessionStatusChanged(camera, sessionId, sessionStatus);
}
});
API description
void removeOnP2PCameraListener();
Example
cloudCamera.removeOnP2PCameraListener();
API description
void generateCloudCameraView(IRegistorIOTCListener view);
Parameters
| Parameter | Description |
|---|---|
| view | The player component. |
Example
cloudCamera.generateCloudCameraView(mVideoView);
API description
void playCloudDataWithStartTime(long mStartTime, long mEndTime, boolean isEvent, OperationCallBack callback, OperationCallBack playFinishedCallBack);
Parameters
| Parameter | Description |
|---|---|
| mStartTime | The 10-digit start timestamp. |
| mEndTime | The 10-digit end timestamp of the period in which video clips are played back. By default, it is the end timestamp of the current date. |
| isEvent | Indicates whether motion detection video clips are played back. Default value: false. |
| callBack | The playback callback. |
| playFinishedCallBack | The callback that is used when playback is ended. |
Example
cloudCamera.playCloudDataWithStartTime(startTime, endTime, isEvent,
new OperationCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data, Object camera) {
// The callback that is executed when video clips are being played back. `playing` is returned.
}
@Override
public void onFailure(int sessionId, int requestId, int errCode, Object camera) {
}
}, new OperationCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data, Object camera) {
// The callback that is executed when playback is ended. `playCompleted` is returned.
}
@Override
public void onFailure(int sessionId, int requestId, int errCode, Object camera) {
}
});
API description
int pausePlayCloudVideo(OperationDelegateCallBack callBack);
Parameters
| Parameter | Description |
|---|---|
| callBack | The callback. |
Example
cloudCamera.pausePlayCloudVideo(new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
API description
int resumePlayCloudVideo(OperationDelegateCallBack callBack);
Parameters
| Parameter | Description |
|---|---|
| callBack | The callback. |
Example
cloudCamera.resumePlayCloudVideo(new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
API description
int stopPlayCloudVideo(OperationDelegateCallBack callBack);
Parameters
| Parameter | Description |
|---|---|
| callBack | The callback. |
Example
cloudCamera.stopPlayCloudVideo(new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
API description
void startCloudDataDownload(long startTime, long stopTime, String folderPath, String mp4FileName,
OperationCallBack callback, ProgressCallBack progressCallBack, OperationCallBack finishedCallBack);
Parameters
| Parameter | Description |
|---|---|
| startTime | The 10-digit start timestamp of the period in which video clips are downloaded. |
| stopTime | The 10-digit end timestamp of the period in which video clips are downloaded. |
| folderPath | The path through which the video clips are stored. |
| mp4FileName | The name of the target video file. |
| callback | The callback. |
| progressCallBack | The callback for the download progress. |
| finishedCallBack | The callback that is executed when download is ended. |
API description
void stopCloudDataDownload(OperationCallBack callBack);
Parameters
| Parameter | Description |
|---|---|
| callBack | The callback. |
API description
void deleteCloudVideo(String devId, long timeGT, long timeLT, boolean isAllDay, String timeZone, IThingResultCallback<String> listener);
Parameters
| Parameter | Description |
|---|---|
| devId | The device ID. |
| timeGT | The 10-digit start timestamp. |
| timeLT | The end time of the period to be queried. |
| isAllDay | Specifies whether to delete the data for the whole day. |
| timeZone | Time zone |
| listener | The callback. |
API description
int startRecordLocalMp4(String folderPath, String fileName, OperationDelegateCallBack callBack);
Parameters
| Parameter | Description |
|---|---|
| folderPath | The directory in which the video file is stored. |
| fileName | The name of the video file. |
| callBack | The callback. |
Example
cloudCamera.startRecordLocalMp4(IPCCameraUtils.recordPath(devId), String.valueOf(System.currentTimeMillis()), new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
Toast.makeText(CameraCloudStorageActivity.this, "record start success", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
API description
int stopRecordLocalMp4(OperationDelegateCallBack callBack);
Parameters
| Parameter | Description |
|---|---|
| callBack | The callback. |
Example
cloudCamera.stopRecordLocalMp4(new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
Toast.makeText(CameraCloudStorageActivity.this, "record end success", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
Cloud-stored video playback supports additional features, such as the audio switch and screenshots.
API description
int getCloudMute();
Example
cloudCamera.getCloudMute()
API description
void setCloudMute(final int mute, OperationDelegateCallBack callBack);
Parameters
| Parameter | Description |
|---|---|
| mute | Specify whether to mute the video. Valid values:
|
| callBack | The callback. |
Example
cloudCamera.setCloudMute(mute, new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
soundState = Integer.valueOf(data);
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
API description
int snapshot(String absoluteFilePath, OperationDelegateCallBack callBack);
Parameters
| Parameter | Description |
|---|---|
| absoluteFilePath | The URL of the screenshot file. |
| callBack | The callback. |
Example
cloudCamera.snapshot(IPCCameraUtils.recordSnapshotPath(devId), new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
Toast.makeText(CameraCloudStorageActivity.this, "snapshot success", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
Sets the playback speed after video playing is started. Audio playback does not support the playback speed setting.
API description
void setPlayCloudDataSpeed(int speed, OperationCallBack operationCallBack);
Parameters
| Parameter | Description |
|---|---|
| speed | The playback speed that supports 1x, 2x, and 4x. You can get an enum value of CloudPlaySpeed to set the playback speed. |
| operationCallBack | The callback. |
Enum values of CloudPlaySpeed
CloudPlaySpeed.MULTIPLE_1, // 1.0x
CloudPlaySpeed.MULTIPLE_2, // 2.0x
CloudPlaySpeed.MULTIPLE_4, // 4.0x
Example
mCloudCamera.setPlayCloudDataSpeed(speed, new OperationCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data, Object camera) {
// TODO " setPlayCloudDataSpeed onSuccess"
}
@Override
public void onFailure(int sessionId, int requestId, int errCode, Object camera) {
}
});
Is this page helpful?
YesFeedbackIs this page helpful?
YesFeedback