Last Updated on : 2024-04-04 16:31:37download
This topic describes the generic configurations of the BizBundle for the Commercial Lighting App SDK.
For the UI BizBundle, the value of android:minSdkVersion
is 23
and the value of android:targetSdkVersion
is 33
. Your app can only be built with AndroidX.
This section describes the configuration files and Android dependencies that are required by the UI BizBundle.
After the UI BizBundle is updated, you must download the configuration files again.
Item | Description | Required |
---|---|---|
assets | Copy all files from the demo’s assets directory to the application’s assets directory. |
Yes |
res | res/values/compat-colors.xml and res/values are required. |
|
Configure theme colors | The files colors.xml and ui_theme_config.json must be both modified to configure theme colors. |
No (this resource is no longer maintained.) |
Configurations of theme colors:
Parameters of colors.xml
Parameter | Description | Default value |
---|---|---|
thing_theme_color_m1 | Theme color resources in normal state | #FFFF5A28 |
thing_theme_color_m1_1 | Theme color resources in disabled state | #33FF5A28 |
thing_theme_color_m1_2 | Theme color resources in pressed state | #FFFF6B3E |
thing_theme_color_m1_alpha_5 | Theme color resources with transparency set to 5% | #0DFF5A28 |
thing_theme_color_m1_alpha_10 | Theme color resources with transparency set to 10% | #1AFF5A28 |
thing_theme_color_m1_alpha_15 | Theme color resources with transparency set to 15% | #26FF5A28 |
thing_theme_color_m1_alpha_20 | Theme color resources with transparency set to 20% | #33FF5A28 |
thing_theme_color_m1_alpha_25 | Theme color resources with transparency set to 25% | #40FF5A28 |
thing_theme_color_m1_alpha_30 | Theme color resources with transparency set to 30% | #4DFF5A28 |
thing_theme_color_m1_alpha_35 | Theme color resources with transparency set to 35% | #59FF5A28 |
thing_theme_color_m1_alpha_40 | Theme color resources with transparency set to 40% | #66FF5A28 |
thing_theme_color_m1_alpha_45 | Theme color resources with transparency set to 45% | #73FF5A28 |
thing_theme_color_m1_alpha_50 | Theme color resources with transparency set to 50% | #80FF5A28 |
thing_theme_color_m1_alpha_55 | Theme color resources with transparency set to 55% | #8CFF5A28 |
thing_theme_color_m1_alpha_60 | Theme color resources with transparency set to 60% | #99FF5A28 |
thing_theme_color_m1_alpha_65 | Theme color resources with transparency set to 65% | #A6FF5A28 |
thing_theme_color_m1_alpha_70 | Theme color resources with transparency set to 70% | #B3FF5A28 |
thing_theme_color_m1_alpha_75 | Theme color resources with transparency set to 75% | #BFFF5A28 |
thing_theme_color_m1_alpha_80 | Theme color resources with transparency set to 80% | #CCFF5A28 |
thing_theme_color_m1_alpha_85 | Theme color resources with transparency set to 85% | #D9FF5A28 |
thing_theme_color_m1_alpha_90 | Theme color resources with transparency set to 90% | #E6FF5A28 |
thing_theme_color_m1_alpha_95 | Theme color resources with transparency set to 95% | #F2FF5A28 |
Configurations of ui_theme_config.json
:
{
"color_alpha":{
"N1":0.9,
"N2":0.7,
"N3":0.5,
"N4":0.3,
"N5":0.7,
"N6":0.2,
"N7":0.1,
"N8":0.4
},
"colors":{
"B1":"#F8F8F8",
"B2":"#FFFFFF",
"B3":"#FFFFFF",
"B4":"#FFFFFF",
"B5":"#FFFFFF",
"M1":"#FF5A28", // M1 means the theme color setting. Default value: `#FF5A28`. Only `M1` can be modified. Other fields cannot be modified.
"M2":"#FF4444",
"M3":"#00CC99",
"M4":"#1989FA",
"M5":"#FF5A28"
},
"corner":{
"alert_corner_type":"angle",
"button_corner_type":"angle",
"card_corner_type":"angle"
},
"font":{
"app_bold_font":"",
"app_font":""
}
}
bg_text_bts.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true">
<shape android:shape="rectangle">
<corners android:radius="@dimen/thing_mg_2" />
<solid android:color="@color/primary_button_select_color" />
</shape>
</item>
<item android:state_selected="true">
<shape android:shape="rectangle">
<corners android:radius="@dimen/thing_mg_2" />
<solid android:color="@color/primary_button_select_color" />
</shape>
</item>
<item android:state_pressed="true">
<shape android:shape="rectangle">
<corners android:radius="@dimen/thing_mg_2" />
<solid android:color="@color/primary_button_select_color" />
</shape>
</item>
<item android:state_enabled="true">
<shape android:shape="rectangle">
<corners android:radius="@dimen/thing_mg_2" />
<solid android:color="@color/primary_button_bg_color" />
</shape>
</item>
<item android:state_enabled="false">
<shape>
<corners android:radius="@dimen/thing_mg_2" />
<solid android:color="@color/gray_99" />
</shape>
</item>
</selector>
<!-- Required configurations -->
<!-- Base application theme. -->
<style name="Base_BizBundle_Theme" parent="AppTheme">
<item name="status_font_color">@color/status_font_color</item>
<item name="status_bg_color">@color/status_bg_color</item>
<item name="navbar_font_color">@color/navbar_font_color</item>
<item name="navbar_bg_color">@color/navbar_bg_color</item>
<item name="app_bg_color">@color/app_bg_color</item>
<item name="fragment_bg_color">@color/app_bg_color</item>
<item name="list_primary_color">@color/list_primary_color</item>
<item name="list_sub_color">@color/list_sub_color</item>
<item name="list_secondary_color">@color/list_secondary_color</item>
<item name="list_line_color">@color/list_line_color</item>
<item name="list_bg_color">@color/list_bg_color</item>
<item name="primary_button_font_color">@color/primary_button_font_color</item>
<item name="primary_button_bg_color">@color/primary_button_bg_color</item>
<item name="secondary_button_font_color">@color/secondary_button_font_color</item>
<item name="secondary_button_bg_color">@color/secondary_button_bg_color</item>
<item name="notice_font_color">@color/notice_font_color</item>
<item name="notice_bg_color">@color/notice_bg_color</item>
<item name="bg_normal_text_bt">@drawable/bg_text_bts</item>
<item name="app_name">@string/app_name</item>
<item name="is_splash_used">false</item>
<item name="ap_default_ssid">@string/ap_mode_ssid</item>
<item name="ap_connect_description">@string/ty_ap_connect_description</item>
<item name="is_scan_support">@bool/is_scan_support</item>
<item name="is_need_blemesh_support">@bool/is_need_blemesh_support</item>
<item name="status_bg_color_75">@color/status_bg_color_75</item>
<item name="status_bg_color_90">@color/status_bg_color_90</item>
</style>
<!-- Required configurations -->
<application
android:supportsRtl="false"
android:theme="@style/Base_BizBundle_Theme"
tools:replace="android:theme"/>
Configurations of build.gradle
in the root directory:
allprojects {
repositories {
maven { url "https://maven-other.tuya.com/repository/maven-commercial-releases/" }
google()
mavenCentral()
}
}
build.gradle
configurations for the app:
The Native Development Kit (NDK) configuration only supports CPU versions of Arm architectures.
android {
packagingOptions {
pickFirst 'lib/*/liblog.so'
pickFirst 'lib/*/libc++_shared.so'
pickFirst 'lib/*/libyuv.so'
pickFirst 'lib/*/libopenh264.so'
pickFirst 'lib/*/libv8wrapper.so'
pickFirst 'lib/*/libv8android.so'
}
lintOptions {
abortOnError false
}
defaultConfig {
ndk { abiFilters "armeabi-v7a", "arm64-v8a" }
}
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}
configurations.all {
exclude group: 'com.thingclips.smart.rnplugin', module: 'trctrtspmediaplayermanager'
exclude group: 'com.thingclips.smart.rnplugin', module: 'trctrtspmediamanager'
}
Generic configurations to initialize the UI BizBundle through the main thread:
Fresco.initialize(this);
ThingSdk.setDebugMode(true);
ThingSdk.init(this);
ThingSmartNetWork.mAppRNVersion = RNAPIUtil.getAPPRNVersion();
ThingSdk.setOnNeedLoginListener(new INeedLoginListener() {
@Override
public void onNeedLogin(Context context) {
}
});
ThingWrapper.init(this, new RouteEventListener() {
@Override
public void onFaild(int errorCode, UrlBuilder urlBuilder) {
Log.e("router not implement", urlBuilder.target + urlBuilder.params.toString());
}
}, new ServiceEventListener() {
@Override
public void onFaild(String serviceName) {
Log.e("service not implement", serviceName);
}
});
ThingThemeInitializer.INSTANCE.init(this);
// ThingOptimusSdk.init(this);
//register project service,it is necessary for bizbundle
ThingWrapper.registerService(AbsBizBundleProjectService.class, new BizBundleProjectServiceImpl());
RedirectService service = MicroContext.getServiceManager().findServiceByInterface(RedirectService.class.getName());
service.registerUrlInterceptor(new RedirectService.UrlInterceptor() {
@Override
public void forUrlBuilder(UrlBuilder urlBuilder, RedirectService.InterceptorCallback interceptorCallback) {
//Such as:
//Intercept the event of clicking the panel right menu and jump to the custom page with the parameters of urlBuilder
if (urlBuilder.target.equals("panelAction") && urlBuilder.params.getString("action").equals("gotoPanelMore")) {
interceptorCallback.interceptor("interceptor");
Log.e("interceptor", urlBuilder.params.toString());
} else {
interceptorCallback.onContinue(urlBuilder);
}
}
});
//init mini app config
GZLMiniAppInitial.init();
After the BizBundle is integrated, to enable login to or logout of an account, call the following API methods:
// Log in
ThingWrapper.onLogin();
// Log out
ThingWrapper.onLogout(Context context);
You can inherit the abstract class AbsBizBundleProjectService
to set the values of projectId
and projectName
for the current project.
Example:
public abstract class AbsBizBundleProjectService extends MicroService {
public abstract long getCurrentHomeId();
private AbsCommonbizSpaceService mSpaceService = MicroServiceManager.getInstance().findServiceByInterface(AbsCommonbizSpaceService.class.getName());
@CallSuper
public void shiftCurrentProject(long familyId, String curName) {
AbsRelationService relationService = MicroContext.findServiceByInterface(AbsRelationService.class.getName());
if (relationService != null) {
relationService.shiftCurrentRelation(familyId, curName);
}
}
public void onEnterArea(long areaId) {
mSpaceService.onSpaceEnter(areaId);
}
public void onLeaveArea(long areaId) {
mSpaceService.onSpaceExit(areaId);
}
}
public class BizBundleProjectServiceImpl extends AbsBizBundleProjectService {
private long mHomeId;
@Override
public long getCurrentHomeId() {
return mHomeId;
}
@Override
public void shiftCurrentProject(long familyId, String curName) {
super.shiftCurrentProject(familyId, curName);
mHomeId = familyId;
}
}
After the list of projects is returned, you can call the project service to set projectId
and projectName
for a project.
Example:
AbsBizBundleProjectService service = MicroServiceManager.getInstance().findServiceByInterface(AbsBizBundleProjectService.class.getName());
// Sets projectId and projectName for the current project.
service.shiftCurrentProject(homeBean.getHomeId(), homeBean.getName());
When moving from one area to another, push the specified area onto the stack.
Example:
AbsBizBundleProjectService service = MicroServiceManager.getInstance().findServiceByInterface(AbsBizBundleProjectService.class.getName());
service.onEnterArea(areaId)
When leaving an area, pop the specified area from the stack.
Example:
AbsBizBundleProjectService service = MicroServiceManager.getInstance().findServiceByInterface(AbsBizBundleProjectService.class.getName());
service.onLeaveArea(areaId)
Is this page helpful?
YesFeedbackIs this page helpful?
YesFeedback