1. 设备控制业务包
1.1. 功能介绍
设备控制业务包是涂鸦智能设备控制面板的核心容器,在涂鸦智能 Android Home SDK 的基础上,提供了设备控制面板的加载和控制的接口封装,加速应用开发过程。主要包括以下功能:
- 面板加载(加载多种设备类型,支持:WIFI、Zigbee、Mesh、BLE)
- 设备控制(支持单设备和群组的控制,不支持群组管理)
- 设备定时
- 扫地机面板
1.2. 业务包集成
1.2.1. 创建工程
在 Android Studio 中建立你的工程,接入公版 SDK 并完成业务包框架接入
1.2.2. module 的 build.gradle 配置
dependencies {
api 'com.tuya.smart:tuyasmart-bizbundle-panel:3.22.0-6'
}
可选配置 根据面板功能依赖
高德地图依赖项 发布GooglePlay时请务必去除此依赖
api 'com.tuya.smart:tuyasmart-react-native-amap:3.21.0-rc.1'
implementation 'com.amap.api:search:6.9.2'
implementation 'com.amap.api:map2d:5.2.0'
GoogleMap 依赖项 发布国内应用市场时请务必去除此依赖
api 'com.tuya.smart:tuyasmart-react-native-googlemap:3.21.0-rc.1'
api 'com.google.android.gms:play-services-maps:17.0.0'
QQ 音乐登录模块依赖项
api project(':qqmusic')
api("com.tencent.yunxiaowei.dmsdk:core:2.3.0") {
exclude group: 'com.squareup.okhttp3', module: 'okhttp'
}
api("com.tencent.yunxiaowei.webviewsdk:webviewsdk:2.3.0") {
exclude group: 'com.squareup.okhttp3', module: 'okhttp'
}
1.2.3. 混淆配置
# react-native
-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip
-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip
-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters
# Do not strip any method/class that is annotated with @DoNotStrip
-keep @com.facebook.proguard.annotations.DoNotStrip class *
-keep @com.facebook.common.internal.DoNotStrip class *
-keepclassmembers class * {
@com.facebook.proguard.annotations.DoNotStrip *;
@com.facebook.common.internal.DoNotStrip *;
}
-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * {
void set*(***);
*** get*();
}
-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; }
-keep class * extends com.facebook.react.bridge.NativeModule { *; }
-keepclassmembers,includedescriptorclasses class * { native <methods>; }
-keepclassmembers class * { @com.facebook.react.uimanager.UIProp <fields>; }
-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp <methods>; }
-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup <methods>; }
-dontwarn com.facebook.react.**
-keep,includedescriptorclasses class com.facebook.react.bridge.** { *; }
#高德地图
-dontwarn com.amap.**
-keep class com.amap.api.maps.** { *; }
-keep class com.autonavi.** { *; }
-keep class com.amap.api.trace.** { *; }
-keep class com.amap.api.navi.** { *; }
-keep class com.autonavi.** { *; }
-keep class com.amap.api.location.** { *; }
-keep class com.amap.api.fence.** { *; }
-keep class com.autonavi.aps.amapapi.model.** { *; }
-keep class com.amap.api.maps.model.** { *; }
-keep class com.amap.api.services.** { *; }
#Google Play Services
-keep class com.google.android.gms.common.** {*;}
-keep class com.google.android.gms.ads.identifier.** {*;}
-keepattributes Signature,*Annotation*,EnclosingMethod
-dontwarn com.google.android.gms.**
#MPAndroidChart
-keep class com.github.mikephil.charting.** { *; }
-dontwarn com.github.mikephil.charting.**
-keep class com.tuya.**.**{*;}
-dontwarn com.tuya.**.**
1.3. 功能调用
1.3.1. 打开设备面板
通过设备 Id 进入对应设备面板页面
接口说明
打开设备面板
goPanelWithCheckAndTip(Activity activity, String devId)
参数说明
参数 | 说明 |
---|---|
activity | 当前页面 context |
devId | 设备Id 通过公版 SDK 接口获取 |
示例代码
AbsPanelCallerService service = MicroContext.getServiceManager().findServiceByInterface(AbsPanelCallerService.class.getName());
service.goPanelWithCheckAndTip(PanelActivity.this, bean.devId);
1.3.2. 打开群组面板
通过群组 Id 进入对应设备面板页面
接口说明
打开设备面板
goPanelWithCheckAndTip(Activity activity, String groupId, boolean isAdmin)
参数说明
参数 | 说明 |
---|---|
activity | 当前页面 context |
groupId | 群组 Id |
isAdmin | 是否家庭管理员 |
示例代码
boolean isAdmin = null != TuyaHomeSdk.getDataInstance().getHomeBean(curFamilyId)
&& TuyaHomeSdk.getDataInstance().getHomeBean(curFamilyId).isAdmin();
AbsPanelCallerService service = MicroContext.getServiceManager().findServiceByInterface(AbsPanelCallerService.class.getName());
service.goPanelWithCheckAndTip(PanelActivity.this, groupId, isAdmin);
1.3.3. 跳转未实现路由地址
面板按钮点击无反应时请查看 logcat 日志内容,通过路由回调跳转到实现页面
1.3.4. 清除所有面板缓存
面板文件会存放在当前 app 存储目录下,若需要清理可调用此方法
示例代码
ClearCacheService service = MicroContext.getServiceManager().findServiceByInterface(ClearCacheService.class.getName());
if (service != null) {
service.clearCache(PanelActivity.this);
}
1.4. 其他配置
1.4.1. 关闭设备控制页面
TuyaSmartSdk.getEventBus().post(new PageCloseEventModel());
1.5. 错误码
错误码 | 描述 |
---|---|
1901 | 面板下载失败 |
1902 | 多语言包下载失败 |
1903 | 设备类型不支持 |
1904 | 群组内无设备 |
1905 | home id有误 |
1906 | 设备DeviceBean为null |
1907 | 找不到可下载的面板资源 |
1908 | 固件版本不正确 |
1909 | 未知错误 |