Last Updated on : 2024-06-17 08:30:55download
IP cameras (IPCs) support the cloud storage service that allows users to save video footage on the IPCs to the cloud.
If the cloud storage service is inactivated or has expired, this service must be purchased to enable cloud storage.
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.
If the cloud storage service is within the validity period:
IThingIPCCloud
provides a collection of cloud storage APIs, including the one 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, the Cloud Storage UI BizBundle must be integrated. This component provides the H5 pages and order display features for the subscription.
IThingCloudCamera
provides API methods to deal with cloud-stored video footage.
API description
Create a cloud storage instance object.
Some IThingCloudCamera
APIs are implemented asynchronously. It is recommended not to call other methods of an object within this object’s callback, as it may cause Application Not Responding (ANR) issues.
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.
|
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. |
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) {
}
});
Data model of AITimePieceBean
Parameter | Description |
---|---|
startTime | The start Unix timestamp of the video clip. |
endTime | The end Unix timestamp of the video clip. |
aiCode | The ID of the AI event clip. |
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 started. |
endTime | The time when the motion detection event 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. |
Check whether AI-based detection is enabled for a specific device.
API description
void queryAIDetectConfig(String devId, IThingResultCallback<AIDetectConfigBean> callback);
Data model of AIDetectConfigBean
Parameter | Description |
---|---|
switchState | Indicates whether AI-based detection is enabled for the device.
|
isAiDevice | Indicates whether the device supports AI-based detection. |
aiItemList | The data of objects supported by AI-based detection. |
Data model of AIDetectEventBean
Parameter | Description |
---|---|
aiCode | The identifier of an AI model. |
aiCodeIcon | The icon of an AI model. |
aiCodeDesc | The description of an AI model. |
configState | Indicates whether the current model is enabled.
|
orderValue | The sorting value of the current model. |
Example
cloudCamera.queryAIDetectConfig(getDevId(), new IThingResultCallback<AIDetectConfigBean>() {
@Override
public void onSuccess(AIDetectConfigBean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
Enable or disable AI-enabled detection for a specific device.
API description
void enableAIDetect(String devId, boolean enable, IThingResultCallback<Boolean> callback);
Parameters
Parameter | Description |
---|---|
devId | The device ID. |
enable | Specifies whether to enable or disable AI-enabled detection. |
Example
cloudCamera.enableAIDetect(getDevId(), enable, new IThingResultCallback<AIDetectConfigBean>() {
@Override
public void onSuccess(Boolean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
API description
void enableAIDetectEventType(String devId, String aiCode, int enableState, IThingResultCallback<Boolean> callback);
Parameters
Parameter | Description |
---|---|
devId | The device ID. |
aiCode | The ID of an AI event. |
enableState | Specifies whether AI-based detection is enabled.
|
Example
cloudCamera.enableAIDetectEventType(getDevId(), aiCode, enableState, new IThingResultCallback<AIDetectConfigBean>() {
@Override
public void onSuccess(Boolean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
After AI-based cloud storage is enabled, the device can report events when detection alerts are triggered. AI-based algorithms can be used to accurately identify whether the reported events include the objects specified by users. Currently, the supported objects include humans, pets, vehicles, and packages.
Alert events and detection messages for AI-based cloud storage are handled with the same logic as that for generic cloud storage.
API description
void getMotionDetectionInfo(String devId, String aiCodes, long timeGT, long timeLT, int offset, int limit, IThingResultCallback<List<TimeRangeBean>> callback);
Parameters
Parameter | Description |
---|---|
devId | The device ID. |
aiCodes | The list of AI event IDs, for example, ai_package,ai_human . |
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. |
Create a device object.
API description
void createCloudDevice(String cachePath, String devId)
Parameters
Parameter | Description |
---|---|
cachePath | The path of the cache. |
devId | The device ID. |
Example
cloudCamera.createCloudDevice(cachePath, devId);
API description
void deinitCloudCamera();
Example
cloudCamera.deinitCloudCamera();
API description
public void destroy();
Example
cloudCamera.destroy();
Register a listener with IThingCloudCamera
. Otherwise, video images cannot be displayed as expected.
API description
void registorOnP2PCameraListener(OnP2PCameraListener listener);
Parameters
Parameter | Description |
---|---|
listener | The P2P connection callback. |
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
The start time mStartTime
must be within the timeframe returned by getTimeLineInfo.
void playCloudDataWithStartTime(long mStartTime, long mEndTime, boolean isEvent, OperationCallBack callback, OperationCallBack playFinishedCallBack);
Parameters
Parameter | Description |
---|---|
mStartTime | The 10-digit start timestamp. |
mEndTime | The end timestamp of the period in which video clips are played back. By default, it is the end timestamp of the current day. |
isEvent | Indicates whether this is a detection event.
|
callBack | The playback callback. |
playFinishedCallBack | The playback completion callback. |
Example
cloudCamera.playCloudDataWithStartTime(startTime, endTime, isEvent,
new OperationCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data, Object camera) {
// The callback to be invoked 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 to be invoked 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 video clip to be downloaded. |
stopTime | The 10-digit end timestamp of the video clip to be downloaded. |
folderPath | The path where 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 download completion callback. |
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 date and time. |
isAllDay | Specifies whether to delete the data for the whole day. |
timeZone | The 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.
|
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) {
}
});
Set 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