34个文件已添加
18个文件已删除
76个文件已修改
18745 ■■■■ 已修改文件
.vs/HDL_APP_Project/xs/UserPrefs.xml 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DLL/Shared.IOS.TBL.dll 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Language.ini 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/AddDefenseIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/AtHomeDefenseIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/AtHomeDefenseIconOn.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/BurglarAlarmIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/DisasterAlarmIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/HistoryIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/HolidayDefenseIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/HolidayDefenseIconOn.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/HouseDefenseIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/HouseDefenseIconOn.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/InDefenseBigIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/NoDefenseBigIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Curtain/CurtainDownIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Curtain/CurtainDownIconOn.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Curtain/CurtainUpIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Curtain/CurtainUpIconOn.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/FunctionBg/SecurityCenterFunctionBg.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/LogicIcon/shiwaitianqi.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/PersonalCenter/SmartSpeaker.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/HDL-ON_Android.csproj 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Properties/AndroidManifest.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Resources/Resource.designer.cs 1909 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Resources/drawable/launchImage.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Resources/values/styles.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/AppDelegate.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Entitlements.plist 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/HDL-ON_iOS.csproj 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Info.plist 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Main.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Language.ini 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainDownIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainDownIconOn.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainUpIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainUpIconOn.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/SecurityCenterFunctionBg.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/LogicIcon/shiwaitianqi.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/PersonalCenter/SmartSpeaker.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.115869ea88.0.json 775 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.115869ea88.1.json 762 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.115869ea88.2.json 762 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.115869ea88.3.json 762 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.115869ea88.4.json 762 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.1cfb5decbf.0.json 851 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.f3dbeef67.0.json 549 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.f3dbef0b0.0.json 729 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.f3dbef0b0.1.json 729 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.ff14d5fde.0.json 560 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.mem.11851.1.blob 762 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.mem.1228.1.blob 762 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.mem.18126.1.blob 549 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.mem.24817.1.blob 775 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.mem.26066.1.blob 560 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.mem.26567.1.blob 729 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.mem.59025.1.blob 729 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/mono_crash.mem.73837.1.blob 762 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/ApiUtlis.cs 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/Constant.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/HDLCommon.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/R.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Mqtt/MqttClient.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpServerRequest.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpUtil.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/NewAPI.cs 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/NewApiRes.cs 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/DB_ResidenceData.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Function.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Scene.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/FunctionList.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/ResponseEntity/RegionInfoRes.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/HDL_ON.projitems 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/MainPage.cs 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/PublicAssmebly.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/TopViewDiv.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/LoginPage.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePage.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/RoomPage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/InputPushText.cs 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/OnePortAutomation.cs 344 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FunctionIntroductionPage.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/GetSupportPage.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs 127 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerListPage.cs 576 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerSelectDevicesPage.cs 433 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/ArmCenter/ArmCenterPage.cs 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/ArmCenter/ArmDeploymentSettingPage.cs 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPage.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/DvdPage.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPage.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HDL_APP_Project/xs/UserPrefs.xml
@@ -1,40 +1,35 @@
<Properties StartupConfiguration="{09712674-2A38-407B-B1E2-560B2C352F9A}|Default">
  <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.00008020-000404163432002E" />
  <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs">
<Properties StartupConfiguration="{D998E133-F0DD-4760-BE3C-461632F54DA4}|Default">
  <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneSimulatorTarget.26569F89-0BA9-4C06-81F2-764A3AF2E1B7" />
  <MonoDevelop.Ide.Workbench ActiveDocument="HDL-ON_Android/Application.cs">
    <Files>
      <File FileName="HDL_ON/Entity/ResponseEntity/RegionInfoRes.cs" Line="66" Column="22" />
      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs" Line="203" Column="92" />
      <File FileName="HDL_ON/UI/UI2/1-HomePage/HomePage.cs" Line="165" Column="14" />
      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs" Line="145" Column="60" />
      <File FileName="HDL_ON/Entity/DB_ResidenceData.cs" Line="29" Column="16" />
      <File FileName="HDL_ON/Common/ApiUtlis.cs" Line="1" Column="1" />
      <File FileName="HDL_ON/DAL/Server/HttpUtil.cs" Line="1" Column="1" />
      <File FileName="HDL_ON/UI/UI1-Login/LoginPage.cs" Line="210" Column="58" />
      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs" Line="106" Column="51" />
      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPage.cs" Line="242" Column="1" />
      <File FileName="HDL_ON/UI/MainPage.cs" Line="309" Column="33" />
      <File FileName="HDL_ON/Common/OnAppConfig.cs" Line="94" Column="9" />
      <File FileName="HDL_ON/Common/UserInfo.cs" Line="155" Column="23" />
      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPageBLL.cs" Line="121" Column="42" />
      <File FileName="HDL_ON/UI/UI0-Public/AppUnlockPage.cs" Line="36" Column="30" />
      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs" Line="38" Column="21" />
      <File FileName="HDL_ON/UI/UI0-Public/TopViewDiv.cs" Line="151" Column="14" />
      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPage.cs" />
      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs" />
      <File FileName="HDL_ON/DAL/DriverLayer/Control.cs" />
      <File FileName="HDL_ON/DAL/DriverLayer/Control_Udp.cs" />
      <File FileName="HDL_ON/Common/FileUtlis.cs" />
      <File FileName="HDL_ON/DAL/Server/HttpUtil.cs" />
      <File FileName="HDL_ON/UI/UI1-Login/LoginPage.cs" />
      <File FileName="HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs" />
      <File FileName="HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs" />
      <File FileName="HDL_ON/Entity/Function/Scene.cs" Line="176" Column="1" />
      <File FileName="HDL_ON/Common/ApiUtlis.cs" />
      <File FileName="HDL_ON/UI/UI0-Public/AppUnlockPage.cs" Line="8" Column="31" />
      <File FileName="HDL-ON_Android/Application.cs" Line="329" Column="58" />
    </Files>
    <Pads>
      <Pad Id="ProjectPad">
        <State name="__root__">
          <Node name="HDL_APP_Project" expanded="True">
            <Node name="HDL_ON" expanded="True">
              <Node name="Common" expanded="True" />
              <Node name="DAL" expanded="True" />
              <Node name="Entity" expanded="True" />
              <Node name="UI" expanded="True">
                <Node name="UI0-Public" expanded="True" />
                <Node name="UI2" expanded="True">
                  <Node name="4-PersonalCenter" expanded="True">
                    <Node name="UnlockSetting" expanded="True">
                      <Node name="AppUnlockPasswordPage.cs" selected="True" />
                    </Node>
                  </Node>
                </Node>
              </Node>
            </Node>
            <Node name="HDL-ON_Android" expanded="True">
              <Node name="Application.cs" selected="True" />
            </Node>
            <Node name="HDL-ON_iOS" expanded="True" />
          </Node>
@@ -48,12 +43,13 @@
    <String>Shared.Droid.TouchID/Shared.Droid.TouchID.csproj</String>
    <String>Shared.IOS/Shared.IOS.csproj</String>
  </DisabledProjects>
  <MonoDevelop.Ide.Workspace ActiveConfiguration="Release|iPhone" />
  <MonoDevelop.Ide.Workspace ActiveConfiguration="Release" />
  <MonoDevelop.Ide.ItemProperties.HDL-ON__Android PreferredExecutionTarget="Android.SelectDevice" />
  <MonoDevelop.Ide.DebuggingService.Breakpoints>
    <BreakpointStore>
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs" relfile="HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs" line="34" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs" relfile="HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs" line="313" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs" relfile="HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs" line="822" column="1" />
    </BreakpointStore>
  </MonoDevelop.Ide.DebuggingService.Breakpoints>
  <MultiItemStartupConfigurations />
DLL/Shared.IOS.TBL.dll
Binary files differ
HDL-ON_Android/Assets/Language.ini
@@ -20,7 +20,7 @@
19=The phone number is incorrect. Please re-enter.
20=The password and confirmation you typed do not match. Please re-enter your password.
21=The password format does not comply with the requirements, please enter again.
22=The user has existed, you can sign in directly.
22=The user has existed, yo24-hour defenseu can sign in directly.
23=Incorrect verification code, please re-enter.
24=Incorrect account number, please enter the correct email address.
25=Email address
@@ -426,7 +426,20 @@
439=Real time power consumption: {0} kw
440=Next step
441=Please select all areas of capture status
442=Custom deployment
442=Generate Scene
443=Custom deployment
444=SecurityCenter
445=House Defense
446=At Home Defense
447=Vacation Defense
448=Fixed deployment
449=*Undo defense does not affect
450=Disaster defense
451=24-hour defense
452=Burglar alarm
453=Alarm mute
454=Deployment information
455=The name can not be blank.
1000=Room Humidity
1001=V-chip
@@ -717,7 +730,7 @@
9038=(Frequently Asked Questions)
9039=Share and function
9040=Alerts
9041=System info.
9041=System info
9042=Information Center
9043=Please note that your account number is logged in elsewhere. If it is not made by yourself, please change the password immediately.
9044=Successfully uploaded
@@ -741,6 +754,11 @@
9061=Find your password by clicking on "Forgot Password", or try again in {0} minute.
9062=Check
9063=You still have {0} times.
9064=Smart speaker
9065=Data management
9066=Remarks
9067=Remarks cannot be blank.
9068=Do you want to unbind?
    
10000=Invalid password, please log in again.
10001=Fail to request server, please try again later.
@@ -1204,7 +1222,21 @@
439=实时功耗: {0}kW
440=下一步
441=请选择捕捉状态的区域
442=自定义布防
442=生成场景
443=自定义布防
444=安防中心
445=全宅布防
446=在家布防
447=假期布防
448=固定布防
449=*不受撤防影响
450=灾害报警
451=24小时不撤防
452=防盗报警
453=报警静音
454=布防信息
455=名称不能为空。
1000=室内湿度
1001=童锁
@@ -1573,7 +1605,8 @@
7129=(100字内)
7130=账号选择
7131=App推送
7132=自动化
7133=已执行
9000=请使用新的手机账号登录APP
9001=请使用新的邮箱账号登录APP
@@ -1639,6 +1672,11 @@
9061=请通过忘记密码找回密码或{0}分钟后重试.
9062=查看
9063=还有{0}次机会。
9064=智能音箱
9065=数据管理
9066=备注
9067=备注不能为空
9068=是否解除绑定?
10000=无效登录密钥,请重新登录!
10001=请求服务器失败,请稍后再试!
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/AddDefenseIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/AtHomeDefenseIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/AtHomeDefenseIconOn.png
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/BurglarAlarmIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/DisasterAlarmIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/HistoryIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/HolidayDefenseIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/HolidayDefenseIconOn.png
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/HouseDefenseIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/HouseDefenseIconOn.png
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/InDefenseBigIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmCenter/NoDefenseBigIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Curtain/CurtainDownIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Curtain/CurtainDownIconOn.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Curtain/CurtainUpIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Curtain/CurtainUpIconOn.png
HDL-ON_Android/Assets/Phone/FunctionIcon/FunctionBg/SecurityCenterFunctionBg.png
HDL-ON_Android/Assets/Phone/LogicIcon/shiwaitianqi.png
HDL-ON_Android/Assets/Phone/PersonalCenter/SmartSpeaker.png
HDL-ON_Android/HDL-ON_Android.csproj
@@ -333,6 +333,10 @@
      <SubType></SubType>
      <Generator></Generator>
    </AndroidResource>
    <AndroidResource Include="Resources\drawable\launchImage.xml">
      <SubType></SubType>
      <Generator></Generator>
    </AndroidResource>
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Resources\drawable\" />
@@ -1113,6 +1117,25 @@
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\airFreshjinmao_blue.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\airFreshjinmao_white.png" />
    <AndroidAsset Include="Assets\Phone\Public\RightSlideBackIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\FunctionBg\SecurityCenterFunctionBg.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmCenter\DisasterAlarmIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmCenter\InDefenseBigIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmCenter\AddDefenseIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmCenter\HouseDefenseIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmCenter\HolidayDefenseIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmCenter\AtHomeDefenseIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmCenter\AtHomeDefenseIconOn.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmCenter\NoDefenseBigIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmCenter\HolidayDefenseIconOn.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmCenter\HouseDefenseIconOn.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmCenter\BurglarAlarmIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmCenter\HistoryIcon.png" />
    <AndroidAsset Include="Assets\Phone\LogicIcon\shiwaitianqi.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Curtain\CurtainDownIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Curtain\CurtainDownIconOn.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Curtain\CurtainUpIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Curtain\CurtainUpIconOn.png" />
    <AndroidAsset Include="Assets\Phone\PersonalCenter\SmartSpeaker.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidNativeLibrary Include="libs\armeabi-v7a\libelianjni.so" />
HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202104201" android:versionName="1.2.202104201" package="com.hdl.onpro">
    <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="26" />
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202104282" android:versionName="1.2.202104282" package="com.hdl.onpro">
    <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
    <!--  可视对讲权限-->
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" />
@@ -39,7 +39,7 @@
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <!-- 极光推送结束 -->
    <application android:allowBackup="true" android:icon="@drawable/Icon" android:networkSecurityConfig="@xml/network_security_config" android:largeHeap="true" android:label="ON+">
    <application android:debuggable="false" android:allowBackup="true" android:icon="@drawable/Icon" android:networkSecurityConfig="@xml/network_security_config" android:largeHeap="true" android:label="ON+">
        <provider android:name="android.support.v4.content.FileProvider" android:authorities="com.hdl.onpro.fileProvider" android:grantUriPermissions="true" android:exported="false">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />
        </provider>
HDL-ON_Android/Resources/Resource.designer.cs
@@ -5119,1612 +5119,1615 @@
            public const int label_bg_sel = 2131231231;
            
            // aapt resource value: 0x7F080200
            public const int leave_message_play = 2131231232;
            public const int launchImage = 2131231232;
            
            // aapt resource value: 0x7F080201
            public const int leave_message_play_sel = 2131231233;
            public const int leave_message_play = 2131231233;
            
            // aapt resource value: 0x7F080202
            public const int leave_message_play_selector = 2131231234;
            public const int leave_message_play_sel = 2131231234;
            
            // aapt resource value: 0x7F080203
            public const int left_horizontal = 2131231235;
            public const int leave_message_play_selector = 2131231235;
            
            // aapt resource value: 0x7F080204
            public const int left_twinkle = 2131231236;
            public const int left_horizontal = 2131231236;
            
            // aapt resource value: 0x7F080205
            public const int link_account1 = 2131231237;
            public const int left_twinkle = 2131231237;
            
            // aapt resource value: 0x7F080206
            public const int link_account2 = 2131231238;
            public const int link_account1 = 2131231238;
            
            // aapt resource value: 0x7F080207
            public const int link_account3 = 2131231239;
            public const int link_account2 = 2131231239;
            
            // aapt resource value: 0x7F080208
            public const int link_account4 = 2131231240;
            // aapt resource value: 0x7F08020A
            public const int Loading = 2131231242;
            public const int link_account3 = 2131231240;
            
            // aapt resource value: 0x7F080209
            public const int load_failed_bg = 2131231241;
            public const int link_account4 = 2131231241;
            
            // aapt resource value: 0x7F08020B
            public const int lock_bg = 2131231243;
            public const int Loading = 2131231243;
            // aapt resource value: 0x7F08020A
            public const int load_failed_bg = 2131231242;
            
            // aapt resource value: 0x7F08020C
            public const int login_btn_selector = 2131231244;
            public const int lock_bg = 2131231244;
            
            // aapt resource value: 0x7F08020D
            public const int login_logo = 2131231245;
            public const int login_btn_selector = 2131231245;
            
            // aapt resource value: 0x7F08020E
            public const int login_logo_button = 2131231246;
            public const int login_logo = 2131231246;
            
            // aapt resource value: 0x7F08020F
            public const int login_logo_button_sel = 2131231247;
            public const int login_logo_button = 2131231247;
            
            // aapt resource value: 0x7F080210
            public const int logo_loading_1 = 2131231248;
            public const int login_logo_button_sel = 2131231248;
            
            // aapt resource value: 0x7F080211
            public const int logo_loading_2 = 2131231249;
            public const int logo_loading_1 = 2131231249;
            
            // aapt resource value: 0x7F080212
            public const int logo_loading_3 = 2131231250;
            public const int logo_loading_2 = 2131231250;
            
            // aapt resource value: 0x7F080213
            public const int logo_loading_4 = 2131231251;
            public const int logo_loading_3 = 2131231251;
            
            // aapt resource value: 0x7F080214
            public const int mesage_details_callhelp = 2131231252;
            public const int logo_loading_4 = 2131231252;
            
            // aapt resource value: 0x7F080215
            public const int mesage_details_curtain = 2131231253;
            public const int mesage_details_callhelp = 2131231253;
            
            // aapt resource value: 0x7F080216
            public const int mesage_details_data = 2131231254;
            public const int mesage_details_curtain = 2131231254;
            
            // aapt resource value: 0x7F080217
            public const int mesage_details_door = 2131231255;
            public const int mesage_details_data = 2131231255;
            
            // aapt resource value: 0x7F080218
            public const int mesage_details_gas = 2131231256;
            public const int mesage_details_door = 2131231256;
            
            // aapt resource value: 0x7F080219
            public const int mesage_details_hdd = 2131231257;
            public const int mesage_details_gas = 2131231257;
            
            // aapt resource value: 0x7F08021A
            public const int mesage_details_infrared = 2131231258;
            public const int mesage_details_hdd = 2131231258;
            
            // aapt resource value: 0x7F08021B
            public const int mesage_details_keyboard = 2131231259;
            public const int mesage_details_infrared = 2131231259;
            
            // aapt resource value: 0x7F08021C
            public const int mesage_details_loss = 2131231260;
            public const int mesage_details_keyboard = 2131231260;
            
            // aapt resource value: 0x7F08021D
            public const int mesage_details_low_battery = 2131231261;
            public const int mesage_details_loss = 2131231261;
            
            // aapt resource value: 0x7F08021E
            public const int mesage_details_offline = 2131231262;
            public const int mesage_details_low_battery = 2131231262;
            
            // aapt resource value: 0x7F08021F
            public const int mesage_details_power = 2131231263;
            public const int mesage_details_offline = 2131231263;
            
            // aapt resource value: 0x7F080220
            public const int mesage_details_smoke = 2131231264;
            public const int mesage_details_power = 2131231264;
            
            // aapt resource value: 0x7F080221
            public const int mesage_details_tampering = 2131231265;
            public const int mesage_details_smoke = 2131231265;
            
            // aapt resource value: 0x7F080222
            public const int mesage_details_video_loss = 2131231266;
            public const int mesage_details_tampering = 2131231266;
            
            // aapt resource value: 0x7F080223
            public const int mesage_details_water = 2131231267;
            public const int mesage_details_video_loss = 2131231267;
            
            // aapt resource value: 0x7F080224
            public const int message = 2131231268;
            public const int mesage_details_water = 2131231268;
            
            // aapt resource value: 0x7F080225
            public const int message_a1_bg = 2131231269;
            public const int message = 2131231269;
            
            // aapt resource value: 0x7F080226
            public const int message_back = 2131231270;
            public const int message_a1_bg = 2131231270;
            
            // aapt resource value: 0x7F080227
            public const int message_back_sel = 2131231271;
            public const int message_back = 2131231271;
            
            // aapt resource value: 0x7F080228
            public const int message_back_selector = 2131231272;
            public const int message_back_sel = 2131231272;
            
            // aapt resource value: 0x7F080229
            public const int message_border_bg = 2131231273;
            public const int message_back_selector = 2131231273;
            
            // aapt resource value: 0x7F08022A
            public const int message_callhelp = 2131231274;
            public const int message_border_bg = 2131231274;
            
            // aapt resource value: 0x7F08022B
            public const int message_curtain = 2131231275;
            public const int message_callhelp = 2131231275;
            
            // aapt resource value: 0x7F08022C
            public const int message_data = 2131231276;
            public const int message_curtain = 2131231276;
            
            // aapt resource value: 0x7F08022D
            public const int message_door = 2131231277;
            public const int message_data = 2131231277;
            
            // aapt resource value: 0x7F08022E
            public const int message_gas = 2131231278;
            public const int message_door = 2131231278;
            
            // aapt resource value: 0x7F08022F
            public const int message_hdd = 2131231279;
            public const int message_gas = 2131231279;
            
            // aapt resource value: 0x7F080230
            public const int message_infrared = 2131231280;
            public const int message_hdd = 2131231280;
            
            // aapt resource value: 0x7F080231
            public const int message_item_bg_selector = 2131231281;
            public const int message_infrared = 2131231281;
            
            // aapt resource value: 0x7F080232
            public const int message_keyboard = 2131231282;
            public const int message_item_bg_selector = 2131231282;
            
            // aapt resource value: 0x7F080233
            public const int message_loss = 2131231283;
            public const int message_keyboard = 2131231283;
            
            // aapt resource value: 0x7F080234
            public const int message_low_battery = 2131231284;
            public const int message_loss = 2131231284;
            
            // aapt resource value: 0x7F080235
            public const int message_move_magnetometer = 2131231285;
            public const int message_low_battery = 2131231285;
            
            // aapt resource value: 0x7F080236
            public const int message_offline = 2131231286;
            public const int message_move_magnetometer = 2131231286;
            
            // aapt resource value: 0x7F080237
            public const int message_play = 2131231287;
            public const int message_offline = 2131231287;
            
            // aapt resource value: 0x7F080238
            public const int message_play_dis = 2131231288;
            public const int message_play = 2131231288;
            
            // aapt resource value: 0x7F080239
            public const int message_play_sel = 2131231289;
            public const int message_play_dis = 2131231289;
            
            // aapt resource value: 0x7F08023A
            public const int message_play_selector = 2131231290;
            public const int message_play_sel = 2131231290;
            
            // aapt resource value: 0x7F08023B
            public const int message_power = 2131231291;
            public const int message_play_selector = 2131231291;
            
            // aapt resource value: 0x7F08023C
            public const int message_sel = 2131231292;
            public const int message_power = 2131231292;
            
            // aapt resource value: 0x7F08023D
            public const int message_smoke = 2131231293;
            public const int message_sel = 2131231293;
            
            // aapt resource value: 0x7F08023E
            public const int message_tampering = 2131231294;
            public const int message_smoke = 2131231294;
            
            // aapt resource value: 0x7F08023F
            public const int message_video = 2131231295;
            public const int message_tampering = 2131231295;
            
            // aapt resource value: 0x7F080240
            public const int message_video_dis = 2131231296;
            public const int message_video = 2131231296;
            
            // aapt resource value: 0x7F080241
            public const int message_video_loss = 2131231297;
            public const int message_video_dis = 2131231297;
            
            // aapt resource value: 0x7F080242
            public const int message_video_sel = 2131231298;
            public const int message_video_loss = 2131231298;
            
            // aapt resource value: 0x7F080243
            public const int message_video_selector = 2131231299;
            public const int message_video_sel = 2131231299;
            
            // aapt resource value: 0x7F080244
            public const int message_water = 2131231300;
            public const int message_video_selector = 2131231300;
            
            // aapt resource value: 0x7F080245
            public const int mic = 2131231301;
            public const int message_water = 2131231301;
            
            // aapt resource value: 0x7F080246
            public const int mm_trans = 2131231302;
            public const int mic = 2131231302;
            
            // aapt resource value: 0x7F080247
            public const int more = 2131231303;
            public const int mm_trans = 2131231303;
            
            // aapt resource value: 0x7F080248
            public const int my_5k_vr = 2131231304;
            public const int more = 2131231304;
            
            // aapt resource value: 0x7F080249
            public const int my_5k_vr116 = 2131231305;
            public const int my_5k_vr = 2131231305;
            
            // aapt resource value: 0x7F08024A
            public const int my_a1 = 2131231306;
            public const int my_5k_vr116 = 2131231306;
            
            // aapt resource value: 0x7F08024B
            public const int my_a1c = 2131231307;
            public const int my_a1 = 2131231307;
            
            // aapt resource value: 0x7F08024C
            public const int my_a1s = 2131231308;
            public const int my_a1c = 2131231308;
            
            // aapt resource value: 0x7F08024D
            public const int my_add = 2131231309;
            public const int my_a1s = 2131231309;
            
            // aapt resource value: 0x7F08024E
            public const int my_c6p = 2131231310;
            public const int my_add = 2131231310;
            
            // aapt resource value: 0x7F08024F
            public const int my_c6t = 2131231311;
            public const int my_c6p = 2131231311;
            
            // aapt resource value: 0x7F080250
            public const int my_cover = 2131231312;
            public const int my_c6t = 2131231312;
            
            // aapt resource value: 0x7F080251
            public const int my_cover620 = 2131231313;
            public const int my_cover = 2131231313;
            
            // aapt resource value: 0x7F080252
            public const int my_db1 = 2131231314;
            public const int my_cover620 = 2131231314;
            
            // aapt resource value: 0x7F080253
            public const int my_doorbell = 2131231315;
            public const int my_db1 = 2131231315;
            
            // aapt resource value: 0x7F080254
            public const int my_doorbell_hik = 2131231316;
            public const int my_doorbell = 2131231316;
            
            // aapt resource value: 0x7F080255
            public const int my_n1 = 2131231317;
            public const int my_doorbell_hik = 2131231317;
            
            // aapt resource value: 0x7F080256
            public const int my_no_video = 2131231318;
            public const int my_n1 = 2131231318;
            
            // aapt resource value: 0x7F080257
            public const int my_progress_drawable = 2131231319;
            public const int my_no_video = 2131231319;
            
            // aapt resource value: 0x7F080258
            public const int my_r1 = 2131231320;
            public const int my_progress_drawable = 2131231320;
            
            // aapt resource value: 0x7F080259
            public const int my_r2 = 2131231321;
            public const int my_r1 = 2131231321;
            
            // aapt resource value: 0x7F08025A
            public const int my_shoping = 2131231322;
            public const int my_r2 = 2131231322;
            
            // aapt resource value: 0x7F08025B
            public const int my_switch_off = 2131231323;
            public const int my_shoping = 2131231323;
            
            // aapt resource value: 0x7F08025C
            public const int my_switch_on = 2131231324;
            public const int my_switch_off = 2131231324;
            
            // aapt resource value: 0x7F08025D
            public const int my_switch_selector = 2131231325;
            public const int my_switch_on = 2131231325;
            
            // aapt resource value: 0x7F08025E
            public const int my_vr104d = 2131231326;
            public const int my_switch_selector = 2131231326;
            
            // aapt resource value: 0x7F08025F
            public const int my_w1 = 2131231327;
            public const int my_vr104d = 2131231327;
            
            // aapt resource value: 0x7F080260
            public const int my_w2d = 2131231328;
            public const int my_w1 = 2131231328;
            
            // aapt resource value: 0x7F080261
            public const int my_w2s = 2131231329;
            public const int my_w2d = 2131231329;
            
            // aapt resource value: 0x7F080262
            public const int my_w3 = 2131231330;
            public const int my_w2s = 2131231330;
            
            // aapt resource value: 0x7F080263
            public const int my_wlb = 2131231331;
            public const int my_w3 = 2131231331;
            
            // aapt resource value: 0x7F080264
            public const int my_x1 = 2131231332;
            public const int my_wlb = 2131231332;
            
            // aapt resource value: 0x7F080265
            public const int my_x2 = 2131231333;
            public const int my_x1 = 2131231333;
            
            // aapt resource value: 0x7F080266
            public const int my_x3 = 2131231334;
            public const int my_x2 = 2131231334;
            
            // aapt resource value: 0x7F080267
            public const int my_x3c = 2131231335;
            public const int my_x3 = 2131231335;
            
            // aapt resource value: 0x7F080268
            public const int my_x4 = 2131231336;
            public const int my_x3c = 2131231336;
            
            // aapt resource value: 0x7F080269
            public const int my_x5c = 2131231337;
            public const int my_x4 = 2131231337;
            
            // aapt resource value: 0x7F08026A
            public const int name_del = 2131231338;
            public const int my_x5c = 2131231338;
            
            // aapt resource value: 0x7F08026B
            public const int name_del_sel = 2131231339;
            public const int name_del = 2131231339;
            
            // aapt resource value: 0x7F08026C
            public const int name_del_selector = 2131231340;
            public const int name_del_sel = 2131231340;
            
            // aapt resource value: 0x7F08026D
            public const int navigation_empty_icon = 2131231341;
            // aapt resource value: 0x7F080270
            public const int nomessage = 2131231344;
            // aapt resource value: 0x7F080271
            public const int notification_action_background = 2131231345;
            // aapt resource value: 0x7F080272
            public const int notification_bg = 2131231346;
            // aapt resource value: 0x7F080273
            public const int notification_bg_low = 2131231347;
            // aapt resource value: 0x7F080274
            public const int notification_bg_low_normal = 2131231348;
            // aapt resource value: 0x7F080275
            public const int notification_bg_low_pressed = 2131231349;
            // aapt resource value: 0x7F080276
            public const int notification_bg_normal = 2131231350;
            // aapt resource value: 0x7F080277
            public const int notification_bg_normal_pressed = 2131231351;
            // aapt resource value: 0x7F080278
            public const int notification_icon_background = 2131231352;
            // aapt resource value: 0x7F080279
            public const int notification_template_icon_bg = 2131231353;
            // aapt resource value: 0x7F08027A
            public const int notification_template_icon_low_bg = 2131231354;
            // aapt resource value: 0x7F08027B
            public const int notification_tile_bg = 2131231355;
            // aapt resource value: 0x7F08027C
            public const int notify_bg = 2131231356;
            // aapt resource value: 0x7F08027D
            public const int notify_panel_notification_icon_bg = 2131231357;
            public const int name_del_selector = 2131231341;
            
            // aapt resource value: 0x7F08026E
            public const int no_message = 2131231342;
            public const int navigation_empty_icon = 2131231342;
            
            // aapt resource value: 0x7F08026F
            public const int no_read = 2131231343;
            // aapt resource value: 0x7F080271
            public const int nomessage = 2131231345;
            // aapt resource value: 0x7F080272
            public const int notification_action_background = 2131231346;
            // aapt resource value: 0x7F080273
            public const int notification_bg = 2131231347;
            // aapt resource value: 0x7F080274
            public const int notification_bg_low = 2131231348;
            // aapt resource value: 0x7F080275
            public const int notification_bg_low_normal = 2131231349;
            // aapt resource value: 0x7F080276
            public const int notification_bg_low_pressed = 2131231350;
            // aapt resource value: 0x7F080277
            public const int notification_bg_normal = 2131231351;
            // aapt resource value: 0x7F080278
            public const int notification_bg_normal_pressed = 2131231352;
            // aapt resource value: 0x7F080279
            public const int notification_icon_background = 2131231353;
            // aapt resource value: 0x7F08027A
            public const int notification_template_icon_bg = 2131231354;
            // aapt resource value: 0x7F08027B
            public const int notification_template_icon_low_bg = 2131231355;
            // aapt resource value: 0x7F08027C
            public const int notification_tile_bg = 2131231356;
            // aapt resource value: 0x7F08027D
            public const int notify_bg = 2131231357;
            
            // aapt resource value: 0x7F08027E
            public const int number_bg = 2131231358;
            public const int notify_panel_notification_icon_bg = 2131231358;
            // aapt resource value: 0x7F08026F
            public const int no_message = 2131231343;
            // aapt resource value: 0x7F080270
            public const int no_read = 2131231344;
            
            // aapt resource value: 0x7F08027F
            public const int offline = 2131231359;
            public const int number_bg = 2131231359;
            
            // aapt resource value: 0x7F080280
            public const int open_cameralist_alarmlist_selector = 2131231360;
            public const int offline = 2131231360;
            
            // aapt resource value: 0x7F080281
            public const int open_cameralist_button_selector = 2131231361;
            public const int open_cameralist_alarmlist_selector = 2131231361;
            
            // aapt resource value: 0x7F080282
            public const int open_cameralist_remotepb_selector = 2131231362;
            public const int open_cameralist_button_selector = 2131231362;
            
            // aapt resource value: 0x7F080283
            public const int open_cameralist_setup_selector = 2131231363;
            public const int open_cameralist_remotepb_selector = 2131231363;
            
            // aapt resource value: 0x7F080284
            public const int opinion = 2131231364;
            public const int open_cameralist_setup_selector = 2131231364;
            
            // aapt resource value: 0x7F080285
            public const int palyback_alarm_icon2 = 2131231365;
            public const int opinion = 2131231365;
            
            // aapt resource value: 0x7F080286
            public const int palyback_close = 2131231366;
            public const int palyback_alarm_icon2 = 2131231366;
            
            // aapt resource value: 0x7F080287
            public const int palyback_close_sel = 2131231367;
            public const int palyback_close = 2131231367;
            
            // aapt resource value: 0x7F080288
            public const int palyback_close_selector = 2131231368;
            public const int palyback_close_sel = 2131231368;
            
            // aapt resource value: 0x7F080289
            public const int palyback_date_down = 2131231369;
            public const int palyback_close_selector = 2131231369;
            
            // aapt resource value: 0x7F08028A
            public const int palyback_date_down_sel = 2131231370;
            public const int palyback_date_down = 2131231370;
            
            // aapt resource value: 0x7F08028B
            public const int palyback_full_down = 2131231371;
            public const int palyback_date_down_sel = 2131231371;
            
            // aapt resource value: 0x7F08028C
            public const int palyback_full_up = 2131231372;
            public const int palyback_full_down = 2131231372;
            
            // aapt resource value: 0x7F08028D
            public const int palyback_nest = 2131231373;
            public const int palyback_full_up = 2131231373;
            
            // aapt resource value: 0x7F08028E
            public const int palyback_pause = 2131231374;
            public const int palyback_nest = 2131231374;
            
            // aapt resource value: 0x7F08028F
            public const int palyback_pause_sel = 2131231375;
            public const int palyback_pause = 2131231375;
            
            // aapt resource value: 0x7F080290
            public const int palyback_previously = 2131231376;
            public const int palyback_pause_sel = 2131231376;
            
            // aapt resource value: 0x7F080291
            public const int palyback_previously_sel = 2131231377;
            public const int palyback_previously = 2131231377;
            
            // aapt resource value: 0x7F080292
            public const int palyback_previously_selector = 2131231378;
            public const int palyback_previously_sel = 2131231378;
            
            // aapt resource value: 0x7F080293
            public const int palyback_replay = 2131231379;
            public const int palyback_previously_selector = 2131231379;
            
            // aapt resource value: 0x7F080294
            public const int palyback_retry = 2131231380;
            public const int palyback_replay = 2131231380;
            
            // aapt resource value: 0x7F080295
            public const int palyback_time_bg = 2131231381;
            public const int palyback_retry = 2131231381;
            
            // aapt resource value: 0x7F080296
            public const int palyback_video = 2131231382;
            public const int palyback_time_bg = 2131231382;
            
            // aapt resource value: 0x7F080297
            public const int palyback_video_now = 2131231383;
            public const int palyback_video = 2131231383;
            
            // aapt resource value: 0x7F080298
            public const int palyback_video_now_sel = 2131231384;
            public const int palyback_video_now = 2131231384;
            
            // aapt resource value: 0x7F080299
            public const int palyback_video_now_selector = 2131231385;
            public const int palyback_video_now_sel = 2131231385;
            
            // aapt resource value: 0x7F08029A
            public const int palyback_video_sel = 2131231386;
            public const int palyback_video_now_selector = 2131231386;
            
            // aapt resource value: 0x7F08029B
            public const int palyback_video_selector = 2131231387;
            public const int palyback_video_sel = 2131231387;
            
            // aapt resource value: 0x7F08029C
            public const int pause = 2131231388;
            public const int palyback_video_selector = 2131231388;
            
            // aapt resource value: 0x7F08029D
            public const int pause_sel = 2131231389;
            public const int pause = 2131231389;
            
            // aapt resource value: 0x7F08029E
            public const int pic_bg = 2131231390;
            public const int pause_sel = 2131231390;
            
            // aapt resource value: 0x7F08029F
            public const int play = 2131231391;
            // aapt resource value: 0x7F0802FE
            public const int playback = 2131231486;
            // aapt resource value: 0x7F08030E
            public const int playbackslider = 2131231502;
            // aapt resource value: 0x7F08030F
            public const int playbackslider_sel = 2131231503;
            // aapt resource value: 0x7F0802FF
            public const int playback_button = 2131231487;
            // aapt resource value: 0x7F080300
            public const int playback_cancel = 2131231488;
            // aapt resource value: 0x7F080301
            public const int playback_check_selector = 2131231489;
            // aapt resource value: 0x7F080302
            public const int playback_cover2 = 2131231490;
            // aapt resource value: 0x7F080303
            public const int playback_cut = 2131231491;
            // aapt resource value: 0x7F080304
            public const int playback_cut_btn_selector = 2131231492;
            // aapt resource value: 0x7F080305
            public const int playback_cut_disable = 2131231493;
            // aapt resource value: 0x7F080306
            public const int playback_cut_sel = 2131231494;
            // aapt resource value: 0x7F080307
            public const int playback_matte = 2131231495;
            // aapt resource value: 0x7F080308
            public const int playback_more_down = 2131231496;
            // aapt resource value: 0x7F080309
            public const int playback_more_down1 = 2131231497;
            // aapt resource value: 0x7F08030A
            public const int playback_more_up1 = 2131231498;
            // aapt resource value: 0x7F08030B
            public const int playback_play = 2131231499;
            // aapt resource value: 0x7F08030C
            public const int playback_play_sel = 2131231500;
            // aapt resource value: 0x7F08030D
            public const int playback_sel = 2131231501;
            // aapt resource value: 0x7F080310
            public const int playbtn_selector = 2131231504;
            public const int pic_bg = 2131231391;
            
            // aapt resource value: 0x7F0802A0
            public const int play_balanced = 2131231392;
            public const int play = 2131231392;
            
            // aapt resource value: 0x7F0802A1
            public const int play_balanced_disabel = 2131231393;
            // aapt resource value: 0x7F0802FF
            public const int playback = 2131231487;
            
            // aapt resource value: 0x7F0802A2
            public const int play_balanced_sel = 2131231394;
            // aapt resource value: 0x7F08030F
            public const int playbackslider = 2131231503;
            
            // aapt resource value: 0x7F0802A3
            public const int play_balanced_selector = 2131231395;
            // aapt resource value: 0x7F080310
            public const int playbackslider_sel = 2131231504;
            
            // aapt resource value: 0x7F0802A4
            public const int play_big = 2131231396;
            // aapt resource value: 0x7F080300
            public const int playback_button = 2131231488;
            
            // aapt resource value: 0x7F0802A6
            public const int play_bigbtn_selector = 2131231398;
            // aapt resource value: 0x7F080301
            public const int playback_cancel = 2131231489;
            
            // aapt resource value: 0x7F0802A5
            public const int play_big_press = 2131231397;
            // aapt resource value: 0x7F080302
            public const int playback_check_selector = 2131231490;
            
            // aapt resource value: 0x7F0802A7
            public const int play_button_bg = 2131231399;
            // aapt resource value: 0x7F080303
            public const int playback_cover2 = 2131231491;
            
            // aapt resource value: 0x7F0802A8
            public const int play_button_sel = 2131231400;
            // aapt resource value: 0x7F080304
            public const int playback_cut = 2131231492;
            
            // aapt resource value: 0x7F0802A9
            public const int play_button_selector = 2131231401;
            // aapt resource value: 0x7F080305
            public const int playback_cut_btn_selector = 2131231493;
            
            // aapt resource value: 0x7F0802AA
            public const int play_close = 2131231402;
            // aapt resource value: 0x7F080306
            public const int playback_cut_disable = 2131231494;
            
            // aapt resource value: 0x7F0802AB
            public const int play_close_sel = 2131231403;
            // aapt resource value: 0x7F080307
            public const int playback_cut_sel = 2131231495;
            
            // aapt resource value: 0x7F0802AC
            public const int play_close_selector = 2131231404;
            // aapt resource value: 0x7F080308
            public const int playback_matte = 2131231496;
            
            // aapt resource value: 0x7F0802AD
            public const int play_disable = 2131231405;
            // aapt resource value: 0x7F080309
            public const int playback_more_down = 2131231497;
            
            // aapt resource value: 0x7F0802AE
            public const int play_flunet = 2131231406;
            // aapt resource value: 0x7F08030A
            public const int playback_more_down1 = 2131231498;
            
            // aapt resource value: 0x7F0802AF
            public const int play_flunet_disabel = 2131231407;
            // aapt resource value: 0x7F08030B
            public const int playback_more_up1 = 2131231499;
            
            // aapt resource value: 0x7F0802B0
            public const int play_flunet_sel = 2131231408;
            // aapt resource value: 0x7F08030C
            public const int playback_play = 2131231500;
            
            // aapt resource value: 0x7F0802B1
            public const int play_flunet_selector = 2131231409;
            // aapt resource value: 0x7F08030D
            public const int playback_play_sel = 2131231501;
            
            // aapt resource value: 0x7F0802B2
            public const int play_full_loding_logo = 2131231410;
            // aapt resource value: 0x7F0802B3
            public const int play_full_multiple = 2131231411;
            // aapt resource value: 0x7F0802B4
            public const int play_full_multiple2 = 2131231412;
            // aapt resource value: 0x7F0802B5
            public const int play_full_multiple3 = 2131231413;
            // aapt resource value: 0x7F0802B6
            public const int play_full_multiple4 = 2131231414;
            // aapt resource value: 0x7F0802B7
            public const int play_full_multiple5 = 2131231415;
            // aapt resource value: 0x7F0802B8
            public const int play_full_pause = 2131231416;
            // aapt resource value: 0x7F0802B9
            public const int play_full_pause_sel = 2131231417;
            // aapt resource value: 0x7F0802BA
            public const int play_full_pause_selector = 2131231418;
            // aapt resource value: 0x7F0802BB
            public const int play_full_play = 2131231419;
            // aapt resource value: 0x7F0802BC
            public const int play_full_play_sel = 2131231420;
            // aapt resource value: 0x7F0802BD
            public const int play_full_play_selector = 2131231421;
            // aapt resource value: 0x7F0802BE
            public const int play_full_previously = 2131231422;
            // aapt resource value: 0x7F0802BF
            public const int play_full_previously_sel = 2131231423;
            // aapt resource value: 0x7F0802C0
            public const int play_full_previously_selector = 2131231424;
            // aapt resource value: 0x7F0802C1
            public const int play_full_ptz_selector = 2131231425;
            // aapt resource value: 0x7F0802C2
            public const int play_full_quality_color_selector = 2131231426;
            // aapt resource value: 0x7F0802C3
            public const int play_full_quality_selector = 2131231427;
            // aapt resource value: 0x7F0802C4
            public const int play_full_soundoff_btn_selector = 2131231428;
            // aapt resource value: 0x7F0802C5
            public const int play_full_soundon_btn_selector = 2131231429;
            // aapt resource value: 0x7F0802C6
            public const int play_full_stop = 2131231430;
            // aapt resource value: 0x7F0802C7
            public const int play_full_stop_sel = 2131231431;
            // aapt resource value: 0x7F0802C8
            public const int play_full_stop_selector = 2131231432;
            // aapt resource value: 0x7F0802C9
            public const int play_full_talk_selector = 2131231433;
            // aapt resource value: 0x7F0802CA
            public const int play_full_video = 2131231434;
            // aapt resource value: 0x7F0802CB
            public const int play_full_video_now = 2131231435;
            // aapt resource value: 0x7F0802CC
            public const int play_full_video_now_sel = 2131231436;
            // aapt resource value: 0x7F0802CD
            public const int play_full_video_now_selector = 2131231437;
            // aapt resource value: 0x7F0802CE
            public const int play_full_video_sel = 2131231438;
            // aapt resource value: 0x7F0802CF
            public const int play_full_video_selector = 2131231439;
            // aapt resource value: 0x7F0802D0
            public const int play_hd = 2131231440;
            // aapt resource value: 0x7F0802D1
            public const int play_hd_disabel = 2131231441;
            // aapt resource value: 0x7F0802D2
            public const int play_hd_sel = 2131231442;
            // aapt resource value: 0x7F0802D3
            public const int play_hd_selector = 2131231443;
            // aapt resource value: 0x7F0802D4
            public const int play_play = 2131231444;
            // aapt resource value: 0x7F0802D5
            public const int play_play_dis = 2131231445;
            // aapt resource value: 0x7F0802D6
            public const int play_play_sel = 2131231446;
            // aapt resource value: 0x7F0802D7
            public const int play_play_selector = 2131231447;
            // aapt resource value: 0x7F0802D8
            public const int play_press = 2131231448;
            // aapt resource value: 0x7F0802D9
            public const int play_previously = 2131231449;
            // aapt resource value: 0x7F0802DA
            public const int play_previously_dis = 2131231450;
            // aapt resource value: 0x7F0802DB
            public const int play_previously_sel = 2131231451;
            // aapt resource value: 0x7F0802DC
            public const int play_previously_selector = 2131231452;
            // aapt resource value: 0x7F0802DD
            public const int play_privacy_selector = 2131231453;
            // aapt resource value: 0x7F0802DE
            public const int play_ptz = 2131231454;
            // aapt resource value: 0x7F0802DF
            public const int play_ptz_dis = 2131231455;
            // aapt resource value: 0x7F0802E0
            public const int play_ptz_sel = 2131231456;
            // aapt resource value: 0x7F0802E1
            public const int play_ptz_selector = 2131231457;
            // aapt resource value: 0x7F0802E2
            public const int play_small = 2131231458;
            // aapt resource value: 0x7F0802E4
            public const int play_smallbtn_selector = 2131231460;
            // aapt resource value: 0x7F0802E3
            public const int play_small_press = 2131231459;
            // aapt resource value: 0x7F0802E5
            public const int play_speech = 2131231461;
            // aapt resource value: 0x7F0802E6
            public const int play_speech_dis = 2131231462;
            // aapt resource value: 0x7F0802E7
            public const int play_speech_sel = 2131231463;
            // aapt resource value: 0x7F0802E8
            public const int play_speech_selector = 2131231464;
            // aapt resource value: 0x7F0802E9
            public const int play_stop = 2131231465;
            // aapt resource value: 0x7F0802EA
            public const int play_stop_sel = 2131231466;
            // aapt resource value: 0x7F0802EB
            public const int play_stop_selector = 2131231467;
            // aapt resource value: 0x7F0802EC
            public const int play_talk = 2131231468;
            // aapt resource value: 0x7F0802F0
            public const int play_talkback = 2131231472;
            // aapt resource value: 0x7F0802F1
            public const int play_talkback_sel = 2131231473;
            // aapt resource value: 0x7F0802F2
            public const int play_talkback_selector = 2131231474;
            // aapt resource value: 0x7F0802ED
            public const int play_talk_dis = 2131231469;
            // aapt resource value: 0x7F0802EE
            public const int play_talk_sel = 2131231470;
            // aapt resource value: 0x7F0802EF
            public const int play_talk_selector = 2131231471;
            // aapt resource value: 0x7F0802F3
            public const int play_video = 2131231475;
            // aapt resource value: 0x7F0802F4
            public const int play_video_dis = 2131231476;
            // aapt resource value: 0x7F0802F5
            public const int play_video_record = 2131231477;
            // aapt resource value: 0x7F0802F6
            public const int play_video_sel = 2131231478;
            // aapt resource value: 0x7F0802F7
            public const int play_video_selector = 2131231479;
            // aapt resource value: 0x7F0802F8
            public const int play_video_start = 2131231480;
            // aapt resource value: 0x7F0802F9
            public const int play_video_time_bg = 2131231481;
            // aapt resource value: 0x7F0802FA
            public const int play_voice = 2131231482;
            // aapt resource value: 0x7F0802FB
            public const int play_voice_dis = 2131231483;
            // aapt resource value: 0x7F0802FC
            public const int play_voice_sel = 2131231484;
            // aapt resource value: 0x7F0802FD
            public const int play_voice_selector = 2131231485;
            // aapt resource value: 0x7F08030E
            public const int playback_sel = 2131231502;
            
            // aapt resource value: 0x7F080311
            public const int popdialogbg = 2131231505;
            public const int playbtn_selector = 2131231505;
            // aapt resource value: 0x7F0802A1
            public const int play_balanced = 2131231393;
            // aapt resource value: 0x7F0802A2
            public const int play_balanced_disabel = 2131231394;
            // aapt resource value: 0x7F0802A3
            public const int play_balanced_sel = 2131231395;
            // aapt resource value: 0x7F0802A4
            public const int play_balanced_selector = 2131231396;
            // aapt resource value: 0x7F0802A5
            public const int play_big = 2131231397;
            // aapt resource value: 0x7F0802A7
            public const int play_bigbtn_selector = 2131231399;
            // aapt resource value: 0x7F0802A6
            public const int play_big_press = 2131231398;
            // aapt resource value: 0x7F0802A8
            public const int play_button_bg = 2131231400;
            // aapt resource value: 0x7F0802A9
            public const int play_button_sel = 2131231401;
            // aapt resource value: 0x7F0802AA
            public const int play_button_selector = 2131231402;
            // aapt resource value: 0x7F0802AB
            public const int play_close = 2131231403;
            // aapt resource value: 0x7F0802AC
            public const int play_close_sel = 2131231404;
            // aapt resource value: 0x7F0802AD
            public const int play_close_selector = 2131231405;
            // aapt resource value: 0x7F0802AE
            public const int play_disable = 2131231406;
            // aapt resource value: 0x7F0802AF
            public const int play_flunet = 2131231407;
            // aapt resource value: 0x7F0802B0
            public const int play_flunet_disabel = 2131231408;
            // aapt resource value: 0x7F0802B1
            public const int play_flunet_sel = 2131231409;
            // aapt resource value: 0x7F0802B2
            public const int play_flunet_selector = 2131231410;
            // aapt resource value: 0x7F0802B3
            public const int play_full_loding_logo = 2131231411;
            // aapt resource value: 0x7F0802B4
            public const int play_full_multiple = 2131231412;
            // aapt resource value: 0x7F0802B5
            public const int play_full_multiple2 = 2131231413;
            // aapt resource value: 0x7F0802B6
            public const int play_full_multiple3 = 2131231414;
            // aapt resource value: 0x7F0802B7
            public const int play_full_multiple4 = 2131231415;
            // aapt resource value: 0x7F0802B8
            public const int play_full_multiple5 = 2131231416;
            // aapt resource value: 0x7F0802B9
            public const int play_full_pause = 2131231417;
            // aapt resource value: 0x7F0802BA
            public const int play_full_pause_sel = 2131231418;
            // aapt resource value: 0x7F0802BB
            public const int play_full_pause_selector = 2131231419;
            // aapt resource value: 0x7F0802BC
            public const int play_full_play = 2131231420;
            // aapt resource value: 0x7F0802BD
            public const int play_full_play_sel = 2131231421;
            // aapt resource value: 0x7F0802BE
            public const int play_full_play_selector = 2131231422;
            // aapt resource value: 0x7F0802BF
            public const int play_full_previously = 2131231423;
            // aapt resource value: 0x7F0802C0
            public const int play_full_previously_sel = 2131231424;
            // aapt resource value: 0x7F0802C1
            public const int play_full_previously_selector = 2131231425;
            // aapt resource value: 0x7F0802C2
            public const int play_full_ptz_selector = 2131231426;
            // aapt resource value: 0x7F0802C3
            public const int play_full_quality_color_selector = 2131231427;
            // aapt resource value: 0x7F0802C4
            public const int play_full_quality_selector = 2131231428;
            // aapt resource value: 0x7F0802C5
            public const int play_full_soundoff_btn_selector = 2131231429;
            // aapt resource value: 0x7F0802C6
            public const int play_full_soundon_btn_selector = 2131231430;
            // aapt resource value: 0x7F0802C7
            public const int play_full_stop = 2131231431;
            // aapt resource value: 0x7F0802C8
            public const int play_full_stop_sel = 2131231432;
            // aapt resource value: 0x7F0802C9
            public const int play_full_stop_selector = 2131231433;
            // aapt resource value: 0x7F0802CA
            public const int play_full_talk_selector = 2131231434;
            // aapt resource value: 0x7F0802CB
            public const int play_full_video = 2131231435;
            // aapt resource value: 0x7F0802CC
            public const int play_full_video_now = 2131231436;
            // aapt resource value: 0x7F0802CD
            public const int play_full_video_now_sel = 2131231437;
            // aapt resource value: 0x7F0802CE
            public const int play_full_video_now_selector = 2131231438;
            // aapt resource value: 0x7F0802CF
            public const int play_full_video_sel = 2131231439;
            // aapt resource value: 0x7F0802D0
            public const int play_full_video_selector = 2131231440;
            // aapt resource value: 0x7F0802D1
            public const int play_hd = 2131231441;
            // aapt resource value: 0x7F0802D2
            public const int play_hd_disabel = 2131231442;
            // aapt resource value: 0x7F0802D3
            public const int play_hd_sel = 2131231443;
            // aapt resource value: 0x7F0802D4
            public const int play_hd_selector = 2131231444;
            // aapt resource value: 0x7F0802D5
            public const int play_play = 2131231445;
            // aapt resource value: 0x7F0802D6
            public const int play_play_dis = 2131231446;
            // aapt resource value: 0x7F0802D7
            public const int play_play_sel = 2131231447;
            // aapt resource value: 0x7F0802D8
            public const int play_play_selector = 2131231448;
            // aapt resource value: 0x7F0802D9
            public const int play_press = 2131231449;
            // aapt resource value: 0x7F0802DA
            public const int play_previously = 2131231450;
            // aapt resource value: 0x7F0802DB
            public const int play_previously_dis = 2131231451;
            // aapt resource value: 0x7F0802DC
            public const int play_previously_sel = 2131231452;
            // aapt resource value: 0x7F0802DD
            public const int play_previously_selector = 2131231453;
            // aapt resource value: 0x7F0802DE
            public const int play_privacy_selector = 2131231454;
            // aapt resource value: 0x7F0802DF
            public const int play_ptz = 2131231455;
            // aapt resource value: 0x7F0802E0
            public const int play_ptz_dis = 2131231456;
            // aapt resource value: 0x7F0802E1
            public const int play_ptz_sel = 2131231457;
            // aapt resource value: 0x7F0802E2
            public const int play_ptz_selector = 2131231458;
            // aapt resource value: 0x7F0802E3
            public const int play_small = 2131231459;
            // aapt resource value: 0x7F0802E5
            public const int play_smallbtn_selector = 2131231461;
            // aapt resource value: 0x7F0802E4
            public const int play_small_press = 2131231460;
            // aapt resource value: 0x7F0802E6
            public const int play_speech = 2131231462;
            // aapt resource value: 0x7F0802E7
            public const int play_speech_dis = 2131231463;
            // aapt resource value: 0x7F0802E8
            public const int play_speech_sel = 2131231464;
            // aapt resource value: 0x7F0802E9
            public const int play_speech_selector = 2131231465;
            // aapt resource value: 0x7F0802EA
            public const int play_stop = 2131231466;
            // aapt resource value: 0x7F0802EB
            public const int play_stop_sel = 2131231467;
            // aapt resource value: 0x7F0802EC
            public const int play_stop_selector = 2131231468;
            // aapt resource value: 0x7F0802ED
            public const int play_talk = 2131231469;
            // aapt resource value: 0x7F0802F1
            public const int play_talkback = 2131231473;
            // aapt resource value: 0x7F0802F2
            public const int play_talkback_sel = 2131231474;
            // aapt resource value: 0x7F0802F3
            public const int play_talkback_selector = 2131231475;
            // aapt resource value: 0x7F0802EE
            public const int play_talk_dis = 2131231470;
            // aapt resource value: 0x7F0802EF
            public const int play_talk_sel = 2131231471;
            // aapt resource value: 0x7F0802F0
            public const int play_talk_selector = 2131231472;
            // aapt resource value: 0x7F0802F4
            public const int play_video = 2131231476;
            // aapt resource value: 0x7F0802F5
            public const int play_video_dis = 2131231477;
            // aapt resource value: 0x7F0802F6
            public const int play_video_record = 2131231478;
            // aapt resource value: 0x7F0802F7
            public const int play_video_sel = 2131231479;
            // aapt resource value: 0x7F0802F8
            public const int play_video_selector = 2131231480;
            // aapt resource value: 0x7F0802F9
            public const int play_video_start = 2131231481;
            // aapt resource value: 0x7F0802FA
            public const int play_video_time_bg = 2131231482;
            // aapt resource value: 0x7F0802FB
            public const int play_voice = 2131231483;
            // aapt resource value: 0x7F0802FC
            public const int play_voice_dis = 2131231484;
            // aapt resource value: 0x7F0802FD
            public const int play_voice_sel = 2131231485;
            // aapt resource value: 0x7F0802FE
            public const int play_voice_selector = 2131231486;
            
            // aapt resource value: 0x7F080312
            public const int prepare_device = 2131231506;
            public const int popdialogbg = 2131231506;
            
            // aapt resource value: 0x7F080313
            public const int preview_close1_video_ico = 2131231507;
            public const int prepare_device = 2131231507;
            
            // aapt resource value: 0x7F080314
            public const int preview_close_video = 2131231508;
            public const int preview_close1_video_ico = 2131231508;
            
            // aapt resource value: 0x7F080315
            public const int preview_close_video_dis = 2131231509;
            public const int preview_close_video = 2131231509;
            
            // aapt resource value: 0x7F080316
            public const int preview_close_video_sel = 2131231510;
            public const int preview_close_video_dis = 2131231510;
            
            // aapt resource value: 0x7F080317
            public const int preview_down_bg_normal = 2131231511;
            public const int preview_close_video_sel = 2131231511;
            
            // aapt resource value: 0x7F080318
            public const int preview_down_bg_pressed = 2131231512;
            public const int preview_down_bg_normal = 2131231512;
            
            // aapt resource value: 0x7F080319
            public const int preview_down_ico = 2131231513;
            public const int preview_down_bg_pressed = 2131231513;
            
            // aapt resource value: 0x7F08031A
            public const int preview_down_selector = 2131231514;
            public const int preview_down_ico = 2131231514;
            
            // aapt resource value: 0x7F08031B
            public const int preview_enlarge = 2131231515;
            public const int preview_down_selector = 2131231515;
            
            // aapt resource value: 0x7F08031C
            public const int preview_enlarge_btn_sel = 2131231516;
            public const int preview_enlarge = 2131231516;
            
            // aapt resource value: 0x7F08031D
            public const int preview_enlarge_dis = 2131231517;
            public const int preview_enlarge_btn_sel = 2131231517;
            
            // aapt resource value: 0x7F08031E
            public const int preview_enlarge_selector = 2131231518;
            public const int preview_enlarge_dis = 2131231518;
            
            // aapt resource value: 0x7F08031F
            public const int preview_play_btn = 2131231519;
            public const int preview_enlarge_selector = 2131231519;
            
            // aapt resource value: 0x7F080320
            public const int preview_play_btn_dis = 2131231520;
            public const int preview_play_btn = 2131231520;
            
            // aapt resource value: 0x7F080321
            public const int preview_play_btn_sel = 2131231521;
            public const int preview_play_btn_dis = 2131231521;
            
            // aapt resource value: 0x7F080322
            public const int preview_recording = 2131231522;
            public const int preview_play_btn_sel = 2131231522;
            
            // aapt resource value: 0x7F080323
            public const int preview_recording_dis = 2131231523;
            public const int preview_recording = 2131231523;
            
            // aapt resource value: 0x7F080324
            public const int preview_recording_sel = 2131231524;
            public const int preview_recording_dis = 2131231524;
            
            // aapt resource value: 0x7F080325
            public const int preview_selection_bg = 2131231525;
            public const int preview_recording_sel = 2131231525;
            
            // aapt resource value: 0x7F080326
            public const int preview_stopplay_btn_dis = 2131231526;
            public const int preview_selection_bg = 2131231526;
            
            // aapt resource value: 0x7F080327
            public const int preview_unvoice_btn = 2131231527;
            public const int preview_stopplay_btn_dis = 2131231527;
            
            // aapt resource value: 0x7F080328
            public const int preview_unvoice_btn_sel = 2131231528;
            public const int preview_unvoice_btn = 2131231528;
            
            // aapt resource value: 0x7F080329
            public const int preview_video_selection = 2131231529;
            public const int preview_unvoice_btn_sel = 2131231529;
            
            // aapt resource value: 0x7F08032A
            public const int preview_video_selection_hover = 2131231530;
            public const int preview_video_selection = 2131231530;
            
            // aapt resource value: 0x7F08032B
            public const int preview_voice_btn = 2131231531;
            public const int preview_video_selection_hover = 2131231531;
            
            // aapt resource value: 0x7F08032C
            public const int preview_voice_btn_dis = 2131231532;
            public const int preview_voice_btn = 2131231532;
            
            // aapt resource value: 0x7F08032D
            public const int preview_voice_btn_sel = 2131231533;
            public const int preview_voice_btn_dis = 2131231533;
            
            // aapt resource value: 0x7F08032E
            public const int previously = 2131231534;
            public const int preview_voice_btn_sel = 2131231534;
            
            // aapt resource value: 0x7F08032F
            public const int previously_dis = 2131231535;
            public const int previously = 2131231535;
            
            // aapt resource value: 0x7F080330
            public const int previously_sel = 2131231536;
            public const int previously_dis = 2131231536;
            
            // aapt resource value: 0x7F080331
            public const int ptz_bg = 2131231537;
            public const int previously_sel = 2131231537;
            
            // aapt resource value: 0x7F080332
            public const int ptz_bottom_limit = 2131231538;
            public const int ptz_bg = 2131231538;
            
            // aapt resource value: 0x7F080333
            public const int ptz_bottom_sel = 2131231539;
            public const int ptz_bottom_limit = 2131231539;
            
            // aapt resource value: 0x7F080334
            public const int ptz_left_limit = 2131231540;
            public const int ptz_bottom_sel = 2131231540;
            
            // aapt resource value: 0x7F080335
            public const int ptz_left_sel = 2131231541;
            public const int ptz_left_limit = 2131231541;
            
            // aapt resource value: 0x7F080336
            public const int ptz_prompt = 2131231542;
            public const int ptz_left_sel = 2131231542;
            
            // aapt resource value: 0x7F080337
            public const int ptz_right_limit = 2131231543;
            public const int ptz_prompt = 2131231543;
            
            // aapt resource value: 0x7F080338
            public const int ptz_right_sel = 2131231544;
            public const int ptz_right_limit = 2131231544;
            
            // aapt resource value: 0x7F080339
            public const int ptz_top_limit = 2131231545;
            public const int ptz_right_sel = 2131231545;
            
            // aapt resource value: 0x7F08033A
            public const int ptz_turn = 2131231546;
            public const int ptz_top_limit = 2131231546;
            
            // aapt resource value: 0x7F08033B
            public const int ptz_turn_sel = 2131231547;
            public const int ptz_turn = 2131231547;
            
            // aapt resource value: 0x7F08033C
            public const int ptz_turn_selector = 2131231548;
            public const int ptz_turn_sel = 2131231548;
            
            // aapt resource value: 0x7F08033D
            public const int ptz_up_sel = 2131231549;
            public const int ptz_turn_selector = 2131231549;
            
            // aapt resource value: 0x7F08033E
            public const int push_close = 2131231550;
            public const int ptz_up_sel = 2131231550;
            
            // aapt resource value: 0x7F08033F
            public const int push_close_sel = 2131231551;
            public const int push_close = 2131231551;
            
            // aapt resource value: 0x7F080340
            public const int push_close_selector = 2131231552;
            public const int push_close_sel = 2131231552;
            
            // aapt resource value: 0x7F080341
            public const int put_ico = 2131231553;
            public const int push_close_selector = 2131231553;
            
            // aapt resource value: 0x7F080342
            public const int query_loding1 = 2131231554;
            public const int put_ico = 2131231554;
            
            // aapt resource value: 0x7F080343
            public const int query_loding2 = 2131231555;
            public const int query_loding1 = 2131231555;
            
            // aapt resource value: 0x7F080344
            public const int query_loding3 = 2131231556;
            public const int query_loding2 = 2131231556;
            
            // aapt resource value: 0x7F080345
            public const int query_loding4 = 2131231557;
            public const int query_loding3 = 2131231557;
            
            // aapt resource value: 0x7F080346
            public const int query_loding5 = 2131231558;
            public const int query_loding4 = 2131231558;
            
            // aapt resource value: 0x7F080347
            public const int radius_rect_bg_qq_group = 2131231559;
            public const int query_loding5 = 2131231559;
            
            // aapt resource value: 0x7F080348
            public const int read_button = 2131231560;
            public const int radius_rect_bg_qq_group = 2131231560;
            
            // aapt resource value: 0x7F080349
            public const int read_button_sel = 2131231561;
            public const int read_button = 2131231561;
            
            // aapt resource value: 0x7F08034A
            public const int read_button_selector = 2131231562;
            public const int read_button_sel = 2131231562;
            
            // aapt resource value: 0x7F08034B
            public const int refresh_selector = 2131231563;
            public const int read_button_selector = 2131231563;
            
            // aapt resource value: 0x7F08034C
            public const int register_server_bg = 2131231564;
            public const int refresh_selector = 2131231564;
            
            // aapt resource value: 0x7F08034D
            public const int remote_cal_selector = 2131231565;
            public const int register_server_bg = 2131231565;
            
            // aapt resource value: 0x7F08034E
            public const int remote_exit_btn_selector = 2131231566;
            public const int remote_cal_selector = 2131231566;
            
            // aapt resource value: 0x7F08034F
            public const int remote_list_pause_btn_selector = 2131231567;
            public const int remote_exit_btn_selector = 2131231567;
            
            // aapt resource value: 0x7F080350
            public const int remote_list_play_btn_selector = 2131231568;
            public const int remote_list_pause_btn_selector = 2131231568;
            
            // aapt resource value: 0x7F080351
            public const int remote_list_soundoff_btn_selector = 2131231569;
            public const int remote_list_play_btn_selector = 2131231569;
            
            // aapt resource value: 0x7F080352
            public const int remote_list_soundon_btn_selector = 2131231570;
            public const int remote_list_soundoff_btn_selector = 2131231570;
            
            // aapt resource value: 0x7F080353
            public const int remote_play = 2131231571;
            public const int remote_list_soundon_btn_selector = 2131231571;
            
            // aapt resource value: 0x7F080354
            public const int remote_play_sel = 2131231572;
            public const int remote_play = 2131231572;
            
            // aapt resource value: 0x7F080355
            public const int remote_seekbar_style = 2131231573;
            public const int remote_play_sel = 2131231573;
            
            // aapt resource value: 0x7F080356
            public const int remote_seekbar_thumb = 2131231574;
            public const int remote_seekbar_style = 2131231574;
            
            // aapt resource value: 0x7F080357
            public const int reset_deivce = 2131231575;
            // aapt resource value: 0x7F080364
            public const int results_4_dvr = 2131231588;
            // aapt resource value: 0x7F080365
            public const int results_8_16_nvr = 2131231589;
            // aapt resource value: 0x7F080366
            public const int results_8_nvr = 2131231590;
            // aapt resource value: 0x7F080367
            public const int results_c6p = 2131231591;
            // aapt resource value: 0x7F080368
            public const int results_mini_360_plus = 2131231592;
            // aapt resource value: 0x7F080369
            public const int results_mini_trooper = 2131231593;
            // aapt resource value: 0x7F08036A
            public const int results_pic_a1 = 2131231594;
            // aapt resource value: 0x7F08036B
            public const int results_pic_a1c = 2131231595;
            // aapt resource value: 0x7F08036C
            public const int results_pic_a1s = 2131231596;
            // aapt resource value: 0x7F08036D
            public const int results_pic_baidu_c2s = 2131231597;
            // aapt resource value: 0x7F08036E
            public const int results_pic_bg = 2131231598;
            // aapt resource value: 0x7F08036F
            public const int results_pic_c1 = 2131231599;
            // aapt resource value: 0x7F080370
            public const int results_pic_c2 = 2131231600;
            // aapt resource value: 0x7F080373
            public const int results_pic_c2c = 2131231603;
            // aapt resource value: 0x7F080374
            public const int results_pic_c2mini = 2131231604;
            // aapt resource value: 0x7F080375
            public const int results_pic_c2mini2 = 2131231605;
            // aapt resource value: 0x7F080376
            public const int results_pic_c2plus = 2131231606;
            // aapt resource value: 0x7F080377
            public const int results_pic_c2s = 2131231607;
            // aapt resource value: 0x7F080378
            public const int results_pic_c2w = 2131231608;
            // aapt resource value: 0x7F080371
            public const int results_pic_c2_2 = 2131231601;
            // aapt resource value: 0x7F080372
            public const int results_pic_c2_usa = 2131231602;
            // aapt resource value: 0x7F080379
            public const int results_pic_c3 = 2131231609;
            // aapt resource value: 0x7F08037A
            public const int results_pic_c3c = 2131231610;
            // aapt resource value: 0x7F08037B
            public const int results_pic_c3e = 2131231611;
            // aapt resource value: 0x7F08037C
            public const int results_pic_c3s = 2131231612;
            // aapt resource value: 0x7F08037D
            public const int results_pic_c4 = 2131231613;
            // aapt resource value: 0x7F08037E
            public const int results_pic_c4c = 2131231614;
            // aapt resource value: 0x7F08037F
            public const int results_pic_c4e = 2131231615;
            // aapt resource value: 0x7F080380
            public const int results_pic_c4s = 2131231616;
            // aapt resource value: 0x7F080381
            public const int results_pic_c6 = 2131231617;
            // aapt resource value: 0x7F080382
            public const int results_pic_c6c = 2131231618;
            // aapt resource value: 0x7F080383
            public const int results_pic_c6c_1 = 2131231619;
            // aapt resource value: 0x7F080384
            public const int results_pic_c6c_2 = 2131231620;
            // aapt resource value: 0x7F080385
            public const int results_pic_c6h = 2131231621;
            // aapt resource value: 0x7F080386
            public const int results_pic_co2 = 2131231622;
            // aapt resource value: 0x7F080387
            public const int results_pic_d1 = 2131231623;
            // aapt resource value: 0x7F080388
            public const int results_pic_default = 2131231624;
            // aapt resource value: 0x7F080389
            public const int results_pic_f1 = 2131231625;
            // aapt resource value: 0x7F08038A
            public const int results_pic_h2c = 2131231626;
            // aapt resource value: 0x7F08038B
            public const int results_pic_h2s = 2131231627;
            // aapt resource value: 0x7F08038C
            public const int results_pic_n1 = 2131231628;
            // aapt resource value: 0x7F08038D
            public const int results_pic_n1w = 2131231629;
            // aapt resource value: 0x7F08038E
            public const int results_pic_r1 = 2131231630;
            // aapt resource value: 0x7F08038F
            public const int results_pic_r2 = 2131231631;
            // aapt resource value: 0x7F080390
            public const int results_pic_w1 = 2131231632;
            // aapt resource value: 0x7F080391
            public const int results_pic_w3 = 2131231633;
            // aapt resource value: 0x7F080392
            public const int results_pic_x1 = 2131231634;
            // aapt resource value: 0x7F080393
            public const int results_pic_x2 = 2131231635;
            // aapt resource value: 0x7F080394
            public const int results_pic_x3 = 2131231636;
            // aapt resource value: 0x7F080395
            public const int results_pic_x3c = 2131231637;
            // aapt resource value: 0x7F080396
            public const int results_pic_x4 = 2131231638;
            // aapt resource value: 0x7F080397
            public const int results_pic_z1 = 2131231639;
            // aapt resource value: 0x7F080398
            public const int results_w2d = 2131231640;
            // aapt resource value: 0x7F080399
            public const int results_w2s = 2131231641;
            // aapt resource value: 0x7F08039A
            public const int results_wlb = 2131231642;
            // aapt resource value: 0x7F08039B
            public const int results_x5_108tp = 2131231643;
            public const int remote_seekbar_thumb = 2131231575;
            
            // aapt resource value: 0x7F080358
            public const int result_5k_vr104d = 2131231576;
            public const int reset_deivce = 2131231576;
            
            // aapt resource value: 0x7F080359
            public const int result_5k_vr116d = 2131231577;
            // aapt resource value: 0x7F080365
            public const int results_4_dvr = 2131231589;
            
            // aapt resource value: 0x7F08035A
            public const int result_8_16dvr = 2131231578;
            // aapt resource value: 0x7F080366
            public const int results_8_16_nvr = 2131231590;
            
            // aapt resource value: 0x7F08035B
            public const int result_cs_c3w = 2131231579;
            // aapt resource value: 0x7F080367
            public const int results_8_nvr = 2131231591;
            
            // aapt resource value: 0x7F08035C
            public const int result_cs_vr104d = 2131231580;
            // aapt resource value: 0x7F080368
            public const int results_c6p = 2131231592;
            
            // aapt resource value: 0x7F08035D
            public const int result_cs_vr108d = 2131231581;
            // aapt resource value: 0x7F080369
            public const int results_mini_360_plus = 2131231593;
            
            // aapt resource value: 0x7F08035E
            public const int result_cs_vr116d = 2131231582;
            // aapt resource value: 0x7F08036A
            public const int results_mini_trooper = 2131231594;
            
            // aapt resource value: 0x7F08035F
            public const int result_pic_dh1 = 2131231583;
            // aapt resource value: 0x7F08036B
            public const int results_pic_a1 = 2131231595;
            
            // aapt resource value: 0x7F080360
            public const int result_pic_doorbell = 2131231584;
            // aapt resource value: 0x7F08036C
            public const int results_pic_a1c = 2131231596;
            
            // aapt resource value: 0x7F080361
            public const int result_pic_doorbell_hik = 2131231585;
            // aapt resource value: 0x7F08036D
            public const int results_pic_a1s = 2131231597;
            
            // aapt resource value: 0x7F080362
            public const int result_pic_light = 2131231586;
            // aapt resource value: 0x7F08036E
            public const int results_pic_baidu_c2s = 2131231598;
            
            // aapt resource value: 0x7F080363
            public const int result_x5c = 2131231587;
            // aapt resource value: 0x7F08036F
            public const int results_pic_bg = 2131231599;
            // aapt resource value: 0x7F080370
            public const int results_pic_c1 = 2131231600;
            // aapt resource value: 0x7F080371
            public const int results_pic_c2 = 2131231601;
            // aapt resource value: 0x7F080374
            public const int results_pic_c2c = 2131231604;
            // aapt resource value: 0x7F080375
            public const int results_pic_c2mini = 2131231605;
            // aapt resource value: 0x7F080376
            public const int results_pic_c2mini2 = 2131231606;
            // aapt resource value: 0x7F080377
            public const int results_pic_c2plus = 2131231607;
            // aapt resource value: 0x7F080378
            public const int results_pic_c2s = 2131231608;
            // aapt resource value: 0x7F080379
            public const int results_pic_c2w = 2131231609;
            // aapt resource value: 0x7F080372
            public const int results_pic_c2_2 = 2131231602;
            // aapt resource value: 0x7F080373
            public const int results_pic_c2_usa = 2131231603;
            // aapt resource value: 0x7F08037A
            public const int results_pic_c3 = 2131231610;
            // aapt resource value: 0x7F08037B
            public const int results_pic_c3c = 2131231611;
            // aapt resource value: 0x7F08037C
            public const int results_pic_c3e = 2131231612;
            // aapt resource value: 0x7F08037D
            public const int results_pic_c3s = 2131231613;
            // aapt resource value: 0x7F08037E
            public const int results_pic_c4 = 2131231614;
            // aapt resource value: 0x7F08037F
            public const int results_pic_c4c = 2131231615;
            // aapt resource value: 0x7F080380
            public const int results_pic_c4e = 2131231616;
            // aapt resource value: 0x7F080381
            public const int results_pic_c4s = 2131231617;
            // aapt resource value: 0x7F080382
            public const int results_pic_c6 = 2131231618;
            // aapt resource value: 0x7F080383
            public const int results_pic_c6c = 2131231619;
            // aapt resource value: 0x7F080384
            public const int results_pic_c6c_1 = 2131231620;
            // aapt resource value: 0x7F080385
            public const int results_pic_c6c_2 = 2131231621;
            // aapt resource value: 0x7F080386
            public const int results_pic_c6h = 2131231622;
            // aapt resource value: 0x7F080387
            public const int results_pic_co2 = 2131231623;
            // aapt resource value: 0x7F080388
            public const int results_pic_d1 = 2131231624;
            // aapt resource value: 0x7F080389
            public const int results_pic_default = 2131231625;
            // aapt resource value: 0x7F08038A
            public const int results_pic_f1 = 2131231626;
            // aapt resource value: 0x7F08038B
            public const int results_pic_h2c = 2131231627;
            // aapt resource value: 0x7F08038C
            public const int results_pic_h2s = 2131231628;
            // aapt resource value: 0x7F08038D
            public const int results_pic_n1 = 2131231629;
            // aapt resource value: 0x7F08038E
            public const int results_pic_n1w = 2131231630;
            // aapt resource value: 0x7F08038F
            public const int results_pic_r1 = 2131231631;
            // aapt resource value: 0x7F080390
            public const int results_pic_r2 = 2131231632;
            // aapt resource value: 0x7F080391
            public const int results_pic_w1 = 2131231633;
            // aapt resource value: 0x7F080392
            public const int results_pic_w3 = 2131231634;
            // aapt resource value: 0x7F080393
            public const int results_pic_x1 = 2131231635;
            // aapt resource value: 0x7F080394
            public const int results_pic_x2 = 2131231636;
            // aapt resource value: 0x7F080395
            public const int results_pic_x3 = 2131231637;
            // aapt resource value: 0x7F080396
            public const int results_pic_x3c = 2131231638;
            // aapt resource value: 0x7F080397
            public const int results_pic_x4 = 2131231639;
            // aapt resource value: 0x7F080398
            public const int results_pic_z1 = 2131231640;
            // aapt resource value: 0x7F080399
            public const int results_w2d = 2131231641;
            // aapt resource value: 0x7F08039A
            public const int results_w2s = 2131231642;
            // aapt resource value: 0x7F08039B
            public const int results_wlb = 2131231643;
            
            // aapt resource value: 0x7F08039C
            public const int right_horizontal = 2131231644;
            public const int results_x5_108tp = 2131231644;
            // aapt resource value: 0x7F080359
            public const int result_5k_vr104d = 2131231577;
            // aapt resource value: 0x7F08035A
            public const int result_5k_vr116d = 2131231578;
            // aapt resource value: 0x7F08035B
            public const int result_8_16dvr = 2131231579;
            // aapt resource value: 0x7F08035C
            public const int result_cs_c3w = 2131231580;
            // aapt resource value: 0x7F08035D
            public const int result_cs_vr104d = 2131231581;
            // aapt resource value: 0x7F08035E
            public const int result_cs_vr108d = 2131231582;
            // aapt resource value: 0x7F08035F
            public const int result_cs_vr116d = 2131231583;
            // aapt resource value: 0x7F080360
            public const int result_pic_dh1 = 2131231584;
            // aapt resource value: 0x7F080361
            public const int result_pic_doorbell = 2131231585;
            // aapt resource value: 0x7F080362
            public const int result_pic_doorbell_hik = 2131231586;
            // aapt resource value: 0x7F080363
            public const int result_pic_light = 2131231587;
            // aapt resource value: 0x7F080364
            public const int result_x5c = 2131231588;
            
            // aapt resource value: 0x7F08039D
            public const int right_twinkle = 2131231645;
            public const int right_horizontal = 2131231645;
            
            // aapt resource value: 0x7F08039E
            public const int ring_off = 2131231646;
            public const int right_twinkle = 2131231646;
            
            // aapt resource value: 0x7F08039F
            public const int say_bg = 2131231647;
            public const int ring_off = 2131231647;
            
            // aapt resource value: 0x7F0803A0
            public const int screenshot = 2131231648;
            public const int say_bg = 2131231648;
            
            // aapt resource value: 0x7F0803A1
            public const int screenshot_def = 2131231649;
            public const int screenshot = 2131231649;
            
            // aapt resource value: 0x7F0803A2
            public const int screenshot_sel = 2131231650;
            public const int screenshot_def = 2131231650;
            
            // aapt resource value: 0x7F0803A3
            public const int search = 2131231651;
            public const int screenshot_sel = 2131231651;
            
            // aapt resource value: 0x7F0803A4
            public const int search_bnt = 2131231652;
            public const int search = 2131231652;
            
            // aapt resource value: 0x7F0803A5
            public const int search_bnt_sel = 2131231653;
            public const int search_bnt = 2131231653;
            
            // aapt resource value: 0x7F0803A6
            public const int search_button_selector = 2131231654;
            public const int search_bnt_sel = 2131231654;
            
            // aapt resource value: 0x7F0803A7
            public const int search_input = 2131231655;
            public const int search_button_selector = 2131231655;
            
            // aapt resource value: 0x7F0803A8
            public const int seekbar_thumb = 2131231656;
            // aapt resource value: 0x7F0803AA
            public const int selected_icon = 2131231658;
            // aapt resource value: 0x7F0803AB
            public const int selector_pickerview_btn = 2131231659;
            public const int search_input = 2131231656;
            
            // aapt resource value: 0x7F0803A9
            public const int select_icon = 2131231657;
            public const int seekbar_thumb = 2131231657;
            // aapt resource value: 0x7F0803AB
            public const int selected_icon = 2131231659;
            
            // aapt resource value: 0x7F0803AC
            public const int server1 = 2131231660;
            public const int selector_pickerview_btn = 2131231660;
            // aapt resource value: 0x7F0803AA
            public const int select_icon = 2131231658;
            
            // aapt resource value: 0x7F0803AD
            public const int server2 = 2131231661;
            public const int server1 = 2131231661;
            
            // aapt resource value: 0x7F0803AE
            public const int server3 = 2131231662;
            public const int server2 = 2131231662;
            
            // aapt resource value: 0x7F0803AF
            public const int server4 = 2131231663;
            public const int server3 = 2131231663;
            
            // aapt resource value: 0x7F0803B0
            public const int setup = 2131231664;
            public const int server4 = 2131231664;
            
            // aapt resource value: 0x7F0803B1
            public const int setup_sel = 2131231665;
            public const int setup = 2131231665;
            
            // aapt resource value: 0x7F0803B2
            public const int setup_wechat = 2131231666;
            public const int setup_sel = 2131231666;
            
            // aapt resource value: 0x7F0803B3
            public const int share_management_label_button = 2131231667;
            public const int setup_wechat = 2131231667;
            
            // aapt resource value: 0x7F0803B4
            public const int share_management_label_button_sel = 2131231668;
            public const int share_management_label_button = 2131231668;
            
            // aapt resource value: 0x7F0803B5
            public const int shipin7_alarm_msg_new = 2131231669;
            public const int share_management_label_button_sel = 2131231669;
            
            // aapt resource value: 0x7F0803B6
            public const int shrink_screen_normal = 2131231670;
            public const int shipin7_alarm_msg_new = 2131231670;
            
            // aapt resource value: 0x7F0803B7
            public const int shrink_screen_pressed = 2131231671;
            public const int shrink_screen_normal = 2131231671;
            
            // aapt resource value: 0x7F0803B8
            public const int small_button_cameralist = 2131231672;
            public const int shrink_screen_pressed = 2131231672;
            
            // aapt resource value: 0x7F0803B9
            public const int sound_off = 2131231673;
            public const int small_button_cameralist = 2131231673;
            
            // aapt resource value: 0x7F0803BA
            public const int sound_off_blue = 2131231674;
            public const int sound_off = 2131231674;
            
            // aapt resource value: 0x7F0803BB
            public const int sound_off_sel = 2131231675;
            public const int sound_off_blue = 2131231675;
            
            // aapt resource value: 0x7F0803BC
            public const int sound_off_sel_blue = 2131231676;
            public const int sound_off_sel = 2131231676;
            
            // aapt resource value: 0x7F0803BD
            public const int sound_on = 2131231677;
            public const int sound_off_sel_blue = 2131231677;
            
            // aapt resource value: 0x7F0803BE
            public const int sound_on_blue = 2131231678;
            public const int sound_on = 2131231678;
            
            // aapt resource value: 0x7F0803BF
            public const int sound_on_sel = 2131231679;
            public const int sound_on_blue = 2131231679;
            
            // aapt resource value: 0x7F0803C0
            public const int sound_on_sel_blue = 2131231680;
            public const int sound_on_sel = 2131231680;
            
            // aapt resource value: 0x7F0803C1
            public const int sound_source = 2131231681;
            public const int sound_on_sel_blue = 2131231681;
            
            // aapt resource value: 0x7F0803C2
            public const int sound_source_sel = 2131231682;
            public const int sound_source = 2131231682;
            
            // aapt resource value: 0x7F0803C3
            public const int speech = 2131231683;
            public const int sound_source_sel = 2131231683;
            
            // aapt resource value: 0x7F0803C4
            public const int speech_0 = 2131231684;
            public const int speech = 2131231684;
            
            // aapt resource value: 0x7F0803C5
            public const int speech_1 = 2131231685;
            public const int speech_0 = 2131231685;
            
            // aapt resource value: 0x7F0803C6
            public const int speech_2 = 2131231686;
            public const int speech_1 = 2131231686;
            
            // aapt resource value: 0x7F0803C7
            public const int speech_3 = 2131231687;
            public const int speech_2 = 2131231687;
            
            // aapt resource value: 0x7F0803C8
            public const int speech_4 = 2131231688;
            public const int speech_3 = 2131231688;
            
            // aapt resource value: 0x7F0803C9
            public const int speech_5 = 2131231689;
            public const int speech_4 = 2131231689;
            
            // aapt resource value: 0x7F0803CA
            public const int speech_full_selector = 2131231690;
            public const int speech_5 = 2131231690;
            
            // aapt resource value: 0x7F0803CB
            public const int stop = 2131231691;
            // aapt resource value: 0x7F0803CE
            public const int stopbtn_selector = 2131231694;
            // aapt resource value: 0x7F0803CF
            public const int stoplay_btn = 2131231695;
            // aapt resource value: 0x7F0803D0
            public const int stoplay_btn_sel = 2131231696;
            public const int speech_full_selector = 2131231691;
            
            // aapt resource value: 0x7F0803CC
            public const int stop_disable = 2131231692;
            public const int stop = 2131231692;
            
            // aapt resource value: 0x7F0803CD
            public const int stop_press = 2131231693;
            // aapt resource value: 0x7F0803CF
            public const int stopbtn_selector = 2131231695;
            // aapt resource value: 0x7F0803D0
            public const int stoplay_btn = 2131231696;
            
            // aapt resource value: 0x7F0803D1
            public const int success = 2131231697;
            public const int stoplay_btn_sel = 2131231697;
            // aapt resource value: 0x7F0803CD
            public const int stop_disable = 2131231693;
            // aapt resource value: 0x7F0803CE
            public const int stop_press = 2131231694;
            
            // aapt resource value: 0x7F0803D2
            public const int success_icon = 2131231698;
            public const int success = 2131231698;
            
            // aapt resource value: 0x7F0803D3
            public const int success_img = 2131231699;
            public const int success_icon = 2131231699;
            
            // aapt resource value: 0x7F0803D4
            public const int sure_background_def = 2131231700;
            public const int success_img = 2131231700;
            
            // aapt resource value: 0x7F0803D5
            public const int sure_background_sel = 2131231701;
            public const int sure_background_def = 2131231701;
            
            // aapt resource value: 0x7F0803D6
            public const int switch_camera = 2131231702;
            public const int sure_background_sel = 2131231702;
            
            // aapt resource value: 0x7F0803D7
            public const int tab_left = 2131231703;
            public const int switch_camera = 2131231703;
            
            // aapt resource value: 0x7F0803D8
            public const int tab_left_sel = 2131231704;
            public const int tab_left = 2131231704;
            
            // aapt resource value: 0x7F0803D9
            public const int tab_right = 2131231705;
            public const int tab_left_sel = 2131231705;
            
            // aapt resource value: 0x7F0803DA
            public const int tab_right_sel = 2131231706;
            public const int tab_right = 2131231706;
            
            // aapt resource value: 0x7F0803DB
            public const int tiltle_button_selector = 2131231707;
            public const int tab_right_sel = 2131231707;
            
            // aapt resource value: 0x7F0803DC
            public const int timeline = 2131231708;
            public const int tiltle_button_selector = 2131231708;
            
            // aapt resource value: 0x7F0803DD
            public const int timeline_sel = 2131231709;
            public const int timeline = 2131231709;
            
            // aapt resource value: 0x7F0803DE
            public const int tip_background = 2131231710;
            public const int timeline_sel = 2131231710;
            
            // aapt resource value: 0x7F0803DF
            public const int tip_textview_bg = 2131231711;
            public const int tip_background = 2131231711;
            
            // aapt resource value: 0x7F0803E0
            public const int title_down_bg = 2131231712;
            public const int tip_textview_bg = 2131231712;
            
            // aapt resource value: 0x7F0803E1
            public const int title_down_play = 2131231713;
            public const int title_down_bg = 2131231713;
            
            // aapt resource value: 0x7F0803E2
            public const int title_down_play_sel = 2131231714;
            public const int title_down_play = 2131231714;
            
            // aapt resource value: 0x7F0803E3
            public const int title_down_play_selector = 2131231715;
            public const int title_down_play_sel = 2131231715;
            
            // aapt resource value: 0x7F0803E4
            public const int title_menu_bg = 2131231716;
            public const int title_down_play_selector = 2131231716;
            
            // aapt resource value: 0x7F0803E5
            public const int tittel_button_bg = 2131231717;
            public const int title_menu_bg = 2131231717;
            
            // aapt resource value: 0x7F0803E6
            public const int tittel_button_press_bg = 2131231718;
            public const int tittel_button_bg = 2131231718;
            
            // aapt resource value: 0x7F0803E7
            public const int tooltip_frame_dark = 2131231719;
            public const int tittel_button_press_bg = 2131231719;
            
            // aapt resource value: 0x7F0803E8
            public const int tooltip_frame_light = 2131231720;
            public const int tooltip_frame_dark = 2131231720;
            
            // aapt resource value: 0x7F0803E9
            public const int top_bar_bg = 2131231721;
            public const int tooltip_frame_light = 2131231721;
            
            // aapt resource value: 0x7F0803EA
            public const int track_bar_bg = 2131231722;
            public const int top_bar_bg = 2131231722;
            
            // aapt resource value: 0x7F0803EB
            public const int translucent = 2131231723;
            public const int track_bar_bg = 2131231723;
            
            // aapt resource value: 0x7F0803EC
            public const int @unchecked = 2131231724;
            public const int translucent = 2131231724;
            
            // aapt resource value: 0x7F0803ED
            public const int unlock = 2131231725;
            public const int @unchecked = 2131231725;
            
            // aapt resource value: 0x7F0803EE
            public const int unlock_def = 2131231726;
            public const int unlock = 2131231726;
            
            // aapt resource value: 0x7F0803EF
            public const int unlock_sel = 2131231727;
            // aapt resource value: 0x7F0803F2
            public const int upgrade = 2131231730;
            public const int unlock_def = 2131231727;
            
            // aapt resource value: 0x7F0803F0
            public const int up_horizontal = 2131231728;
            // aapt resource value: 0x7F0803F1
            public const int up_twinkle = 2131231729;
            public const int unlock_sel = 2131231728;
            
            // aapt resource value: 0x7F0803F3
            public const int user = 2131231731;
            public const int upgrade = 2131231731;
            // aapt resource value: 0x7F0803F1
            public const int up_horizontal = 2131231729;
            // aapt resource value: 0x7F0803F2
            public const int up_twinkle = 2131231730;
            
            // aapt resource value: 0x7F0803F4
            public const int vertical_preview_sound_selector = 2131231732;
            public const int user = 2131231732;
            
            // aapt resource value: 0x7F0803F5
            public const int vertical_preview_stop_selector = 2131231733;
            // aapt resource value: 0x7F080405
            public const int videogo_icon = 2131231749;
            public const int vertical_preview_sound_selector = 2131231733;
            
            // aapt resource value: 0x7F0803F6
            public const int video_background = 2131231734;
            // aapt resource value: 0x7F0803F7
            public const int video_camera1_1 = 2131231735;
            // aapt resource value: 0x7F0803F8
            public const int video_camera1_2 = 2131231736;
            // aapt resource value: 0x7F0803F9
            public const int video_camera1_3 = 2131231737;
            // aapt resource value: 0x7F0803FA
            public const int video_file_watermark = 2131231738;
            // aapt resource value: 0x7F0803FB
            public const int video_quality_selector = 2131231739;
            // aapt resource value: 0x7F0803FC
            public const int video_talk_sdk_icn_watch = 2131231740;
            // aapt resource value: 0x7F0803FD
            public const int video_talk_sdk_placeholder_images_user = 2131231741;
            // aapt resource value: 0x7F0803FE
            public const int video_talk_sdk_video_answer = 2131231742;
            // aapt resource value: 0x7F0803FF
            public const int video_talk_sdk_video_hangup = 2131231743;
            // aapt resource value: 0x7F080400
            public const int video_talk_sdk_video_record_off = 2131231744;
            // aapt resource value: 0x7F080401
            public const int video_talk_sdk_video_record_on = 2131231745;
            // aapt resource value: 0x7F080402
            public const int video_talk_sdk_video_snap = 2131231746;
            // aapt resource value: 0x7F080403
            public const int video_talk_sdk_video_stop = 2131231747;
            // aapt resource value: 0x7F080404
            public const int video_talk_sdk_video_switch_camera = 2131231748;
            // aapt resource value: 0x7F08040F
            public const int waiting_bg = 2131231759;
            // aapt resource value: 0x7F080410
            public const int waiting_progressbar_bg = 2131231760;
            public const int vertical_preview_stop_selector = 2131231734;
            
            // aapt resource value: 0x7F080406
            public const int wait_1 = 2131231750;
            public const int videogo_icon = 2131231750;
            
            // aapt resource value: 0x7F080407
            public const int wait_2 = 2131231751;
            // aapt resource value: 0x7F0803F7
            public const int video_background = 2131231735;
            
            // aapt resource value: 0x7F080408
            public const int wait_3 = 2131231752;
            // aapt resource value: 0x7F0803F8
            public const int video_camera1_1 = 2131231736;
            
            // aapt resource value: 0x7F080409
            public const int wait_4 = 2131231753;
            // aapt resource value: 0x7F0803F9
            public const int video_camera1_2 = 2131231737;
            
            // aapt resource value: 0x7F08040A
            public const int wait_5 = 2131231754;
            // aapt resource value: 0x7F0803FA
            public const int video_camera1_3 = 2131231738;
            
            // aapt resource value: 0x7F08040B
            public const int wait_6 = 2131231755;
            // aapt resource value: 0x7F0803FB
            public const int video_file_watermark = 2131231739;
            
            // aapt resource value: 0x7F08040C
            public const int wait_7 = 2131231756;
            // aapt resource value: 0x7F0803FC
            public const int video_quality_selector = 2131231740;
            
            // aapt resource value: 0x7F08040D
            public const int wait_8 = 2131231757;
            // aapt resource value: 0x7F0803FD
            public const int video_talk_sdk_icn_watch = 2131231741;
            
            // aapt resource value: 0x7F08040E
            public const int wait_upload_img = 2131231758;
            // aapt resource value: 0x7F0803FE
            public const int video_talk_sdk_placeholder_images_user = 2131231742;
            // aapt resource value: 0x7F0803FF
            public const int video_talk_sdk_video_answer = 2131231743;
            // aapt resource value: 0x7F080400
            public const int video_talk_sdk_video_hangup = 2131231744;
            // aapt resource value: 0x7F080401
            public const int video_talk_sdk_video_record_off = 2131231745;
            // aapt resource value: 0x7F080402
            public const int video_talk_sdk_video_record_on = 2131231746;
            // aapt resource value: 0x7F080403
            public const int video_talk_sdk_video_snap = 2131231747;
            // aapt resource value: 0x7F080404
            public const int video_talk_sdk_video_stop = 2131231748;
            // aapt resource value: 0x7F080405
            public const int video_talk_sdk_video_switch_camera = 2131231749;
            // aapt resource value: 0x7F080410
            public const int waiting_bg = 2131231760;
            
            // aapt resource value: 0x7F080411
            public const int water_alarm = 2131231761;
            public const int waiting_progressbar_bg = 2131231761;
            // aapt resource value: 0x7F080407
            public const int wait_1 = 2131231751;
            // aapt resource value: 0x7F080408
            public const int wait_2 = 2131231752;
            // aapt resource value: 0x7F080409
            public const int wait_3 = 2131231753;
            // aapt resource value: 0x7F08040A
            public const int wait_4 = 2131231754;
            // aapt resource value: 0x7F08040B
            public const int wait_5 = 2131231755;
            // aapt resource value: 0x7F08040C
            public const int wait_6 = 2131231756;
            // aapt resource value: 0x7F08040D
            public const int wait_7 = 2131231757;
            // aapt resource value: 0x7F08040E
            public const int wait_8 = 2131231758;
            // aapt resource value: 0x7F08040F
            public const int wait_upload_img = 2131231759;
            
            // aapt resource value: 0x7F080412
            public const int wifi_config_bg = 2131231762;
            public const int water_alarm = 2131231762;
            
            // aapt resource value: 0x7F080413
            public const int wifi_connect_tip = 2131231763;
            public const int wifi_config_bg = 2131231763;
            
            // aapt resource value: 0x7F080414
            public const int yuntai_normal = 2131231764;
            public const int wifi_connect_tip = 2131231764;
            
            // aapt resource value: 0x7F080415
            public const int yuntai_pressed = 2131231765;
            public const int yuntai_normal = 2131231765;
            
            // aapt resource value: 0x7F080416
            public const int yxs_head = 2131231766;
            public const int yuntai_pressed = 2131231766;
            
            // aapt resource value: 0x7F080417
            public const int z1_bg = 2131231767;
            public const int yxs_head = 2131231767;
            // aapt resource value: 0x7F080418
            public const int z1_bg = 2131231768;
            
            static Drawable()
            {
HDL-ON_Android/Resources/drawable/launchImage.xml
New file
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white" />
    <item>
        <bitmap
            android:gravity="center_vertical"
            android:src="@drawable/loading"
            android:tileMode="disabled" />
    </item>
</layer-list>
HDL-ON_Android/Resources/values/styles.xml
@@ -2,7 +2,7 @@
<resources>
    <!-- 其中parent可以为 android:Theme 或 android:Theme.NoTitleBar; android:windowBackground可以为背景图 -->
    <style name="MyTheme" parent="@android:style/Theme.NoTitleBar.Fullscreen">
        <item name="android:windowBackground">@drawable/Loading</item>
        <item name="android:windowBackground">@drawable/launchimage</item>
        <!-- 隐藏状态栏 -->
        <item name="android:windowFullscreen">false</item>
        <!-- 隐藏标题栏 -->
HDL-ON_iOS/AppDelegate.cs
@@ -274,8 +274,7 @@
            //{
            //    //RemoteInfo.Current.ReadMsgList(true);
            //}
            //中文国内key、英文海外key
            EZSDK.IOS.EZSDK.InitLibWithAppKey("1aa98a90489b4838b966b57018b4b04b", "1aa98a90489b4838b966b57018b4b04b");
            Console.WriteLine("FinishedLaunching");
            return true;
        }
HDL-ON_iOS/Entitlements.plist
@@ -4,5 +4,9 @@
<dict>
    <key>com.apple.developer.networking.wifi-info</key>
    <true/>
    <key>com.apple.developer.associated-domains</key>
    <array>
        <string>applinks:china-gateway.hdlcontrol.com</string>
    </array>
</dict>
</plist>
HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -27,6 +27,7 @@
        <MtouchDebug>true</MtouchDebug>
        <CodesignKey>iPhone Developer</CodesignKey>
        <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC";-w</MtouchExtraArgs>
        <CodesignProvision>On+Dev-20210428-1</CodesignProvision>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
        <DebugType>none</DebugType>
@@ -54,7 +55,7 @@
        <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC"</MtouchExtraArgs>
        <MtouchEnableSGenConc>false</MtouchEnableSGenConc>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<CodesignProvision>ComHdlOnProDevelopment20210305-1</CodesignProvision>
<CodesignProvision>On+Dev-20210510-1</CodesignProvision>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
        <DebugType>none</DebugType>
@@ -1231,6 +1232,13 @@
      <BundleResource Include="Resources\Phone\FunctionIcon\ArmCenter\HouseDefenseIconOn.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\ArmCenter\BurglarAlarmIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\ArmCenter\HistoryIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\FunctionBg\SecurityCenterFunctionBg.png" />
      <BundleResource Include="Resources\Phone\LogicIcon\shiwaitianqi.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Curtain\CurtainDownIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Curtain\CurtainDownIconOn.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Curtain\CurtainUpIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Curtain\CurtainUpIconOn.png" />
      <BundleResource Include="Resources\Phone\PersonalCenter\SmartSpeaker.png" />
    </ItemGroup>
    <ItemGroup>
      <ITunesArtwork Include="iTunesArtwork" />
HDL-ON_iOS/Info.plist
@@ -104,9 +104,9 @@
    <key>UIStatusBarStyle</key>
    <string>UIStatusBarStyleLightContent</string>
    <key>CFBundleShortVersionString</key>
    <string>1.2.202104201</string>
    <string>1.2.202104282</string>
    <key>CFBundleVersion</key>
    <string>202104201</string>
    <string>202104282</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Use geographic location to provide services such as weather</string>
    <key>NSAppleMusicUsageDescription</key>
HDL-ON_iOS/Main.cs
@@ -16,7 +16,7 @@
                try
                {
                    Shared.Application.LocationAction = null;
                    new HDL_ON.DAL.Server.HttpServerRequest().GetCityInfo(lon.ToString(), lat.ToString());
                    new HttpServerRequest().GetCityInfo(lon.ToString(), lat.ToString());
                }
                catch(Exception ex)
                {
HDL-ON_iOS/Resources/Language.ini
@@ -20,7 +20,7 @@
19=The phone number is incorrect. Please re-enter.
20=The password and confirmation you typed do not match. Please re-enter your password.
21=The password format does not comply with the requirements, please enter again.
22=The user has existed, you can sign in directly.
22=The user has existed, yo24-hour defenseu can sign in directly.
23=Incorrect verification code, please re-enter.
24=Incorrect account number, please enter the correct email address.
25=Email address
@@ -74,7 +74,7 @@
73=Floor Management
74=Room Management
75=Administrator migration
76=Administrator privilege migration
76=Privilege Migration
77=Debugging privilege
78=The administrator is migrated to other user.
79=All of the data for the residence is migrated to new user.
@@ -426,7 +426,21 @@
439=Real time power consumption: {0} kw
440=Next step
441=Please select all areas of capture status
442=Custom deployment
442=Generate Scene
443=Custom deployment
444=SecurityCenter
445=House Defense
446=At Home Defense
447=Vacation Defense
448=Fixed deployment
449=*Undo defense does not affect
450=Disaster defense
451=24-hour defense
452=Burglar alarm
453=Alarm mute
454=Deployment information
455=The name can not be blank.
1000=Room Humidity
1001=V-chip
@@ -717,7 +731,7 @@
9038=(Frequently Asked Questions)
9039=Share and function
9040=Alerts
9041=System info.
9041=System info
9042=Information Center
9043=Please note that your account number is logged in elsewhere. If it is not made by yourself, please change the password immediately.
9044=Successfully uploaded
@@ -741,6 +755,11 @@
9061=Find your password by clicking on "Forgot Password", or try again in {0} minute.
9062=Check
9063=You still have {0} times.
9064=Smart speaker
9065=Data management
9066=Remarks
9067=Remarks cannot be blank.
9068=Do you want to unbind?
    
10000=Invalid password, please log in again.
10001=Fail to request server, please try again later.
@@ -1204,7 +1223,21 @@
439=实时功耗: {0}kW
440=下一步
441=请选择捕捉状态的区域
442=自定义布防
442=生成场景
443=自定义布防
444=安防中心
445=全宅布防
446=在家布防
447=假期布防
448=固定布防
449=*不受撤防影响
450=灾害报警
451=24小时不撤防
452=防盗报警
453=报警静音
454=布防信息
455=名称不能为空。
1000=室内湿度
1001=童锁
@@ -1573,6 +1606,8 @@
7129=(100字内)
7130=账号选择
7131=App推送
7132=自动化
7133=已执行
9000=请使用新的手机账号登录APP
9001=请使用新的邮箱账号登录APP
@@ -1638,6 +1673,11 @@
9061=请通过忘记密码找回密码或{0}分钟后重试.
9062=查看
9063=还有{0}次机会。
9064=智能音箱
9065=数据管理
9066=备注
9067=备注不能为空
9068=是否解除绑定?
10000=无效登录密钥,请重新登录!
10001=请求服务器失败,请稍后再试!
HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainDownIcon.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainDownIconOn.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainUpIcon.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainUpIconOn.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/SecurityCenterFunctionBg.png
HDL-ON_iOS/Resources/Phone/LogicIcon/shiwaitianqi.png
HDL-ON_iOS/Resources/Phone/PersonalCenter/SmartSpeaker.png
HDL-ON_iOS/mono_crash.115869ea88.0.json
File was deleted
HDL-ON_iOS/mono_crash.115869ea88.1.json
File was deleted
HDL-ON_iOS/mono_crash.115869ea88.2.json
File was deleted
HDL-ON_iOS/mono_crash.115869ea88.3.json
File was deleted
HDL-ON_iOS/mono_crash.115869ea88.4.json
File was deleted
HDL-ON_iOS/mono_crash.1cfb5decbf.0.json
File was deleted
HDL-ON_iOS/mono_crash.f3dbeef67.0.json
File was deleted
HDL-ON_iOS/mono_crash.f3dbef0b0.0.json
File was deleted
HDL-ON_iOS/mono_crash.f3dbef0b0.1.json
File was deleted
HDL-ON_iOS/mono_crash.ff14d5fde.0.json
File was deleted
HDL-ON_iOS/mono_crash.mem.11851.1.blob
File was deleted
HDL-ON_iOS/mono_crash.mem.1228.1.blob
File was deleted
HDL-ON_iOS/mono_crash.mem.18126.1.blob
File was deleted
HDL-ON_iOS/mono_crash.mem.24817.1.blob
File was deleted
HDL-ON_iOS/mono_crash.mem.26066.1.blob
File was deleted
HDL-ON_iOS/mono_crash.mem.26567.1.blob
File was deleted
HDL-ON_iOS/mono_crash.mem.59025.1.blob
File was deleted
HDL-ON_iOS/mono_crash.mem.73837.1.blob
File was deleted
HDL_ON/Common/ApiUtlis.cs
@@ -187,34 +187,37 @@
                        {
                            sceneList = new List<Scene>();
                        }
                        for (int i = 0; i < FunctionList.List.scenes.Count;)
                        {
                            var localScene = FunctionList.List.scenes[i];
                            if (localScene == null)
                            {
                                FunctionList.List.scenes.Remove(localScene);
                                continue;
                            }
                            var newScene = sceneList.Find((obj) => obj.userSceneId == localScene.userSceneId);
                            if (newScene == null)//如果云端最新数据没有该条数据,则本地需要删掉该数据记录
                            {
                                FunctionList.List.DeleteScene(localScene, false);
                            }
                            else
                            {
                                i++;
                                if (localScene.modifyTime != newScene.modifyTime)
                                {
                                    localScene.name = newScene.name;
                                    localScene.collect = newScene.collect;
                                    localScene.modifyTime = newScene.modifyTime;
                                    localScene.roomIds = newScene.roomIds;
                                    localScene.image = newScene.image;
                                    localScene.SaveSceneFile();
                                }
                                sceneList.Remove(newScene);//操作完的数据清理掉,剩下的就是新增的功能
                            }
                        }
                        //for (int i = 0; i < FunctionList.List.scenes.Count;)
                        //{
                        //    var localScene = FunctionList.List.scenes[i];
                        //    if (localScene == null)
                        //    {
                        //        FunctionList.List.scenes.Remove(localScene);
                        //        continue;
                        //    }
                        //    var newScene = sceneList.Find((obj) => obj.userSceneId == localScene.userSceneId);
                        //    if (newScene == null)//如果云端最新数据没有该条数据,则本地需要删掉该数据记录
                        //    {
                        //        FunctionList.List.DeleteScene(localScene, false);
                        //    }
                        //    else
                        //    {
                        //        i++;
                        //        if (localScene.modifyTime != newScene.modifyTime)
                        //        {
                        //            localScene.name = newScene.name;
                        //            localScene.collect = newScene.collect;
                        //            localScene.modifyTime = newScene.modifyTime;
                        //            localScene.roomIds = newScene.roomIds;
                        //            localScene.image = newScene.image;
                        //            localScene.SaveSceneFile();
                        //        }
                        //        sceneList.Remove(newScene);//操作完的数据清理掉,剩下的就是新增的功能
                        //    }
                        //}
                        FunctionList.List.scenes.Clear();
                        //处理剩下的新增功能
                        foreach (var tempScene in sceneList)
                        {
HDL_ON/Common/Constant.cs
@@ -284,7 +284,35 @@
        /// </summary>
        Error,
    }
    public enum SpeakerType
    {
        /// <summary>
        /// 小度
        /// </summary>
        DuerOS = 0,
        /// <summary>
        /// Google Home
        /// </summary>
        Google,
        /// <summary>
        /// Alexa Echo
        /// </summary>
        Alexa,
        /// <summary>
        /// Alice
        /// </summary>
        Alice,
        /// <summary>
        /// 天猫精灵
        /// </summary>
        Aligenie,
        /// <summary>
        /// 思必驰
        /// </summary>
        AISpeech
    }
    #endregion
}
    }
HDL_ON/Common/HDLCommon.cs
@@ -556,7 +556,8 @@
                            {
#if __IOS__
                                //iOS
                                //初始化萤石云SDK,中文国内key、英文海外key 开发者账号使用应用包名申请的APPKEY,不同包名应用需配置不同的APPKEY
                                EZSDK.IOS.EZSDK.InitLibWithAppKey("1aa98a90489b4838b966b57018b4b04b", "1aa98a90489b4838b966b57018b4b04b");
                                //1.设置所需河东的AccessToken和RefreshToken、域名地址
                                EZSDK.IOS.EZSDK.SetHDlAccessToken(UserInfo.Current.LoginTokenString, UserInfo.Current.RefreshToken);
                                EZSDK.IOS.EZSDK.SetRequestHttpsHost(OnAppConfig.Instance.RequestHttpsHost);
HDL_ON/Common/R.cs
@@ -4,6 +4,37 @@
{
    public static class StringId
    {
        public const int NameCannotBeEmpty = 455;
        /// <summary>
        /// 布防信息
        /// </summary>
        public const int DeploymentInformation = 454;
        /// <summary>
        /// 报警静音
        /// </summary>
        public const int AlarmMute = 453;
        /// <summary>
        /// 防盗报警
        /// </summary>
        public const int BurglarAlarm = 452;
        /// <summary>
        /// 24小时防御
        /// </summary>
        public const int Defense24Hour = 451;
        /// <summary>
        /// 灾害布防
        /// </summary>
        public const int DisasterDefense = 450;
        /// <summary>
        /// 不受撤防影响
        /// </summary>
        public const int UndoDefenseDoesNotAffect = 449;
        public const int FixedDeployment = 448;
        public const int VacationDefense = 447;
        public const int AtHomeDefense = 446;
        public const int HouseDefense = 445;
        public const int SecurityCenter = 444;
        public const int CustomDeployment = 443;
        public const int GenerateScene = 442;
        public const int ChooseCatchZone = 441;
@@ -1068,6 +1099,8 @@
        public const int xianzhichangdu = 7129;
        public const int zhanghaoxuanze = 7130;
        public const int apptuisong = 7131;
        public const int zidontghua = 7132;
        public const int yizhixing = 7133;
        #region LE新增
        /// <summary>
@@ -1326,6 +1359,28 @@
        /// 还有{0}次机会。
        /// </summary>
        public const int AFewMoreChances = 9063;
        /// <summary>
        /// 智能音箱
        /// </summary>
        public const int SmartSpeaker = 9064;
        /// <summary>
        /// 数据管理
        /// </summary>
        public const int DataManagement = 9065;
        /// <summary>
        /// 备注
        /// </summary>
        public const int Remarks = 9066;
        /// <summary>
        /// 备注不能为空
        /// </summary>
        public const int RemarksCannotBeBlank = 9067;
        /// <summary>
        /// 是否解除绑定?
        /// </summary>
        public const int DoYouWantToUnbind = 9068;
        #region 网络请求响应错误提示信息
        /// <summary>
HDL_ON/DAL/DriverLayer/Control.cs
@@ -602,8 +602,7 @@
                    }
                }
                MainPage.Log($"局域网信息: {receiveObj.Topic}");
                MainPage.Log($"内容: {res[1]}");
                MainPage.Log($"局域网信息: {receiveObj.Topic}  : 内容: {res[1]}");
                //验证有效数据长度
@@ -623,7 +622,7 @@
                    }
                    var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString());
                    if (device.device_mac == DB_ResidenceData.Instance.residenceGatewayMAC)
                    if (device.device_mac.ToUpper() == DB_ResidenceData.Instance.HomeGateway.mac.ToUpper())
                    {
                        MainPage.Log("本地搜索网关成功");
                        Ins.IsSearchLocalGatewaySuccessful = true;
HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -685,6 +685,7 @@
                case "13602944661":
                case "18778381374":
                case "18316672920":
                case "15971583093":
                    return;
            }
HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -50,8 +50,8 @@
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("type", qType);
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId", new List<string>() { deviceId });
            d.Add("key", new List<string>() { deviceKey });
            d.Add("deviceId",  deviceId );
            d.Add("key",  "value" );
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_EnvironmentalSensorHistoricalData, requestJson);
@@ -565,7 +565,7 @@
            }
            else if (editId == 1)
            {
                requestObj.Address = editName;
                requestObj.homeAddress = editName;
            }
            var requestJson = HttpUtil.GetSignRequestJson(requestObj);
@@ -930,6 +930,9 @@
        {
            try
            {
                //先清空推送ID,避免使用缓存的PushId为其它账号的情况,导致查询到其它账号的推送记录
                OnAppConfig.Instance.PushId = "";
                string deviceType = PhoneDeviceType.Android.ToString();
#if __IOS__
                deviceType = PhoneDeviceType.IOS.ToString();
@@ -2387,7 +2390,7 @@
        #endregion
        #region 萤石云SDK相关接口
        #region ■ 萤石云SDK相关接口_________________________
        /// <summary>
        /// 河东获取萤石云子账号token的接口
        /// </summary>
@@ -2400,7 +2403,7 @@
        #endregion
        #region 可视对讲
        #region ■ 可视对讲_________________________
        /// <summary>
        /// 检查住宅是否绑定丰林,并获取门口机列表
        /// </summary>
@@ -2414,5 +2417,72 @@
            return pack;
        }
        #endregion
        #region ■ 音箱语言控制相关_________________________
        /// <summary>
        /// 获取已授权的音箱列表
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew GetSpeakerList()
        {
            var requestJson = HttpUtil.GetSignRequestJson(new GetSpeakerObj
            {
                homeId = DB_ResidenceData.Instance.CurrentRegion.RegionID,
            });
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Speaker_List_Get, requestJson);
        }
        /// <summary>
        /// 编辑音箱授权备注
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew UpdateSpeakerRemark(UpdateSpeakerRemarkObj remarkObj)
        {
            var requestJson = HttpUtil.GetSignRequestJson(remarkObj);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Speaker_Remark_Update, requestJson);
        }
        /// <summary>
        /// 解除音箱绑定
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew UnbindSpeaker(string tokenId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("tokenId", tokenId);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Speaker_Unbind, requestJson);
        }
        /// <summary>
        /// 获取音箱分配的设备和场景列表
        /// </summary>
        /// <param name="getType">0 是查询全部 1是查询设备 2是查询场景</param>
        /// <param name="tokenId"></param>
        /// <returns></returns>
        public ResponsePackNew GetSpeakerDeviceList(int getType, string tokenId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID);
            d.Add("tokenId", tokenId);
            if (getType > 0)
            {
                d.Add("isDevice", getType == 1);
            }
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Speaker_DeviceList_Get, requestJson);
        }
        /// <summary>
        /// 更新音箱控制的设备和场景目标
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew UpdateSpeakerDeviceList(UpdateSpeakerDeviceListObj updateSpeakerDeviceListObj)
        {
            var requestJson = HttpUtil.GetSignRequestJson(updateSpeakerDeviceListObj);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Speaker_DeviceList_Update, requestJson);
        }
        #endregion
    }
}
HDL_ON/DAL/Server/HttpUtil.cs
@@ -17,8 +17,8 @@
        /// 固定域名,正式环境
        /// 公共域名就近解析
        /// </summary>
        public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
        /// <summary>
        /// RegionMark
        /// </summary>
@@ -153,8 +153,9 @@
                {
                    urlHead = OnAppConfig.Instance.RequestHttpsHost;
                }
                //"https://test-gz.hdlcontrol.com";
                //"https://bahrain-gateway.hdlcontrol.com";
                 urlHead="https://china-gateway.hdlcontrol.com";
                //urlHead="https://china-gateway.hdlcontrol.com";
                string requestFullUrl = urlHead + apiPath;
HDL_ON/DAL/Server/NewAPI.cs
@@ -239,29 +239,27 @@
        #endregion
        #region ■ zigbeespeakerservice -- 语音控制服务___________________________
        ///// <summary>
        ///// 获取音箱列表
        ///// </summary>
        //public const string API_GET_Speaker_Auth = "/speakerservices/Auth";
        ///// <summary>
        ///// 修改音箱备注
        ///// </summary>
        //public const string API_PUT_Speaker_Auth_Rename = "/speakerservices/Auth";
        ///// <summary>
        ///// 获取设备和场景列表
        ///// </summary>
        //public const string API_GET_Speaker_BatchEdit_V2 = "/speakerservices/BatchEdit_V2";
        ///// <summary>
        ///// 添加设备和场景列表
        ///// </summary>
        //public const string API_POST_Speaker_BatchEdit_V2 = "/speakerservices/BatchEdit_V2";
        #region ■ Speaker -- 语音控制服务___________________________
        /// <summary>
        /// 获取已授权的音箱列表
        /// </summary>
        public const string API_POST_Speaker_List_Get = "/smart-footstone/app/token/list";
        /// <summary>
        /// 编辑音箱授权备注
        /// </summary>
        public const string API_POST_Speaker_Remark_Update = "/smart-footstone/app/token/update";
        /// <summary>
        /// 解绑音箱
        /// </summary>
        public const string API_POST_Speaker_Unbind = "/smart-footstone/app/token/delete";
        /// <summary>
        /// 获取音箱分配的设备和场景列表
        /// </summary>
        public const string API_POST_Speaker_DeviceList_Get = "/home-wisdom/app/tokenRelation/list";
        /// <summary>
        /// 更新音箱控制的设备和场景目标
        /// </summary>
        public const string API_POST_Speaker_DeviceList_Update = "/home-wisdom/app/tokenRelation/save";
        #endregion
        #region ■ PushSerivce -- 推送服务接口___________________________
HDL_ON/DAL/Server/NewApiRes.cs
@@ -449,7 +449,7 @@
        /// <summary>
        /// 住宅地址
        /// </summary>
        public string Address;
        public string homeAddress;
    }
@@ -1486,7 +1486,159 @@
        /// </summary>
        public string expireTime;
    }
    #region 音箱
    /// <summary>
    /// 获取音箱列表
    /// </summary>
    [System.Serializable]
    public class GetSpeakerObj : HomeIdObj
    {
        /// <summary>
        /// 平台名称
        /// </summary>
        public string platformName;
        /// <summary>
        ///  页面大小
        /// </summary>
        public int pageSize = 100;
        /// <summary>
        ///  页面序号
        /// </summary>
        public int pageNo = 1;
    }
    [System.Serializable]
    public class SpeakerObj : HomeIdObj
    {
        /// <summary>
        /// 记录的主键id
        /// </summary>
        public string tokenId;
    }
    /// <summary>
    /// 更新音箱备注
    /// </summary>
    [System.Serializable]
    public class UpdateSpeakerRemarkObj : SpeakerObj
    {
        /// <summary>
        /// 备注
        /// </summary>
        public string remark;
    }
    /// <summary>
    /// 获取音箱分配的设备和场景列表
    /// </summary>
    [System.Serializable]
    public class GetSpeakerDeviceListObj : HomeIdObj
    {
        /// <summary>
        /// 记录的主键id
        /// </summary>
        public string tokenId;
    }
    /// <summary>
    /// 配置的语音设备和场景数据
    /// </summary>
    [System.Serializable]
    public class SpeakerTargetInfo
    {
        /// <summary>
        /// 控制的目标Id,云端的设备Id或者场景Id
        /// </summary>
        public string targetId;
        /// <summary>
        /// 是否是设备,场景为false
        /// </summary>
        public bool isDevice;
        /// <summary>
        /// 目标名称
        /// </summary>
        public string targetName;
        /// <summary>
        /// 扩展参数当前rowview是否选中
        /// </summary>
        public bool IsSelect;
    }
    //[System.Serializable]
    //public class SpeakerTargetInfoRow: SpeakerTargetInfo
    //{
    //    /// <summary>
    //    /// 当前rowview是否选中
    //    /// </summary>
    //    public bool isSelect;
    //}
        /// <summary>
        /// 更新音箱控制的设备和场景目标
        /// </summary>
        [System.Serializable]
    public class UpdateSpeakerDeviceListObj : SpeakerObj
    {
        /// <summary>
        /// 备注
        /// </summary>
        public List<SpeakerTargetInfo> targetInfos;
    }
    /// <summary>
    /// 更新音箱控制的设备和场景目标
    /// </summary>
    [System.Serializable]
    public class SpeakerListRes
    {
        /// <summary>
        /// 音箱列表
        /// </summary>
        public List<SpeakerInfo> list;
    }
    /// <summary>
    /// 音箱信息
    /// </summary>
    [System.Serializable]
    public class SpeakerInfo
    {
        /// <summary>
        ///
        /// </summary>
        public string platformName { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string remark { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string tokenId { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string userId { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string userRegion { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string homeId { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string homeRegion { get; set; }
    }
    #endregion
    //#region 旧接口
    ///// <summary>
HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
@@ -46,7 +46,7 @@
        public ESVideoInfo esVideoInfo;
        /// <summary>
        ///
        /// 暂时没用
        /// </summary>
        public void InitESVideoSDK()
        {
@@ -56,7 +56,7 @@
        /// <summary>
        /// 监控页面
        /// </summary>
        /// <param name="mESVideoInfo"></param>
        /// <param name="mESVideoInfo">丰林监视所需相关参数</param>
        public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo)
        {
#if __IOS__
@@ -67,7 +67,9 @@
            vc.MESRoomID =roomID;
            vc.DeviceName = mESVideoInfo.DeviceName;
            //vc.RoomName = mESVideoInfo.RoomName;
            vc.MESCallDelegate = new OnESCallDelegate(this);
            //vc.MESCallDelegate = new OnESCallDelegate(this);
            mOnESCallDelegate = new OnESCallDelegate(this);
            vc.MESCallDelegate = mOnESCallDelegate;
            Shared.Application.currentVC.NavigationController.PushViewController(vc, true);
#else
@@ -91,7 +93,7 @@
        /// <summary>
        /// 被呼叫页面
        /// </summary>
        /// <param name="mESVideoInfo"></param>
        /// <param name="mESVideoInfo">丰林呼叫功能所需相关参数</param>
        public void ShowESvideoVideoIntercom(ESVideoInfo mESVideoInfo)
        {
            this.esVideoInfo = mESVideoInfo;
@@ -300,23 +302,29 @@
            { IsBackground = false }.Start();
        }
#endregion
        #endregion
#if __IOS__
#region OnESCallDelegate
        #region OnESCallDelegate
        /////// <summary>
        /////// OnESCallDelegate 继承响应事件
        /////// </summary>
        OnESCallDelegate mOnESCallDelegate;
        /// <summary>
        ///
        /// iOS原生委托事件
        /// </summary>
        public class OnESCallDelegate : ESCallDelegate
        {
            /// <summary>
            /// ESOnVideo
            /// </summary>
            [Weak] ESOnVideo _ESOnVideo;
            /// <summary>
            /// 初始化
            /// </summary>
            /// <param name="mESOnVideo">呼叫相关的参数</param>
            public OnESCallDelegate(ESOnVideo mESOnVideo)
            {
                _ESOnVideo = mESOnVideo;
@@ -400,7 +408,7 @@
    }
    /// <summary>
    ///
    /// 丰林监视和呼叫功能所需相关参数
    /// </summary>
    public class ESVideoInfo
    {
HDL_ON/Entity/DB_ResidenceData.cs
@@ -58,6 +58,7 @@
        /// <summary>
        /// 功能类型列表
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public List<ShowFunction> functionTypeList = new List<ShowFunction>();
        static DB_ResidenceData instance;
@@ -85,9 +86,7 @@
                        {
                            instance = temp;
                        }
                        if (instance.functionTypeList.Count == 0)
                        {
                            instance.functionTypeList.AddRange(new List<ShowFunction> {
                        instance.functionTypeList.AddRange(new List<ShowFunction> {
                                    ShowFunction.Light,ShowFunction.AC,ShowFunction.Curtain,
                                    ShowFunction.FloorHeating,ShowFunction.Music,
                                    ShowFunction.Electric,ShowFunction.Environmental,
@@ -97,8 +96,7 @@
                                    ShowFunction.Sensor,ShowFunction.VideoIntercom,
                                    ShowFunction.SecurityCenter
                                });
                            instance.SaveResidenceData();
                        }
                        instance.SaveResidenceData();
                    }
                    catch (Exception ex)
                    {
HDL_ON/Entity/Function/Function.cs
@@ -173,7 +173,7 @@
        #endregion
        #region base info
        #region base info
        public string sid = "0301011234567801012301230123";
        /// <summary>
        /// 备注
HDL_ON/Entity/Function/Scene.cs
@@ -84,6 +84,11 @@
        /// </summary>
        public bool collect = false;
        /// <summary>
        /// 创建该场景的用户ID
        /// </summary>
        public string userId = "";
        ///// <summary>
        ///// 场景背景
        ///// </summary>
@@ -138,13 +143,14 @@
                sTimeSpan = arry[0].ToString("X2") + arry[1].ToString("X2") + arry[2].ToString("X2") + arry[3].ToString("X2");
                if (sTimeSpan.Length > 8)
                if (sTimeSpan.Length >= 8)
                {
                    sTimeSpan = sTimeSpan.Substring(0, 8);
                }
                else
                {
                    sTimeSpan = "00000000";
                    sTimeSpan = Guid.NewGuid().ToString().Substring(0, 8);
                    //sTimeSpan = "00000000";
                }
                sceneId = sOidBeginsWith + sTimeSpan;
HDL_ON/Entity/FunctionList.cs
@@ -108,8 +108,19 @@
        {
            return Functions.FindAll((obj) => obj.spk == SPK.IrModule);
        }
        #endregion
        /// <summary>
        /// 音乐列表
        /// </summary>
        /// <returns></returns>
        public List<Function> GetMusicList()
        {
            var spkList = SPK.MusicSpkList();
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        /// <summary>
        /// 环境传感器列表
        /// </summary>
@@ -164,6 +175,11 @@
                    FileUtlis.Files.DeleteFile(filePath);
                    return;
                }
                //音乐部分要修改
                //if(tempFunction.spk.ToString() == SPK.MusicStandard)
                //{
                //    UI.Music.A31MusicModel.A31MusicModelList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<UI.Music.A31MusicModel>(functionDataString));
                //}
                if (checkRepeat == true)
                {
                    //检测重复
HDL_ON/Entity/ResponseEntity/RegionInfoRes.cs
@@ -66,8 +66,8 @@
        /// <summary>
        /// 是否为其他主用户分享过来的住宅
        /// </summary>
        public bool IsOthreShare = false;
        public bool isOtherShare { get; set; }
        //2020-11-13 新增
        /// <summary>
        /// 仅子账号登陆的时候使用,当【IsOthreShare】为"true",
HDL_ON/HDL_ON.projitems
@@ -401,6 +401,12 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\AirQuality.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmCenter\ArmCenterPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Entity\Function\SecurityAlarm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmCenter\ArmDeploymentSettingPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\OnePortAutomation.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\EnvironmentalScience\EchartsOption_BrokenLine.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\SmartSpeakerListPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\SmartSpeakerSelectDevicesPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\SmartSpeakerRoomListPage.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="$(MSBuildThisFileDirectory)DAL\" />
@@ -445,5 +451,6 @@
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Energy\" />
    <Folder Include="$(MSBuildThisFileDirectory)DAL\ThirdPartySdk\" />
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmCenter\" />
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\" />
  </ItemGroup>
</Project>
HDL_ON/UI/MainPage.cs
@@ -20,7 +20,7 @@
        /// <summary>
        /// 版本号
        /// </summary>
        public static string VersionString = "1.2.0420";
        public static string VersionString = "1.2.0428";
        ///// <summary>
        ///// 客户端类型
        ///// </summary>
@@ -346,12 +346,17 @@
            int result = 0;
            Application.RunOnMainThread(() =>
            {
                if (BaseView.ChildrenCount>1)
                if (BasePageView == null || BasePageView.ChildrenCount<=1 )
                {
                    var view = BaseView.GetChildren(BaseView.ChildrenCount - 1);
                    if(view.GetType() == typeof(Loading))
                    result = 2;//无法再后退,可以执行退到桌面
                }
                if (BasePageView.ChildrenCount > 1)
                {
                    int index = BasePageView.ChildrenCount - 1;
                    var view = BasePageView.GetChildren(index);
                    if (view.GetType() == typeof(Loading))
                    {
                        var loading  = view as Loading;
                        var loading = view as Loading;
                        if (loading.CurStatus == false)//有一些等待界面隐藏了,但是没有移除到,需要先移除
                        {
                            loading.RemoveFromParent();
@@ -362,22 +367,17 @@
                            result = 1;//正在等待某些操作
                        }
                    }
                }
                else
                {
                    if (BasePageView.ChildrenCount > 1)
                    else
                    {
                        int index = BasePageView.ChildrenCount - 1;
                        var view = BasePageView.GetChildren(index);
                        if (view != null)
                        {
                            view.RemoveFromParent();
                        }
                    }
                    else
                    {
                        result = 2;//无法再后退,可以执行退到桌面
                    }
                }
                else
                {
                    result = 2;//无法再后退,可以执行退到桌面
                }
            });
            return result;
HDL_ON/UI/UI0-Public/PublicAssmebly.cs
@@ -39,10 +39,6 @@
                }
                if (string.IsNullOrEmpty(text) || list.Contains(text))
                {
                    //if (titleId == StringId.ModifyMemberNickname)
                    //{
                    //    return;
                    //}
                    string tipMsgString = "";
                    if (string.IsNullOrEmpty(text))
                    {
@@ -77,7 +73,7 @@
        /// 保存按钮事件需要将
        /// </summary>
        /// <param name="callBackAction">回调函数</param>
        public void LoadDialog_EditParater(int titleId, string editParater, Action<string> callBackAction, int errorId_IsNullOrEmpty, int errorId_ContainsPar, List<string> baseList, bool encryption = false)
        public void LoadDialog_EditParater(int titleId, string editParater, Action<string> callBackAction, int errorId_IsNullOrEmpty, int errorId_ContainsPar, List<string> baseList, bool encryption = false, string confirmText = "")
        {
            Dialog dialog = new Dialog()
            {
@@ -210,6 +206,13 @@
                TextID = StringId.Confirm,
            };
            contentView.AddChidren(btnConfirm);
            //自定义btnConfirm标题
            if (!string.IsNullOrEmpty(confirmText))
            {
                btnConfirm.Text = confirmText;
            }
            int mRectCornerID = HDLUtils.RectCornerBottomRight;
            btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), mRectCornerID);
HDL_ON/UI/UI0-Public/TopViewDiv.cs
@@ -147,7 +147,7 @@
            };
            //如果是成员隐藏编辑功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            {
                contentView.AddChidren(btnSetting);
            }
@@ -177,7 +177,7 @@
                UnSelectedImagePath = "Public/FuncInfoSetIcon.png",
            };
            //如果是成员隐藏编辑功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            {
                contentView.AddChidren(btnSetting);
            }
@@ -210,7 +210,7 @@
            };
            //如果是成员隐藏编辑功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            {
                contentView.AddChidren(btnSetting);
            }
@@ -365,7 +365,7 @@
        /// </summary>
        public void LoadTopView_ArmCenter(Action skipAction)//(Action callBack, Action action)
        {
            //LoadTopView();
            LoadTopView();
            //backAction = action;
            var btnAddIcon = new Button()
HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs
@@ -42,11 +42,17 @@
                Width = bodyView.Width - Application.GetRealWidth(32)
            };
            bodyView.AddChidren(webView);
            if (!string.IsNullOrEmpty(url))
            try
            {
                //加载网址
                webView.LoadRequest(url);
                if (!string.IsNullOrEmpty(url))
                {
                    //加载网址
                    webView.LoadRequest(url);
                }
            }
            catch
            {
            }
            this.Show();
HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
@@ -141,7 +141,7 @@
            btnRoomName.Width = btnRoomName.GetRealWidthByText();
            FrameWhiteCentet1.AddChidren(btnRoomName);
            //成员没有收藏功能
            if (DB_ResidenceData.Instance.CurrentRegion.IsOthreShare == false && ShowColltionButton)
            //if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == false && ShowColltionButton)
            {
                var btnCollection = new IconViewControl(40);
                btnCollection.X = Application.GetRealWidth(273);
@@ -259,10 +259,10 @@
        private void AddTopSettingIcon(Button btnHigherDeviceName, Button btnHigherRoom)
        {
            //如果是成员没有功能
            if (DB_ResidenceData.Instance.CurrentRegion.IsOthreShare == true)
            {
                return;
            }
            //if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == true)
            //{
            //    return;
            //}
            //设置图标
            var btnSetting = new PicViewControl(28, 28);
            btnSetting.X = Application.GetRealWidth(337);
HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -199,23 +199,31 @@
                //return;
                if (b)
                {
                    etAccount.Text = "13226233133";//豆豆
                    //etAccount.Text = "18316672920";//"18316120654";//lcg "18316672920";//hzx;// "13415629083"//cf;//tujie"18316120654";
                    etAccount.Text = "13375012446";//测试服务器
                    //etAccount.Text = "1033326940@qq.com";
                    //etAccount.Text = "18022428438";//wjc
                    //etAccount.Text = "13602944661";//kx
                    //etAccount.Text = "13226233133";//豆豆
                    //etAccount.Text = "18316672920";//lcg "18316672920";//hzx;// "13415629083"//cf;;
                    //etAccount.Text = "18316120654";//tujie
                    // "15622703419"lwn;// "18824864143";//"464027401@qq.com"; //"2791308028@qq.com";//13697499568 
                }
                else
                {
                    //etAccount.Text = "15217626103";//
                    //etAccount.Text = "13682244600";//波哥
                    //etAccount.Text = "BB01010101@evoyo.com";//可视对讲
                    //etAccount.Text = "13168123446";
                    //etAccount.Text = "13602944661";//kx
                    etAccount.Text = "18316120654";//凉霸"18666455392";//13375012446//13602944661//tzy 18778381374
                    //etAccount.Text = "13676202754";//巴林服务器
                    etAccount.Text = "13602944661";//kx
                    //etAccount.Text = "18666455392";//13375012446//13602944661//tzy 18778381374
                    //etAccount.Text = "15971583093";// gs//tzy 274116637@qq.com//Sumant.Bhatia@havells.com 国外服务器测试
                }
                b = !b;
                etPassword.Text = "123456";
                btnLogin.IsSelected = true;
            };
            #endif
#endif
            #region 登录方式选择
            btnPhoneLogin = new Button()
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -738,12 +738,12 @@
                    SelectedImagePath = "Collection/CollectionWhiteIcon.png",
                    UnSelectedImagePath = "Collection/CollectionIcon.png",
                };
                //view.AddChidren(btnCollection);
                view.AddChidren(btnCollection);
                //2020-12-16 如果是成员隐藏收藏功能
                if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
                {
                    view.AddChidren(btnCollection);
                }
                //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
                //{
                //    view.AddChidren(btnCollection);
                //}
                LoadEvent_FunctionCollection(btnCollection, function);
                if (//SPK.CurtainSpkList().Contains(function.spk))
@@ -1012,7 +1012,7 @@
                    Width = Application.GetRealWidth(32),
                    UnSelectedImagePath = "Public/FuncInfoSetIcon_white.png",
                };
                if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
                if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
                {
                    view.AddChidren(btnSettingIcon);
                }
@@ -1057,12 +1057,12 @@
                    SelectedImagePath = "Collection/CollectionWhiteIcon.png",
                    UnSelectedImagePath = "Collection/CollectionIcon.png",
                };
                //view.AddChidren(btnCollection);
                view.AddChidren(btnCollection);
                //2020-12-16 如果是成员隐藏收藏功能
                if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
                {
                    view.AddChidren(btnCollection);
                }
                //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
                //{
                //    view.AddChidren(btnCollection);
                //}
                LoadEvent_SceneCollection(btnCollection, scene);
HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs
@@ -111,41 +111,40 @@
                                        #endregion
                                        case FunctionCategory.Curtain:
                                            #region 窗帘更新
                                            //var uCurtain = updataFunction as Curtain;
                                            var percentString = updataFunction.GetAttrState(FunctionAttributeKey.Percent);
                                            if (percentString != null)
                                            var percent = updataFunction.GetAttrState(FunctionAttributeKey.OnOff) == "off" ? 0 : 100;
                                            if(updataFunction.GetAttributes().Contains(FunctionAttributeKey.Percent))
                                            {
                                                int percent = 0;
                                                string percentString = updataFunction.GetAttrState(FunctionAttributeKey.Percent);
                                                int.TryParse(percentString, out percent);
                                                if (percent == 0)
                                            }
                                            if (percent == 0)
                                            {
                                                if (cTag == updataFunction.sid + "_off")
                                                {
                                                    if (cTag == updataFunction.sid + "_off")
                                                    try
                                                    {
                                                        try
                                                        {
                                                            (fcView.GetChildren(j) as Button).IsSelected = true;
                                                        }
                                                        catch { }
                                                        (fcView.GetChildren(j) as Button).IsSelected = true;
                                                    }
                                                    else
                                                    {
                                                        (fcView.GetChildren(j) as Button).IsSelected = false;
                                                    }
                                                    catch { }
                                                }
                                                else
                                                {
                                                    if (cTag == updataFunction.sid + "_on")
                                                    (fcView.GetChildren(j) as Button).IsSelected = false;
                                                }
                                            }
                                            else
                                            {
                                                if (cTag == updataFunction.sid + "_on")
                                                {
                                                    try
                                                    {
                                                        try
                                                        {
                                                            (fcView.GetChildren(j) as Button).IsSelected = true;
                                                        }
                                                        catch { }
                                                        (fcView.GetChildren(j) as Button).IsSelected = true;
                                                    }
                                                    else
                                                    {
                                                        (fcView.GetChildren(j) as Button).IsSelected = false;
                                                    }
                                                    catch { }
                                                }
                                                else
                                                {
                                                    (fcView.GetChildren(j) as Button).IsSelected = false;
                                                }
                                            }
                                            #endregion
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -491,6 +491,10 @@
                    case ShowFunction.Music:
                        functionCount = Music.A31MusicModel.A31MusicModelList.Count;
                        functionOnCount = Music.A31MusicModel.A31MusicModelList.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                        if(functionCount == 0)
                        {
                            functionCount = FunctionList.List.GetMusicList().Count;
                        }
                        break;
                    case ShowFunction.Panel:
                        break;
@@ -508,6 +512,9 @@
                        break;
                    case ShowFunction.SecurityCenter:
                        functionCount = FunctionList.List.securities.Count;
#if DEBUG
                        functionCount = 1;
#endif
                        break;
                }
@@ -814,6 +821,16 @@
                            videoMethod.MianView(this,FunctionList.List.videoIntercom);
                        };
                        break;
                    case ShowFunction.SecurityCenter:
                        btnName.TextID = StringId.SecurityCenter;
                        btnFunctionViewBg.MouseUpEventHandler = (sender, e) =>
                        {
                            var page = new ArmCenterPage();
                            MainPage.BasePageView.AddChidren(page);
                            page.LoadPage();
                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                        };
                        break;
                }
                //界面跳转--音乐跳转自己的界面--环境跳转自己的界面
@@ -840,7 +857,7 @@
#endregion
        }
#region 切换楼层
        #region 切换楼层
        /// <summary>
        /// 楼层显示切换
        /// </summary>
@@ -997,6 +1014,6 @@
        {
        }
#endregion
        #endregion
    }
}
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -228,7 +228,7 @@
            };
            //bodyDiv.AddChidren(btnCollectionIcon);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare && function.Spk_Prefix != FunctionCategory.Sensor)
            if ( function.Spk_Prefix != FunctionCategory.Sensor)//!DB_ResidenceData.Instance.CurrentRegion.isOtherShare &&
            {
                bodyDiv.AddChidren(btnCollectionIcon);
            }
@@ -313,6 +313,11 @@
                Tag = function.sid + "_off"
            };
            bodyDiv.AddChidren(btnCurtainClose);
            if(function.spk == SPK.CurtainRoller)
            {
                btnCurtainClose.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainDownIcon.png";
                btnCurtainClose.SelectedImagePath = "FunctionIcon/Curtain/CurtainDownIconOn.png";
            }
            var btnCurtainStop = new Button()
            {
@@ -338,6 +343,11 @@
                IsSelected = function.GetAttrState(FunctionAttributeKey.Percent) != "0"
            };
            bodyDiv.AddChidren(btnCurtainOpen);
            if (function.spk == SPK.CurtainRoller)
            {
                btnCurtainOpen.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainUpIcon.png";
                btnCurtainOpen.SelectedImagePath = "FunctionIcon/Curtain/CurtainUpIconOn.png";
            }
            LoadEvent_ControlCurtain(btnCurtainStop, btnCurtainOpen, btnCurtainClose, function);
            #endregion
        }
@@ -399,7 +409,7 @@
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "MusicIcon/pause.png",
                SelectedImagePath = "MusicIcon/play.png",
                IsSelected = (function as A31MusicModel).A31PlayStatus.status == "play" ,
                //IsSelected = (function as A31MusicModel).A31PlayStatus.status == "play" ,
                Tag = function.spk + "_State_" + function.sid
            };
            bodyDiv.AddChidren(btnPlay);
HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
@@ -293,6 +293,8 @@
        /// <param name="curtain"></param>
        void LoadEvent_ControlMusic(Button btnPlay,Button btnNext,Button btnPrev, A31MusicModel a31player) 
        {
            if (a31player == null)
                return;
            ///上一曲点击事件
            btnPrev.MouseDownEventHandler = (sender, e) =>
            {
HDL_ON/UI/UI2/2-Classification/RoomPage.cs
@@ -189,12 +189,12 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = scene.collect
            };
            //bodyDiv.AddChidren(btnCollectionIcon);
            bodyDiv.AddChidren(btnCollectionIcon);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                bodyDiv.AddChidren(btnCollectionIcon);
            }
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    bodyDiv.AddChidren(btnCollectionIcon);
            //}
            btnIcon.UnSelectedImagePath = "FunctionIcon/Scene/SceneIcon.png";
            if (scene.sceneType == SceneType.MovieScene)
HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
@@ -32,7 +32,10 @@
            LogicView.SelectTypeView timeView = new LogicView.SelectTypeView();
            timeView.btnText.TextID = StringId.time;
            timeView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
            viewLayout.AddChidren(timeView.FLayoutView());
            if (MainView.IsGatewayType)
            {
                viewLayout.AddChidren(timeView.FLayoutView());
            }
            //功能
            LogicView.SelectTypeView functionView = new LogicView.SelectTypeView();
@@ -40,13 +43,21 @@
            functionView.btnText.TextID = StringId.funLogic;
            functionView.btnIcon.UnSelectedImagePath = "LogicIcon/functionicon.png";
            viewLayout.AddChidren(functionView.FLayoutView());
            if (!MainView.IsGatewayType)
            {
                functionView.frameLayout.Y = Application.GetRealHeight(0);
            }
            //室外变化
            LogicView.SelectTypeView shiwaiView = new LogicView.SelectTypeView();
            shiwaiView.frameLayout.Y = functionView.frameLayout.Bottom;
            shiwaiView.btnText.TextID = StringId.shiwaibainhua;
            shiwaiView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
            viewLayout.AddChidren(shiwaiView.FLayoutView());
            if (MainView.IsGatewayType)
            {
                viewLayout.AddChidren(shiwaiView.FLayoutView());
            }
            #endregion
HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs
@@ -129,8 +129,8 @@
            notification.btnText.TextID = StringId.notification;
            notification.btnLine.BackgroundColor = CSS.CSS_Color.textWhiteColor;
            viewLayout.AddChidren(notification.FLayoutView());
            if (Logic.currlogic.pushConfigs.Count > 0)
            //显示之前推送开关状态
            if (Logic.currlogic.noticeConfig.enable)
            {
                push.btnNextIcon.IsSelected = true;
            }
@@ -141,7 +141,7 @@
            ///上下间隔62像素
            viewLayout.AddChidren(new FrameLayout { Height = Application.GetRealHeight(40) });
            #endregion
            #region  保存
            ///保存View
            LogicView.SaveView saveView = new LogicView.SaveView();
@@ -188,47 +188,25 @@
                DateMethod(cyclicTitle.btnText);
            };
            ///是否要推送点击事件
            //初始化对象
            PushConfigs pushConfigs = new PushConfigs();
            if (Logic.currlogic.pushConfigs.Count > 0)
            {
                pushConfigs = Logic.currlogic.pushConfigs[0];
            }
            else
            {
                if (!string.IsNullOrEmpty(UserInfo.Current.userMobileInfo))
                {
                    //默认推送当前账号
                    pushConfigs.pushTarget.Add(UserInfo.Current.userMobileInfo);
                }
                else
                {
                    //默认推送当前账号
                    pushConfigs.pushTarget.Add(UserInfo.Current.userEmailInfo);
                }
            }
            push.btnNextIcon.MouseUpEventHandler += (sender, e) =>
            {
               push.btnNextIcon.IsSelected = !push.btnNextIcon.IsSelected;
                //账号列表为空默认推送当前账号
                if (Logic.currlogic.pushConfigs.Count == 0)
                {
                    //初始化对象
                    PushConfigs pushConfigs = new PushConfigs();
                    //默认添加推送当前账号
                    pushConfigs.pushTarget.Add(UserInfo.Current.ID);
                    Logic.currlogic.pushConfigs.Add(pushConfigs);
                }
                push.btnNextIcon.IsSelected = !push.btnNextIcon.IsSelected;
                if (push.btnNextIcon.IsSelected)
                {
                    if (Logic.currlogic.pushConfigs.Count > 0)
                    {
                        //清空之前旧配置数据
                        Logic.currlogic.pushConfigs.Clear();
                    }
                    //增加配置数据
                    Logic.currlogic.pushConfigs.Add(pushConfigs);
                    Logic.currlogic.noticeConfig.enable = true;
                }
                else
                {
                    if (Logic.currlogic.pushConfigs.Count > 0)
                    {
                        //默认取第一个赋值
                        pushConfigs = Logic.currlogic.pushConfigs[0];
                        //清空配置数据
                        Logic.currlogic.pushConfigs.Clear();
                    }
                    Logic.currlogic.noticeConfig.enable = false;
                }
            };
            ///输入推送文本
@@ -236,18 +214,13 @@
            {
                InputPushText inputPushText = new InputPushText();
                MainPage.BasePageView.AddChidren(inputPushText);
                inputPushText.Show(pushConfigs);
                inputPushText.Show();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                inputPushText.action += (pushConfigsIfon) =>
                {
                    //赋值
                    pushConfigs = pushConfigsIfon;
                };
            };
            ///保存点击事件
            saveView.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                if (Logic.currlogic.input.Count == 0&& Logic.currlogic.output.Count == 0)
                if (Logic.currlogic.input.Count == 0 && Logic.currlogic.output.Count == 0)
                {
                    new LogicView.TipPopView().TipBox(StringId.tip, StringId.conditioncNullOrtargetNull);
                    return;
@@ -272,7 +245,7 @@
                    {
                        list.Add(logic.name);
                    }
                    new LogicView.TipPopView().InputBox(StringId.editName, InpOrOutLogicMethod.GetLogicName(Logic.currlogic), StringId.nameNull, StringId.NameAlreadyExists, list, (logicName,view
                    new LogicView.TipPopView().InputBox(StringId.editName, InpOrOutLogicMethod.GetLogicName(Logic.currlogic), StringId.nameNull, StringId.NameAlreadyExists, list, (logicName, view
                        ) =>
                    {
                        Logic.currlogic.name = logicName;
@@ -336,7 +309,7 @@
                        })
                        { IsBackground = true }.Start();
                    },()=> { });
                    }, () => { });
                }
                else
@@ -366,7 +339,7 @@
                                {
                                    new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline));
                                }
                                else
                                else
                                {
                                    new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail));
                                }
@@ -536,7 +509,7 @@
                //加载之前保存的数据
                weekStateList.AddRange(list);
            }
            var weekListStr= weekView.GetViewList("week");
            var weekListStr = weekView.GetViewList("week");
            weekView.MultiSelectShow(fLayout, weekListStr, Language.StringByID(StringId.cyclic), weekStateList
               , (list) =>
               {
@@ -564,7 +537,7 @@
            weekView.MonSelectShow(fLayout, Logic.currlogic, (monList) =>
                {
                    //选中数据处理
                    string textStr= MainView.GetMonString(monList);
                    string textStr = MainView.GetMonString(monList);
                    //显示选中数据
                    button.Text = textStr;
                    //封装数据
@@ -603,8 +576,7 @@
        }
    }
}
HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -135,13 +135,14 @@
                        }
                    }
                    break;
                case SPK.SensorDoorWindow: {
                case SPK.SensorDoorWindow:
                    {
                        LogicView.FunTypeView view = new LogicView.FunTypeView();
                        view.btnText.TextID = StringId.kaiqiandbihe;
                        fLayout.AddChidren(view.FLayoutView());
                        view.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            DeviceView(device, view.btnState, StringId.kaiqi , StringId.bihe);
                            DeviceView(device, view.btnState, StringId.kaiqi, StringId.bihe);
                        };
                        if (edit)
                        {
@@ -151,7 +152,7 @@
                    break;
                case SPK.SensoruUtrasonic:
                    {
                        LogicView.FunTypeView view = new LogicView.FunTypeView();
                        view.btnText.TextID = StringId.yourenandwuren;
                        fLayout.AddChidren(view.FLayoutView());
@@ -214,10 +215,22 @@
                    return;
                }
                LogicMethod.RemoveAllView();
                AddLogic addLogic = new AddLogic();
                MainPage.BasePageView.AddChidren(addLogic);
                addLogic.Show();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                if (MainView.IsGatewayType)
                { //A网关
                    var addLogic = new AddLogic();
                    MainPage.BasePageView.AddChidren(addLogic);
                    addLogic.Show();
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                }
                else
                {
                    //一端口网关
                    var onePortAutomation = new OnePortAutomation();
                    MainPage.BasePageView.AddChidren(onePortAutomation);
                    onePortAutomation.Show();
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                }
            };
            #endregion
HDL_ON/UI/UI2/3-Intelligence/Automation/InputPushText.cs
@@ -11,8 +11,7 @@
        {
            Tag = "Logic";
        }
        public  Action<PushConfigs> action;
        public void Show(PushConfigs pushConfigs)
        public void Show()
        {
            this.BackgroundColor = CSS.CSS_Color.viewMiddle;
@@ -41,7 +40,7 @@
                Height = Application.GetRealHeight(152),
                TextAlignment = TextAlignment.TopLeft,
                Radius=(uint)Application.GetRealHeight(12),
                Text= pushConfigs.pushContent,
                Text= Logic.currlogic.noticeConfig.noticeContent,
                TextSize = LogicView.TextSize.text14,
                TextColor= CSS.CSS_Color.textColor,
                PlaceholderText =Language.StringByID(StringId.xianzhichangdu),//"(100字以内)",
@@ -61,7 +60,6 @@
#endif
                }
                pushConfigs.pushContent = textBox.Text.Trim();
            };
            #endregion
@@ -72,10 +70,11 @@
            appPush.btnText.TextID = StringId.apptuisong;
            appPush.btnText.X = Application.GetRealWidth(12);
            viewLayout.AddChidren(appPush.FLayoutView());
            //定义一个局部账号列表用来记录选中数据;
            List<string> selectedAccountList = new List<string>();
            appPush.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                //定义一个局部账号列表用来记录选中数据;
                List<string> accountList = new List<string>();
                var userList = new List<HDL_ON.Entity.ResidenceMemberInfo>();
                Loading loading = new Loading();
                this.AddChidren(loading);
                loading.Start();
@@ -83,12 +82,8 @@
                {
                    try
                    {
                        var userList = Send.GetResidenceMemberAccount();
                        for (int i = 0; i < userList.Count; i++)
                        {
                            var user = userList[i];
                            accountList.Add(user.Account);
                        }
                         userList = Send.GetResidenceMemberAccount();
                    }
                    catch { }
                    finally
@@ -96,21 +91,49 @@
                        Application.RunOnMainThread(() =>
                        {
                            loading.Hide();
                            if (!string.IsNullOrEmpty(UserInfo.Current.userMobileInfo))
                            userList.Add(new Entity.ResidenceMemberInfo { childAccountId = UserInfo.Current.ID, childAccountPhone = UserInfo.Current.userMobileInfo, childAccountEmail = UserInfo.Current.userEmailInfo });
                            //住宅子账号列表
                            List<string> accountList = new List<string>();
                            //之前状态列表
                            List<string> stateList = new List<string>();
                            for (int i = 0; i < userList.Count; i++)
                            {
                                //默认推送当前账号
                                accountList.Insert(0, UserInfo.Current.userMobileInfo);
                                var user = userList[i];
                                accountList.Add(user.Account);
                            }
                            else
                            if (Logic.currlogic.pushConfigs.Count > 0)
                            {
                                //默认推送当前账号
                                accountList.Insert(0, UserInfo.Current.userEmailInfo);
                                var list = Logic.currlogic.pushConfigs[0].pushTarget;
                                for (int i = 0;i< userList.Count; i++)
                                {
                                    var user = userList[i];
                                    if (list.Contains(user.childAccountId))
                                    {
                                        stateList.Add(user.Account);
                                    }
                                }
                            }
                            PublicInterface view = new PublicInterface();
                            view.FrameOrVvList(this, accountList, pushConfigs.pushTarget, StringId.zhanghaoxuanze
                            view.FrameOrVvList(this, accountList, stateList, StringId.zhanghaoxuanze
                               , (list) =>
                               {
                                   pushConfigs.pushTarget = list;
                                   //清空旧数据列表
                                   selectedAccountList.Clear();
                                   for (int i = 0;i<userList.Count; i++)
                                   {
                                       var user = userList[i];
                                       if (list.Contains(user.Account))
                                       {
                                           selectedAccountList.Add(user.childAccountId);
                                       }
                                   }
                               });
                        });
                    }
@@ -127,18 +150,50 @@
            topView.clickBackBtn.MouseUpEventHandler += (e, sen) =>
            {
                action(pushConfigs);
                RemoveFromParent();
              this.RemoveFromParent();
            };
            saveView.btnClick.MouseUpEventHandler += (e, sen) =>
            {
                action(pushConfigs);
                RemoveFromParent();
                Logic.currlogic.noticeConfig.noticeContent = textBox.Text.Trim();
                if (selectedAccountList.Count > 0)
                {
                    Logic.currlogic.pushConfigs.Clear();//清空旧数据列表
                    Logic.currlogic.pushConfigs.Add(new PushConfigs { pushTarget = selectedAccountList });
                }
                //账号列表为空默认推送当前账号
                if (Logic.currlogic.pushConfigs.Count == 0)
                {
                    //初始化对象
                    PushConfigs pushConfigs = new PushConfigs();
                    //默认添加推送当前账号
                    pushConfigs.pushTarget.Add(UserInfo.Current.ID);
                    Logic.currlogic.pushConfigs.Add(pushConfigs);
                }
                this.RemoveFromParent();
            };
            #endregion
        }
        /// <summary>
        /// 手机账号为先,手机账号为空,其次到邮箱账号
        /// </summary>
        private string Account
        {
            get
            {
                ///手机账号为先,手机账号为空,其次到邮箱账号;
                if (!string.IsNullOrEmpty(UserInfo.Current.userMobileInfo))
                {
                    //默认推送当前手机账号
                    return UserInfo.Current.userMobileInfo;
                }
                else
                {
                    //默认推送当前邮箱账号
                    return UserInfo.Current.userEmailInfo;
                }
            }
        }
    }
}
HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
@@ -50,6 +50,10 @@
        /// </summary>
        public List<Output> output = new List<Output>();
        /// <summary>
        /// 通知配置
        /// </summary>
        public NoticeConfig noticeConfig = new NoticeConfig();
        /// <summary>
        /// 推送配置
        /// </summary>
        public List<PushConfigs> pushConfigs = new List<PushConfigs>();
@@ -136,6 +140,21 @@
        public string radius = string.Empty;
    }
    /// <summary>
    /// 通知配置
    /// </summary>
    [Serializable]
    public class NoticeConfig
    {
        /// <summary>
        /// 是否开启通知
        /// </summary>
        public bool enable = false;
        /// <summary>
        /// 通知内容
        /// </summary>
        public string noticeContent = "自动化已经执行";//string.Empty;
    }
    /// <summary>
    /// 推送配置
    /// </summary>
    [Serializable]
@@ -148,7 +167,7 @@
        /// <summary>
        /// 推送内容
        /// </summary>
        public string pushContent = string.Empty;
        //public string pushContent = string.Empty;
        /// <summary>
        /// 推送目标
        /// </summary>
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -529,7 +529,7 @@
        {
            get
            {
                return Entity.DB_ResidenceData.Instance.CurrentRegion.IsOthreShare;
                return Entity.DB_ResidenceData.Instance.CurrentRegion.isOtherShare;
            }
        }
    }
HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
@@ -46,11 +46,12 @@
                logicView.btnWeekText.Text = GetCyclicText(currLogic);
                logicView.btnclick.MouseUpEventHandler += (sen, e) =>
                {
                    Logic.currlogic = currLogic;
                    var addLogic = new AddLogic();
                    MainPage.BasePageView.AddChidren(addLogic);
                    addLogic.Show();
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    //Logic.currlogic = currLogic;
                    //var addLogic = new AddLogic();
                    //MainPage.BasePageView.AddChidren(addLogic);
                    //addLogic.Show();
                    //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    new MainView { }.SkipAddLogicPage(currLogic);
                };
                //开关图标的点击事件
                logicView.btnSwitchIcon.MouseUpEventHandler += (sender1, e1) =>
@@ -123,13 +124,30 @@
        /// <summary>
        ///  按+跳转到逻辑界面的方法
        /// </summary>
        public void SkipAddLogicPage()
        public void SkipAddLogicPage(Logic logic=null)
        {
            Logic.currlogic = new Logic();
            var addLogic = new AddLogic();
            MainPage.BasePageView.AddChidren(addLogic);
            addLogic.Show();
            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            if (logic == null)
            {
                Logic.currlogic = new Logic();
            }
            else {
                Logic.currlogic = logic;
            }
            if (IsGatewayType)
            {
                var addLogic = new AddLogic();
                MainPage.BasePageView.AddChidren(addLogic);
                addLogic.Show();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            }
            else
            {
                var onePortAutomation = new OnePortAutomation();
                MainPage.BasePageView.AddChidren(onePortAutomation);
                onePortAutomation.Show();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            }
        }
        /// <summary>
        ///返回循环描述文本
@@ -209,7 +227,6 @@
            }
            return weekTextName.TrimEnd(',');
        }
        /// <summary>
        /// 获取每月的字符串
        /// </summary>
@@ -262,6 +279,7 @@
                    var jay = jArray[a];
                    //数据返序列化为Logic对象
                    var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
                    Console.WriteLine("获取逻辑==="+str);
                    var logic = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic>(str);
                    if (logic != null)
                    {
@@ -270,37 +288,38 @@
                        if (if_logic == null)
                        {
                            Logic newlogic = new Logic();
                            newlogic.name = logic.name;
                            newlogic.userLogicId = logic.userLogicId;
                            newlogic.sid = logic.sid;
                            newlogic.relation = logic.relation;
                            newlogic.enable = logic.enable;
                            newlogic.cycle = logic.cycle;
                            for (int i = 0; i < logic.input.Count; i++)
                            {
                                if (logic.input[i] == null || string.IsNullOrEmpty(logic.input[i].condition_type))
                                {
                                    //防止调试软件乱传东西上来;
                                    //防止有空对象;
                                    //正常情况下不会出现的现象;
                                    continue;
                                }
                                newlogic.input.Add(logic.input[i]);
                            }
                            for (int i = 0; i < logic.output.Count; i++)
                            {
                                if (logic.output[i] == null || string.IsNullOrEmpty(logic.output[i].target_type))
                                {
                                    //防止调试软件乱传东西上来;
                                    //防止有空对象;
                                    //正常情况下不会该现象;
                                    continue;
                                }
                                newlogic.output.Add(logic.output[i]);
                            }
                            //Logic newlogic = new Logic();
                            //newlogic.name = logic.name;
                            //newlogic.userLogicId = logic.userLogicId;
                            //newlogic.sid = logic.sid;
                            //newlogic.relation = logic.relation;
                            //newlogic.enable = logic.enable;
                            //newlogic.cycle = logic.cycle;
                            //for (int i = 0; i < logic.input.Count; i++)
                            //{
                            //    if (logic.input[i] == null || string.IsNullOrEmpty(logic.input[i].condition_type))
                            //    {
                            //        //防止调试软件乱传东西上来;
                            //        //防止有空对象;
                            //        //正常情况下不会出现的现象;
                            //        continue;
                            //    }
                            //    newlogic.input.Add(logic.input[i]);
                            //}
                            //for (int i = 0; i < logic.output.Count; i++)
                            //{
                            //    if (logic.output[i] == null || string.IsNullOrEmpty(logic.output[i].target_type))
                            //    {
                            //        //防止调试软件乱传东西上来;
                            //        //防止有空对象;
                            //        //正常情况下不会该现象;
                            //        continue;
                            //    }
                            //    newlogic.output.Add(logic.output[i]);
                            //}
                            //添加逻辑
                            Logic.LogicList.Add(newlogic);
                            Logic.LogicList.Add(logic);
                        }
                    }
@@ -323,7 +342,6 @@
            }
            return false;
        }
        /// <summary>
        /// 显示条件或者目标类型图标
        /// </summary>
@@ -341,7 +359,8 @@
            //2-功能图标
            for (int i = 0; i < logic.input.Count; i++)
            {
                if (logic.input[i] == null)
                    continue;
                var int1 = int.Parse(logic.input[i].condition_type);
                int iconInt = 0;
                switch (int1)
@@ -356,6 +375,14 @@
                    case 3:
                        {
                            iconInt = 2;
                        }
                        break;
                    case 4:
                    case 6:
                    case 9:
                        {
                            iconInt = 3;
                        }
                        break;
@@ -450,6 +477,12 @@
                            strIcon = "LogicIcon/selectTheFun.png";
                        }
                        break;
                    case 3:
                        {
                            strIcon = "LogicIcon/shiwaitianqi.png";
                        }
                        break;
                    case 11:
                        {
                            //分割条件和目标的图标
@@ -477,6 +510,25 @@
                btnIcon.UnSelectedImagePath = strIcon;
            }
        }
        /// <summary>
        /// 判断网关类型
        /// </summary>
        /// <returns></returns>
        public static bool IsGatewayType
        {
            get
            {
                if (Entity.DB_ResidenceData.Instance.GatewayType == 1)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
    }
    class LogicData
    {
HDL_ON/UI/UI2/3-Intelligence/Automation/OnePortAutomation.cs
New file
@@ -0,0 +1,344 @@
using System;
using Shared;
using System.Collections.Generic;
namespace HDL_ON.UI.UI2.Intelligence.Automation
{
    public class OnePortAutomation : FrameLayout
    {
        public OnePortAutomation()
        {
            Tag = "Logic";
        }
        public void Show()
        {
            #region  界面布局
            this.BackgroundColor = CSS.CSS_Color.viewMiddle;
            LogicView.TopView topView = new LogicView.TopView();
            topView.setBtn.Visible = true;
            this.AddChidren(topView.FLayoutView());
            topView.clickBackBtn.MouseUpEventHandler += (e, sen) =>
            {
                RemoveFromParent();
            };
            if (string.IsNullOrEmpty(Logic.currlogic.userLogicId))
            {
                topView.topNameBtn.TextID = StringId.newAutomation;
                topView.setBtn.Visible = false;
                topView.clickSetBtn.Visible = false;
            }
            else
            {
                topView.topNameBtn.TextID = StringId.editAutomation;
                topView.setBtn.Visible = true;
                topView.clickSetBtn.Visible = true;
            }
            VerticalScrolViewLayout viewLayout = new VerticalScrolViewLayout
            {
                Y = Application.GetRealHeight(64),
                Width = Application.GetRealWidth(LogicView.TextSize.view375),
                Height = Application.GetRealHeight(LogicView.TextSize.view667 - 64 - 76),
                BackgroundColor = CSS.CSS_Color.viewMiddle,
            };
            this.AddChidren(viewLayout);
            #region  条件
            ///如果的View
            LogicView.AddOutputInputTextView addInputTextView = new LogicView.AddOutputInputTextView();
            addInputTextView.btnIf.TextID = StringId.ifCondition;
            viewLayout.AddChidren(addInputTextView.FLayoutView(46, 12));
            ///满足以下条件的View
            LogicView.LogicTypeTitleView titleCondition = new LogicView.LogicTypeTitleView();
            titleCondition.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            titleCondition.btnText.TextID = StringId.andCondition;
            viewLayout.AddChidren(titleCondition.FLayoutView());
            if (Logic.currlogic.relation == "and")
            {
                titleCondition.btnText.Text = Language.StringByID(StringId.andCondition);
            }
            else
            {
                titleCondition.btnText.Text = Language.StringByID(StringId.orCondition);
            }
            // 条件处理方法
            InpOrOutLogicMethod.InputCondition(this, viewLayout);
            ///添加图标的View
            LogicView.LogicAddView addInputIcon = new LogicView.LogicAddView();
            addInputIcon.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight);
            viewLayout.AddChidren(addInputIcon.FLayoutView());
            #endregion
            #region  目标
            ///就执行View
            LogicView.AddOutputInputTextView addOutpuTextView = new LogicView.AddOutputInputTextView();
            addOutpuTextView.btnIf.TextID = StringId.isExecuted;
            viewLayout.AddChidren(addOutpuTextView.FLayoutView(54, 20));
            #region  执行推送 发送通知
            ///上下间隔12像素
            viewLayout.AddChidren(new FrameLayout { Height = Application.GetRealHeight(12) });
            ///执行推送iew
            LogicView.LogicTypeTitleView push = new LogicView.LogicTypeTitleView();
            push.frameLayout.Height = Application.GetRealHeight(50);
            push.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            push.btnText.TextID = StringId.push;
            push.btnNextIcon.Width = Application.GetRealWidth(36);
            push.btnNextIcon.Height = Application.GetRealWidth(36);
            push.btnNextIcon.X = Application.GetRealWidth(305);
            push.btnNextIcon.UnSelectedImagePath = "LogicIcon/off.png";
            push.btnNextIcon.SelectedImagePath = "LogicIcon/on.png";
            push.btnClick.Width = Application.GetRealWidth(305);
            viewLayout.AddChidren(push.FLayoutView());
            ///发送通知View
            LogicView.LogicTypeTitleView notification = new LogicView.LogicTypeTitleView();
            notification.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight);
            notification.btnText.TextID = StringId.notification;
            notification.btnLine.BackgroundColor = CSS.CSS_Color.textWhiteColor;
            viewLayout.AddChidren(notification.FLayoutView());
            //显示之前推送开关状态
            if (Logic.currlogic.noticeConfig.enable)
            {
                push.btnNextIcon.IsSelected = true;
            }
            else
            {
                push.btnNextIcon.IsSelected = false;
            }
            ///上下间隔62像素
            viewLayout.AddChidren(new FrameLayout { Height = Application.GetRealHeight(40) });
            #endregion
            #region  保存
            ///保存View
            LogicView.SaveView saveView = new LogicView.SaveView();
            saveView.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(24), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            this.AddChidren(saveView.FLayoutView());
            #endregion
            #endregion
            #endregion
            #region  界面各种点击事件
            ///设置图标点击事件
            topView.clickSetBtn.MouseUpEventHandler += (sender, e) =>
            {
                Set set = new Set();
                MainPage.BasePageView.AddChidren(set);
                set.Show();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            ///或和与点击事件
            titleCondition.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                AndOrMethod(titleCondition.btnText);
            };
            ///条件添加点击事件
            addInputIcon.btnClick.MouseUpEventHandler += (sen, e) =>
            {
                var addInputType = new AddInputType();
                MainPage.BasePageView.AddChidren(addInputType);
                addInputType.Show();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            ///是否要推送点击事件
            push.btnNextIcon.MouseUpEventHandler += (sender, e) =>
            {
                //账号列表为空默认推送当前账号
                if (Logic.currlogic.pushConfigs.Count == 0)
                {
                    //初始化对象
                    PushConfigs pushConfigs = new PushConfigs();
                    //默认添加推送当前账号
                    pushConfigs.pushTarget.Add(UserInfo.Current.ID);
                    Logic.currlogic.pushConfigs.Add(pushConfigs);
                }
                push.btnNextIcon.IsSelected = !push.btnNextIcon.IsSelected;
                if (push.btnNextIcon.IsSelected)
                {
                    Logic.currlogic.noticeConfig.enable = true;
                }
                else
                {
                    Logic.currlogic.noticeConfig.enable = false;
                }
            };
            ///输入推送文本
            notification.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                InputPushText inputPushText = new InputPushText();
                MainPage.BasePageView.AddChidren(inputPushText);
                inputPushText.Show();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            ///保存点击事件
            saveView.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                if (Logic.currlogic.input.Count == 0)
                {
                    new LogicView.TipPopView().TipBox(StringId.tip, StringId.conditioncNull);
                    return;
                }
                Loading loading = new Loading();
                this.AddChidren(loading);
                HDL_ON.DAL.Server.ResponsePackNew responsePackNew = null;
                if (string.IsNullOrEmpty(Logic.currlogic.userLogicId))
                {
                    List<string> list = new List<string>();
                    foreach (var logic in Logic.LogicList)
                    {
                        list.Add(logic.name);
                    }
                    new LogicView.TipPopView().InputBox(StringId.editName, InpOrOutLogicMethod.GetLogicName(Logic.currlogic), StringId.nameNull, StringId.NameAlreadyExists, list, (logicName, view
                        ) =>
                    {
                        Logic.currlogic.name = logicName;
                        Logic.currlogic.sid = LogicMethod.NewSid();
                        loading.Start();
                        new System.Threading.Thread(() =>
                        {
                            try
                            {
                                //发送新加逻辑命令;
                                responsePackNew = Send.AddLogic(Logic.currlogic);
                            }
                            catch { }
                            finally
                            {
                                Application.RunOnMainThread(() =>
                                {
                                    loading.Hide();
                                    if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
                                    {
                                        //获取逻辑详细返回是一个数组(object类型转换为数组);
                                        var jArray = Newtonsoft.Json.Linq.JArray.Parse(responsePackNew.Data.ToString());
                                        for (int a = 0; a < jArray.Count; a++)
                                        {
                                            var jay = jArray[a];
                                            //数据返序列化为Logic对象
                                            var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
                                            var logic = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic>(str);
                                            if (logic.userLogicId != "")
                                            {
                                                //更新云端唯一自动化id;
                                                Logic.currlogic.userLogicId = logic.userLogicId;
                                            }
                                            else
                                            {
                                                //自己看的所以不需要支持中英文
                                                new LogicView.TipPopView().FlashingBox("没有返回云端唯一自动化id");
                                            }
                                        }
                                        Logic.LogicList.Add(Logic.currlogic);
                                        LogicMethod.RemoveAllView();
                                        MainView.MainShow();
                                    }
                                    else if (responsePackNew != null && responsePackNew.Code == "14005")
                                    {
                                        new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline));
                                    }
                                    else
                                    {
                                        new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail));
                                    }
                                });
                            }
                        })
                        { IsBackground = true }.Start();
                    }, () => { });
                }
                else
                {
                    loading.Start();
                    new System.Threading.Thread(() =>
                    {
                        try
                        {
                            //发送修改逻辑命令;
                            responsePackNew = Send.UpdateLogic(Logic.currlogic);
                        }
                        catch { }
                        finally
                        {
                            Application.RunOnMainThread(() =>
                            {
                                loading.Hide();
                                if (responsePackNew != null && responsePackNew.Code == "0")
                                {
                                    LogicMethod.RemoveAllView();
                                    MainView.MainShow();
                                }
                                else if (responsePackNew != null && responsePackNew.Code == "14005")
                                {
                                    new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline));
                                }
                                else
                                {
                                    new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail));
                                }
                            });
                        }
                    })
                    { IsBackground = true }.Start();
                }
            };
            #endregion
        }
        /// <summary>
        /// 满足条件
        /// </summary>
        /// <param name="button">显示文本</param>
        public void AndOrMethod(Button button)
        {
            ///之前的状态文本
            string currCondition = button.Text;
            PublicInterface conditionView = new PublicInterface();
            var strList = conditionView.GetViewList("andor");
            conditionView.SingleSelectionShow(this, strList, Language.StringByID(StringId.meetTheCondition), currCondition
               , (stateValue) =>
               {
                   //界面显示选中值
                   button.Text = stateValue;
                   //封装数据
                   if (stateValue == Language.StringByID(StringId.orCondition))
                   {
                       Logic.currlogic.relation = "or";
                   }
                   else
                   {
                       Logic.currlogic.relation = "and";
                   }
               });
        }
    }
}
HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
@@ -127,6 +127,11 @@
                    outputArray.Add(outputTypeJOb);
                }
                var noticeConfigJObject = new JObject();
                noticeConfigJObject.Add("enable", logic.noticeConfig.enable);
                noticeConfigJObject.Add("noticeContent", logic.noticeConfig.noticeContent);
                var pushConfigsArray = new JArray { };
                if (logic.pushConfigs.Count > 0)
                {   // 推送文本
@@ -135,7 +140,6 @@
                       
                        var pushConfigJob = new JObject { };
                        pushConfigJob.Add("pushMethod", pushConfig.pushMethod);
                        pushConfigJob.Add("pushContent", pushConfig.pushContent);
                        var accountArray = new JArray { };
                        foreach (var account in pushConfig.pushTarget)
                        {
@@ -156,6 +160,7 @@
                logicIfon.Add("cycle", cycleJObject);
                logicIfon.Add("input", inputArray);
                logicIfon.Add("output", outputArray);
                logicIfon.Add("noticeConfig", noticeConfigJObject);
                logicIfon.Add("pushConfigs", pushConfigsArray);
                logicjArray.Add(logicIfon);
                var jObject = new JObject { { "homeId", LogicMethod.HomeId }, { "logics", logicjArray } };
@@ -166,14 +171,12 @@
                    RefreshToken();
                    AddLogic(logic);
                }
                Console.WriteLine("添加逻辑===" + logicjArray);
            }
            catch (Exception e)
            {
                var dd = e.Message;
            }
            return responsePackNew;
        }
        /// <summary>
@@ -234,6 +237,10 @@
                    outputArray.Add(outputTypeJOb);
                }
                var noticeConfigJObject = new JObject();
                noticeConfigJObject.Add("enable", logic.noticeConfig.enable);
                noticeConfigJObject.Add("noticeContent", logic.noticeConfig.noticeContent);
                var pushConfigsArray = new JArray { };
                if (logic.pushConfigs.Count > 0)
                {   // 推送文本
@@ -242,7 +249,6 @@
                        var pushConfigJob = new JObject { };
                        pushConfigJob.Add("pushMethod", pushConfig.pushMethod);
                        pushConfigJob.Add("pushContent", pushConfig.pushContent);
                        var accountArray = new JArray { };
                        foreach (var account in pushConfig.pushTarget)
                        {
@@ -264,6 +270,7 @@
                logicIfon.Add("cycle", cycleJObject);
                logicIfon.Add("input", inputArray);
                logicIfon.Add("output", outputArray);
                logicIfon.Add("noticeConfig", noticeConfigJObject);
                logicIfon.Add("pushConfigs", pushConfigsArray);
                logicjArray.Add(logicIfon);
@@ -280,8 +287,6 @@
            {
                var dd = e.Message;
            }
            return responsePackNew;
        } 
        /// <summary>
HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
@@ -72,7 +72,7 @@
            bodyView.AddChidren(topView);
            //不是A网关或者是成员 只允许添加场景隐藏自动化
            var HideAutoPage = DB_ResidenceData.Instance.GatewayType != 1|| DB_ResidenceData.Instance.CurrentRegion.IsOthreShare;
            var HideAutoPage = DB_ResidenceData.Instance.CurrentRegion.isOtherShare;
            //判断是否需要隐藏自动化
            if (HideAutoPage)
            {
@@ -130,7 +130,7 @@
                Height = Application.GetMinRealAverage(28),
                UnSelectedImagePath = "Public/AddIcon.png",
            };
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            {
                topView.AddChidren(btnAddIconBg);
            }
@@ -140,7 +140,7 @@
                Width = Application.GetMinRealAverage(28+30),
                Height = Application.GetMinRealAverage(28+29),
            };
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            {
                topView.AddChidren(btnAddIcon);
            }
@@ -396,7 +396,7 @@
                    Width = Application.GetRealWidth(32),
                    UnSelectedImagePath = "Public/FuncInfoSetIcon_white.png",
                };
                if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
                if (scene.userId == UserInfo.Current.ID)
                {
                    view.AddChidren(btnSettingIcon);
                }
@@ -414,7 +414,7 @@
                };
                //view.AddChidren(btnCollection);
                //2020-12-16 如果是成员隐藏收藏功能
                if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
                if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
                {
                    view.AddChidren(btnCollection);
                }
@@ -583,7 +583,7 @@
                if (!btnAutomationTitle.IsSelected)
                {
                    //如果是成员
                    if (DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
                    if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
                    {
                        //如果没有场景权限
                        if (!DB_ResidenceData.Instance.CurrentRegion.isAllowCreateScene)
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
@@ -802,6 +802,7 @@
        }
        /// <summary>
        /// 创建场景
        /// 完成按钮点击事件
        /// </summary>
        void LoadEvent_CompleteEvent()
HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FunctionIntroductionPage.cs
@@ -180,6 +180,7 @@
                    Dictionary<string, object> AppName = new Dictionary<string, object>();
                    //ON_Plus 2
                    AppName.Add("appName", 2);
                    AppName.Add("languages", Utlis.GetPostLanguageType());
                    var requestJson = HttpUtil.GetSignRequestJson(AppName);
HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/GetSupportPage.cs
@@ -44,7 +44,7 @@
                TextColor = CSS_Color.FirstLevelTitleColor,
            };
            phoneRow.AddChidren(btnPhoneTitle);
            Button btnPhoneText = new Button()
            {
                X = btnPhoneTitle.Right,
@@ -88,7 +88,11 @@
            emailRow.AddChidren(btnEmailText);
            emailRow.AddChidren(new Button() { X = Application.GetRealWidth(16), Y = Application.GetRealWidth(49), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor });
            if (Language.CurrentLanguage == "English")
            {
                btnPhoneTitle.Text = "Tel:";
                btnEmailTitle.Width = Application.GetRealWidth(80);
            }
        }
HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
@@ -140,7 +140,7 @@
        /// <summary>
        /// 获取支持小区域
        /// </summary>
        FrameLayout supportView;
        VerticalScrolViewLayout supportView;
        /// <summary>
        /// 获取支持文本
        /// </summary>
@@ -150,6 +150,10 @@
        /// 关于On文本
        /// </summary>
        Button btnAboutOnText;
        /// <summary>
        /// 智能音箱文本
        /// </summary>
        Button btnSmartSpeakerText;
        #endregion
@@ -233,6 +237,7 @@
            contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(8) + personalInfoView.Bottom,
                Height = Application.GetRealHeight(400),
                ScrollEnabled = false
            };
@@ -308,7 +313,7 @@
                BackgroundImagePath = "PersonalCenter/UserTypebg.png",
            };
            residenceInfoView.AddChidren(userTypeView);
            if (Language.CurrentLanguage != "Chinese" && !DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            if (Language.CurrentLanguage != "Chinese" )//&& !DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            {
                userTypeView.X = Application.GetRealWidth(200);
                userTypeView.Width = Application.GetRealWidth(180);
@@ -321,7 +326,7 @@
                Y = Application.GetRealHeight(15),
                Width = Application.GetMinRealAverage(20),
                Height = Application.GetMinRealAverage(20),
                UnSelectedImagePath = DB_ResidenceData.Instance.CurrentRegion.IsOthreShare
                UnSelectedImagePath = DB_ResidenceData.Instance.CurrentRegion.isOtherShare
                                    == false ? "PersonalCenter/AdminTypeIcon.png" : "PersonalCenter/MemberTypeIcon.png",
            };
            userTypeView.AddChidren(btnUserTypeIcon);
@@ -333,14 +338,14 @@
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.MainBackgroundColor,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextID = DB_ResidenceData.Instance.CurrentRegion.IsOthreShare
                TextID = DB_ResidenceData.Instance.CurrentRegion.isOtherShare
                        == false ? StringId.Administrators : StringId.Member
            };
            userTypeView.AddChidren(btnUserTypeName);
            #endregion
            #region 住宅管理
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            {
                #region ---住宅管理区域
                residenceManageView = new FrameLayout()
@@ -724,9 +729,11 @@
            //softSettingView.AddChidren(btnGeneralSettingsRight);
            #endregion
            #endregion
            #region 获取支持
            #region 智能音箱、获取支持、关于ON+ 等菜单列表
            contentView.AddChidren(new Button() { Height = Application.GetRealHeight(8) });
            supportView = new FrameLayout()
            supportView = new VerticalScrolViewLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(343),
@@ -735,18 +742,87 @@
                Radius = (uint)Application.GetRealHeight(12),
                BorderColor = 0x00FFFFFF,
                BorderWidth = 0,
                ScrollEnabled = false,
                VerticalScrollBarEnabled = false,//隐藏滚动条
            };
            contentView.AddChidren(supportView);
            #region 智能音箱
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                //supportView 加高 显示3行 3*44
                supportView.Height = Application.GetRealWidth(3*44);
                FrameLayout smartSpeakerView = new FrameLayout()
                {
                    Height = Application.GetRealWidth(44),
                };
                supportView.AddChidren(smartSpeakerView);
                //住宅为当前账号才显示智能音箱入口
                Button btnSmartSpeakerIcon = new Button()
                {
                    X = Application.GetRealWidth(12),
                    Y = Application.GetRealWidth(10),
                    Width = Application.GetMinRealAverage(24),
                    Height = Application.GetMinRealAverage(24),
                    UnSelectedImagePath = "PersonalCenter/SmartSpeaker.png",
                };
                smartSpeakerView.AddChidren(btnSmartSpeakerIcon);
                btnSmartSpeakerText = new Button()
                {
                    X = Application.GetRealWidth(48),
                    Width = Application.GetRealWidth(270),
                    Height = Application.GetRealWidth(44),
                    TextID = StringId.SmartSpeaker,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextAlignment = TextAlignment.CenterLeft,
                    TextSize = CSS_FontSize.TextFontSize
                };
                smartSpeakerView.AddChidren(btnSmartSpeakerText);
                Button btnSmartSpeakerRight = new Button()
                {
                    X = Application.GetRealWidth(315),
                    Y = Application.GetRealWidth(14),
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(16),
                    UnSelectedImagePath = "Public/Right.png",
                };
                smartSpeakerView.AddChidren(btnSmartSpeakerRight);
                var btnSmartSpeakerViewLine = new Button()
                {
                    X = Application.GetRealWidth(48),
                    Y = Application.GetRealWidth(43),
                    Height = Application.GetRealHeight(1),
                    Width = Application.GetRealWidth(279),
                    BackgroundColor = CSS_Color.DividingLineColor
                };
                smartSpeakerView.AddChidren(btnSmartSpeakerViewLine);
            }
            #endregion
            #region 获取支持
            FrameLayout supView = new FrameLayout()
            {
                Height = Application.GetRealWidth(44),
            };
            supportView.AddChidren(supView);
            Button btnSupportIcon = new Button()
            {
                X = Application.GetRealWidth(12),
                Y = Application.GetRealHeight(10),
                Y = Application.GetRealWidth(10),
                Width = Application.GetMinRealAverage(24),
                Height = Application.GetMinRealAverage(24),
                UnSelectedImagePath = "PersonalCenter/SupportIcon.png",
            };
            supportView.AddChidren(btnSupportIcon);
            supView.AddChidren(btnSupportIcon);
            btnSupportText = new Button()
            {
@@ -758,7 +834,8 @@
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.TextFontSize
            };
            supportView.AddChidren(btnSupportText);
            supView.AddChidren(btnSupportText);
            Button btnSupportRight = new Button()
            {
                X = Application.GetRealWidth(315),
@@ -767,33 +844,39 @@
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/Right.png",
            };
            supportView.AddChidren(btnSupportRight);
            supView.AddChidren(btnSupportRight);
            var btnSupportViewLine = new Button()
            {
                X = Application.GetRealWidth(48),
                Y = btnSupportText.Bottom,
                Y = Application.GetRealWidth(43),
                Height = Application.GetRealHeight(1),
                Width = Application.GetRealWidth(279),
                BackgroundColor = CSS_Color.DividingLineColor
            };
            supportView.AddChidren(btnSupportViewLine);
            supView.AddChidren(btnSupportViewLine);
            #endregion
            #region 关于ON+
            FrameLayout aboutView = new FrameLayout()
            {
                Height = Application.GetRealWidth(44),
            };
            supportView.AddChidren(aboutView);
            Button btnAboutOnIcon = new Button()
            {
                X = Application.GetRealWidth(12),
                Y = Application.GetRealWidth(54),
                Y = Application.GetRealWidth(10),
                Width = Application.GetMinRealAverage(24),
                Height = Application.GetMinRealAverage(24),
                UnSelectedImagePath = "PersonalCenter/InfoOnIcon.png",
            };
            supportView.AddChidren(btnAboutOnIcon);
            aboutView.AddChidren(btnAboutOnIcon);
            btnAboutOnText = new Button()
            {
                X = Application.GetRealWidth(48),
                Y = btnSupportViewLine.Bottom,
                Width = Application.GetRealWidth(370),
                Height = Application.GetRealWidth(44),
                TextID = StringId.AboutOn,
@@ -801,18 +884,18 @@
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.TextFontSize
            };
            supportView.AddChidren(btnAboutOnText);
            aboutView.AddChidren(btnAboutOnText);
            Button btnAboutOnRight = new Button()
            {
                X = Application.GetRealWidth(315),
                Y = Application.GetRealWidth(58),
                Y = Application.GetRealWidth(14),
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/Right.png",
            };
            supportView.AddChidren(btnAboutOnRight);
            aboutView.AddChidren(btnAboutOnRight);
            #endregion
            #endregion
HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using Shared;
@@ -18,11 +19,12 @@
            LoadEvent_GoPersonalDataPage();
            LoadEvent_SkipAboutOnPage();
            LoadEvent_SkipGetSupportPage();
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            {
                LoadEvent_SkipResdentialManagePage();
                LoadEvent_GoMemberManagement();
                LoadEvent_SkipbtnAddFunctionPage();
                LoadEvent_SkipSmartSpeakerPage();
            }
        }
@@ -135,7 +137,7 @@
                    var btnHomeName = new Button()
                    {
                        Width = Application.GetRealWidth(112),
                        Height = Application.GetRealHeight(44),
                        Height = Application.GetRealHeight(40),
                        TextAlignment = TextAlignment.CenterLeft,
                        TextColor = CSS.CSS_Color.FirstLevelTitleColor,
                        SelectedTextColor = CSS.CSS_Color.MainColor,
@@ -194,7 +196,7 @@
        #region 住宅管理
        void LoadEvent_SkipResdentialManagePage()
        {
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            {
                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                {
@@ -299,6 +301,20 @@
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
        }
        /// <summary>
        /// 跳转智能音箱页面
        /// </summary>
        void LoadEvent_SkipSmartSpeakerPage()
        {
            btnSmartSpeakerText.MouseUpEventHandler = (sender, e) =>
            {
                var page = new SmartSpeakerListPage();
                MainPage.BasePageView.AddChidren(page);
                page.LoadPage();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
        }
        #endregion
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs
@@ -43,7 +43,7 @@
        {
            get
            {
                return Entity.DB_ResidenceData.Instance.CurrentRegion.IsOthreShare;
                return Entity.DB_ResidenceData.Instance.CurrentRegion.isOtherShare;
            }
        }
        /// <summary>
HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs
@@ -162,45 +162,46 @@
                    BackgroundColor = CSS_Color.DividingLineColor,
                });
            #region 住宅地址
                        var residenceAddressRow = new FrameLayout()
                        {
                            Y = residenceNameRow.Bottom,
                            Height = Application.GetRealHeight(50),
                            BackgroundColor = CSS_Color.MainBackgroundColor,
                        };
                        contentView.AddChidren(residenceAddressRow);
            var residenceAddressRow = new FrameLayout()
            {
                Y = residenceNameRow.Bottom,
                Height = Application.GetRealHeight(50),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            contentView.AddChidren(residenceAddressRow);
                        var btnResidenceAddressTitle = new Button()
                        {
                            X = Application.GetRealWidth(16),
                            Width = Application.GetRealWidth(78),
                            TextID = StringId.ResidenceAddress,
                            TextAlignment = TextAlignment.CenterLeft,
                            TextSize = CSS_FontSize.SubheadingFontSize,
                            TextColor = CSS_Color.FirstLevelTitleColor,
                        };
                        residenceAddressRow.AddChidren(btnResidenceAddressTitle);
            var btnResidenceAddressTitle = new Button()
            {
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(78),
                TextID = StringId.ResidenceAddress,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
            };
            residenceAddressRow.AddChidren(btnResidenceAddressTitle);
                        btnLocationAddressIcon = new Button()
                        {
                            X = Application.GetRealWidth(333),
                            Gravity = Gravity.CenterVertical,
                            Width = Application.GetMinRealAverage(28),
                            Height = Application.GetMinRealAverage(28),
                            UnSelectedImagePath = "Public/LocationAddressIcon.png",
                        };
                        residenceAddressRow.AddChidren(btnLocationAddressIcon);
            btnLocationAddressIcon = new Button()
            {
                X = Application.GetRealWidth(333),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(28),
                Height = Application.GetMinRealAverage(28),
                //UnSelectedImagePath = "Public/LocationAddressIcon.png",
                UnSelectedImagePath = "Public/Edit.png",
            };
            residenceAddressRow.AddChidren(btnLocationAddressIcon);
                        btnResidenceAddress = new Button()
                        {
                            X = Application.GetRealWidth(2) + btnResidenceNameTitle.Right,
                            Width = Application.GetRealWidth(200),
                            Text = DB_ResidenceData.Instance.CurrentRegion.homeAddress,
                            TextSize = CSS_FontSize.TextFontSize,
                            TextAlignment = TextAlignment.CenterLeft,
                            TextColor = CSS_Color.TextualColor,
                        };
                        residenceAddressRow.AddChidren(btnResidenceAddress);
            btnResidenceAddress = new Button()
            {
                X = Application.GetRealWidth(2) + btnResidenceNameTitle.Right,
                Width = Application.GetRealWidth(200),
                Text = DB_ResidenceData.Instance.CurrentRegion.homeAddress,
                TextSize = CSS_FontSize.TextFontSize,
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.TextualColor,
            };
            residenceAddressRow.AddChidren(btnResidenceAddress);
            #endregion
            #region 楼层管理
            contentView.AddChidren(new Button() { Height = Application.GetRealHeight(8) });
@@ -433,7 +434,8 @@
            };
            commissioningAuthorityRow.AddChidren(btnCommissioningAuthoritySwitchIcon);
            btnCommissioningAuthoritySwitchIcon.MouseUpEventHandler = (sender, e) => {
            btnCommissioningAuthoritySwitchIcon.MouseUpEventHandler = (sender, e) =>
            {
                DB_ResidenceData.Instance.CurrentRegion.debugPerm = !DB_ResidenceData.Instance.CurrentRegion.debugPerm;
                btnCommissioningAuthoritySwitchIcon.IsSelected = DB_ResidenceData.Instance.CurrentRegion.debugPerm;
                new System.Threading.Thread(() =>
@@ -449,4 +451,4 @@
            LoadEventList();
        }
    }
}
}
HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs
@@ -27,18 +27,6 @@
            {
                Action<string> callBack = (str) =>
                {
                    if (string.IsNullOrEmpty(str))
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.HouseNameCannotBeEmpty),
                            Direction = AMPopTipDirection.None,
                        }.Show(bodyView);
                        return;
                    }
                    //DB_ResidenceData.residenceData.residecenInfo.Name = str;
                    var waitPage = new Loading();
                    bodyView.AddChidren(waitPage);
                    waitPage.Start(Language.StringByID(StringId.PleaseWait));
@@ -52,7 +40,6 @@
                            {
                                Application.RunOnMainThread(() =>
                                {
                                    // UserInfo.Current.regionList.Find((obj) => obj.Name == btnResidenceName.Text.Trim()).Name = str;
                                    btnResidenceName.Text = str;
                                    upateResidenceName();
                                });
@@ -113,7 +100,7 @@
                        IMessageCommon.Current.ShowErrorInfoAlter(responsePack.Code);
                    }
                };
                new PublicAssmebly().LoadDialog_EditParater(StringId.ResidenceAddress, DB_ResidenceData.Instance.CurrentRegion.homeName, callBack, StringId.HouseAddressCannotBeEmpty, 0, new List<string>());
                new PublicAssmebly().LoadDialog_EditParater(StringId.ResidenceAddress, DB_ResidenceData.Instance.CurrentRegion.homeAddress, callBack, StringId.HouseAddressCannotBeEmpty, 0, new List<string>());
            };
            btnResidenceAddress.MouseUpEventHandler = eventHandler;
            btnLocationAddressIcon.MouseUpEventHandler = eventHandler;
HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerListPage.cs
New file
@@ -0,0 +1,576 @@
using System;
using Shared;
using HDL_ON.UI.CSS;
using System.Collections.Generic;
using HDL_ON.DAL.Server;
namespace HDL_ON.UI
{
    /// <summary>
    /// 智能音箱列表
    /// </summary>
    public class SmartSpeakerListPage : FrameLayout
    {
        FrameLayout bodyView;
        /// <summary>
        ///
        /// </summary>
        FrameLayout emptyTipFrameLayout;
        /// <summary>
        /// 当前
        /// </summary>
        VerticalScrolViewLayout bodyScrolView;
        /// <summary>
        /// 内容为空提示View
        /// </summary>
        FrameLayout emptyTipView;
        /// 目前对接的音箱类型
        /// 小度=DuerOS
        /// Google Home = Google
        /// Alexa Echo = Alexa
        /// Alice = Alice
        /// 天猫精灵=Aligenie
        /// 思必驰=AISpeech
        /// <summary>
        ///
        /// </summary>
        public SmartSpeakerListPage()
        {
            bodyView = this;
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
        }
        /// <summary>
        /// 加载视图
        /// </summary>
        public void LoadPage()
        {
            new TopViewDiv(bodyView, Language.StringByID(StringId.SmartSpeaker)).LoadTopView();
            int bodyY = Application.GetRealHeight(64);
            bodyScrolView = new VerticalScrolViewLayout()
            {
                Y = bodyY,
                Height = bodyView.Height - bodyY,
                BackgroundColor = CSS_Color.BackgroundColor,
            };
            bodyView.AddChidren(bodyScrolView);
            LoadSmartSpeakertListView(bodyScrolView);
        }
        /// <summary>
        /// 添加内容为空提示页面
        /// </summary>
        void AddEmptyTipView()
        {
            emptyTipView = new FrameLayout()
            {
                Height = bodyScrolView.Height,
                Width = bodyScrolView.Width,
            };
            bodyScrolView.AddChidren(emptyTipView);
            var tipView = new EmptyTipView()
            {
                Gravity = Gravity.Center
            };
            emptyTipView.AddChidren(tipView);
        }
        /// <summary>
        /// 加载音箱列表
        /// </summary>
        /// <param name="VerticalScrolViewMiddle"></param>
        void LoadSmartSpeakertListView(VerticalScrolViewLayout VerticalScrolViewMiddle)
        {
            VerticalScrolViewMiddle.RemoveAll();
            var waitPage = new Loading();
            bodyView.AddChidren(waitPage);
            waitPage.Start(Language.StringByID(StringId.PleaseWait));
            System.Threading.Tasks.Task.Run(() =>
            {
                try
                {
                    var revertObj = new HttpServerRequest().GetSpeakerList();
                    if (revertObj.Code == StateCode.SUCCESS)
                    {
                        var speakerListRes = Newtonsoft.Json.JsonConvert.DeserializeObject<SpeakerListRes>(revertObj.Data.ToString());
                        if (speakerListRes != null && speakerListRes.list != null && speakerListRes.list.Count > 0)
                        {
                            Application.RunOnMainThread(() =>
                            {
                                foreach (var speaker in speakerListRes.list)
                                {
                                    AddRowView(speaker, VerticalScrolViewMiddle);
                                }
                            });
                        }
                        else
                        {
                            Application.RunOnMainThread(() =>
                            {
                                AddEmptyTipView();
                            });
                        }
                    }
                    else
                    {
                        Application.RunOnMainThread(() =>
                        {
                            AddEmptyTipView();
                        });
                        //提示错误
                        IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code);
                    }
                }
                catch
                {
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        if (waitPage != null)
                        {
                            waitPage.RemoveFromParent();
                            waitPage = null;
                        }
                    });
                }
            });
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="speakerInfo"></param>
        /// <param name="VerticalScrolViewMiddle"></param>
        void AddRowView(SpeakerInfo speakerInfo, VerticalScrolViewLayout VerticalScrolViewMiddle)
        {
            //透明填充分割view
            var lineView = new FrameLayout()
            {
                Height = Application.GetRealWidth(12),
            };
            VerticalScrolViewMiddle.AddChidren(lineView);
            var rowView = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealWidth(200),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Radius = (uint)Application.GetRealWidth(12),
                BorderColor = 0x00000000,
                BorderWidth = 0,
            };
            VerticalScrolViewMiddle.AddChidren(rowView);
            #region 音箱类型
            var view1 = new FrameLayout()
            {
                Height = Application.GetRealWidth(49),
            };
            rowView.AddChidren(view1);
            var btnSpeakerNameTitle = new Button()
            {
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(200),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                Text = GetSpeakerTypeString(speakerInfo.platformName)
            };
            view1.AddChidren(btnSpeakerNameTitle);
            Button line1 = new Button()
            {
                Y = view1.Bottom,
                Gravity = Gravity.CenterHorizontal,
                Height = Application.GetRealWidth(1),
                Width = Application.GetRealWidth(311),
                BackgroundColor = CSS_Color.DividingLineColor,
            };
            rowView.AddChidren(line1);
            #endregion
            #region 备注
            var view2 = new FrameLayout()
            {
                Y = line1.Bottom,
                Height = Application.GetRealWidth(49),
            };
            rowView.AddChidren(view2);
            var btnNicknameTitle = new Button()
            {
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(200),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                TextID = StringId.Remarks,
            };
            view2.AddChidren(btnNicknameTitle);
            var btnNickname = new Button()
            {
                Width = Application.GetRealWidth(295),
                TextAlignment = TextAlignment.CenterRight,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.TextFontSize,
                Text = speakerInfo.remark
            };
            view2.AddChidren(btnNickname);
            if (string.IsNullOrEmpty(speakerInfo.remark))
            {
                btnNickname.TextID = StringId.SmartSpeaker;
            }
            var btnNicknameRight = new Button()
            {
                X = Application.GetRealWidth(311),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/Right.png",
            };
            view2.AddChidren(btnNicknameRight);
            Button line2 = new Button()
            {
                Y = view2.Bottom,
                Gravity = Gravity.CenterHorizontal,
                Height = Application.GetRealWidth(1),
                Width = Application.GetRealWidth(311),
                BackgroundColor = CSS_Color.DividingLineColor,
            };
            rowView.AddChidren(line2);
            //保存事件
            Action<string> renameAction = (newName) =>
            {
                RenameAlexaRemark(newName, speakerInfo, btnNickname);
            };
            btnNickname.MouseUpEventHandler += (sender, e) =>
            {
                new PublicAssmebly().LoadDialog_EditParater(StringId.Remarks, speakerInfo.remark, renameAction, StringId.RemarksCannotBeBlank, 0, new List<string>(),false, Language.StringByID(StringId.Save));
            };
            #endregion
            #region 数据管理
            var view3 = new FrameLayout()
            {
                Y = line2.Bottom,
                Height = Application.GetRealWidth(49),
            };
            rowView.AddChidren(view3);
            var btnDataTitle = new Button()
            {
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(200),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                TextID = StringId.DataManagement,
            };
            view3.AddChidren(btnDataTitle);
            var btnDataRight = new Button()
            {
                X = Application.GetRealWidth(311),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/Right.png",
            };
            view3.AddChidren(btnDataRight);
            Button line3 = new Button()
            {
                Y = view3.Bottom,
                Gravity = Gravity.CenterHorizontal,
                Height = Application.GetRealWidth(1),
                Width = Application.GetRealWidth(311),
                BackgroundColor = CSS_Color.DividingLineColor,
            };
            rowView.AddChidren(line3);
            EventHandler<MouseEventArgs> eHandler = (sender, e) =>
            {
                //跳转数据管理房间列表
                GotoPage(speakerInfo);
            };
            view3.MouseUpEventHandler += eHandler;
            btnDataTitle.MouseUpEventHandler += eHandler;
            btnDataRight.MouseUpEventHandler += eHandler;
            #endregion
            #region 解除绑定
            var view4 = new FrameLayout()
            {
                Y = line3.Bottom,
                Height = Application.GetRealWidth(49),
            };
            rowView.AddChidren(view4);
            var btnUnbindTitle = new Button()
            {
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(200),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                TextID = StringId.Unbind,
            };
            view4.AddChidren(btnUnbindTitle);
            var btnUnbindRight = new Button()
            {
                X = Application.GetRealWidth(311),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/Right.png",
            };
            view4.AddChidren(btnUnbindRight);
            EventHandler<MouseEventArgs> eHandler4 = (sender, e) =>
            {
                Action okAction = () =>
                {
                    //解绑音箱
                    UnbindSpeaker(speakerInfo, rowView, lineView);
                };
                new ConfirmDialog().ShowDialog(StringId.Tip, StringId.DoYouWantToUnbind, okAction, null, StringId.Cancel, StringId.Confirm);
            };
            view4.MouseUpEventHandler += eHandler4;
            btnUnbindTitle.MouseUpEventHandler += eHandler4;
            btnUnbindRight.MouseUpEventHandler += eHandler4;
            #endregion
        }
        /// <summary>
        /// 请求修改备注
        /// </summary>
        /// <param name="newName"></param>
        /// <param name="speakerInfo"></param>
        /// <param name="btnName"></param>
        void RenameAlexaRemark(string newName, SpeakerInfo speakerInfo, Button btnName)
        {
            //显示loading动画效果
            var waitPage = new Loading();
            bodyView.AddChidren(waitPage);
            waitPage.Start(Language.StringByID(StringId.PleaseWait));
            System.Threading.Tasks.Task.Run(() =>
            {
                try
                {
                    var updateSpeakerRemarkObj = new UpdateSpeakerRemarkObj()
                    {
                        homeId = speakerInfo.homeId,
                        tokenId = speakerInfo.tokenId,
                        remark = newName
                    };
                    var revertObj = new HttpServerRequest().UpdateSpeakerRemark(updateSpeakerRemarkObj);
                    if (revertObj.Code == StateCode.SUCCESS)
                    {
                        //AmendTheSuccess 修改成功
                        Application.RunOnMainThread(() =>
                        {
                            speakerInfo.remark = newName;
                            btnName.Text = newName;
                            Utlis.ShowTip(Language.StringByID(StringId.ModifySuccess));
                            //Utlis.ShowAlertOnMainThread(Language.StringByID(R.MyInternationalizationString.AmendTheSuccess));
                        });
                    }
                    else
                    {
                        //提示错误
                        IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code);
                    }
                }
                catch
                {
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        if (waitPage != null)
                        {
                            waitPage.RemoveFromParent();
                            waitPage = null;
                        }
                    });
                }
            });
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="platformName"></param>
        /// <returns></returns>
        string GetSpeakerTypeString(string platformName){
            //1.platformName判空
            if (string.IsNullOrEmpty(platformName))
            {
                return "";
            }
            //2.先赋云端返回的默认值
            var name = platformName;
            if (platformName == SpeakerType.DuerOS.ToString())
            {
                if (Language.CurrentLanguage == "Chinese")
                {
                    name = "小度";
                }
                //2.1当前语言不是中文的话,直接等于云端返回的platformName音箱类型
            }
            else if (platformName == SpeakerType.Google.ToString()){
                name = "Google Home";
            }
            else if (platformName == SpeakerType.Alexa.ToString())
            {
                name = "Alexa Echo";
            }
            else if (platformName == SpeakerType.Alice.ToString())
            {
                name = "Alice";
            }
            else if (platformName == SpeakerType.Aligenie.ToString())
            {
                if (Language.CurrentLanguage == "Chinese")
                {
                    name = "天猫精灵";
                }
                //2.1当前语言不是中文的话,直接等于云端返回的platformName音箱类型
            }
            else if (platformName == SpeakerType.AISpeech.ToString())
            {
                if (Language.CurrentLanguage == "Chinese")
                {
                    name = "思必驰";
                }
                //2.1当前语言不是中文的话,直接等于云端返回的platformName 英文音箱类型
            }
            return name;
        }
        /// <summary>
        /// 请求解绑音箱
        /// </summary>
        /// <param name="speakerInfo">音箱参数</param>
        /// <param name="rowView">音箱rowView</param>
        /// <param name="lineView">填充的lineView</param>
        void UnbindSpeaker(SpeakerInfo speakerInfo, FrameLayout rowView, FrameLayout lineView)
        {
            if (speakerInfo == null || string.IsNullOrEmpty(speakerInfo.tokenId)) {
                Utlis.ShowTip(Language.StringByID(StringId.RequestFailedParameterException) + "(-3)");
            }
            var waitPage = new Loading();
            bodyView.AddChidren(waitPage);
            waitPage.Start(Language.StringByID(StringId.PleaseWait));
            System.Threading.Tasks.Task.Run(() =>
            {
                try
                {
                    var revertObj = new HttpServerRequest().UnbindSpeaker(speakerInfo.tokenId);
                    if (revertObj.Code == StateCode.SUCCESS)
                    {
                        //解绑成功
                        Application.RunOnMainThread(() =>
                        {
                            //lineView
                            if (lineView != null)
                            {
                                lineView.RemoveFromParent();
                            }
                            //移除rowView
                            if (rowView != null)
                            {
                                rowView.RemoveFromParent();
                            }
                            //提示解绑成功
                            Utlis.ShowTip(Language.StringByID(StringId.UnbindEmailSuccess));
                        });
                    }
                    else
                    {
                        //提示错误
                        IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code);
                    }
                }
                catch
                {
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        if (waitPage != null)
                        {
                            waitPage.RemoveFromParent();
                            waitPage = null;
                        }
                    });
                }
            });
        }
        /// <summary>
        /// 跳转页面
        /// </summary>
        void GotoPage(SpeakerInfo speakerInfo)
        {
            var page = new SmartSpeakerRoomListPage(speakerInfo);
            MainPage.BasePageView.AddChidren(page);
            page.LoadPage();
            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
        }
    }
}
HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs
New file
@@ -0,0 +1,311 @@
using System;
using Shared;
using HDL_ON.UI.CSS;
using System.Collections.Generic;
using System.Threading;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
namespace HDL_ON.UI
{
    /// <summary>
    /// 房间列表
    /// </summary>
    public class SmartSpeakerRoomListPage : FrameLayout
    {
        /// <summary>
        /// bodyView
        /// </summary>
        FrameLayout bodyView;
        /// <summary>
        /// 当前主滑动View
        /// </summary>
        VerticalScrolViewLayout bodyScrolView;
        /// <summary>
        /// 音箱参数
        /// </summary>
        SpeakerInfo speakerInfo;
        /// <summary>
        /// 房间列表和无区域功能页面
        /// </summary>
        /// <param name="speakerInfo">音箱参数</param>
        public SmartSpeakerRoomListPage(SpeakerInfo speakerInfo)
        {
            bodyView = this;
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            this.speakerInfo = speakerInfo;
        }
        /// <summary>
        /// 加载视图
        /// </summary>
        public void LoadPage()
        {
            new TopViewDiv(bodyView, Language.StringByID(StringId.DataManagement)).LoadTopView();
            int bodyY = Application.GetRealHeight(64);
            bodyScrolView = new VerticalScrolViewLayout()
            {
                Y = bodyY,
                Height = bodyView.Height - bodyY,
                BackgroundColor = CSS_Color.BackgroundColor,
            };
            bodyView.AddChidren(bodyScrolView);
            //加载房间列表
            ShowRoomListView();
        }
        /// <summary>
        /// 加载房间列表
        /// </summary>
        void ShowRoomListView()
        {
            bodyScrolView.RemoveAll();
            var titleView = new FrameLayout()
            {
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Height = Application.GetRealWidth(53),
            };
            bodyScrolView.AddChidren(titleView);
            //箭头图标
            var btnResidenceDownIcon = new Button()
            {
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                X = Application.GetRealWidth(12),
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "Public/DownIcon.png",
            };
            titleView.AddChidren(btnResidenceDownIcon);
            //住宅标题
            var btnHomeTitle = new Button()
            {
                X = btnResidenceDownIcon.Right + Application.GetRealWidth(1),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                Text = DB_ResidenceData.Instance.CurrentRegion.Name,
            };
            titleView.AddChidren(btnHomeTitle);
            //var btnLine = new Button()
            //{
            //    X = Application.GetRealWidth(16),
            //    Y = titleView.Height - Application.GetRealHeight(2),
            //    Width = Application.GetRealWidth(360),
            //    Height = Application.GetRealHeight(1),
            //    BackgroundColor = CSS_Color.DividingLineColor,
            //};
            //titleView.AddChidren(btnLine);
            //---------------------------------------------
            //未分配区域的功能
            List<Function> allFunctionList = FunctionList.List.GetDeviceFunctionList();
            //未分配区域的功能
            List<Function> unallocatedList = new List<Function>();
            //
            foreach (var function in allFunctionList)
            {
                function.roomIds.Remove(null);
                if (function.roomIds.Count == 0)
                {
                    unallocatedList.Add(function);
                }
            }
            //所有场景
            List<Scene> allSceneList = FunctionList.List.scenes;
            //全局场景场景
            List<Scene> globalSceneList = new List<Scene>();
            //找出所有的全局场景
            foreach (var mScene in allSceneList)
            {
                //roomIds大于0 代表分配到房间
                mScene.roomIds.Remove(null);
                if (mScene.roomIds.Count == 0)
                {
                    globalSceneList.Add(mScene);
                }
            }
            try
            {
                //房间列表
                foreach (var room in SpatialInfo.CurrentSpatial.RoomList)
                {
                    AddRoomFunctionRowLayout(room);
                }
                //2020-12-16 加载未分配区域功能RowLayout
                AddNoAreaFunctionRowLayout(unallocatedList, globalSceneList);
            }
            catch
            {
                Utlis.WriteLine("AddRoomFunctionRowLayout error");
            }
        }
        /// <summary>
        /// 添加房间列表
        /// </summary>
        /// <param name="mRoom"></param>
        void AddRoomFunctionRowLayout(Room mRoom)
        {
            ShowBaseRoomFunOrNoAreaFunRowLayout(mRoom, null, null);
        }
        /// <summary>
        /// 添加无区域的功能
        /// </summary>
        /// <param name="unallocatedList">未分配的所有功能列表</param>
        /// <param name="globalSceneList">全区域的场景</param>
        void AddNoAreaFunctionRowLayout(List<Function> unallocatedList, List<Scene> globalSceneList)
        {
            ShowBaseRoomFunOrNoAreaFunRowLayout(null, unallocatedList, globalSceneList);
        }
        /// <summary>
        /// 2020-12-17 重新调整
        /// 添加房间分享或者无区域分配 个数统计状态的RowLayout
        /// </summary>
        /// <param name="room">如果房间为空,代表管理无分配区域</param>
        /// <param name="unallocatedList">管理无分配区域才有效</param>
        /// <param name="globalSceneList">全局场景</param>
        void ShowBaseRoomFunOrNoAreaFunRowLayout(Room mRoom, List<Function> unallocatedList, List<Scene> globalSceneList)
        {
            /// 房间所有功能和者场景列表
            List<SpeakerTargetInfo> roomFunctionOrSceneList = new List<SpeakerTargetInfo>();
            var roomView = new RowLayout()
            {
                Height = Application.GetRealWidth(50),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                LineColor = CSS_Color.MainBackgroundColor,
            };
            bodyScrolView.AddChidren(roomView);
            var btnRoomName = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = Application.GetRealWidth(10),
                Width = Application.GetRealWidth(330),
                Height = Application.GetRealWidth(30),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                //Text = room.roomName,
            };
            roomView.AddChidren(btnRoomName);
            var btnRight = new Button()
            {
                X = Application.GetRealWidth(351),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/Right.png",
            };
            roomView.AddChidren(btnRight);
            //如果房间为空,代表管理无分配区域
            if (mRoom != null)
            {
                //显示房间名
                btnRoomName.Text = mRoom.roomName;
                var mRoomFunctionList = mRoom.GetRoomFunctions(false);
                var mRoomSceneList = mRoom.GetRoomScenes(true);
                //遍历所有功能列表
                if (mRoomFunctionList != null)
                {
                    foreach (var fun in mRoomFunctionList)
                    {
                        roomFunctionOrSceneList.Add(new SpeakerTargetInfo()
                        {
                            targetId = fun.deviceId,
                            targetName = fun.name,
                            isDevice = true
                        });
                    }
                }
                //遍历所有场景列表
                if (mRoomSceneList != null)
                {
                    foreach (var roomScene in mRoomSceneList)
                    {
                        roomFunctionOrSceneList.Add(new SpeakerTargetInfo()
                        {
                            targetId = roomScene.userSceneId,
                            targetName = roomScene.name,
                            isDevice = false
                        });
                    }
                }
                //roomId = mRoom.roomId;
                //添加分割线
                var lineView = new LineView(roomView.Height - Application.GetRealHeight(1));
                roomView.AddChidren(lineView);
            }
            else
            {
                //显示无区域功能
                btnRoomName.TextID = StringId.NoAreaFunction;
                //遍历所有功能列表
                if (unallocatedList != null)
                {
                    foreach (var fun in unallocatedList)
                    {
                        roomFunctionOrSceneList.Add(new SpeakerTargetInfo()
                        {
                            targetId = fun.deviceId,
                            targetName = fun.name,
                            isDevice = true
                        });
                    }
                }
                //遍历所有场景列表
                if (globalSceneList != null)
                {
                    foreach (var roomScene in globalSceneList)
                    {
                        roomFunctionOrSceneList.Add(new SpeakerTargetInfo()
                        {
                            targetId = roomScene.userSceneId,
                            targetName = roomScene.name,
                            isDevice = false
                        });
                    }
                }
            }
            //点击调整事件
            EventHandler<MouseEventArgs> eHandler = (sender, e) =>
            {
                var page = new SmartSpeakerSelectDevicesPage(speakerInfo, roomFunctionOrSceneList);
                MainPage.BasePageView.AddChidren(page);
                page.LoadPage();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            roomView.MouseUpEventHandler = eHandler;
            btnRoomName.MouseUpEventHandler = eHandler;
            btnRight.MouseUpEventHandler = eHandler;
        }
    }
}
HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerSelectDevicesPage.cs
New file
@@ -0,0 +1,433 @@
using System;
using Shared;
using HDL_ON.UI.CSS;
using System.Collections.Generic;
using HDL_ON.DAL.Server;
namespace HDL_ON.UI
{
    /// <summary>
    /// 管理配置给音箱的设备或着场景列表
    /// </summary>
    public class SmartSpeakerSelectDevicesPage : FrameLayout
    {
        /// <summary>
        /// bodyView
        /// </summary>
        FrameLayout bodyView;
        /// <summary>
        /// 全选按钮
        /// </summary>
        Button btnChooseAll;
        /// <summary>
        /// 当前
        /// </summary>
        VerticalScrolViewLayout bodyScrolView;
        ///// <summary>
        ///// 底部保存操作按钮
        ///// </summary>
        //Button btnSave;
        /// <summary>
        /// 音箱参数
        /// </summary>
        SpeakerInfo speakerInfo;
        /// <summary>
        /// 设备、场景列表
        /// </summary>
        List<SpeakerTargetInfo> targetInfoList = new List<SpeakerTargetInfo>();
        /// <summary>
        /// 当前房间的设备和场景
        /// </summary>
        List<SpeakerTargetInfo> roomFunctionOrSceneList = new List<SpeakerTargetInfo>();
        /// <summary>
        /// 管理配置给音箱的设备或着场景列表
        /// </summary>
        /// <param name="speakerInfo">音箱参数</param>
        /// <param name="roomFunctionOrSceneList">当前房间的功能或者场景</param>
        public SmartSpeakerSelectDevicesPage(SpeakerInfo speakerInfo, List<SpeakerTargetInfo> roomFunctionOrSceneList)
        {
            bodyView = this;
            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
            this.speakerInfo = speakerInfo;
            this.roomFunctionOrSceneList = roomFunctionOrSceneList;
        }
        /// <summary>
        /// 加载视图
        /// </summary>
        public void LoadPage()
        {
            //加载顶部菜单栏
            new TopViewDiv(bodyView, Language.StringByID(StringId.DataManagement)).LoadTopView();
            //顶部全选按钮
            var allView = new FrameLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(50),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            bodyView.AddChidren(allView);
            Button btnAllRoomText = new Button()
            {
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(280),
                TextID = StringId.SelectedAll,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextAlignment = TextAlignment.CenterLeft,
            };
            allView.AddChidren(btnAllRoomText);
            btnChooseAll = new Button()
            {
                X = Application.GetRealWidth(331),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(28),
                Height = Application.GetMinRealAverage(28),
                UnSelectedImagePath = "Public/ChooseIcon.png",
                SelectedImagePath = "Public/ChooseOnIcon.png",
            };
            allView.AddChidren(btnChooseAll);
            allView.AddChidren(new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(49),
                Height = Application.GetMinReal(1),
                Width = Application.GetRealWidth(343),
                BackgroundColor = CSS_Color.DividingLineColor,
            });
            bodyScrolView = new VerticalScrolViewLayout()
            {
                Y = allView.Bottom,
                Height = Application.GetRealHeight(450),
            };
            bodyView.AddChidren(bodyScrolView);
            var btnSave = new ConfirmButton()
            {
                Y = Application.GetRealHeight(519 + 64),
                TextID = StringId.Save
            };
            bodyView.AddChidren(btnSave);
            //全选按钮点击事件
            LoadEvent_AllSharedDataChange(allView, btnChooseAll);
            //保存按钮点击事件
            LoadEvent_Save(btnSave);
            //加载房间的功能和场景,并比较配置过的数据实现选中效果
            GetDeviceAndSceneList();
        }
        /// <summary>
        /// 全选按钮点击事件
        /// </summary>
        void LoadEvent_AllSharedDataChange(FrameLayout allView, Button btnChooseAll)
        {
            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
            {
                btnChooseAll.IsSelected = !btnChooseAll.IsSelected;
                var IsSelected = btnChooseAll.IsSelected;
                //全部数据选中状态设置为true或者false
                foreach (var info in roomFunctionOrSceneList)
                {
                    info.IsSelect = IsSelected;
                }
                //刷新一次列表
                RefreshListView();
            };
            btnChooseAll.MouseUpEventHandler = eventHandler;
            allView.MouseUpEventHandler = eventHandler;
        }
        /// <summary>
        /// 保存按钮点击事件
        /// </summary>
        /// <param name="btnSave"></param>
        void LoadEvent_Save(Button btnSave)
        {
            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
            {
                AddDevicesSceneList(targetInfoList);
            };
            btnSave.MouseUpEventHandler = eventHandler;
        }
        /// <summary>
        /// 全量更新配置数据(功能和场景同时更新)
        /// </summary>
        /// <param name="updateList">最新的配置数据</param>
        void AddDevicesSceneList(List<SpeakerTargetInfo> updateList)
        {
            var waitPage = new Loading();
            bodyView.AddChidren(waitPage);
            waitPage.Start(Language.StringByID(StringId.PleaseWait));
            System.Threading.Tasks.Task.Run(() =>
            {
                try
                {
                    //查找需要选中的目标
                    foreach (var info in roomFunctionOrSceneList)
                    {
                        var targetData = updateList.Find((obj) => obj.targetId == info.targetId);
                        if (info.IsSelect)
                        {
                            if (targetData == null)
                            {
                                updateList.Add(info);
                            }
                        }
                        else
                        {
                            if (targetData != null)
                            {
                                updateList.Remove(targetData);
                            }
                        }
                    }
                    //构建请求参数
                    var updateSpeakerDeviceListObj = new UpdateSpeakerDeviceListObj()
                    {
                        homeId = speakerInfo.homeId,
                        tokenId = speakerInfo.tokenId,
                        targetInfos = updateList
                    };
                    //发起请求
                    var revertObj = new HttpServerRequest().UpdateSpeakerDeviceList(updateSpeakerDeviceListObj);
                    if (revertObj.Code == StateCode.SUCCESS)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            //保存成功、页面关闭
                            Utlis.ShowTip(Language.StringByID(StringId.SavedSuccessfully));
                            if (bodyView != null)
                            {
                                bodyView.RemoveFromParent();
                            }
                        });
                    }
                    else
                    {
                        //提示错误
                        IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code);
                    }
                }
                catch
                {
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        if (waitPage != null)
                        {
                            waitPage.RemoveFromParent();
                            waitPage = null;
                        }
                    });
                }
            });
        }
        /// <summary>
        /// 加载房间的设备和场景列表
        /// </summary>
        void GetDeviceAndSceneList()
        {
            bodyScrolView.RemoveAll();
            var waitPage = new Loading();
            bodyView.AddChidren(waitPage);
            waitPage.Start(Language.StringByID(StringId.PleaseWait));
            System.Threading.Tasks.Task.Run(() =>
            {
                try
                {
                    var revertObj = new HttpServerRequest().GetSpeakerDeviceList(0, speakerInfo.tokenId);
                    if (revertObj.Code == StateCode.SUCCESS)
                    {
                        var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SpeakerTargetInfo>>(revertObj.Data.ToString());
                        if (list != null && list.Count > 0)
                        {
                            targetInfoList = list;
                        }
                        else
                        {
                            targetInfoList = new List<SpeakerTargetInfo>();
                        }
                        //默认全选
                        bool isSelectAll = true;
                        //查找需要选中的目标
                        foreach (var info in roomFunctionOrSceneList)
                        {
                            var targetData = targetInfoList.Find((obj) => obj.targetId == info.targetId);
                            if(targetData == null)
                            {
                                info.IsSelect = false;
                                //有一个没选择则全选设置为false
                                isSelectAll = false;
                            }
                            else
                            {
                                info.IsSelect = true;
                            }
                        }
                        Application.RunOnMainThread(() => {
                            //设置当前全选
                            btnChooseAll.IsSelected = isSelectAll;
                            RefreshListView();
                        });
                    }
                    else
                    {
                        //提示错误
                        IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code);
                    }
                }
                catch
                {
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        if (waitPage != null)
                        {
                            waitPage.RemoveFromParent();
                            waitPage = null;
                        }
                    });
                }
            });
        }
        /// <summary>
        /// RefreshListView
        /// </summary>
        void RefreshListView()
        {
            bodyScrolView.RemoveAll();
            if (roomFunctionOrSceneList == null) return;
            foreach (var roomData in roomFunctionOrSceneList)
            {
                AddRowView(roomData);
            }
        }
        /// <summary>
        /// AddRowView
        /// </summary>
        /// <param name="info"></param>
        void AddRowView(SpeakerTargetInfo info)
        {
            var roomView = new FrameLayout()
            {
                Height = Application.GetRealHeight(50),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Tag = "row"
            };
            bodyScrolView.AddChidren(roomView);
            Button btnRoomText = new Button()
            {
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(280),
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextAlignment = TextAlignment.CenterLeft,
                Text = info.targetName,
            };
            roomView.AddChidren(btnRoomText);
            Button btnChoose = new Button()
            {
                X = Application.GetRealWidth(331),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(28),
                Height = Application.GetMinRealAverage(28),
                UnSelectedImagePath = "Public/ChooseIcon.png",
                SelectedImagePath = "Public/ChooseOnIcon.png",
                Tag = "ChooseIcon"
            };
            roomView.AddChidren(btnChoose);
            btnChoose.IsSelected = info.IsSelect;
            var btnLine = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                //Y = Application.GetRealHeight(49),
                Height = Application.GetRealHeight(1),
                Width = Application.GetRealWidth(343),
                BackgroundColor = CSS_Color.DividingLineColor,
            };
            bodyScrolView.AddChidren(btnLine);
            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
            {
                btnChoose.IsSelected = !btnChoose.IsSelected;
                info.IsSelect = btnChoose.IsSelected;
                //1.如果点击选择,判断是否需要设置全选
                if (btnChoose.IsSelected)
                {
                    //1.1 默认全选
                    bool isSelectAll = true;
                    foreach (var targetInfo in roomFunctionOrSceneList)
                    {
                        if(targetInfo.IsSelect == false)
                        {
                            //1.2 有一个还没选中就退出,无需选中全选按钮
                            isSelectAll = false;
                            break;
                        }
                    }
                    if (isSelectAll)
                    {
                        btnChooseAll.IsSelected = true;
                    }
                }
                else
                {
                    //取消全选
                    if (btnChooseAll.IsSelected)
                    {
                        btnChooseAll.IsSelected = false;
                    }
                }
            };
            btnChoose.MouseUpEventHandler = eventHandler;
            roomView.MouseUpEventHandler = eventHandler;
            btnRoomText.MouseUpEventHandler = eventHandler;
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs
@@ -135,12 +135,12 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            //controlView.AddChidren(btnCollection);
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                controlView.AddChidren(btnCollection);
            }
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            arcBar = new DiyArcSeekBar()
            {
HDL_ON/UI/UI2/FuntionControlView/ArmCenter/ArmCenterPage.cs
@@ -1,7 +1,8 @@
using System;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI.UI2.FuntionControlView.ArmCenter
namespace HDL_ON.UI
{
    public class ArmCenterPage : FrameLayout
    {
@@ -24,7 +25,8 @@
            VerticalScrolViewLayout contentView = new VerticalScrolViewLayout()
            {
                Height = Application.GetRealHeight(603),
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(667 - 64),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                ScrollEnabled = false,
            };
@@ -51,6 +53,7 @@
                Height = Application.GetRealWidth(16),
            });
            #region 自定义布防
            //自定义布防标题
            Button btnCustomDeploymentTitle = new Button()
            {
@@ -68,14 +71,94 @@
            {
                X = Application.GetRealWidth(23),
                Height = Application.GetRealWidth(80),
                ScrollEnabled = false,
            };
            contentView.AddChidren(customDeploymentView);
            //customDeploymentView.AddChidren(new Button()
            //{
            //    Width = Application.GetRealWidth(23),
            //});
            var adv = new ArmDiyView();
            var view = adv.DiyArmView("FunctionIcon/ArmCenter/AtHomeDefenseIcon.png", "FunctionIcon/ArmCenter/AtHomeDefenseIconOn.png",
                Language.StringByID(StringId.HouseDefense));
            customDeploymentView.AddChidren(view);
            if(FunctionList.List.securities.Count>3)
            {
                customDeploymentView.ScrollEnabled = true;
            }
            foreach (var mode in FunctionList.List.securities)
            {
            }
            #endregion
            contentView.AddChidren(new Button()
            {
                Height = Application.GetRealHeight(20),
            });
            var fixedDeploymentView = new FrameLayout()
            {
                Height = Application.GetRealHeight(133),
            };
            contentView.AddChidren(fixedDeploymentView);
            Button btnFixedDeploymentTitle = new Button()
            {
                X = Application.GetRealWidth(24),
                Height = Application.GetRealWidth(24),
                TextAlignment = TextAlignment.CenterLeft,
                IsBold = true,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextID = StringId.FixedDeployment,
            };
            fixedDeploymentView.AddChidren(btnFixedDeploymentTitle);
            Button btnFixedDeploymentTip = new Button()
            {
                X = Application.GetRealWidth(24),
                Y = btnFixedDeploymentTitle.Bottom,
                Height = Application.GetRealWidth(19),
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextColor = CSS_Color.MainColor,
                TextID = StringId.UndoDefenseDoesNotAffect
            };
            fixedDeploymentView.AddChidren(btnFixedDeploymentTip);
            //固定布防区域
            var fixedDeploymentTypeView = new HorizontalScrolViewLayout()
            {
                Y = btnFixedDeploymentTip.Bottom + Application.GetRealHeight(15),
                Height = Application.GetRealHeight(80),
                ScrollEnabled = false,
            };
            fixedDeploymentView.AddChidren(fixedDeploymentTypeView);
            fixedDeploymentTypeView.AddChidren(new Button()
            {
                Width = Application.GetRealWidth(24),
            });
            //灾害报警
            var disasterAlarmView = adv.FixedArmView("FunctionIcon/ArmCenter/DisasterAlarmIcon.png", Language.StringByID(StringId.DisasterDefense), Language.StringByID(StringId.Defense24Hour));
            fixedDeploymentTypeView.AddChidren(disasterAlarmView);
            fixedDeploymentTypeView.AddChidren(new Button()
            {
                Width = Application.GetRealWidth(30),
            });
            //防盗报警
            var burglarAlarmView = adv.FixedArmView("FunctionIcon/ArmCenter/BurglarAlarmIcon.png", Language.StringByID(StringId.BurglarAlarm), Language.StringByID(StringId.AlarmMute));
            fixedDeploymentTypeView.AddChidren(burglarAlarmView);
        }
    }
@@ -86,16 +169,16 @@
    /// </summary>
    public class ArmDiyView
    {
        public FrameLayout ArmDiyButton;
        /// <summary>
        /// 
        /// </summary>
        /// <param name="IconPath">图片路径</param>
        /// <param name="UnSelectedIconPath">图片路径</param>
        /// <param name="SelectedIconPath">图片路径</param>
        /// <param name="Text">显示文本</param>
        public ArmDiyView(string UnSelectedIconPath, string SelectedIconPath, string Text)
        public FrameLayout DiyArmView(string UnSelectedIconPath, string SelectedIconPath, string Text)
        {
            ArmDiyButton = new FrameLayout()
            var view = new FrameLayout()
            {
                Width = Application.GetRealWidth(82),
                Height = Application.GetRealWidth(80),
@@ -109,7 +192,7 @@
                UnSelectedImagePath = UnSelectedIconPath,
                SelectedImagePath = SelectedIconPath,
            };
            ArmDiyButton.AddChidren(btnIcon);
            view.AddChidren(btnIcon);
            Button btnText = new Button()
            {
@@ -120,9 +203,66 @@
                TextColor = CSS_Color.TextualColor,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
            };
            ArmDiyButton.AddChidren(btnText);
            view.AddChidren(btnText);
            return view;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="iconPath"></param>
        /// <param name="title"></param>
        /// <param name="titleTip"></param>
        public FrameLayout FixedArmView(string iconPath,string title,string titleTip)
        {
            var view = new FrameLayout()
            {
                Width = Application.GetRealWidth(144),
                Height = Application.GetRealHeight(66),
                Radius = (uint)Application.GetRealWidth(6),
                BorderColor = CSS_Color.MainColor,
                BorderWidth = 1,
            };
            var btnIcon = new Button()
            {
                X = Application.GetRealWidth(15),
                Width = Application.GetRealWidth(24),
                Height = Application.GetRealWidth(24),
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = iconPath,// "FunctionIcon/ArmCenter/DisasterAlarmIcon.png",
            };
            view.AddChidren(btnIcon);
            var btnTitle = new Button()
            {
                X = Application.GetRealWidth(55),
                Width = Application.GetRealWidth(89),
                Height = Application.GetRealHeight(44),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                Text = title,
                IsBold = true,
            };
            view.AddChidren(btnTitle);
            var btnTitleTip = new Button()
            {
                X = Application.GetRealWidth(55),
                Y = Application.GetRealHeight(23),
                Width = Application.GetRealWidth(89),
                Height = Application.GetRealHeight(44),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                Text = titleTip,
            };
            view.AddChidren(btnTitleTip);
            return view;
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/ArmCenter/ArmDeploymentSettingPage.cs
New file
@@ -0,0 +1,213 @@
using System;
using System.Collections.Generic;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
    public class ArmDeploymentSettingPage : FrameLayout
    {
        FrameLayout bodyView;
        SecurityAlarm securityAlarm;
        public ArmDeploymentSettingPage(SecurityAlarm alarm )
        {
            bodyView = this;
            securityAlarm = alarm;
        }
        public void LoadPage()
        {
            new TopViewDiv(bodyView, Language.StringByID(StringId.Setting)).LoadTopView();
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            VerticalScrolViewLayout contentView = new VerticalScrolViewLayout()
            {
                Height = Application.GetRealHeight(667 - 64),
            };
            bodyView.AddChidren(contentView);
            #region 布防信息
            var deploymentTitleRow = new FrameLayout()
            {
                Height = Application.GetRealHeight(44),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            contentView.AddChidren(deploymentTitleRow);
            var btnDeploymentTitle = new Button()
            {
                X = Application.GetRealWidth(16),
                TextColor = CSS_Color.MainColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.DeploymentInformation,
            };
            deploymentTitleRow.AddChidren(btnDeploymentTitle);
            deploymentTitleRow.AddChidren(new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(43), Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
            #region 布防名称
            var deploymentNameRow = new FrameLayout()
            {
                Height = Application.GetRealHeight(50),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            contentView.AddChidren(deploymentNameRow);
            var btnDeploymentNameTitle = new Button()
            {
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(72),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                TextID = StringId.Name,
            };
            deploymentNameRow.AddChidren(btnDeploymentNameTitle);
            var btnDeploymentName = new Button()
            {
                X = Application.GetRealWidth(88),
                Width = Application.GetRealWidth(230),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.TextualColor,
                TextSize = CSS_FontSize.TextFontSize,
                Text = securityAlarm.name
            };
            deploymentNameRow.AddChidren(btnDeploymentName);
            deploymentNameRow.AddChidren(new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(49), Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
            LoadEvent_EditSecurityAlarmName(btnDeploymentName);
            #endregion
            #region 触发延时
            var delayedRow = new FrameLayout()
            {
                Height = Application.GetRealHeight(50),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            contentView.AddChidren(delayedRow);
            var btnDelayedTitle = new Button()
            {
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(72),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                TextID = StringId.Name,
            };
            delayedRow.AddChidren(btnDelayedTitle);
            var btnDelayedText = new Button()
            {
                X = Application.GetRealWidth(88),
                Width = Application.GetRealWidth(230),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.TextualColor,
                TextSize = CSS_FontSize.TextFontSize,
                Text = securityAlarm.name
            };
            delayedRow.AddChidren(btnDelayedText);
            var btnDelayedRight = new Button()
            {
                X = Application.GetRealWidth(343),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/RightIcon.png",
            };
            delayedRow.AddChidren(btnDelayedRight);
            //delayedRow.AddChidren(new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(49), Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
            LoadEvent_EditSecurityAlarmName(btnDelayedTitle);
            #endregion
            #endregion
            contentView.AddChidren(new Button() { Height = Application.GetRealHeight(8), BackgroundColor = CSS_Color.BackgroundColor });
            #region 布防功能
            var deploymentFunctionRow = new FrameLayout()
            {
                Height = Application.GetRealHeight(44),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            contentView.AddChidren(deploymentFunctionRow);
            var btnFunctionTitle = new Button()
            {
                X = Application.GetRealWidth(16),
                TextColor = CSS_Color.MainColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.DeploymentInformation,
            };
            deploymentFunctionRow.AddChidren(btnFunctionTitle);
            deploymentFunctionRow.AddChidren(new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(43), Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
            #endregion
        }
        /// <summary>
        /// 修改安防名称
        /// </summary>
        void LoadEvent_EditSecurityAlarmName(Button btnDeploymentName)
        {
            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
            {
                Action<string> callBack = (str) =>
                {
                    var waitPage = new Loading();
                    bodyView.AddChidren(waitPage);
                    waitPage.Start(Language.StringByID(StringId.PleaseWait));
                    new System.Threading.Thread(() =>
                    {
                        try
                        {
                            securityAlarm.name = str;
                            var responsePack = new HttpServerRequest().EditSecurity(new List<SecurityAlarm>() { securityAlarm});
                            if (responsePack.Code == StateCode.SUCCESS)
                            {
                                Application.RunOnMainThread(() =>
                                {
                                    btnDeploymentName.Text = str;
                                });
                            }
                            else
                            {
                                IMessageCommon.Current.ShowErrorInfoAlter(responsePack.Code);
                            }
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"update user name error : {ex.Message}");
                        }
                        finally
                        {
                            Application.RunOnMainThread(() =>
                            {
                                if (waitPage != null)
                                {
                                    waitPage.RemoveFromParent();
                                    waitPage = null;
                                }
                            });
                        }
                    })
                    { IsBackground = true }.Start();
                };
                new PublicAssmebly().LoadDialog_EditParater(StringId.Name, securityAlarm.name, callBack, StringId.NameCannotBeEmpty, 0, new List<string>());
            };
            btnDeploymentName.MouseUpEventHandler = eventHandler;
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePage.cs
@@ -109,12 +109,12 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            //controlView.AddChidren(btnCollection);
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                controlView.AddChidren(btnCollection);
            }
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            btnCurtainBgIcon = new Button()
            {
HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPage.cs
@@ -127,12 +127,12 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            //controlView.AddChidren(btnCollection);
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                controlView.AddChidren(btnCollection);
            }
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            curtainSeekBar = new CurtainSeekBarOn()
            {
HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPage.cs
@@ -127,12 +127,12 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            //controlView.AddChidren(btnCollection);
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                controlView.AddChidren(btnCollection);
            }
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            curtainSeekBar = new CurtainRollSeekBarOn()
            {
@@ -201,8 +201,8 @@
                Y = Application.GetRealHeight(466),
                Width = Application.GetMinRealAverage(32),
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainCloseIcon.png",
                SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseOnIcon.png",
                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainDownIcon.png",
                SelectedImagePath = "FunctionIcon/Curtain/CurtainDownIconOn.png",
                IsSelected = function.GetAttrState(FunctionAttributeKey.Percent) == "0",
            };
            controlView.AddChidren(btnCurtainClose);
@@ -224,8 +224,8 @@
                Y = Application.GetRealHeight(466),
                Width = Application.GetMinRealAverage(32),
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainOpenIcon.png",
                SelectedImagePath = "FunctionIcon/Curtain/CurtainOpenOnIcon.png",
                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainUpIcon.png",
                SelectedImagePath = "FunctionIcon/Curtain/CurtainUpIconOn.png",
                IsSelected = function.GetAttrState(FunctionAttributeKey.Percent) != "0",
            };
            controlView.AddChidren(btnCurtainOpen);
HDL_ON/UI/UI2/FuntionControlView/Electrical/DvdPage.cs
New file
@@ -0,0 +1,10 @@
using System;
namespace HDL_ON.UI.UI2.FuntionControlView.Electrical
{
    public class DvdPage
    {
        public DvdPage()
        {
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPage.cs
@@ -102,12 +102,12 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            //controlView.AddChidren(btnCollection);
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                controlView.AddChidren(btnCollection);
            }
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            btnSwitchIcon = new Button()
            {
HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs
@@ -101,12 +101,12 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            //controlView.AddChidren(btnCollection);
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                controlView.AddChidren(btnCollection);
            }
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            btnSwitchIcon = new Button()
            {
HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPage.cs
@@ -117,14 +117,14 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            //controlView.AddChidren(btnCollection);
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                controlView.AddChidren(btnCollection);
            }
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            #region 轮盘控制区域
            topMenuView = new FrameLayout()
HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
@@ -291,7 +291,7 @@
                {
                    loadPage.Start(Language.StringByID(StringId.PleaseWait));
                });
                var sensorType = function.spk.Split(".")[0];
                var sensorType = function.spk.Split(".")[1];
                var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, function.deviceId, sensorType);
                if (revertObj != null)
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
New file
@@ -0,0 +1,94 @@
using System;
using System.Collections.Generic;
namespace HDL_ON.UI
{
    /// <summary>
    /// 饼图
    /// </summary>
    public class EchartsOption_BrokenLine
    {
        /// <summary>
        ///
        /// </summary>
        /// <param name="xData"></param>
        public void InitXdata (List<string> xData)
        {
            //组装Value
            string valueText = string.Empty;
            foreach (var data in xData)
            {
                valueText += "'" + data + "',";
            }
            optionString = optionString.Replace("{0}", valueText);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="yData"></param>
        public string GetYdata(string name, List<EnvironmentalSensorHistor> yData, string color)
        {
            //组装Value
            string valueText = string.Empty;
            var yAxisValue = @"{name:'{0}',
                            data:[{1}],
                            type:'line',
                            smooth:0.6,
                            symbol:'none',
                            color:'{2}'}
            ";
            yAxisValue = yAxisValue.Replace("{0}", name);
            foreach (var data in yData)
            {
                valueText += "'" + data.fieldValue + "',";
            }
            yAxisValue = yAxisValue.Replace("{1}", valueText);
            yAxisValue = yAxisValue.Replace("{2}", color);
            return yAxisValue;
        }
        public void InitYdataString(string yData)
        {
            //组装Value
            optionString = optionString.Replace("{1}", yData);
        }
        public string optionString =  @"{
                 tooltip: {
                    trigger: 'axis'
                    },
                    grid: {
                        left: '3%',
                        right: '4%',
                        bottom: '3%',
                    },
                    xAxis: {
                        type: 'category',
                        boundaryGap: false,
                        data: [{0}]
                    },
                    yAxis: {
                        type: 'value',
                    },
                    series: [
                        {1}
                    ]
            }";
        /// <summary>
        /// 颜色列表
        /// </summary>
        /// <returns></returns>
        public List<string> ColorList ()
        {
            var list = new List<string>();
            return list;
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
@@ -153,7 +153,7 @@
                TextColor = CSS_Color.TextualColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                Text = "10°C",
                Text = "--°C",
            };
            topWeatherView.AddChidren(btnTempUpperLimitText);
@@ -176,7 +176,7 @@
                TextColor = CSS_Color.TextualColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                Text = "2°C",
                Text = "--°C",
            };
            topWeatherView.AddChidren(btnTempLowerLimitText);
@@ -370,7 +370,7 @@
                    Width = Application.GetRealWidth(100),
                    Height = Application.GetRealWidth(32),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,//levelColorList[sensorTemp.GetCurLevel(sensor) - 1],
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = levelTextList[sensorTemp.GetCurLevel(sensor) - 1],
                    Tag = "SensorLevel",
@@ -410,11 +410,6 @@
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    #endregion
                };
                //btnLevel.MouseUpEventHandler = (sender, e) =>
                //{
                //    LoadInfo(sensor);
                //};
                new System.Threading.Thread(() =>
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
@@ -806,12 +806,8 @@
        /// <summary>
        /// 读取传感器历史数据
        /// </summary>
        void LoadMothed_GetSensorHistoryData()
        void LoadMothed_GetSensorHistoryData( )
        {
            string echartRootJsonString;
            EchartsOption echartRootJson = new EchartsOption();
            var seriesList = new List<EchartSeriesItem>();
            echartRootJson.xAxis.data = new List<string>();
            var loadPage = new Loading() {
                LodingBackgroundColor = 0x88888888,
            };
@@ -825,7 +821,11 @@
                        loadPage.Start(Language.StringByID(StringId.PleaseWait));
                    });
                    int i = 0;
                    var ebl = new EchartsOption_BrokenLine();
                    string yDataString = "";
                    foreach (var sr in FunctionList.List.GetEnvirSensorsList())
                    {
                        if (sr.spk != function.spk)
@@ -838,63 +838,34 @@
                            continue;
                        }
                        var sensorType = sr.spk.Split(".")[0];
                        var sensorType = sr.spk.Split(".")[1];
                        var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, sr.deviceId,sensorType);
                        if (revertObj != null)
                        {
                            if (revertObj.Code == StateCode.SUCCESS)
                            {
                                var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
                                var sItem = new EchartSeriesItem
                                if (i == 0)
                                {
                                    name = sr.GetRoomListName(),
                                    data = new List<int>(),
                                    lineStyle = new EchartLineStyle()
                                    List<string> vs = new List<string>();
                                    foreach(var data in revertData)
                                    {
                                        color = tipColorStringList[i],
#if __IOS__
                                        width = 5,
#elif __ANDROID__
                                        width = 2,
#endif
                                    },
                                };
                                foreach (var d in revertData)
                                {
                                    echartRootJson.xAxis.data.Add(d.fieldName);
                                    echartRootJson.yAxis.data.Add(d.fieldValue);
                                        vs.Add(data.fieldName);
                                    }
                                    ebl.InitXdata(vs);
                                }
                                seriesList.Add(sItem);
                            }
                            else
                            {
                                Application.RunOnMainThread(() =>
                                {
                                    IMessageCommon.Current.ShowErrorInfoAlter("", true, 2,  Language.StringByID(StringId.GetSensorHistoryFailed),false);
                                    //new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.GetSensorHistoryFailed), true);
                                });
                                yDataString += ebl.GetYdata(sr.name, revertData, tipColorStringList[i]);
                            }
                        }
                        i++;
                    }
                    echartRootJson.series = seriesList;
                    ebl.InitYdataString(yDataString);
#if __IOS__
                    echartRootJson.xAxis.axisLabel.fontSize = 22;
                    echartRootJson.yAxis.axisLabel.fontSize = 22;
#else
                    echartRootJson.xAxis.axisLabel.fontSize = 8;
                    echartRootJson.yAxis.axisLabel.fontSize = 8;
#endif
                    echartRootJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(echartRootJson);
                    Application.RunOnMainThread(() =>
                    {
                        myEchartsView.ShowWithOptionJsonString(echartRootJsonString);
                        myEchartsView.ShowWithOption(ebl.optionString);
                    });
                }
@@ -930,7 +901,7 @@
                btnShowHistroyData_Day.IsSelected = false;
                btnShowHistroyData_Month.IsSelected = true;
                btnShowHistroyData_Week.IsSelected = false;
                curQueryType = "week";
                curQueryType = "month";
                LoadMothed_GetSensorHistoryData();
            };
            btnShowHistroyData_Week.MouseUpEventHandler = (sender, e) =>
@@ -939,7 +910,7 @@
                btnShowHistroyData_Day.IsSelected = false;
                btnShowHistroyData_Month.IsSelected = false;
                btnShowHistroyData_Week.IsSelected = true;
                curQueryType = "month";
                curQueryType = "week";
                LoadMothed_GetSensorHistoryData();
            };
HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
@@ -131,12 +131,12 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            //controlView.AddChidren(btnCollection);
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                controlView.AddChidren(btnCollection);
            }
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            arcBar = new DiyArcSeekBar()
            {
HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
@@ -19,10 +19,11 @@
                    {
                        return;
                    }
                    bodyView.btnTemp.Text = updateTemp.GetAttrState(FunctionAttributeKey.SetTemp);
                    var outinTemp = Convert.ToInt32(Convert.ToDouble(updateTemp.GetAttrState(FunctionAttributeKey.SetTemp)));
                    bodyView.btnTemp.Text = outinTemp.ToString();
                    bodyView.btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(updateTemp.GetAttrState(FunctionAttributeKey.RoomTemp))) + "°C";
                    bodyView.btnMode.UnSelectedImagePath = bodyView.fhTemp.GetModeIconPath(updateTemp.GetAttrState(FunctionAttributeKey.Mode));
                    bodyView.arcBar.Progress = Convert.ToInt32(Convert.ToDouble(updateTemp.GetAttrState(FunctionAttributeKey.SetTemp)));
                    bodyView.arcBar.Progress = outinTemp;
                    //if (updateTemp.trait_on_off.curValue.ToString() == "on")
                    //{
                    //    bodyView.arcBar.ThumbImagePath = "FunctionIcon/FloorHeating/DiyThumbIconOn.png";
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPage.cs
@@ -130,12 +130,12 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            //controlView.AddChidren(btnCollection);
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                controlView.AddChidren(btnCollection);
            }
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            dimmerBar = new WaveSeekBarOn()
            {
HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPage.cs
@@ -124,12 +124,12 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            //controlView.AddChidren(btnCollection);
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                controlView.AddChidren(btnCollection);
            }
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            dimmerBar = new WaveSeekBarOn()
            {
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
@@ -139,12 +139,12 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            //controlView.AddChidren(btnCollection);
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                controlView.AddChidren(btnCollection);
            }
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            //色盘的桌布控件(限制那个白色滑动球使用)
            var framePickerBack = new FrameLayout();
HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs
@@ -123,12 +123,12 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            //controlView.AddChidren(btnCollection);
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                controlView.AddChidren(btnCollection);
            }
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            btnSwitchIcon = new Button()
            {