From 9bef786592d10aaecc124fa7949519b2948df8be Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期三, 14 六月 2023 16:27:29 +0800
Subject: [PATCH] 安卓linqhone闪退修复

---
 HDL-ON_Android/Properties/AndroidManifest.xml                         |    2 
 HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs                               |   17 
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs                                  |    5 
 HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulSettingPage.cs         |  384 ++++++++++++++++++
 HDL-ON_Android/Assets/Language.ini                                    |   38 +
 HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs             |    6 
 HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulInfoPage.cs            |  346 ++++++++++++++++
 HDL_ON/UI/UI2/UserPage.cs                                             |    5 
 HDL_ON/Common/ApiUtlis.cs                                             |    1 
 HDL_ON/UI/UI2/2-Classification/RoomPage.cs                            |    2 
 HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs                     |   88 +++
 HDL_ON/HDL_ON.projitems                                               |    2 
 HDL-ON_Android/HDL-ON_Android.csproj                                  |    2 
 HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs           |   65 +++
 HDL-ON_Android/SplashActivity.cs                                      |   23 +
 HDL-ON_Android/Resources/Resource.designer.cs                         |  101 ----
 HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs               |    8 
 DLL/Linphone/Android/Shared.Droid.HDLLinphone.dll                     |    0 
 HDL_ON/UI/UI1-Login/LoginPage.cs                                      |   15 
 SiriIntents/Server/HttpUtil.cs                                        |    4 
 HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs                  |   19 
 HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs      |   10 
 HDL_ON/UI/UI1-Login/LoginPageBLL.cs                                   |    2 
 HDL_ON/Entity/FunctionList.cs                                         |    9 
 HDL_ON/Entity/Function/Function.cs                                    |    8 
 HDL_ON/DAL/Server/HttpUtil.cs                                         |    5 
 HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs |    2 
 HDL_ON/Common/R.cs                                                    |   28 +
 HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs   |    8 
 DLL/Linphone/Android/Shared.Droid.HDLLinphone1.dll                    |    0 
 30 files changed, 1,046 insertions(+), 159 deletions(-)

diff --git a/DLL/Linphone/Android/Shared.Droid.HDLLinphone.dll b/DLL/Linphone/Android/Shared.Droid.HDLLinphone.dll
index 8e7c9a7..773ddaa 100644
--- a/DLL/Linphone/Android/Shared.Droid.HDLLinphone.dll
+++ b/DLL/Linphone/Android/Shared.Droid.HDLLinphone.dll
Binary files differ
diff --git a/DLL/Linphone/Android/Shared.Droid.HDLLinphone0525.dll b/DLL/Linphone/Android/Shared.Droid.HDLLinphone1.dll
similarity index 98%
rename from DLL/Linphone/Android/Shared.Droid.HDLLinphone0525.dll
rename to DLL/Linphone/Android/Shared.Droid.HDLLinphone1.dll
index fb85f28..8e7c9a7 100644
--- a/DLL/Linphone/Android/Shared.Droid.HDLLinphone0525.dll
+++ b/DLL/Linphone/Android/Shared.Droid.HDLLinphone1.dll
Binary files differ
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index 9b3e021..29d54a3 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -614,6 +614,13 @@
 627=The set time needs to be later than the current time.
 628=Temporary password validity period cannot be greater than 24 hours.
 629=Successfully unbound the residence.
+630=Colorful function
+631=Starting color
+632=End color
+633=Working hours
+634=Recommen
+635=Current Color
+636=Color value number is 6 digits (composed of pure numbers/numbers+letters)
 
 
 
@@ -1900,6 +1907,15 @@
 627=璁剧疆鐨勬椂闂撮渶瑕佹櫄浜庡綋鍓嶆椂闂�
 628=涓存椂瀵嗙爜鏈夋晥鏈熶笉鑳藉ぇ浜�24灏忔椂銆�
 629=浣忓畢瑙g粦鎴愬姛銆�
+630=鐐僵鍔熻兘
+631=璧峰棰滆壊
+632=缁撴潫棰滆壊
+633=宸ヤ綔鏃堕暱
+634=鎺ㄨ崘
+635=褰撳墠棰滆壊
+636=鑹插�煎彿涓�6浣嶏紙鐢辩函鏁板瓧/鏁板瓧+瀛楁瘝缁勫悎锛�
+
+
 
 2532=璁垮閭�璇疯褰�
 2533=璁垮绠$悊
@@ -3184,6 +3200,13 @@
 627=The set time needs to be later than the current time.
 628=Temporary password validity period cannot be greater than 24 hours.
 629=Successfully unbound the residence.
+630=Colorful function
+631=Starting color
+632=End color
+633=Working hours
+634=Recommen
+635=Current Color
+636=Color value number is 6 digits (composed of pure numbers/numbers+letters)
 
 
 
@@ -4464,7 +4487,13 @@
 627=The set time needs to be later than the current time.
 628=Temporary password validity period cannot be greater than 24 hours.
 629=Successfully unbound the residence.
-
+630=Colorful function
+631=Starting color
+632=End color
+633=Working hours
+634=Recommen
+635=Current Color
+636=Color value number is 6 digits (composed of pure numbers/numbers+letters)
 
 
 
@@ -5734,6 +5763,13 @@
 627=The set time needs to be later than the current time.
 628=Temporary password validity period cannot be greater than 24 hours.
 629=Successfully unbound the residence.
+630=Colorful function
+631=Starting color
+632=End color
+633=Working hours
+634=Recommen
+635=Current Color
+636=Color value number is 6 digits (composed of pure numbers/numbers+letters)
 
 
 
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index 361fa47..9109abc 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -753,7 +753,7 @@
     <PackageReference Include="Xamarin.Android.Support.Design" Version="28.0.0.3" />
     <PackageReference Include="Xamarin.Android.Support.Core.Utils" Version="28.0.0.3" />
     <PackageReference Include="Xamarin.Android.Support.CustomTabs" Version="28.0.0.3" />
-    <PackageReference Include="Xamarin.Essentials" Version="1.6.0" />
+    <PackageReference Include="Xamarin.Essentials" Version="1.7.5" />
     <PackageReference Include="Xamarin.Android.Support.v4">
       <Version>28.0.0.3</Version>
     </PackageReference>
diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index 5ff24f5..25894ab 100644
--- a/HDL-ON_Android/Properties/AndroidManifest.xml
+++ b/HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.8.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202306071">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.8.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202306141">
 	<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
 	<uses-permission android:name="android.permission.RECEIVE_SMS" />
 	<!--鍙嬬洘-->
diff --git a/HDL-ON_Android/Resources/Resource.designer.cs b/HDL-ON_Android/Resources/Resource.designer.cs
index b127030..5d6ef56 100644
--- a/HDL-ON_Android/Resources/Resource.designer.cs
+++ b/HDL-ON_Android/Resources/Resource.designer.cs
@@ -25,104 +25,6 @@
 		
 		public static void UpdateIdValues()
 		{
-			global::Xamarin.Essentials.Resource.Attribute.font = global::HDL_ON_Android.Resource.Attribute.font;
-			global::Xamarin.Essentials.Resource.Attribute.fontProviderAuthority = global::HDL_ON_Android.Resource.Attribute.fontProviderAuthority;
-			global::Xamarin.Essentials.Resource.Attribute.fontProviderCerts = global::HDL_ON_Android.Resource.Attribute.fontProviderCerts;
-			global::Xamarin.Essentials.Resource.Attribute.fontProviderFetchStrategy = global::HDL_ON_Android.Resource.Attribute.fontProviderFetchStrategy;
-			global::Xamarin.Essentials.Resource.Attribute.fontProviderFetchTimeout = global::HDL_ON_Android.Resource.Attribute.fontProviderFetchTimeout;
-			global::Xamarin.Essentials.Resource.Attribute.fontProviderPackage = global::HDL_ON_Android.Resource.Attribute.fontProviderPackage;
-			global::Xamarin.Essentials.Resource.Attribute.fontProviderQuery = global::HDL_ON_Android.Resource.Attribute.fontProviderQuery;
-			global::Xamarin.Essentials.Resource.Attribute.fontStyle = global::HDL_ON_Android.Resource.Attribute.fontStyle;
-			global::Xamarin.Essentials.Resource.Attribute.fontWeight = global::HDL_ON_Android.Resource.Attribute.fontWeight;
-			global::Xamarin.Essentials.Resource.Boolean.abc_action_bar_embed_tabs = global::HDL_ON_Android.Resource.Boolean.abc_action_bar_embed_tabs;
-			global::Xamarin.Essentials.Resource.Color.notification_action_color_filter = global::HDL_ON_Android.Resource.Color.notification_action_color_filter;
-			global::Xamarin.Essentials.Resource.Color.notification_icon_bg_color = global::HDL_ON_Android.Resource.Color.notification_icon_bg_color;
-			global::Xamarin.Essentials.Resource.Color.ripple_material_light = global::HDL_ON_Android.Resource.Color.ripple_material_light;
-			global::Xamarin.Essentials.Resource.Color.secondary_text_default_material_light = global::HDL_ON_Android.Resource.Color.secondary_text_default_material_light;
-			global::Xamarin.Essentials.Resource.Dimension.compat_button_inset_horizontal_material = global::HDL_ON_Android.Resource.Dimension.compat_button_inset_horizontal_material;
-			global::Xamarin.Essentials.Resource.Dimension.compat_button_inset_vertical_material = global::HDL_ON_Android.Resource.Dimension.compat_button_inset_vertical_material;
-			global::Xamarin.Essentials.Resource.Dimension.compat_button_padding_horizontal_material = global::HDL_ON_Android.Resource.Dimension.compat_button_padding_horizontal_material;
-			global::Xamarin.Essentials.Resource.Dimension.compat_button_padding_vertical_material = global::HDL_ON_Android.Resource.Dimension.compat_button_padding_vertical_material;
-			global::Xamarin.Essentials.Resource.Dimension.compat_control_corner_material = global::HDL_ON_Android.Resource.Dimension.compat_control_corner_material;
-			global::Xamarin.Essentials.Resource.Dimension.notification_action_icon_size = global::HDL_ON_Android.Resource.Dimension.notification_action_icon_size;
-			global::Xamarin.Essentials.Resource.Dimension.notification_action_text_size = global::HDL_ON_Android.Resource.Dimension.notification_action_text_size;
-			global::Xamarin.Essentials.Resource.Dimension.notification_big_circle_margin = global::HDL_ON_Android.Resource.Dimension.notification_big_circle_margin;
-			global::Xamarin.Essentials.Resource.Dimension.notification_content_margin_start = global::HDL_ON_Android.Resource.Dimension.notification_content_margin_start;
-			global::Xamarin.Essentials.Resource.Dimension.notification_large_icon_height = global::HDL_ON_Android.Resource.Dimension.notification_large_icon_height;
-			global::Xamarin.Essentials.Resource.Dimension.notification_large_icon_width = global::HDL_ON_Android.Resource.Dimension.notification_large_icon_width;
-			global::Xamarin.Essentials.Resource.Dimension.notification_main_column_padding_top = global::HDL_ON_Android.Resource.Dimension.notification_main_column_padding_top;
-			global::Xamarin.Essentials.Resource.Dimension.notification_media_narrow_margin = global::HDL_ON_Android.Resource.Dimension.notification_media_narrow_margin;
-			global::Xamarin.Essentials.Resource.Dimension.notification_right_icon_size = global::HDL_ON_Android.Resource.Dimension.notification_right_icon_size;
-			global::Xamarin.Essentials.Resource.Dimension.notification_right_side_padding_top = global::HDL_ON_Android.Resource.Dimension.notification_right_side_padding_top;
-			global::Xamarin.Essentials.Resource.Dimension.notification_small_icon_background_padding = global::HDL_ON_Android.Resource.Dimension.notification_small_icon_background_padding;
-			global::Xamarin.Essentials.Resource.Dimension.notification_small_icon_size_as_large = global::HDL_ON_Android.Resource.Dimension.notification_small_icon_size_as_large;
-			global::Xamarin.Essentials.Resource.Dimension.notification_subtext_size = global::HDL_ON_Android.Resource.Dimension.notification_subtext_size;
-			global::Xamarin.Essentials.Resource.Dimension.notification_top_pad = global::HDL_ON_Android.Resource.Dimension.notification_top_pad;
-			global::Xamarin.Essentials.Resource.Dimension.notification_top_pad_large_text = global::HDL_ON_Android.Resource.Dimension.notification_top_pad_large_text;
-			global::Xamarin.Essentials.Resource.Drawable.notification_action_background = global::HDL_ON_Android.Resource.Drawable.notification_action_background;
-			global::Xamarin.Essentials.Resource.Drawable.notification_bg = global::HDL_ON_Android.Resource.Drawable.notification_bg;
-			global::Xamarin.Essentials.Resource.Drawable.notification_bg_low = global::HDL_ON_Android.Resource.Drawable.notification_bg_low;
-			global::Xamarin.Essentials.Resource.Drawable.notification_bg_low_normal = global::HDL_ON_Android.Resource.Drawable.notification_bg_low_normal;
-			global::Xamarin.Essentials.Resource.Drawable.notification_bg_low_pressed = global::HDL_ON_Android.Resource.Drawable.notification_bg_low_pressed;
-			global::Xamarin.Essentials.Resource.Drawable.notification_bg_normal = global::HDL_ON_Android.Resource.Drawable.notification_bg_normal;
-			global::Xamarin.Essentials.Resource.Drawable.notification_bg_normal_pressed = global::HDL_ON_Android.Resource.Drawable.notification_bg_normal_pressed;
-			global::Xamarin.Essentials.Resource.Drawable.notification_icon_background = global::HDL_ON_Android.Resource.Drawable.notification_icon_background;
-			global::Xamarin.Essentials.Resource.Drawable.notification_template_icon_bg = global::HDL_ON_Android.Resource.Drawable.notification_template_icon_bg;
-			global::Xamarin.Essentials.Resource.Drawable.notification_template_icon_low_bg = global::HDL_ON_Android.Resource.Drawable.notification_template_icon_low_bg;
-			global::Xamarin.Essentials.Resource.Drawable.notification_tile_bg = global::HDL_ON_Android.Resource.Drawable.notification_tile_bg;
-			global::Xamarin.Essentials.Resource.Drawable.notify_panel_notification_icon_bg = global::HDL_ON_Android.Resource.Drawable.notify_panel_notification_icon_bg;
-			global::Xamarin.Essentials.Resource.Id.actions = global::HDL_ON_Android.Resource.Id.actions;
-			global::Xamarin.Essentials.Resource.Id.action_container = global::HDL_ON_Android.Resource.Id.action_container;
-			global::Xamarin.Essentials.Resource.Id.action_divider = global::HDL_ON_Android.Resource.Id.action_divider;
-			global::Xamarin.Essentials.Resource.Id.action_image = global::HDL_ON_Android.Resource.Id.action_image;
-			global::Xamarin.Essentials.Resource.Id.action_text = global::HDL_ON_Android.Resource.Id.action_text;
-			global::Xamarin.Essentials.Resource.Id.async = global::HDL_ON_Android.Resource.Id.async;
-			global::Xamarin.Essentials.Resource.Id.blocking = global::HDL_ON_Android.Resource.Id.blocking;
-			global::Xamarin.Essentials.Resource.Id.chronometer = global::HDL_ON_Android.Resource.Id.chronometer;
-			global::Xamarin.Essentials.Resource.Id.forever = global::HDL_ON_Android.Resource.Id.forever;
-			global::Xamarin.Essentials.Resource.Id.icon = global::HDL_ON_Android.Resource.Id.icon;
-			global::Xamarin.Essentials.Resource.Id.icon_group = global::HDL_ON_Android.Resource.Id.icon_group;
-			global::Xamarin.Essentials.Resource.Id.info = global::HDL_ON_Android.Resource.Id.info;
-			global::Xamarin.Essentials.Resource.Id.italic = global::HDL_ON_Android.Resource.Id.italic;
-			global::Xamarin.Essentials.Resource.Id.line1 = global::HDL_ON_Android.Resource.Id.line1;
-			global::Xamarin.Essentials.Resource.Id.line3 = global::HDL_ON_Android.Resource.Id.line3;
-			global::Xamarin.Essentials.Resource.Id.normal = global::HDL_ON_Android.Resource.Id.normal;
-			global::Xamarin.Essentials.Resource.Id.notification_background = global::HDL_ON_Android.Resource.Id.notification_background;
-			global::Xamarin.Essentials.Resource.Id.notification_main_column = global::HDL_ON_Android.Resource.Id.notification_main_column;
-			global::Xamarin.Essentials.Resource.Id.notification_main_column_container = global::HDL_ON_Android.Resource.Id.notification_main_column_container;
-			global::Xamarin.Essentials.Resource.Id.right_icon = global::HDL_ON_Android.Resource.Id.right_icon;
-			global::Xamarin.Essentials.Resource.Id.right_side = global::HDL_ON_Android.Resource.Id.right_side;
-			global::Xamarin.Essentials.Resource.Id.text = global::HDL_ON_Android.Resource.Id.text;
-			global::Xamarin.Essentials.Resource.Id.text2 = global::HDL_ON_Android.Resource.Id.text2;
-			global::Xamarin.Essentials.Resource.Id.time = global::HDL_ON_Android.Resource.Id.time;
-			global::Xamarin.Essentials.Resource.Id.title = global::HDL_ON_Android.Resource.Id.title;
-			global::Xamarin.Essentials.Resource.Integer.status_bar_notification_info_maxnum = global::HDL_ON_Android.Resource.Integer.status_bar_notification_info_maxnum;
-			global::Xamarin.Essentials.Resource.Layout.notification_action = global::HDL_ON_Android.Resource.Layout.notification_action;
-			global::Xamarin.Essentials.Resource.Layout.notification_action_tombstone = global::HDL_ON_Android.Resource.Layout.notification_action_tombstone;
-			global::Xamarin.Essentials.Resource.Layout.notification_template_custom_big = global::HDL_ON_Android.Resource.Layout.notification_template_custom_big;
-			global::Xamarin.Essentials.Resource.Layout.notification_template_icon_group = global::HDL_ON_Android.Resource.Layout.notification_template_icon_group;
-			global::Xamarin.Essentials.Resource.Layout.notification_template_part_chronometer = global::HDL_ON_Android.Resource.Layout.notification_template_part_chronometer;
-			global::Xamarin.Essentials.Resource.Layout.notification_template_part_time = global::HDL_ON_Android.Resource.Layout.notification_template_part_time;
-			global::Xamarin.Essentials.Resource.String.status_bar_notification_info_overflow = global::HDL_ON_Android.Resource.String.status_bar_notification_info_overflow;
-			global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification = global::HDL_ON_Android.Resource.Style.TextAppearance_Compat_Notification;
-			global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification_Info = global::HDL_ON_Android.Resource.Style.TextAppearance_Compat_Notification_Info;
-			global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification_Line2 = global::HDL_ON_Android.Resource.Style.TextAppearance_Compat_Notification_Line2;
-			global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification_Time = global::HDL_ON_Android.Resource.Style.TextAppearance_Compat_Notification_Time;
-			global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification_Title = global::HDL_ON_Android.Resource.Style.TextAppearance_Compat_Notification_Title;
-			global::Xamarin.Essentials.Resource.Style.Widget_Compat_NotificationActionContainer = global::HDL_ON_Android.Resource.Style.Widget_Compat_NotificationActionContainer;
-			global::Xamarin.Essentials.Resource.Style.Widget_Compat_NotificationActionText = global::HDL_ON_Android.Resource.Style.Widget_Compat_NotificationActionText;
-			global::Xamarin.Essentials.Resource.Styleable.FontFamily = global::HDL_ON_Android.Resource.Styleable.FontFamily;
-			global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont = global::HDL_ON_Android.Resource.Styleable.FontFamilyFont;
-			global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_font = global::HDL_ON_Android.Resource.Styleable.FontFamilyFont_font;
-			global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_fontStyle = global::HDL_ON_Android.Resource.Styleable.FontFamilyFont_fontStyle;
-			global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_fontWeight = global::HDL_ON_Android.Resource.Styleable.FontFamilyFont_fontWeight;
-			global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderAuthority = global::HDL_ON_Android.Resource.Styleable.FontFamily_fontProviderAuthority;
-			global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderCerts = global::HDL_ON_Android.Resource.Styleable.FontFamily_fontProviderCerts;
-			global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderFetchStrategy = global::HDL_ON_Android.Resource.Styleable.FontFamily_fontProviderFetchStrategy;
-			global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderFetchTimeout = global::HDL_ON_Android.Resource.Styleable.FontFamily_fontProviderFetchTimeout;
-			global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderPackage = global::HDL_ON_Android.Resource.Styleable.FontFamily_fontProviderPackage;
-			global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderQuery = global::HDL_ON_Android.Resource.Styleable.FontFamily_fontProviderQuery;
-			global::Xamarin.Essentials.Resource.Xml.xamarin_essentials_fileprovider_file_paths = global::HDL_ON_Android.Resource.Xml.xamarin_essentials_fileprovider_file_paths;
 			global::ZXing.Mobile.Resource.Id.contentFrame = global::HDL_ON_Android.Resource.Id.contentFrame;
 			global::ZXing.Mobile.Resource.Layout.zxingscanneractivitylayout = global::HDL_ON_Android.Resource.Layout.zxingscanneractivitylayout;
 			global::ZXing.Mobile.Resource.Layout.zxingscannerfragmentlayout = global::HDL_ON_Android.Resource.Layout.zxingscannerfragmentlayout;
@@ -26413,9 +26315,6 @@
 			
 			// aapt resource value: 0x7F120004
 			public const int provider_paths = 2131886084;
-			
-			// aapt resource value: 0x7F120005
-			public const int xamarin_essentials_fileprovider_file_paths = 2131886085;
 			
 			static Xml()
 			{
diff --git a/HDL-ON_Android/SplashActivity.cs b/HDL-ON_Android/SplashActivity.cs
index 76e7e2b..c9f122a 100644
--- a/HDL-ON_Android/SplashActivity.cs
+++ b/HDL-ON_Android/SplashActivity.cs
@@ -1,9 +1,12 @@
 锘縰sing System;
+using Android;
 using Android.App;
 using Android.Content;
 using Android.Content.PM;
 using Android.Net;
 using Android.OS;
+using Android.Support.V4.App;
+using Android.Support.V4.Content;
 using CN.Jpush.Android.Api;
 //using Android.Widget;
 using Com.Hdl.ON.Jpush.Androidjpush;
@@ -92,6 +95,25 @@
             }
         }
 
+
+        public void Permissions()
+        {
+            string[] mPermissionList = new string[]
+            {
+                Manifest.Permission.ReadSms
+            };
+
+            foreach (string permissions in mPermissionList)
+            {
+                if (ContextCompat.CheckSelfPermission(this, permissions) != 0)
+                {
+                    ActivityCompat.RequestPermissions(this, new string[] { permissions }, 1);
+                }
+            }
+        }
+
+
+
         void initOhterSdk()
         {
             //娉ㄥ唽鏈鐞嗗紓甯镐簨浠�
@@ -104,7 +126,6 @@
             JPushInterface.Init(this);
 
             Com.Chteam.Agent.BuglyAgentHelper.Init(this.ApplicationContext, "316a8f5d83");
-
 
 
             BaseActivity.OnCreateActoin += (activity, application) =>
diff --git a/HDL_ON/Common/ApiUtlis.cs b/HDL_ON/Common/ApiUtlis.cs
index c5b684b..46b4178 100644
--- a/HDL_ON/Common/ApiUtlis.cs
+++ b/HDL_ON/Common/ApiUtlis.cs
@@ -286,6 +286,7 @@
                                 //濡傛灉妫�娴嬬嚎绋嬫病鍚姩锛屾墠缁х画涓嬮潰鎿嶄綔 鍥犱负App鏈夊彲鑳藉垰鍚姩椹笂鏀跺埌鎺ㄩ�佷簡锛岀劧鍚庢墠鎵ц鍒拌繖閲�
                                 if (HDLLinphone.Current.CheckIncomingCallThreadIsNull())
                                 {
+                                    
                                     //褰撳墠浣忓畢鏄疕DL鍙瀵硅绫诲瀷鐨勮澶�
                                     if (isInterphoneType_HDL)
                                     {
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index 971b2ab..cea239f 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -5,6 +5,34 @@
     public static class StringId
     {
         /// <summary>
+        /// 鑹插�煎彿涓�6浣嶏紙鐢辩函鏁板瓧/鏁板瓧+瀛楁瘝缁勫悎锛�
+        /// </summary>
+        public const int CurHexTip = 636;
+        /// <summary>
+        /// 褰撳墠棰滆壊
+        /// </summary>
+        public const int CurColor = 635;
+        /// <summary>
+        /// 鎺ㄨ崘
+        /// </summary>
+        public const int Recommen = 634;
+        /// <summary>
+        /// 宸ヤ綔鏃堕暱
+        /// </summary>
+        public const int WorkingHours = 633;
+        /// <summary>
+        /// 缁撴潫棰滆壊
+        /// </summary>
+        public const int EndColor = 632;
+        /// <summary>
+        /// 璧峰棰滆壊
+        /// </summary>
+        public const int StartColor = 631;
+        /// <summary>
+        /// 鐐僵鍔熻兘
+        /// </summary>
+        public const int ColorfulFunction = 630;
+        /// <summary>
         /// 浣忓畢瑙g粦鎴愬姛
         /// </summary>
         public const int SuccessfullyUnboundTheResidence = 629;
diff --git a/HDL_ON/DAL/Server/HttpUtil.cs b/HDL_ON/DAL/Server/HttpUtil.cs
index 211486b..4766d4f 100644
--- a/HDL_ON/DAL/Server/HttpUtil.cs
+++ b/HDL_ON/DAL/Server/HttpUtil.cs
@@ -18,8 +18,8 @@
         /// 鍥哄畾鍩熷悕,姝e紡鐜
         /// 鍏叡鍩熷悕灏辫繎瑙f瀽
         /// </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";
         const string APP_KEY = "HDL-HOME-APP-TEST";
         const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
         //public const string GlobalRequestHttpsHost = "http://59.41.255.150:7777";//mmmm
@@ -45,7 +45,6 @@
         #endregion
 
         #region **********缃戠粶璇锋眰灏佽**********
-
         /// <summary>
         ///  Get  璇锋眰鏈嶅姟鍣ㄦ柟娉�
         /// </summary>
diff --git a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
index 73c7e55..8badede 100644
--- a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
+++ b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
@@ -242,9 +242,22 @@
                 {
                     Application.RunOnMainThread(() =>
                     {
-                        InitLinphone();
+                        try
+                        {
+                            InitLinphone();
+                        }
+                        catch (Exception ex)
+                        {
+                            MainPage.Log($"InitLinphone exception : {ex.Message}");
+                        }
                         mHDLSipInfo.homeId = mHDLCallVideoInfo.HomeId;
-                        SetAccountAndLogin(mHDLSipInfo, mHDLCallVideoInfo.InterphoneType);
+                        try { 
+                            SetAccountAndLogin(mHDLSipInfo, mHDLCallVideoInfo.InterphoneType);
+                        }
+                        catch (Exception ex)
+                        {
+                            MainPage.Log($"SetAccountAndLogin exception : {ex.Message}");
+                        }
                         Utlis.WriteLine("CALL 鑾峰彇SIP璐﹀彿鎴愬姛锛�" + mHDLSipInfo.sipAccount);
                     });
                 }
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 8db999e..323eb48 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -1103,11 +1103,11 @@
         /// </summary>
         public const string ColorfulBegin = "colorful_begin";
         /// <summary>
-        /// 鐐僵杩愯鏃堕棿
+        /// 鐐僵缁撴潫棰滆壊
         /// </summary>
         public const string ColorfulEnd = "colorful_end";
         /// <summary>
-        /// colorful_time
+        /// 鐐僵杩愯鏃堕棿
         /// </summary>
         public const string ColorfulTime = "colorful_time";
         /// <summary>
@@ -1427,6 +1427,10 @@
         /// </summary>
         public const string OtherCommon = "other.common";
         /// <summary>
+        /// 搴忓垪
+        /// </summary>
+        public const string CommonSeries = "other.series";
+        /// <summary>
         /// 澶у崕鎽勫儚澶�
         /// </summary>
         public const string IpCam_Imou = "security.ipcam.imou";
diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index cf7a775..2b3bb70 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -143,6 +143,15 @@
             return Functions.FindAll((obj) => spkList.Contains(obj.spk));
         }
         /// <summary>
+        /// 搴忓垪鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public List<Function> GetSeries()
+        {
+            return Functions.FindAll((obj) => obj.spk == SPK.CommonSeries);
+        }
+
+        /// <summary>
         /// 绐楀笜鍒楄〃
         /// </summary>
         public List<Function> GetCurtainList()
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index 2943751..4cfc7a7 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -551,6 +551,8 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorLockPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorLockListPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Light\GroupControlPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Light\ColorfulSettingPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Light\ColorfulInfoPage.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
diff --git a/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs b/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
index 3608632..9f4971b 100644
--- a/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
+++ b/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
@@ -134,7 +134,7 @@
             btnDeviceName.TextColor = CSS_Color.FirstLevelTitleColor;
             btnDeviceName.TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel;
             btnDeviceName.Text = device.name;
-            btnDeviceName.Width = btnDeviceName.GetRealWidthByText();
+            //btnDeviceName.Width = btnDeviceName.GetRealWidthByText();
             FrameWhiteCentet1.AddChidren(btnDeviceName);
             //鎴块棿鍚嶅瓧
             this.btnRoomName = new NormalViewControl(270, 21, true);
@@ -143,7 +143,7 @@
             btnRoomName.TextColor = CSS_Color.PromptingColor1;
             btnRoomName.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
             btnRoomName.Text = device.GetRoomListName();
-            btnRoomName.Width = btnRoomName.GetRealWidthByText();
+            //btnRoomName.Width = btnRoomName.GetRealWidthByText();
             FrameWhiteCentet1.AddChidren(btnRoomName);
             if (ShowColltionButton)
             {
@@ -327,10 +327,10 @@
 
                     //浠庢柊璁$畻瀹藉害
                     this.btnDeviceName.Text = btnHigherDeviceName.Text;
-                    this.btnDeviceName.Width = this.btnDeviceName.GetRealWidthByText();
+                    //this.btnDeviceName.Width = this.btnDeviceName.GetRealWidthByText();
 
                     this.btnRoomName.Text = btnHigherRoom.Text;
-                    this.btnRoomName.Width = this.btnRoomName.GetRealWidthByText();
+                    //this.btnRoomName.Width = this.btnRoomName.GetRealWidthByText();
 
                     //鍥炶皟浜嬩欢
                     this.SettionFinishEvent?.Invoke();
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index 0eda5db..8791ad1 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -37,6 +37,10 @@
                 }
             };
             BaseActivity.ShowKeyboardEvent = () => {
+                if(this.Y != 0)
+                {
+                    return;
+                }
                 try
                 {
                     if (etPassword.Foucs)
@@ -96,6 +100,7 @@
                 waitPage.RemoveFromParent();
                 waitPage = null;
             }
+            Application.HideSoftInput();
 
 #if __ANDROID__
             BaseActivity.HideKeyboardEvent = () => {
@@ -246,6 +251,7 @@
 #if __Android__
             OnAppConfig.Instance.isAgreePrivacyPolicy = true;
 #endif
+            this.BackgroundColor = CSS_Color.MainBackgroundColor;
             var btnIcon = new Button()
             {
                 X = Application.GetRealWidth(28),
@@ -313,8 +319,8 @@
                     //etAccount.Text = "13751916353";
                     etAccount.Text = "13549566666";
                     etAccount.Text = "18316672920";
-                    etAccount.Text = "support7@hdlautomation.com";
                     etAccount.Text = "13375012446";//娴嬭瘯鏈嶅姟鍣�
+                    etAccount.Text = "support7@hdlautomation.com";
                 }
                 else
                 {
@@ -772,8 +778,13 @@
                         new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
                         new FunctionAttributes() { key = "brightness",value =new List<string>(){ "0","100" }, curValue="100",state = "100"   },
                         new FunctionAttributes() { key = "rgb",value =new List<string>(){ "0","100" }, curValue="0,0,0",state = "0,0,0"   },
-                        //new FunctionAttributes() { key = "fade_time",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
+                        new FunctionAttributes() { key = "fade_time",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                         new FunctionAttributes() { key = "delay",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
+                        //new FunctionAttributes() { key = "colorful",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
+                        //new FunctionAttributes() { key = "colorful_begin",value =new List<string>(){ "0","100" }, curValue="0,0,0",state = "0,0,0"   },
+                        //new FunctionAttributes() { key = "colorful_end",value =new List<string>(){ "0","100" }, curValue="0,0,0",state = "0,0,0"   },
+                        //new FunctionAttributes() { key = "colorful_time",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
+                        
                     },
                 };
                 lightRgb1.SaveFunctionFile();
diff --git a/HDL_ON/UI/UI1-Login/LoginPageBLL.cs b/HDL_ON/UI/UI1-Login/LoginPageBLL.cs
index 13fc4ad..e1cded2 100644
--- a/HDL_ON/UI/UI1-Login/LoginPageBLL.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPageBLL.cs
@@ -479,8 +479,8 @@
             //褰撶劍鐐瑰湪瀵嗙爜鏂囨湰妗嗘椂锛岀偣鍑婚敭鐩樺洖鎾ゆ寜閿紝瑙﹀彂鐨勪簨浠�
             etPassword.EditorEnterAction += (obj) =>
             {
-                LoginEvent();
                 Application.HideSoftInput();
+                LoginEvent();
             };
         }
 
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index 0c52ed6..c4d14ab 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -117,6 +117,11 @@
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
 
             this.VerticalScrollBarEnabled = false;
+
+#if DEBUG
+            DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl = true;
+#endif
+
 #if __IOS__
             //鑷姩鍋忕Щ鍙栨秷
             if (UIKit.UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
diff --git a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
index f19a9d6..881b431 100644
--- a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
@@ -95,7 +95,7 @@
 
                 functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
 
-                if (function.spk == SPK.LightRGB || function.spk == SPK.LightDimming)
+                if (function.spk == SPK.LightRGBW || function.spk == SPK.LightRGB || function.spk == SPK.LightDimming)
                 {
                     var functionDiv = new FunctionControlZone(function, null)
                     {
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
index 76991c1..f95f5ce 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
@@ -390,7 +390,7 @@
                                     }
                                     catch (Exception ex)
                                     {
-                                        MainPage.Log($"娣诲姞缇ゆ帶鎴愬姛锛岃浆璇戣繑鍥炴暟鎹け璐�:{ex.Message}");
+                                        MainPage.Log($"娣诲姞缇ゆ帶寮傚父锛岃浆璇戣繑鍥炴暟鎹け璐�:{ex.Message}");
                                     }
                                     backActon?.Invoke(groupControl);
                                     this.RemoveFromParent();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs
index bdc5072..4ee6402 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs
@@ -246,7 +246,7 @@
             seekBarVoiceControl.BindPageLayout();
 
             //澹伴煶鐧惧垎姣�
-            this.btnVoicePersent = new NormalViewControl(Application.GetRealWidth(50), btnVoice.Height, false);
+            this.btnVoicePersent = new NormalViewControl(Application.GetRealWidth(55), btnVoice.Height, false);
             btnVoicePersent.X = seekBarVoiceControl.Right + Application.GetRealWidth(8) - seekBarVoiceControl.SeekBarPadding;
             btnVoicePersent.Y = btnVoice.Y;
             btnVoicePersent.TextColor = CSS_Color.PromptingColor1;
@@ -567,7 +567,7 @@
             this.frameTempPsw.AddChidren(picBack);
 
             //瀵嗙爜鏄剧ず鎺т欢
-            var btnPassword = new NormalViewControl(150, 50, true);
+            var btnPassword = new NormalViewControl(258, 50, true);
             btnPassword.Gravity = Gravity.CenterHorizontal;
             btnPassword.TextSize = CSS_FontSize.SubheadingFontSize;
             btnPassword.TextColor = CSS_Color.MainBackgroundColor;
@@ -919,7 +919,7 @@
                     }
                 }
                 this.seekBarVoiceControl.Progress = this.doorLockData.Voice;
-                this.btnVoicePersent.Text = this.doorLockData.Voice.ToString();
+                this.btnVoicePersent.Text = this.doorLockData.Voice.ToString()+"%";
             }
             catch (Exception ex)
             {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
index 431655c..3eb5f49 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
@@ -205,11 +205,19 @@
                 TextAlignment = TextAlignment.Center,
             };
             controlView.AddChidren(btnTemp);
+            if (btnTemp.Text.Length > 2)
+            {
+                btnTemp.TextSize = 44;
+            }
+            else
+            {
+                btnTemp.TextSize = 56;
+            }
 
             btnTempUint = new Button()
             {
                 X = btnTemp.Right,
-                Y = btnTemp.Y,
+                Y = btnTemp.Y+ Application.GetRealHeight(5),
                 Width = Application.GetRealWidth(30),
                 Height = Application.GetRealWidth(25),
                 TextColor = CSS_Color.FirstLevelTitleColor,
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
index 9543bc9..0aa879c 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
@@ -43,6 +43,14 @@
                     //    bodyView.btnSwitch.IsSelected = false;
                     //    bodyView.arcBar.IsOffline = true;
                     //}
+                    if (bodyView.btnTemp.Text.Length > 2)
+                    {
+                        bodyView.btnTemp.TextSize = 44;
+                    }
+                    else
+                    {
+                        bodyView.btnTemp.TextSize = 56;
+                    }
 
 
                     //app鑷繁鎺у埗鐨勪笉鐢ㄦ洿鏂帮紝浼氶�犳垚璺冲姩
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs b/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
index 90902b3..9add936 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
@@ -963,6 +963,71 @@
 
             }
 
+            else if(function.spk == SPK.LightRGB)
+            {
+                contentView.AddChidren(new Button
+                {
+                    Height = Application.GetRealHeight(8),
+                });
+
+                var list = FunctionList.List.GetSeries();
+                foreach (var temp in list)
+                {
+
+                    #region 
+                    var viewRow0 = new FrameLayout()
+                    {
+                        Height = Application.GetRealHeight(55),
+                        BackgroundColor = CSS_Color.MainBackgroundColor,
+                    };
+                    contentView.AddChidren(viewRow0);
+
+
+                    var btnRowTitle0 = new Button()
+                    {
+                        X = Application.GetRealWidth(16),
+                        Width = Application.GetRealWidth(160),
+                        TextAlignment = TextAlignment.CenterLeft,
+                        TextColor = CSS_Color.FirstLevelTitleColor,
+                        TextSize = CSS_FontSize.SubheadingFontSize,
+                        Text = temp.name,
+                    };
+                    viewRow0.AddChidren(btnRowTitle0);
+
+                    var btnSwtichIcon0 = new Button()
+                    {
+                        X = Application.GetRealWidth(322),
+                        Gravity = Gravity.CenterVertical,
+                        Width = Application.GetMinRealAverage(36),
+                        Height = Application.GetMinRealAverage(36),
+                        UnSelectedImagePath = "Public/Switch_2.png",
+                        SelectedImagePath = "Public/SwitchOn_2.png",
+                    };
+                    viewRow0.AddChidren(btnSwtichIcon0);
+
+                    DeviceMessageRules deviceMessageRules = new DeviceMessageRules()
+                    {
+                        deviceId = function.deviceId
+                    };
+
+                    btnSwtichIcon0.MouseUpEventHandler = (sender, e) =>
+                    {
+
+                    };
+
+                    viewRow0.AddChidren(new Button()
+                    {
+                        Gravity = Gravity.CenterHorizontal,
+                        Y = Application.GetRealHeight(54),
+                        BackgroundColor = CSS_Color.DividingLineColor,
+                        Width = Application.GetRealWidth(343),
+                        Height = Application.GetRealHeight(1)
+                    });
+                    #endregion
+                }
+
+            }
+
             LoadEventList();
         }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulInfoPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulInfoPage.cs
new file mode 100644
index 0000000..8b683de
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulInfoPage.cs
@@ -0,0 +1,346 @@
+锘�
+using System;
+using System.Collections.Generic;
+using HDL_ON.Entity;
+using HDL_ON.Stan;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    public class ColorfulInfoPage : FrameLayout
+    {
+        FrameLayout bodyView;
+
+        Light lightTemp;
+        Function function;
+
+        int hour = 0;
+        int minute = 0;
+        int second = 0;
+
+        public ColorfulInfoPage(Function function)
+        {
+            bodyView = this;
+            lightTemp = new Light();
+            this.function = function;
+        }
+
+        public void LoadPage()
+        {
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+            new TopViewDiv(bodyView, Language.StringByID(StringId.Setting)).LoadTopView();
+
+
+            var contentView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(64),
+                Height = Application.GetRealHeight(500),
+                ScrollEnabled = false,
+            };
+            bodyView.AddChidren(contentView);
+
+            #region 璧峰棰滆壊
+            var startView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(50),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            contentView.AddChidren(startView);
+
+            var btnStartTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.StartColor,
+            };
+            startView.AddChidren(btnStartTitle);
+
+            var btnStartRight = new Button()
+            {
+                X = Application.GetRealWidth(339),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/Right.png",
+            };
+            startView.AddChidren(btnStartRight);
+
+            var btnStartColor = new Button()
+            {
+                X = Application.GetRealWidth(295),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealWidth(28),
+                Radius = (uint)Application.GetRealWidth(14),
+                BorderColor = CSS_Color.DividingLineColor,
+                BorderWidth = 1,
+                BackgroundColor = (uint)(0xFF000000 + lightTemp.GetRGBcolor(function.GetAttrState(FunctionAttributeKey.ColorfulBegin)))
+            };
+            startView.AddChidren(btnStartColor);
+
+            startView.AddChidren(new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(49), Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
+
+            btnStartColor.MouseUpEventHandler = (sender, e) => {
+                Action<uint> action = (color) => {
+                    btnStartColor.BackgroundColor = color;
+                    function.SetAttrState(FunctionAttributeKey.ColorfulBegin, color);
+                };
+                var rgbView = new ColorfulSettingPage(action);
+                MainPage.BasePageView.AddChidren(rgbView);
+                rgbView.LoadPage(function.GetAttrState(FunctionAttributeKey.ColorfulBegin));
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+
+            #endregion
+
+
+            #region 缁撴潫棰滆壊
+            var endColorView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(50),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            contentView.AddChidren(endColorView);
+
+            var btnEndColorTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.EndColor,
+            };
+            endColorView.AddChidren(btnEndColorTitle);
+
+            var btnEndColorRight = new Button()
+            {
+                X = Application.GetRealWidth(339),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/Right.png",
+            };
+            endColorView.AddChidren(btnEndColorRight);
+
+            var btnEndColor = new Button()
+            {
+                X = Application.GetRealWidth(295),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealWidth(28),
+                Radius = (uint)Application.GetRealWidth(14),
+                BorderColor = CSS_Color.DividingLineColor,
+                BorderWidth = 1,
+                BackgroundColor = (uint)(0xFF000000 + lightTemp.GetRGBcolor(function.GetAttrState(FunctionAttributeKey.ColorfulBegin)))
+            };
+            endColorView.AddChidren(btnEndColor);
+
+            endColorView.AddChidren(new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(49), Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
+
+            btnEndColor.MouseUpEventHandler = (sender, e) => {
+                Action<uint> action = (color) => {
+                    btnEndColor.BackgroundColor = color;
+                    function.SetAttrState(FunctionAttributeKey.ColorfulEnd, color);
+                };
+                var rgbView = new ColorfulSettingPage(action);
+                MainPage.BasePageView.AddChidren(rgbView);
+                rgbView.LoadPage(function.GetAttrState(FunctionAttributeKey.ColorfulEnd));
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+
+
+            #endregion
+
+
+            #region 宸ヤ綔鏃堕暱
+            var workHoursView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(50),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            contentView.AddChidren(workHoursView);
+
+            var btnWorkHoursTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.WorkingHours,
+            };
+            workHoursView.AddChidren(btnWorkHoursTitle);
+
+            var btnWorkHoursRight = new Button()
+            {
+                X = Application.GetRealWidth(339),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/Right.png",
+            };
+            workHoursView.AddChidren(btnWorkHoursRight);
+
+            var btnWorkHours = new Button()
+            {
+                X = Application.GetRealWidth(195),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(128),
+                Height = Application.GetRealWidth(28),
+                TextAlignment = TextAlignment.CenterRight,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextColor = CSS_Color.PromptingColor1,
+                Text = function.GetAttrState(FunctionAttributeKey.ColorfulTime)
+            };
+            workHoursView.AddChidren(btnWorkHours);
+
+            var waitPage = new Loading();
+            this.AddChidren(waitPage);
+
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+                
+                waitPage.Start("");
+                new System.Threading.Thread(() =>
+                {
+                    try
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            LoadEditDialog(() =>
+                            {
+                                btnWorkHours.Text = hour + "鏃�";
+                                btnWorkHours.Text += minute + "鍒�";
+                                btnWorkHours.Text += second + "绉�";
+                            });
+                        });
+                    }
+                    catch { }
+                    finally
+                    {
+                        Application.RunOnMainThread(() => {
+                            waitPage.Hide();
+                        });
+                    }
+                })
+                { IsBackground = true }.Start();
+            };
+            btnWorkHours.MouseUpEventHandler = eventHandler;
+            workHoursView.MouseUpEventHandler = eventHandler;
+            btnWorkHoursRight.MouseUpEventHandler = eventHandler;
+
+
+            #endregion
+
+
+
+
+        }
+
+
+        /// <summary>
+        /// 鍔犺浇閫夋嫨寮圭獥
+        /// </summary>
+        void LoadEditDialog(Action action)
+        {
+            Dialog dialog = new Dialog();
+
+            var pView = new FrameLayout()
+            {
+                BackgroundColor = CSS_Color.DialogTransparentColor1,
+            };
+            dialog.AddChidren(pView);
+
+            var optionBaseView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(456 - 60),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(260),
+                AnimateSpeed = 0.3f,
+                Animate = Animate.DownToUp,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+            };
+            pView.AddChidren(optionBaseView);
+
+            var topView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(40),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+            };
+            optionBaseView.AddChidren(topView);
+            topView.AddChidren(new Button() { Y = Application.GetRealHeight(39), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor });
+
+            var btnCancel = new Button()
+            {
+                X = Application.GetRealWidth(21),
+                Width = Application.GetRealWidth(100),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextID = StringId.Cancel,
+            };
+            topView.AddChidren(btnCancel);
+
+            var btnConfrim = new Button()
+            {
+                X = Application.GetRealWidth(160),
+                Width = Application.GetRealWidth(160),
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextID = StringId.Confirm,
+            };
+            topView.AddChidren(btnConfrim);
+            List<string> item1 = new List<string>();
+            List<string> item2 = new List<string>();
+            List<string> item3 = new List<string>();
+
+            UIPickerView uIPickerView = new UIPickerView()
+            {
+                Y = Application.GetRealHeight(40),
+                Height = Application.GetRealHeight(210),
+                Radius = (uint)Application.GetRealWidth(12),
+            };
+            for (int i = 0; i <= 23; i += 1)
+            {
+                item1.Add(i+Language.StringByID(StringId.h));
+            }
+            for (int i = 0; i <= 59; i += 1)
+            {
+                item2.Add(i + Language.StringByID(StringId.m));
+                item3.Add(i + Language.StringByID(StringId.s));
+            }
+            uIPickerView.setNPicker(item1, item2,item3);
+            uIPickerView.setCurrentItems(hour, minute, second);
+            optionBaseView.AddChidren(uIPickerView);
+
+            dialog.Show();
+
+            pView.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+
+            btnCancel.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+            uIPickerView.OnSelectChangeEvent = (int1, int2, int3) => {
+                hour = int1;
+                minute = int2;
+                second = int3;
+            };
+            btnConfrim.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+                action?.Invoke();
+            };
+
+        }
+
+
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulSettingPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulSettingPage.cs
new file mode 100644
index 0000000..fdf6d44
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulSettingPage.cs
@@ -0,0 +1,384 @@
+锘縰sing System;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    public class ColorfulSettingPage : FrameLayout
+    {
+        FrameLayout bodyView;
+
+        Action<uint> backAction;
+        public uint curColor = 0;
+
+        public ColorfulSettingPage(Action<uint> action)
+        {
+            bodyView = this;
+            backAction = action;
+        }
+
+        public void LoadPage(string curColorString)
+        {
+            uint.TryParse(curColorString, out curColor);
+
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+            new TopViewDiv(bodyView, Language.StringByID(StringId.Setting)).LoadTopView(()=> {
+                backAction?.Invoke(curColor) ;
+            });
+
+
+            var contentView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(64+34),
+                Height = Application.GetRealHeight(500),
+                ScrollEnabled = false,
+            };
+            bodyView.AddChidren(contentView);
+
+            #region 鑹茬洏
+            //鑹茬洏鐨勬甯冩帶浠�(闄愬埗閭d釜鐧借壊婊戝姩鐞冧娇鐢�)
+            var framePickerBack = new FrameLayout();
+            framePickerBack.Gravity = Gravity.CenterHorizontal;
+            framePickerBack.Y = Application.GetRealHeight(100);
+            framePickerBack.Width = Application.GetMinRealAverage(216 );
+            framePickerBack.Height = Application.GetMinRealAverage(216);
+            //framePickerBack.BackgroundColor = 0xFFFF0000;
+            contentView.AddChidren(framePickerBack);
+
+            var colorPicker = new ColorPicker()
+            {
+                Gravity = Gravity.Center,
+                ColorImagePath = "FunctionIcon/Light/ColorWheel.png",
+            };
+            framePickerBack.AddChidren(colorPicker);
+
+            //鐧界偣鎺т欢
+            var diameter = Application.GetRealWidth(12);
+            var btnWhiteRound = new Button()
+            {
+                Width = diameter,
+                Height = diameter,
+                Radius = (uint)Application.GetRealWidth(6),
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                BorderColor = CSS_Color.MainBackgroundColor,
+                Enable = false,
+            };
+            btnWhiteRound.Visible = false;
+            framePickerBack.AddChidren(btnWhiteRound);
+
+
+            bool pointIsRight = false;
+            int circleR = colorPicker.Width / 2 - Application.GetRealWidth(2);
+            colorPicker.MouseDownEventHandler += (sender, e) =>
+            {
+                pointIsRight = this.CheckPoint(circleR, colorPicker.Width / 2, colorPicker.Height / 2, (int)e.X, (int)e.Y);
+                if (pointIsRight == false)
+                {
+                    //鐐圭殑鍖哄煙涓嶆槸鍦嗙洏鍐�
+                    return;
+                }
+                //鏄剧ず鐧界偣
+                btnWhiteRound.X = (int)e.X - btnWhiteRound.Width / 2;
+                btnWhiteRound.Y = (int)e.Y - btnWhiteRound.Height / 2;
+                if (btnWhiteRound.Visible == false)
+                {
+                    btnWhiteRound.Visible = true;
+                }
+            };
+
+            colorPicker.MouseMoveEventHandler += (sender, e) =>
+            {
+                //褰撻紶鏍囩偣涓嬩簨浠跺鐞�
+                colorPicker.MouseDownEventHandler(sender, e);
+
+            };
+
+
+            #endregion
+
+
+            #region 鎺ㄨ崘
+            var recommendView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(120),
+            };
+            contentView.AddChidren(recommendView);
+
+            var btnRecommenTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(20),
+                TextAlignment = TextAlignment.CenterLeft,
+                Height = Application.GetRealHeight(41),
+                TextSize = 18,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextID = StringId.Recommen,
+            };
+            recommendView.AddChidren(btnRecommenTitle);
+
+            var recommendColorView = new HorizontalScrolViewLayout() {
+                Y = btnRecommenTitle.Bottom,
+                Height = Application.GetRealHeight(40),
+            };
+            recommendView.AddChidren(recommendColorView);
+
+
+            recommendColorView.AddChidren(new Button() { Width = Application.GetRealWidth(16)});
+            var btnRecommenColor1 = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealWidth(28),
+                BackgroundColor = 0xFFFC4645,
+                Radius = (uint)Application.GetRealWidth(14),
+            };
+            recommendColorView.AddChidren(btnRecommenColor1);
+
+
+            recommendColorView.AddChidren(new Button() { Width = Application.GetRealWidth(23) });
+            var btnRecommenColor2 = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealWidth(28),
+                BackgroundColor = 0xFFFD834D,
+                Radius = (uint)Application.GetRealWidth(14),
+            };
+            recommendColorView.AddChidren(btnRecommenColor2);
+
+
+            recommendColorView.AddChidren(new Button() { Width = Application.GetRealWidth(23) });
+            var btnRecommenColor3 = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealWidth(28),
+                BackgroundColor = 0xFF00ab11,
+                Radius = (uint)Application.GetRealWidth(14),
+            };
+            recommendColorView.AddChidren(btnRecommenColor3);
+
+
+            recommendColorView.AddChidren(new Button() { Width = Application.GetRealWidth(23) });
+            var btnRecommenColor4 = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealWidth(28),
+                BackgroundColor = 0xFF28952e,
+                Radius = (uint)Application.GetRealWidth(14),
+            };
+            recommendColorView.AddChidren(btnRecommenColor4);
+
+            recommendColorView.AddChidren(new Button() { Width = Application.GetRealWidth(23) });
+            var btnRecommenColor5 = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealWidth(28),
+                BackgroundColor = 0xFF45b7fd,
+                Radius = (uint)Application.GetRealWidth(14),
+            };
+            recommendColorView.AddChidren(btnRecommenColor5);
+
+
+            recommendColorView.AddChidren(new Button() { Width = Application.GetRealWidth(23) });
+            var btnRecommenColor6 = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealWidth(28),
+                BackgroundColor = 0xFF794efc,
+                Radius = (uint)Application.GetRealWidth(14),
+            };
+            recommendColorView.AddChidren(btnRecommenColor6);
+
+            recommendColorView.AddChidren(new Button() { Width = Application.GetRealWidth(23) });
+            var btnRecommenColor7 = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealWidth(28),
+                BackgroundColor = 0xFFFFFFFF,
+                Radius = (uint)Application.GetRealWidth(14),
+            };
+            recommendColorView.AddChidren(btnRecommenColor7);
+            
+
+            #endregion
+
+
+            #region 褰撳墠棰滆壊
+            var curColorView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(120),
+            };
+            contentView.AddChidren(curColorView);
+
+            var btnCurColorTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Height = Application.GetRealHeight(36),
+                TextAlignment = TextAlignment.TopLeft,
+                TextSize = 18,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextID = StringId.CurColor,
+            };
+            curColorView.AddChidren(btnCurColorTitle);
+
+            var curColorInfoView = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(330),
+                Height =Application.GetRealHeight(51),
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(36),
+                BackgroundColor = 0xFFe9ebed,
+                Radius = (uint)Application.GetRealWidth(8),
+            };
+            curColorView.AddChidren(curColorInfoView);
+
+            var btnCurColor = new Button()
+            {
+                X = Application.GetRealWidth(20),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealWidth(28),
+                BackgroundColor = curColor,
+                Radius = (uint)Application.GetRealWidth(14),
+            };
+            curColorInfoView.AddChidren(btnCurColor);
+
+            var btnHex = new Button()
+            {
+                Width = Application.GetRealWidth(60),
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = 0xFF222222,
+                TextSize = 15,
+                X = Application.GetRealWidth(48),
+                Text = "Hex"
+            };
+            curColorInfoView.AddChidren(btnHex);
+
+            var btnLine = new Button()
+            {
+                Width = 1,
+                Height = Application.GetRealHeight(28),
+                Gravity = Gravity.CenterVertical,
+                BackgroundColor = 0xFFBBBBBB,
+                X = btnHex.Right+Application.GetRealWidth(18),
+            };
+            curColorInfoView.AddChidren(btnLine);
+
+            var btnS = new Button()
+            {
+                X = btnLine.Right,
+                Width = Application.GetRealWidth(61),
+                TextAlignment = TextAlignment.CenterRight,
+                TextSize = 15,
+                TextColor = 0x99000000,
+                Text = "#",
+            };
+            curColorInfoView.AddChidren(btnS);
+
+            var etCurColorHexInfo = new EditText()
+            {
+                X = btnS.Right + Application.GetRealWidth(12),
+                Width = Application.GetRealWidth(100),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 15,
+                Text = curColor.ToString("X"),
+                TextColor = 0x21000000,
+            };
+            curColorInfoView.AddChidren(etCurColorHexInfo);
+
+            var btnHexTip = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = curColorInfoView.Bottom,
+                Height = Application.GetRealWidth(35),
+                Width = Application.GetRealWidth(300),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 12,
+                TextColor = 0x21000000,
+                TextID = StringId.CurHexTip,
+            };
+            curColorView.AddChidren(btnHexTip);
+
+
+            #endregion
+
+
+            colorPicker.ColorChaged += (sender2, color) => {
+                byte redColor = color[0];
+                byte greenColor = color[1];
+                byte blueColor = color[2];
+
+                int recolor = redColor * 256 * 256 + greenColor * 256 + blueColor;
+
+                btnCurColor.BackgroundColor = curColor = (uint)(0xFF000000 + recolor);
+                etCurColorHexInfo.Text = recolor.ToString("X");
+            };
+            btnRecommenColor1.MouseUpEventHandler = (sender, e) => {
+                curColor = btnCurColor.BackgroundColor = btnRecommenColor1.BackgroundColor;
+                etCurColorHexInfo.Text = "FC4645";
+            };
+            btnRecommenColor2.MouseUpEventHandler = (sender, e) => {
+                curColor = btnCurColor.BackgroundColor = btnRecommenColor2.BackgroundColor;
+                etCurColorHexInfo.Text = "FD834D";
+            };
+            btnRecommenColor3.MouseUpEventHandler = (sender, e) => {
+                curColor = btnCurColor.BackgroundColor = btnRecommenColor3.BackgroundColor;
+                etCurColorHexInfo.Text = "00AB11";
+            };
+            btnRecommenColor4.MouseUpEventHandler = (sender, e) => {
+                curColor = btnCurColor.BackgroundColor = btnRecommenColor4.BackgroundColor;
+                etCurColorHexInfo.Text = "28952E";
+            };
+            btnRecommenColor5.MouseUpEventHandler = (sender, e) => {
+                curColor = btnCurColor.BackgroundColor = btnRecommenColor5.BackgroundColor;
+                etCurColorHexInfo.Text = "45B7FD";
+            };
+            btnRecommenColor6.MouseUpEventHandler = (sender, e) => {
+                curColor = btnCurColor.BackgroundColor = btnRecommenColor6.BackgroundColor;
+                etCurColorHexInfo.Text = "794EFC";
+            };
+            btnRecommenColor7.MouseUpEventHandler = (sender, e) => {
+                curColor = btnCurColor.BackgroundColor = btnRecommenColor7.BackgroundColor;
+                etCurColorHexInfo.Text = "FFFFFF";
+            };
+        }
+
+
+
+        /// <summary>
+        /// 妫�娴嬬偣鍑荤偣
+        /// </summary>
+        /// <param name="circleR">鍦嗙殑鍗婂緞</param>
+        /// <param name="circleX">鍦嗗績X杞�</param>
+        /// <param name="circleY">鍦嗗績Y杞�</param>
+        /// <param name="pointX">鐐瑰嚮鐐圭殑X杞�</param>
+        /// <param name="pointY">鐐瑰嚮鐐圭殑Y杞�</param>
+        /// <returns></returns>
+        private bool CheckPoint(int circleR, int circleX, int circleY, int pointX, int pointY)
+        {
+            int dwidth = circleX - pointX;
+            if (dwidth < 0) { dwidth *= -1; }
+
+            int dHeight = circleY - pointY;
+            if (dHeight < 0) { dHeight *= -1; }
+
+            //鏍规嵁涓夎鍑芥暟,姹備笁瑙掑舰鐨勬枩杈归暱
+            int dlength = dwidth * dwidth + dHeight * dHeight;
+            //鍗婂緞闀垮害(涓嶅紑鏂�,鎵�浠ユ槸鎸夊钩鏂圭畻)
+            circleR *= circleR;
+            if (dlength < circleR)
+            {
+                //濡傛灉缁勬垚鐨勪笁瑙掑舰骞舵病鏈夐暱杩囧崐寰�,鍒欎唬琛ㄨ繕鍦ㄥ渾鍐�(涓嶅厑璁哥偣杈圭晫)
+                return true;
+            }
+            return false;
+        }
+
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
index 1a26758..d3b6c6a 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
@@ -53,11 +53,11 @@
 
         #region 鍖哄煙鍙橀噺
         Light lightTemp;
+        Function function;
         Button btnCollection_Out;
         Button btnFunctionName_Out;
         Button btnFromFloor_Out;
         bool onDimmerBar = false;
-        Function function;
 
         /// <summary>
         /// 鏈�鍚庢墦寮�鐨勯鑹�
@@ -84,6 +84,12 @@
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
             //new TopViewDiv(bodyView, Language.StringByID(StringId.Lights)).LoadTopView(function,null);
             //new PublicAssmebly().LoadTopView(bodyView, Language.StringByID(StringId.Lights), function);
+
+            int magriHeight = 0;
+            if (function.GetAttribute(FunctionAttributeKey.FadeTime) != null && function.GetAttribute(FunctionAttributeKey.Colorful) != null)
+            {
+                magriHeight = 80;
+            }
 
             FrameLayout controlView = new FrameLayout()
             {
@@ -155,8 +161,8 @@
             var framePickerBack = new FrameLayout();
             framePickerBack.Gravity = Gravity.CenterHorizontal;
             framePickerBack.Y = btnFromFoorAndRoom.Bottom + Application.GetRealHeight(1);
-            framePickerBack.Width = Application.GetMinRealAverage(216);
-            framePickerBack.Height = Application.GetMinRealAverage(216);
+            framePickerBack.Width = Application.GetMinRealAverage(216-magriHeight);
+            framePickerBack.Height = Application.GetMinRealAverage(216 - magriHeight);
             //framePickerBack.BackgroundColor = 0xFFFF0000;
             controlView.AddChidren(framePickerBack);
 
@@ -196,7 +202,7 @@
             var btnBrightnessText = new Button()
             {
                 X = Application.GetRealWidth(35),
-                Y = Application.GetRealHeight(308),
+                Y = Application.GetRealHeight(308 - magriHeight),
                 Width = Application.GetRealWidth(224),
                 Height = Application.GetRealHeight(21),
                 TextAlignment = TextAlignment.CenterLeft,
@@ -222,7 +228,7 @@
             dimmerBar = new DiyImageSeekBar()
             {
                 X = Application.GetRealWidth(35 + 22),
-                Y = Application.GetRealHeight(312),
+                Y = Application.GetRealHeight(312 - magriHeight),
                 Width = Application.GetRealWidth(210),
                 Height = Application.GetRealHeight(54),
                 SeekBarViewHeight = Application.GetRealHeight(8),
@@ -251,21 +257,22 @@
             controlView.AddChidren(btnMaxValuesText);
             #endregion
 
+            int heightMore = 375 - magriHeight;
+
             if (function.GetAttribute(FunctionAttributeKey.FadeTime) != null)
             {
                 #region 娓愬彉鏃堕棿璋冭妭
+
                 var btnGradualChangeText = new Button()
                 {
                     X = Application.GetRealWidth(35),
-                    Y = Application.GetRealHeight(375),
+                    Y = Application.GetRealHeight(heightMore),
                     Width = Application.GetRealWidth(224),
                     Height = Application.GetRealHeight(21),
                     TextAlignment = TextAlignment.CenterLeft,
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                     TextID = StringId.SpeedOfChange,
-                    Visible = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
-                    Enable = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
                 };
                 controlView.AddChidren(btnGradualChangeText);
 
@@ -279,15 +286,13 @@
                     TextAlignment = TextAlignment.CenterLeft,
                     TextColor = CSS_Color.PromptingColor1,
                     TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    Visible = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
-                    Enable = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
                 };
                 controlView.AddChidren(btnGradualChangeMinValuesText);
 
                 barFadeTime = new DiyImageSeekBar()
                 {
                     X = btnGradualChangeMinValuesText.Right,
-                    Y = Application.GetRealHeight(412 - 21),
+                    Y = Application.GetRealHeight(412 - 21-magriHeight),
                     Width = Application.GetRealWidth(210),
                     Height = Application.GetRealHeight(54),
                     SeekBarViewHeight = Application.GetRealHeight(8),
@@ -301,8 +306,6 @@
                     MaxValue = 10,
                     Progress = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.FadeTime)),
                     SeekBarPadding = Application.GetRealWidth(20),
-                    Visible = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
-                    Enable = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
                 };
                 controlView.AddChidren(barFadeTime);
                 barFadeTime.OnStopTrackingTouchEvent = (sender, e) =>
@@ -326,8 +329,67 @@
                 };
                 controlView.AddChidren(btnGradualChangeMaxValuesText);
                 #endregion
+                heightMore = 70;
 
             }
+
+            if (function.GetAttribute(FunctionAttributeKey.Colorful)!= null)
+            {
+                #region 鐐僵鍔熻兘
+
+                var btnGradualChangeText = new Button()
+                {
+                    X = Application.GetRealWidth(35),
+                    Y = Application.GetRealHeight(375+ heightMore- magriHeight),
+                    Width = Application.GetRealWidth(224),
+                    Height = Application.GetRealHeight(21),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    TextID = StringId.ColorfulFunction,
+                };
+                controlView.AddChidren(btnGradualChangeText);
+
+                var btnGradualChangeMinValuesText = new Button()
+                {
+                    X = Application.GetRealWidth(35),
+                    Y = btnGradualChangeText.Bottom + Application.GetRealHeight(10),
+                    Width = Application.GetRealWidth(22),
+                    Height = Application.GetRealHeight(21),
+                    UnSelectedImagePath = "Public/Edit.png",
+                };
+                controlView.AddChidren(btnGradualChangeMinValuesText);
+                btnGradualChangeMinValuesText.MouseUpEventHandler = (sender, e) => {
+                    var rgbView = new ColorfulInfoPage(function);
+                    MainPage.BasePageView.AddChidren(rgbView);
+                    rgbView.LoadPage();
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                };
+
+                var barColorful = new FrameLayout()
+                {
+                    X = btnGradualChangeMinValuesText.Right + Application.GetRealWidth(15),
+                    Y = Application.GetRealHeight(412 + heightMore-magriHeight),
+                    Width = Application.GetRealWidth(180),
+                    Height = Application.GetRealHeight(10),
+                    BackgroundImagePath = "FunctionIcon/Light/ColorWheel.png",
+                };
+                controlView.AddChidren(barColorful);
+
+                var btnGradualChangeMaxValuesText = new Button()
+                {
+                    X = barFadeTime.Right,
+                    Y = btnGradualChangeText.Bottom + Application.GetRealHeight(10),
+                    Width = Application.GetRealWidth(35),
+                    Height = Application.GetRealHeight(21),
+                    UnSelectedImagePath = "Public/Switch.png"
+                };
+                controlView.AddChidren(btnGradualChangeMaxValuesText);
+                #endregion
+
+
+            }
+
             btnRestoredPoint = new Button()
             {
                 X = Application.GetRealWidth(116),
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
index 697f09c..d54d93e 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
@@ -148,24 +148,7 @@
             {
                 //褰撻紶鏍囩偣涓嬩簨浠跺鐞�
                 colorPicker.MouseDownEventHandler(sender, e);
-                //if (function.trait_on_off.curValue.ToString() == "off")
-                //{
-                //    return;
-                //}
-                //pointIsRight = this.CheckPoint(circleR, colorPicker.Width / 2, colorPicker.Height / 2, (int)e.X, (int)e.Y);
-                //if (pointIsRight == false)
-                //{
-                //    //鐐圭殑鍖哄煙涓嶆槸鍦嗙洏鍐�
-                //    return;
-                //}
-                ////鏄剧ず鐧界偣
-                //btnWhiteRound.X = (int)e.X - btnWhiteRound.Width / 2;
-                //btnWhiteRound.Y = (int)e.Y - btnWhiteRound.Height / 2;
-                //if (btnWhiteRound.Visible == false)
-                //{
-                //    btnWhiteRound.Visible = true;
-                //}
-                //btnCurColor.BackgroundColor = (uint)(0xFF000000 + lightTemp.GetRGBcolor(function));
+                
             };
 
             var colorChangeEvent = new System.Threading.Thread(() => {
diff --git a/HDL_ON/UI/UI2/UserPage.cs b/HDL_ON/UI/UI2/UserPage.cs
index 28e34a8..26bdd0d 100644
--- a/HDL_ON/UI/UI2/UserPage.cs
+++ b/HDL_ON/UI/UI2/UserPage.cs
@@ -133,9 +133,12 @@
                     if (DB_ResidenceData.Instance.CheckGPS_IsFirst)
                     {
                         DB_ResidenceData.Instance.CheckGPS_IsFirst = false;
+                        Console.WriteLine("寮�鍚畾浣嶆湇鍔�111111111");
                         Shared.Application.StartGPSLocationService();
+                        Console.WriteLine("寮�鍚畾浣嶆湇鍔�1111111112");
                     }
-                }catch(Exception ex)
+                }
+                catch(Exception ex)
                 {
                     MainPage.Log("寮�鍚畾浣嶆湇鍔″紓甯�:" + ex.Message);
                 }
diff --git a/SiriIntents/Server/HttpUtil.cs b/SiriIntents/Server/HttpUtil.cs
index 8d4483c..dc7aca0 100644
--- a/SiriIntents/Server/HttpUtil.cs
+++ b/SiriIntents/Server/HttpUtil.cs
@@ -16,8 +16,8 @@
         /// 鍥哄畾鍩熷悕,姝e紡鐜
         /// 鍏叡鍩熷悕灏辫繎瑙f瀽
         /// </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";
         const string APP_KEY = "HDL-HOME-APP-TEST";
         const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
         //public const string GlobalRequestHttpsHost = "http://59.41.255.150:7777";//mmmm

--
Gitblit v1.8.0