Last Updated on : 2024-11-18 11:33:16download
Tuya IPC UI BizBundle for Android (TuyaSmartCameraPanelBizBundle
) is the panel SDK that provides a series of IPC features developed based on Tuya IPC SDK. The following features are supported:
The IPC UI BizBundle already includes the IPC SDK of the same version. You do not need to add SDK dependencies again. Otherwise, conflicts might occur between different versions.
Integrate with the framework of the UI BizBundle.
Add dependencies to the build.gradle
file of the Android project.
dependencies{
implementation 'com.tuya.smart:tuyasmart-bizbundle-camera:4.2.0-33'
//... Other configurations.
}
TuyaSmartCameraPanelBizBundle
provides the API methods to access different panels of Powered by Tuya (PBT) IPCs. This helps you to implement navigation between panels and custom features.
Follow the instructions on IPCs in TuyaSmartBizbundle Demo to configure an IPC and perform tasks with the IPC panel.
The native preview panel supports a bunch of features. For example, you can implement live video preview, switching between video definition modes, audio switch control, screenshots, video recording, video talk, motion detection, PTZ control, preset point addition or deletion, and auto-patrol control.
API description
Navigation between panels is implemented through routes specified by camera_panel_2
.
Parameters
Parameter | Description |
---|---|
extra_camera_uuid | The device ID. You can get the value from the list of devices returned for the home. |
Example
Bundle bundle = new Bundle();
bundle.putString("extra_camera_uuid", devId);
UrlBuilder urlBuilder = new UrlBuilder(context, "camera_panel_2").putExtras(bundle);
UrlRouter.execute(urlBuilder);
Before the React Native (RN) preview panel is implemented, Device Control UI BizBundle must be integrated. For more information, see Device Control UI BizBundle.
API description
Navigates to the RN panel based on the service API method AbsPanelCallerService.goPanelWithCheckAndTip()
.
AbsPanelCallerService service = MicroContext.getServiceManager().findServiceByInterface(AbsPanelCallerService.class.getName());
service.goPanelWithCheckAndTip(IPCPanelActivity.this, bean.getDevId());
The playback panel is used to play back video footage stored on an SD card. Multiple features can be implemented, for example, video playback, playback time selection, video seeking along the timeline, play and pause, audio control, screenshots, and video recording.
API description
Navigation between panels is implemented through routes specified by camera_playback_panel
.
Parameters
Parameter | Description |
---|---|
extra_camera_uuid | The device ID. |
destroyCamera | Specifies whether to close the connection after the playback panel is exited. Default value: false . |
Example
Bundle bundle = new Bundle();
bundle.putExtra("extra_camera_uuid", deviceId);
UrlBuilder urlBuilder = new UrlBuilder(context,"camera_playback_panel").putExtras(bundle);
UrlRouter.execute(urlBuilder);
The cloud storage panel is used to view and play back cloud-stored video footage. Multiple features can be implemented, for example, cloud-stored video playback, cloud storage time selection, video seeking along the timeline, play and pause, audio control, screenshots, video recording, and display of the motion detection list.
API description
Navigation between panels is implemented through routes specified by camera_cloud_panel
.
Parameters
Parameter | Description |
---|---|
extra_camera_uuid | The device ID. |
extra_position | The timestamp when a certain motion detection video clip was stored in the cloud on the most recent date. Unit: seconds. This parameter is optional. |
Example
Bundle bundle = new Bundle();
bundle.putExtra("extra_camera_uuid", deviceId);
UrlBuilder urlBuilder = new UrlBuilder(context,"camera_cloud_panel").putExtras(bundle);
UrlRouter.execute(urlBuilder);
The message center panel is used to display messages that are generated during video recording. The messages are sorted by date and message type and classified by images, video, audio, or other types. Users can preview the messages and delete one or all messages.
API description
Navigation between panels is implemented through routes specified by camera_message_panel
.
Parameters
Parameter | Description |
---|---|
extra_camera_uuid | The device ID. |
Example
Bundle bundle = new Bundle();
bundle.putExtra("extra_camera_uuid", deviceId);
UrlBuilder urlBuilder = new UrlBuilder(context,"camera_message_panel").putExtras(bundle);
UrlRouter.execute(urlBuilder);
The photo album panel is used to display the files saved by device ID. These files are local screenshots and video footage generated during video preview, playback, and cloud-stored video playback. Users can preview the files and delete one or all files.
API description
Navigation between panels is implemented through routes specified by ipc_album_panel
.
Parameters
Parameter | Description |
---|---|
extra_camera_uuid | The device ID. |
Example
Bundle bundle = new Bundle();
bundle.putExtra("extra_camera_uuid", deviceId);
UrlBuilder urlBuilder = new UrlBuilder(context,"ipc_album_panel").putExtras(bundle);
UrlRouter.execute(urlBuilder);
The doorbell panel is used to display notifications in the case of doorbell calls. Multiple features are supported, for example, basic doorbell information, real-time screenshots, answering or hanging up a call. After a call is answered, users are navigated to the IPC preview panel.
API description
Navigation between panels is implemented through routes specified by camera_door_bell
.
Parameters
Parameter | Description |
---|---|
devId | The device ID. You can get the value from the doorbell notification. |
Example
Bundle bundle = new Bundle();
bundle.putString("devId", deviceId);
UrlBuilder urlBuilder = new UrlBuilder(MicroContext.getApplication(), "camera_door_bell").putExtras(bundle);
UrlRouter.execute(urlBuilder);
The live video doorbell panel is used to display notifications in the case of live video doorbell calls. Multiple features are supported, for example, doorbell status, and answering or hanging up a call. A doorbell call is valid for less than 25 seconds. After it is answered within this validity period, a live video talk is implemented.
API description
Navigation between panels is implemented through routes specified by camera_action_doorbell
.
Parameters
Parameter | Description |
---|---|
extra_camera_uuid | The device ID. You can get the value from the doorbell notification. |
doorbell_start_time | The start time of long type when the doorbell is pressed. The live video doorbell panel counts down for 25 seconds from this time point. In actual scenarios, a doorbell call might last for less than 25 seconds. |
Example
Bundle bundle = new Bundle();
bundle.putString("extra_camera_uuid", deviceId);
bundle.putLong("doorbell_start_time", startTime);
UrlBuilder urlBuilder = new UrlBuilder(MicroContext.getApplication(), "camera_action_doorbell").putExtras(bundle);
UrlRouter.execute(urlBuilder);
The setting panel is used to display data point (DP) settings. For more information, see IPC Control. The following features are supported:
API description
Navigation between panels is implemented through routes specified by camera_panel_more
.
Parameters
Parameter | Description |
---|---|
extra_camera_uuid | The device ID. |
Example
Bundle bundle = new Bundle();
bundle.putString("extra_camera_uuid", deviceId);
UrlBuilder urlBuilder = new UrlBuilder(context, panel).putExtras(bundle);
UrlRouter.execute(urlBuilder);
If navigation to the setting panel through the configured route failed, contact Tuya’s account manager or submit a ticket to check whether the pane is newly created.
Dark and light themes are supported. Multiple features can be implemented: IPC video playback, cloud storage, message center, settings, and local albums.
API description
You can call the method CameraUIThemeUtils.setCurrentThemeId(@ThemeIDs int themeIDs)
to set themes.
CameraUIThemeUtils.setCurrentThemeId(@ThemeIDs int themeIDs);
Parameters
Parameter | Description |
---|---|
themeId | The theme color ID. Valid values:
|
Example
CameraUIThemeUtils.setCurrentThemeId(Constants.BLACK_THEME_ID);
This API method is called to enter the panel and the result takes effect globally. This panel cannot be previewed.
TuyaSmartCameraPanelBizBundle
supports custom panels. For more information about the implementation, see IPC SDK.
The UI BizBundle has integrated with the SDK. The SDK versions must be consistent between the UI BizBundle and those mentioned in the SDK documents.
Implement the panel
Go to app
> assets
> module_app.json
, find and delete the undesired route, capture the deleted route, and then customize the navigation. Perform the following steps:
Find and delete the undesired route camera_panel_more
.
Follow the instructions in Integrate with Framework to get the unimplemented route and navigate to the target page.
TuyaWrapper.init(this, new RouteEventListener() {
@Override
public void onFaild(int errorCode, UrlBuilder urlBuilder) {
// The original route specified by `urlBuilder.originUrl`.
ToastUtil.shortToast(TuyaPanelSDK.getCurrentActivity(), urlBuilder.originUrl);
}
},new ServiceEventListener() {
@Override
public void onFaild(String serviceName) {
Log.e("service not implement", serviceName);
}
});
Route target |
Feature |
---|---|
camera_panel_2 | Dark preview panel |
camera_playback_panel | Playback panel |
camera_cloud_panel | Cloud storage panel |
camera_message_panel | Message center panel |
camera_door_bell | Doorbell panel |
doorbell_camera_panel | Doorbell preview panel |
doorbell_camera_playback_panel | Doorbell playback panel |
camera_action_doorbell | Mains-powered doorbell panel |
camera_panel_more | Setting panel |
dev_base_info | Settings–rename a device |
camera_panel_info | Settings–device information |
ipc_alarm_detected_feature_list | Settings–motion detection setting |
helpCenter | Settings–FAQ and feedback, FAQ UI BizBundle required |
dev_share_edit | Settings–device sharing, not supported currently |
not_share_support_help | Settings–sharing help, not supported currently |
AbsCameraOTAService | Settings–firmware information, OTA UI BizBundle required |
Currently, sharing is not supported. For device sharing (dev_share_edit
) and sharing help (not_share_support_help
), you can capture and implement the required route, or follow the instructions on the setting panel to delete this route.
Renames the name of an IPC.
API description
Call the API method renameDevice()
of Smart Life App SDK to rename an IPC.
TuyaHomeSdk.newDeviceInstance(deviceId).renameDevice(String deviceName, IResultCallback callback);
Parameters
Parameter | Description |
---|---|
deviceId | The device ID. |
deviceName | The new name. |
callback | The success or failure callback implemented by IResultCallback . |
Example
/**
* Renames a device.
* @param context
* @param deviceId The device ID.
* @param deviceName The new name.
*/
public void renameDevice(final Context context, String deviceId, String deviceName) {
ITuyaDevice mDevice = TuyaHomeSdk.newDeviceInstance(deviceId);
mDevice.renameDevice(deviceName, new IResultCallback() {
@Override
public void onError(String code, String error) {
}
@Override
public void onSuccess() {
}
});
}
Modifies the icon of an IPC.
API description
Call the API method modifyDeviceImg()
of Smart Life App SDK to modify the icon of an IPC.
DeviceInfoRepository deviceInfoRepository = new DeviceInfoRepositoryImpl(context);
ModifyDevInfoInteractor mModifyDevInfoInteractor = new ModifyDevInfoInteractorImpl(deviceInfoRepository);
mModifyDevInfoInteractor.modifyDeviceImg( deviceId, deviceName, imageFile, callback);
Parameters
Parameter | Description |
---|---|
deviceId | The device ID. |
imageFile | The type of image file to be uploaded. |
deviceName | The name of the device. You can call DeviceBean of Smart Life App SDK to get the name. |
callback | The success or failure callback implemented by ModifyDevInfoInteractor.ModifyDeviceImgCallback . |
Example
/**
* Renames a device.
*
* @param context
* @param deviceId The device ID.
* @param iconFilePath The URL of the device icon to be uploaded.
*/
public void uploadIcon(final Context context, String deviceId, String iconFilePath) {
DeviceBean deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId);
String panelName = "";
if (deviceBean != null) {
panelName = deviceBean.getName();
}
DeviceInfoRepository deviceInfoRepository = new DeviceInfoRepositoryImpl(context);
ModifyDevInfoInteractor mModifyDevInfoInteractor = new ModifyDevInfoInteractorImpl(deviceInfoRepository);
mModifyDevInfoInteractor.modifyDeviceImg(deviceId, panelName, new File(iconFilePath),
new ModifyDevInfoInteractor.ModifyDeviceImgCallback() {
@Override
public void onModifyDeviceImgSuccess(String url) {
}
@Override
public void onModifyDeviceImgFailure() {
}
});
}
To improve the timeliness and success rate of push notifications sent through active app processes, Tuya has opened an auxiliary protocol of push notifications for IP cameras (IPCs).
Sample message body
{
"a": "view",
"c": "action",
"cc": "Low-power IPC, someone is ringing the bell.",
"ct": "fcm You have a visitor",
"devId": "6cfaf335a8d6e752e0wrpy",
"msgId": "4da4dcf61573555995",
"p": {
"media": 13
},
"specialChannel": false,
"ts": "1573555995000",
"type": "doorbell"
}
Register and unregister a listener
You must register a listener after login and unregister the listener after logout.
API description
Tuya’s push notification auxiliary protocol requires you to register a listener after login and unregister the listener after logout.
// Registers a listener for push notifications.
TuyaHomeSdk.getCameraInstance().registerCameraPushListener(ITuyaGetBeanCallback<CameraPushDataBean> callback)
// Unregisters a listener for push notifications.
TuyaHomeSdk.getCameraInstance().unRegisterCameraPushListener(ITuyaGetBeanCallback<CameraPushDataBean> callback);
Parameters
Parameter | Description |
---|---|
callback | The callback of push notifications returned by ITuyaGetBeanCallback . CameraPushDataBean encapsulates push notifications. |
Data model of CameraPushDataBean
Field | Data type | Description |
---|---|---|
devId | String | The device ID. |
timestamp | Integer | The message timestamp. |
etype | String | The type of message. |
edata | String | The message ID |
Example
private ITuyaHomeCamera homeCamera;
private static ITuyaGetBeanCallback<CameraPushDataBean> mTuyaGetBeanCallback = new ITuyaGetBeanCallback<CameraPushDataBean>() {
@Override
public void onResult(CameraPushDataBean o) {
L.d(TAG, "onMqtt_43_Result on callback");
L.d(TAG, "Message timestamp: timestamp=" + o.getTimestamp());
L.d(TAG, "Device ID: devid=" + o.getDevId());
L.d(TAG, "Message ID: msgid=" + o.getEdata());
L.d(TAG, "Message type: etype=" + o.getEtype());
}
};
/**
* Registers a listener after login.
*/
public void registerCameraPushListener() {
homeCamera = TuyaHomeSdk.getCameraInstance();
if (homeCamera != null) {
homeCamera.registerCameraPushListener(mTuyaGetBeanCallback);
}
}
/**
* Unregisters a listener after logout.
*/
public void unRegisterCameraPushListener() {
if (homeCamera != null) {
homeCamera.unRegisterCameraPushListener(mTuyaGetBeanCallback);
}
}
You can customize each feature on the setting page. For example, display or hide a feature, and capture tap events.
API description
Passes in settings by using the service API method AbsCameraUiService.configCameraSettingCustomItem
.
public abstract void configCameraSettingCustomItem(List<TuyaCameraSettingConfigBean> items);
Example
AbsCameraUiService service = MicroServiceManager.getInstance().findServiceByInterface(AbsCameraUiService.class.getName());
if (service != null) {
List<TuyaCameraSettingConfigBean> configs = new ArrayList<>();
configs.add(new TuyaCameraSettingConfigBean("cameraSetting_iconInfoItem", false));
service.configCameraSettingCustomItem(configs);
}
Data model of TuyaCameraSettingConfigBean
Parameter | Description |
---|---|
visible | Specifies whether to display a feature. Valid values: |
operateCallback | The captured event of tapping a button. |
tag | Each setting page is assigned a unique name specified by name as listed in the following table. |
Values of tag
Value | Feature |
---|---|
cameraSetting_iconInfoItem | Device icon and name |
cameraSetting_infoItem | The information about the device. |
cameraSetting_autoItem | Tap-to-run and automation scenes |
cameraSetting_networkItem | Device network information |
cameraSetting_thirdPartyItem | Third-party services supported |
cameraSetting_privateModeCfgItem | Privacy mode switch |
cameraSetting_basicSectionHeaderCfgItem | Basic setting title |
cameraSetting_basicFuncCfgItem | Basic setting |
cameraSetting_nightvisionCfgItem | Night vision mode |
cameraSetting_irNightCfgItem | Infrared night vision |
cameraSetting_displaySettingCfgItem | Image adjustment |
cameraSetting_soundCfgItem | Audio adjustment |
cameraSetting_workModeCfgItem | Working mode |
cameraSetting_advanceSectionHeaderCfgItem | Advanced setting title |
cameraSetting_detectCfgItem | Detection alerts |
cameraSetting_pirFuncCfgItem | Passive infrared (PIR) |
cameraSetting_powerCfgItem | Battery management |
cameraSetting_bellCfgItem | Bell setting |
cameraSetting_sirenSettingCfgItem | Buzzer adjustment |
cameraSetting_videoLayoutCfgItem | Video layout |
cameraSetting_presentPointCfgItem | Preset point setting |
cameraSetting_onvifCfgItem | Open Network Video Interface Forum (ONVIF) protocol |
cameraSetting_gatewaySectionHeaderCfgItem | Gateway title |
cameraSetting_gatewayCfgItem | Gateways |
cameraSetting_storageSectionHeaderCfgItem | Storage setting title |
cameraSetting_storageCfgItem | Storage settings |
cameraSetting_valueAddedSectionHeaderCfgItem | Value-added service title |
cameraSetting_valueAddedCfgItem | Value-added service |
cameraSetting_offlineSectionHeaderCfgItem | Title of a device offline notification |
cameraSetting_offlineCfgItem | Notifications of devices getting offline |
cameraSetting_otherSectionHeaderCfgItem | Other titles |
cameraSetting_feedbackCfgItem | FAQ and feedback |
cameraSetting_shareDeviceCfgItem | Device sharing |
cameraSetting_addToHomeCfgItem | Added to the desktop |
cameraSetting_firmwareCfgItem | OTA firmware update |
cameraSetting_restartCfgItem | Device restart |
CameraSetting_removeCfgItem | Device removal |
CameraSetting_indicatorLightItem | Status indicator |
CameraSetting_besharedItem | Device source |
CameraSetting_soundDetectedItem | Sound detection |
CameraSetting_apModeItem | AP mode |
CameraSetting_unlockItem | Remote unlocking |
CameraSetting_cloudDisk | Pages of cloud disks managed on a base station |
CameraSetting_privacyZone | Privacy area setting |
CameraSetting_recording_time | Time setting of a single video clip |
CameraSetting_parking_mode | Parking mode setting |
CameraSetting_collision_alert | Collision alert |
CameraSetting_antiDismantle | Anti-pry alert switch |
CameraSetting_notification | Push notification settings |
cameraSetting_carInspection | Vehicle model detection switch |
cameraSetting_nonCarInspection | Non-motor vehicle detection switch |
cameraSetting_thirdPartyHeaderItem | Third-party title supported |
cameraSetting_pirSetItem | PIR setting |
cameraSetting_stationDoorbellItem | Setting of base station bell |
cameraSetting_stationDetectionItem | Base station detection alert |
For more information, see Configuration files.
Is this page helpful?
YesFeedbackIs this page helpful?
YesFeedback