设备控制 UI 业务包

更新时间:2024-03-28 06:34:30下载pdf

设备控制 UI 业务包是集智光控设备控制面板的核心容器。在商用照明安卓版 App SDK 的基础上,它提供了设备控制面板的加载和控制的接口封装,加速了应用开发过程。

功能说明

设备控制 UI 业务包主要包括以下功能:

  • 面板加载:加载多种设备类型,例如 Wi-Fi、Zigbee、蓝牙、蓝牙 Mesh 等通讯协议设备
  • 设备控制:支持单设备的控制,不支持群组管理

前提条件

在 Android Studio 中建立您的工程,接入 商用照明 App SDK 和添加 UI 业务包框架。

注意事项

涂鸦设备控制 UI 业务包包含了开源框架 React Native,版本为 0.59.10。

  • 若您的 Android 工程未集成 React Native,请按本文步骤集成设备控制业务包。

  • 若您的 Android 工程已集成 React Native,需按下面步骤操作,以确定是否可集成设备控制业务包:

    • 若已集成 React Native,且版本 > 0.59.10,因版本兼容性问题,则无法集成设备控制业务包。
    • 若已集成 React Native,且 0.59.10 ≥ 版本 > 0.51,因 React Native 库冲突,不保证能够正常接入涂鸦面板。按下面两种方式进行操作:
      1. 移除您 Android 工程中的 React Native,使用设备控制业务包依赖的 React Native 0.59.10。
      2. 将您 Android 工程中集成的 React Native 进行更名,从而避免与业务包集成的 React Native 冲突。
  • 若您使用的商用照明 App SDK 版本等于大于 v1.11.3,那么业务包的版本也需要同步升级到 v1.11.3,否则会出现无法打开设备面板。

    若均无法集成成功,则您无法接入集成设备控制业务包。

UI 业务包配置

  • build.gradle 配置

    dependencies {
    	api enforcedPlatform("com.thingclips.smart:thingsmart-BizBundlesBom:2.8.0-bizbundle-lamp-2.8.0.27")
            api ("com.thingclips.smart:thingsmart-bizbundle-lamp_panel")
    }
    
  • 混淆配置

    # 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 class com.facebook.** { *; }
    -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.thingclips.**.**{*;}
    -dontwarn com.thingclips.**.**
    
    -keep,includedescriptorclasses class com.facebook.v8.** { *; }
    
    #TTT
    -keep class * extends com.thingclips.android.universal.base.ThingBaseUniPlugin { *; }
    -keep class com.thingclips.smart.plugin.*.bean.**{ *; }
    
    

打开设备面板

通过设备 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);

错误码

错误码 说明
1901 面板下载失败
1902 多语言包下载失败
1903 设备类型不支持
1904 群组内无设备
1905 Project ID 有误
1906 设备 DeviceBean 为 null
1907 找不到可下载的面板资源
1908 固件版本不正确
1909 未知错误