From 49248e3bdff0458f8f6f4156d1425bd6f6074e32 Mon Sep 17 00:00:00 2001
From: lss <lsc@hdlchina.com.cn>
Date: 星期二, 17 五月 2022 13:17:21 +0800
Subject: [PATCH] Merge branch 'dev' into lss

---
 SiriIntents/SiriIntents.csproj                                                                   |    3 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs |    4 
 HDL-ON_Android/Assets/Language.ini                                                               | 1167 +++++
 DLL/Linphone/iOS/Shared.IOS.HDLLinphoneSDK.dll                                                   |    0 
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                                     |   24 
 HDL_ON/Common/ApiUtlis.cs                                                                        |   58 
 HDL_ON/UI/UI2/2-Classification/RoomPage.cs                                                       |   11 
 DLL/UMeng/UMCommon.framework/Headers/MobClick.h                                                  |  220 
 HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs                                      |   54 
 HDL_ON/HDL_ON.projitems                                                                          |   51 
 HDL_ON/DAL/Server/IMessageCommon.cs                                                              |    4 
 HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs                                             |  922 ---
 HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs                                             |   20 
 DLL/UMeng/UMDevice.framework/UMDevice                                                            |    0 
 HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs                                                          |  137 
 HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs                                          |  601 +-
 HDL-ON_iOS/HDL-ON_iOS.sln                                                                        |   31 
 HDL_ON/DAL/Server/NewApiRes.cs                                                                   |    9 
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs                                           |  181 
 HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs                                |  157 
 HDL-ON_Android/Resources/Resource.designer.cs                                                    |    2 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicFileList.cs                                       |  115 
 HDL_ON/UI/UI2/2-Classification/FunctionPageBLL.cs                                                |    4 
 SiriIntents/Server/HttpUtil.cs                                                                   |    4 
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/FunAllAreaView.cs                              |    1 
 HDL-ON_iOS/mono_crash.824c6d50c.0.json                                                           |  406 +
 HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs                                             |  115 
 HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs                                              |   15 
 HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs                                 |    5 
 HDL_ON/Entity/DB_ResidenceData.cs                                                                |   16 
 HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs                                  |  216 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddQingpingSensorEnvirTipPage.cs     |    4 
 DLL/IOS/Shared.IOS.HDLFVSDK.dll                                                                  |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddSensorEnvironmentPage.cs          |    6 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs                                           |  223 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31MyListMusic.cs                                         |    4 
 HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs                                               |  122 
 HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs                                                 |    8 
 HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs                                                  |    2 
 HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs                                   |   10 
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs                            |    4 
 HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs                                                            |   24 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs                                           |  135 
 HDL-ON_iOS/ViewController.cs                                                                     |    5 
 HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs                                                          |   44 
 HDL_ON/Entity/Function/SecurityAlarm.cs                                                          |   12 
 HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs                                          |   48 
 HDL-ON_iOS/AppDelegate.cs                                                                        |   35 
 HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs                                              |   12 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs                                      |    2 
 DLL/UMeng/UMCommon.framework/Versions/A/Headers/UMConfigure.h                                    |   45 
 HDL-ON_iOS/Resources/Language.ini                                                                | 1167 +++++
 HDL_ON/UI/UI2/3-Intelligence/Automation/Set.cs                                                   |    7 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs                   |   10 
 DLL/UMeng/UMCommon.framework/Headers/UMConfigure.h                                               |   45 
 HDL_ON/UI/UI2/FuntionControlView/Music/View/MusicView.cs                                         |   15 
 HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/AboutOnPage.cs                                            |   37 
 HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs                                       |   51 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/A_EnvironmentalDataCenter.cs               |    4 
 HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs                                                 |   10 
 HDL-ON_Android/Assets/Phone/Collection/FunctionOfflineBg.png                                     |    0 
 HDL_ON/DAL/DriverLayer/Control.cs                                                                |  146 
 SiriIntentsUI/SiriIntentsUI.csproj                                                               |    2 
 HDL_APP_Project.sln                                                                              |   14 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs                                            |  149 
 HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs                                   |   60 
 UMSdk/Structs.cs                                                                                 |    6 
 HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPage.cs                                               |    6 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs                                |   60 
 HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/SupportHomeKitNotesPage.cs                                |   69 
 HDL_ON/DAL/Server/HttpServerRequest.cs                                                           |   26 
 HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs                              |   20 
 HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddAlarmDeploymentPage.cs                             |    2 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchPage.cs                                     |   20 
 HDL_ON/UI/UI2/FuntionControlView/Music/View/MyListView.cs                                        |    9 
 HDL-ON_Android/Properties/AndroidManifest.xml                                                    |    4 
 HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs                                |    5 
 HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs                                        |  172 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs                          |   40 
 HDL_ON/UI/UI2/FuntionControlView/Music/View/PlayView.cs                                          |   15 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs                                         |   10 
 HDL_ON/UI/UI2/FuntionControlView/Music/View/DialogView.cs                                        | 1241 -----
 DLL/UMeng/UMCommon.framework/Versions/Current/Headers/UMCommon.h                                 |   19 
 HDL_ON/DAL/Mqtt/MqttClient.cs                                                                    |   38 
 HDL-ON_Android/HDL-ON_Android.csproj                                                             |    2 
 HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs                                      |    7 
 HDL-ON_iOS/Info.plist                                                                            |    5 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs                                 |   12 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs                                |   20 
 HDL_ON/Common/HDLCommon.cs                                                                       |    8 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs                                       |  441 -
 DLL/UMeng/UMDevice.framework/Headers/UMZid.h                                                     |   29 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs                                               |   70 
 HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs                                         |  238 
 DLL/UMeng/libHDLUMSDK.a                                                                          |    0 
 HDL_ON/UI/UI1-Login/LoginPage.cs                                                                 |   17 
 HDL_ON/UI/UI2/3-Intelligence/Automation/PublicInterface.cs                                       |    4 
 HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs                                          |   18 
 HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs                                                    |    4 
 HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs                                                 |    2 
 HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs                                                 |   18 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveMusicList.cs                                       |    4 
 UMSdk/UMSdk.csproj                                                                               |   68 
 DLL/UMeng/UMCommon.framework/Versions/Current/Headers/UMConfigure.h                              |   45 
 HDL_ON/Entity/Function/Function.cs                                                               |   39 
 HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs                                            |   44 
 UMSdk/ApiDefinition.cs                                                                           |   20 
 HDL_ON/UI/UI2/2-Classification/FunctionPage.cs                                                   |   33 
 HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockListPage.cs                                    |    4 
 DLL/UMeng/UMCommon.framework/Versions/Current/UMCommon                                           |    0 
 HDL_ON/DAL/Server/HttpUtil.cs                                                                    |    4 
 HDL_ON/Common/UserInfo.cs                                                                        |   23 
 HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs                                              |  501 +-
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/SingleLogicView.cs                             |   14 
 HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs                                                        |   14 
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs                                                             |  233 
 HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs                                   |   19 
 HDL-ON_iOS/Resources/Phone/Collection/FunctionOfflineBg.png                                      |    0 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs                       |    2 
 DLL/UMeng/UMCommon.framework/Versions/A/Headers/MobClick.h                                       |  220 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs                                 |   94 
 HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FirmwareUpdateView.cs                                     |   63 
 HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs                                                      |   10 
 HDL_ON/UI/UI2/2-Classification/RoomPageBLL.cs                                                    |    4 
 HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs                                   |  127 
 HDL-ON_Android/SplashActivity.cs                                                                 |   14 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs                                        |   22 
 HDL_ON/UI/UI2/FuntionControlView/Music/View/SongView.cs                                          |   29 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs                                     |  225 
 HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs                                          |    7 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/FhControlPage.cs                                   |   59 
 HDL_ON/UI/MainPage.cs                                                                            |    2 
 DLL/UMeng/UMCommon.framework/Headers/UMCommon.h                                                  |   20 
 HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs                                 |   27 
 HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockUnlockPage.cs                                  |  193 
 DLL/UMeng/UMCommon.framework/Versions/A/Headers/UMCommon.h                                       |   19 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31MyList.cs                                              |   82 
 DLL/UMeng/UMCommon.framework/Versions/Current/Headers/MobClick.h                                 |  220 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshControlPage.cs                             |   18 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs                                   |  123 
 DLL/UMeng/UMCommon.framework/UMCommon                                                            |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaFanPage.cs                                       |   49 
 DLL/UMeng/UMCommon.framework/7.3.5_4da14cb265_20210810144036                                     |    1 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshRelayControlPage.cs                        |   18 
 HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs                                          |  141 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs                                          |  265 
 HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs                                           |   20 
 HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs                                            |    4 
 HDL-ON_iOS/Main.cs                                                                               |    2 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs                                        |   45 
 /dev/null                                                                                        |  202 
 HDL_ON/DAL/Server/NewAPI.cs                                                                      |    6 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs                                       |   11 
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/AddOutputInputView.cs                          |    4 
 UMSdk/Properties/AssemblyInfo.cs                                                                 |   34 
 HDL_ON/Common/R.cs                                                                               |   29 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage_InstantaneousValue.cs                     |   62 
 DLL/UMeng/UMCommon.framework/Versions/A/UMCommon                                                 |    0 
 158 files changed, 8,640 insertions(+), 4,570 deletions(-)

diff --git a/DLL/IOS/Shared.IOS.HDLFVSDK.dll b/DLL/IOS/Shared.IOS.HDLFVSDK.dll
new file mode 100644
index 0000000..ded2921
--- /dev/null
+++ b/DLL/IOS/Shared.IOS.HDLFVSDK.dll
Binary files differ
diff --git a/DLL/Linphone/iOS/Shared.IOS.HDLLinphoneSDK.dll b/DLL/Linphone/iOS/Shared.IOS.HDLLinphoneSDK.dll
index db3126b..10f902a 100644
--- a/DLL/Linphone/iOS/Shared.IOS.HDLLinphoneSDK.dll
+++ b/DLL/Linphone/iOS/Shared.IOS.HDLLinphoneSDK.dll
Binary files differ
diff --git a/DLL/UMeng/UMCommon.framework/7.3.5_4da14cb265_20210810144036 b/DLL/UMeng/UMCommon.framework/7.3.5_4da14cb265_20210810144036
new file mode 100644
index 0000000..d9edd15
--- /dev/null
+++ b/DLL/UMeng/UMCommon.framework/7.3.5_4da14cb265_20210810144036
@@ -0,0 +1 @@
+7.3.5
diff --git a/DLL/UMeng/UMCommon.framework/Headers/MobClick.h b/DLL/UMeng/UMCommon.framework/Headers/MobClick.h
new file mode 100644
index 0000000..059931d
--- /dev/null
+++ b/DLL/UMeng/UMCommon.framework/Headers/MobClick.h
@@ -0,0 +1,220 @@
+//
+//  MobClick.h
+//  Analytics
+//
+//  Copyright (C) 2010-2017 Umeng.com . All rights reserved.
+
+#import <UIKit/UIKit.h>
+#import <Foundation/Foundation.h>
+
+@interface MobClick : NSObject
+
+#pragma mark basics
+
+///---------------------------------------------------------------------------------------
+/// @name  璁剧疆
+///---------------------------------------------------------------------------------------
+
+
+
+#pragma mark event logs
+///---------------------------------------------------------------------------------------
+/// @name  椤甸潰璁℃椂
+///---------------------------------------------------------------------------------------
+
+/** 鎵嬪姩椤甸潰鏃堕暱缁熻, 璁板綍鏌愪釜椤甸潰灞曠ず鐨勬椂闀�.
+ @param pageName 缁熻鐨勯〉闈㈠悕绉�.
+ @param seconds 鍗曚綅涓虹锛宨nt鍨�.
+ @return void.
+ */
++ (void)logPageView:(NSString *)pageName seconds:(int)seconds;
+
+/** 鑷姩椤甸潰鏃堕暱缁熻, 寮�濮嬭褰曟煇涓〉闈㈠睍绀烘椂闀�.
+ 浣跨敤鏂规硶锛氬繀椤婚厤瀵硅皟鐢╞eginLogPageView:鍜宔ndLogPageView:涓や釜鍑芥暟鏉ュ畬鎴愯嚜鍔ㄧ粺璁★紝鑻ュ彧璋冪敤鏌愪竴涓嚱鏁颁笉浼氱敓鎴愭湁鏁堟暟鎹��
+ 鍦ㄨ椤甸潰灞曠ず鏃惰皟鐢╞eginLogPageView:锛屽綋閫�鍑鸿椤甸潰鏃惰皟鐢╡ndLogPageView:
+ @param pageName 缁熻鐨勯〉闈㈠悕绉�.
+ @return void.
+ */
++ (void)beginLogPageView:(NSString *)pageName;
+
+/** 鑷姩椤甸潰鏃堕暱缁熻, 缁撴潫璁板綍鏌愪釜椤甸潰灞曠ず鏃堕暱.
+ 浣跨敤鏂规硶锛氬繀椤婚厤瀵硅皟鐢╞eginLogPageView:鍜宔ndLogPageView:涓や釜鍑芥暟鏉ュ畬鎴愯嚜鍔ㄧ粺璁★紝鑻ュ彧璋冪敤鏌愪竴涓嚱鏁颁笉浼氱敓鎴愭湁鏁堟暟鎹��
+ 鍦ㄨ椤甸潰灞曠ず鏃惰皟鐢╞eginLogPageView:锛屽綋閫�鍑鸿椤甸潰鏃惰皟鐢╡ndLogPageView:
+ @param pageName 缁熻鐨勯〉闈㈠悕绉�.
+ @return void.
+ */
++ (void)endLogPageView:(NSString *)pageName;
+
+
+///---------------------------------------------------------------------------------------
+/// @name  浜嬩欢缁熻
+///---------------------------------------------------------------------------------------
+
+/** 鑷畾涔変簨浠�,鏁伴噺缁熻.
+浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID
+ 
+ @param  eventId 缃戠珯涓婃敞鍐岀殑浜嬩欢Id.
+ @param  label 鍒嗙被鏍囩銆備笉鍚岀殑鏍囩浼氬垎鍒繘琛岀粺璁★紝鏂逛究鍚屼竴浜嬩欢鐨勪笉鍚屾爣绛剧殑瀵规瘮,涓簄il鎴栫┖瀛楃涓叉椂鍚庡彴浼氱敓鎴愬拰eventId鍚屽悕鐨勬爣绛�.
+ @param  accumulation 绱姞鍊笺�備负鍑忓皯缃戠粶浜や簰锛屽彲浠ヨ嚜琛屽鏌愪竴浜嬩欢ID鐨勬煇涓�鍒嗙被鏍囩杩涜绱姞锛屽啀浼犲叆娆℃暟浣滀负鍙傛暟銆�
+ @return void.
+ */
++ (void)event:(NSString *)eventId; //绛夊悓浜� event:eventId label:eventId;
+/** 鑷畾涔変簨浠�,鏁伴噺缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID
+ */
++ (void)event:(NSString *)eventId label:(NSString *)label; // label涓簄il鎴朄""鏃讹紝绛夊悓浜� event:eventId label:eventId;
+
+/** 鑷畾涔変簨浠�,鏁伴噺缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID
+ */
++ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes;
+
++ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes counter:(int)number;
+
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+    浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+    beginEvent,endEvent瑕侀厤瀵逛娇鐢�,涔熷彲浠ヨ嚜宸辫鏃跺悗閫氳繃durations鍙傛暟浼犻�掕繘鏉�
+ 
+ @param  eventId 缃戠珯涓婃敞鍐岀殑浜嬩欢Id.
+ @param  label 鍒嗙被鏍囩銆備笉鍚岀殑鏍囩浼氬垎鍒繘琛岀粺璁★紝鏂逛究鍚屼竴浜嬩欢鐨勪笉鍚屾爣绛剧殑瀵规瘮,涓簄il鎴栫┖瀛楃涓叉椂鍚庡彴浼氱敓鎴愬拰eventId鍚屽悕鐨勬爣绛�.
+ @param  primarykey 杩欎釜鍙傛暟鐢ㄤ簬鍜宔vent_id涓�璧锋爣绀轰竴涓敮涓�浜嬩欢锛屽苟涓嶄細琚粺璁★紱瀵逛簬鍚屼竴涓簨浠跺湪beginEvent鍜宔ndEvent 涓浼犻�掔浉鍚岀殑eventId 鍜� primarykey
+ @param millisecond 鑷繁璁℃椂闇�瑕佺殑璇濋渶瑕佷紶姣杩涙潵
+ @return void.
+ 
+ @warning 姣忎釜event鐨刟ttributes涓嶈兘瓒呰繃100涓�
+    eventId銆乤ttributes涓璳ey鍜寁alue閮戒笉鑳戒娇鐢ㄧ┖鏍煎拰鐗规畩瀛楃锛屽繀椤绘槸NSString,涓旈暱搴︿笉鑳借秴杩�255涓瓧绗︼紙鍚﹀垯灏嗘埅鍙栧墠255涓瓧绗︼級
+    id锛� ts锛� du鏄繚鐣欏瓧娈碉紝涓嶈兘浣滀负eventId鍙妅ey鐨勫悕绉�
+*/
++ (void)beginEvent:(NSString *)eventId;
+
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)endEvent:(NSString *)eventId;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)beginEvent:(NSString *)eventId label:(NSString *)label;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)endEvent:(NSString *)eventId label:(NSString *)label;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)beginEvent:(NSString *)eventId primarykey :(NSString *)keyName attributes:(NSDictionary *)attributes;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)endEvent:(NSString *)eventId primarykey:(NSString *)keyName;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)event:(NSString *)eventId durations:(int)millisecond;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)event:(NSString *)eventId label:(NSString *)label durations:(int)millisecond;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
++ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes durations:(int)millisecond;
+
+
+#pragma mark - user methods
+/** active user sign-in.
+ 浣跨敤sign-In鍑芥暟鍚庯紝濡傛灉缁撴潫璇UID鐨勭粺璁★紝闇�瑕佽皟鐢╯ign-Off鍑芥暟
+ @param puid : user's ID
+ @param provider : 涓嶈兘浠ヤ笅鍒掔嚎"_"寮�澶达紝浣跨敤澶у啓瀛楁瘝鍜屾暟瀛楁爣璇�; 濡傛灉鏄笂甯傚叕鍙革紝寤鸿浣跨敤鑲$エ浠g爜銆�
+ @return void.
+ */
++ (void)profileSignInWithPUID:(NSString *)puid;
++ (void)profileSignInWithPUID:(NSString *)puid provider:(NSString *)provider;
+
+/** active user sign-off.
+ 鍋滄sign-in PUID鐨勭粺璁�
+ @return void.
+ */
++ (void)profileSignOff;
+
+///---------------------------------------------------------------------------------------
+/// @name 鍦扮悊浣嶇疆璁剧疆
+/// 闇�瑕侀摼鎺� CoreLocation.framework 骞朵笖 #import <CoreLocation/CoreLocation.h>
+///---------------------------------------------------------------------------------------
+
+/** 璁剧疆缁忕含搴︿俊鎭�
+ @param latitude 绾害.
+ @param longitude 缁忓害.
+ @return void
+ */
++ (void)setLatitude:(double)latitude longitude:(double)longitude;
+
+
+///---------------------------------------------------------------------------------------
+/// @name Utility鍑芥暟
+///---------------------------------------------------------------------------------------
+
+/** 鍒ゆ柇璁惧鏄惁瓒婄嫳锛屼緷鎹槸鍚﹀瓨鍦╝pt鍜孋ydia.app
+ */
++ (BOOL)isJailbroken;
+
+/** 鍒ゆ柇App鏄惁琚牬瑙�
+ */
++ (BOOL)isPirated;
+
+/** 璁剧疆 app secret
+ @param secret string
+ @return void.
+ */
++ (void)setSecret:(NSString *)secret;
+
+
+/**
+ * 璁剧疆棰勭疆浜嬩欢灞炴�� 閿�煎 浼氳鐩栧悓鍚嶇殑key
+ */
++(void) registerPreProperties:(NSDictionary *)property;
+
+/**
+ *
+ * 鍒犻櫎鎸囧畾棰勭疆浜嬩欢灞炴��
+ @param key
+ */
++(void) unregisterPreProperty:(NSString *)propertyName;
+
+/**
+ * 鑾峰彇棰勭疆浜嬩欢鎵�鏈夊睘鎬э紱濡傛灉涓嶅瓨鍦紝鍒欒繑鍥炵┖銆�
+ */
++(NSDictionary *)getPreProperties;
+
+/**
+ *娓呯┖鎵�鏈夐缃簨浠跺睘鎬с��
+ */
++(void)clearPreProperties;
+
+
+/**
+ * 璁剧疆鍏虫敞浜嬩欢鏄惁棣栨瑙﹀彂,鍙叧娉╡ventList鍓嶄簲涓悎娉昬ventID.鍙宸茬粡淇濆瓨浜斾釜,姝ゆ帴鍙f棤鏁�
+ */
++(void)setFirstLaunchEvent:(NSArray *)eventList;
+
+/** 璁剧疆鏄惁鑷姩閲囬泦椤甸潰, 榛樿NO(涓嶈嚜鍔ㄩ噰闆�).
+ @param value 璁剧疆涓篩ES, umeng SDK 浼氬皢鑷姩閲囬泦椤甸潰淇℃伅
+ */
++ (void)setAutoPageEnabled:(BOOL)value;
+
+/**
+ *闆嗘垚娴嬭瘯銆�
+ */
++ (BOOL)handleUrl:(NSURL *)url;
+
+
+@end
+
+
diff --git a/DLL/UMeng/UMCommon.framework/Headers/UMCommon.h b/DLL/UMeng/UMCommon.framework/Headers/UMCommon.h
new file mode 100644
index 0000000..61fd961
--- /dev/null
+++ b/DLL/UMeng/UMCommon.framework/Headers/UMCommon.h
@@ -0,0 +1,20 @@
+
+//
+//  UMCommon.h
+//  UMCommon
+//
+//  Created by San Zhang on 11/2/16.
+//  Copyright 漏 2016 UMeng. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+//! Project version number for UMCommon.
+FOUNDATION_EXPORT double UMCommonVersionNumber;
+
+//! Project version string for UMCommon.
+FOUNDATION_EXPORT const unsigned char UMCommonVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <UMCommon/PublicHeader.h>
+
+#import <UMCommon/UMConfigure.h>
diff --git a/DLL/UMeng/UMCommon.framework/Headers/UMConfigure.h b/DLL/UMeng/UMCommon.framework/Headers/UMConfigure.h
new file mode 100644
index 0000000..be79988
--- /dev/null
+++ b/DLL/UMeng/UMCommon.framework/Headers/UMConfigure.h
@@ -0,0 +1,45 @@
+//
+//  UMConfigure.h
+//  UMCommon
+//
+//  Created by San Zhang on 9/6/16.
+//  Copyright 漏 2016 UMeng. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface UMConfigure : NSObject
+
+/** 鍒濆鍖栧弸鐩熸墍鏈夌粍浠朵骇鍝�
+ @param appKey 寮�鍙戣�呭湪鍙嬬洘瀹樼綉鐢宠鐨刟ppkey.
+ @param channel 娓犻亾鏍囪瘑锛屽彲璁剧疆nil琛ㄧず"App Store".
+ */
++ (void)initWithAppkey:(NSString *)appKey channel:(NSString *)channel;
+
+/** 璁剧疆鏄惁鍦╟onsole杈撳嚭sdk鐨刲og淇℃伅.
+ @param bFlag 榛樿NO(涓嶈緭鍑簂og); 璁剧疆涓篩ES, 杈撳嚭鍙緵璋冭瘯鍙傝�冪殑log淇℃伅. 鍙戝竷浜у搧鏃跺繀椤昏缃负NO.
+ */
++ (void)setLogEnabled:(BOOL)bFlag;
+
+/** 璁剧疆鏄惁瀵规棩蹇椾俊鎭繘琛屽姞瀵�, 榛樿NO(涓嶅姞瀵�).
+ @param value 璁剧疆涓篩ES, umeng SDK 浼氬皢鏃ュ織淇℃伅鍋氬姞瀵嗗鐞�
+ */
++ (void)setEncryptEnabled:(BOOL)value;
+
++ (NSString *)umidString;
+
+/**
+ 闆嗘垚娴嬭瘯闇�瑕乨evice_id
+ */
++ (NSString*)deviceIDForIntegration;
+
+/** 鏄惁寮�鍚粺璁★紝榛樿涓篩ES(寮�鍚姸鎬�)
+ @param value 璁剧疆涓篘O,鍙叧闂弸鐩熺粺璁″姛鑳�.
+ @return void.
+*/
++ (void)setAnalyticsEnabled:(BOOL)value;
+
+//鑾峰彇zid
++ (NSString *)getUmengZID;
+
+@end
diff --git a/DLL/UMeng/UMCommon.framework/UMCommon b/DLL/UMeng/UMCommon.framework/UMCommon
new file mode 100644
index 0000000..995e6b5
--- /dev/null
+++ b/DLL/UMeng/UMCommon.framework/UMCommon
Binary files differ
diff --git a/DLL/UMeng/UMCommon.framework/Versions/A/Headers/MobClick.h b/DLL/UMeng/UMCommon.framework/Versions/A/Headers/MobClick.h
new file mode 100644
index 0000000..059931d
--- /dev/null
+++ b/DLL/UMeng/UMCommon.framework/Versions/A/Headers/MobClick.h
@@ -0,0 +1,220 @@
+//
+//  MobClick.h
+//  Analytics
+//
+//  Copyright (C) 2010-2017 Umeng.com . All rights reserved.
+
+#import <UIKit/UIKit.h>
+#import <Foundation/Foundation.h>
+
+@interface MobClick : NSObject
+
+#pragma mark basics
+
+///---------------------------------------------------------------------------------------
+/// @name  璁剧疆
+///---------------------------------------------------------------------------------------
+
+
+
+#pragma mark event logs
+///---------------------------------------------------------------------------------------
+/// @name  椤甸潰璁℃椂
+///---------------------------------------------------------------------------------------
+
+/** 鎵嬪姩椤甸潰鏃堕暱缁熻, 璁板綍鏌愪釜椤甸潰灞曠ず鐨勬椂闀�.
+ @param pageName 缁熻鐨勯〉闈㈠悕绉�.
+ @param seconds 鍗曚綅涓虹锛宨nt鍨�.
+ @return void.
+ */
++ (void)logPageView:(NSString *)pageName seconds:(int)seconds;
+
+/** 鑷姩椤甸潰鏃堕暱缁熻, 寮�濮嬭褰曟煇涓〉闈㈠睍绀烘椂闀�.
+ 浣跨敤鏂规硶锛氬繀椤婚厤瀵硅皟鐢╞eginLogPageView:鍜宔ndLogPageView:涓や釜鍑芥暟鏉ュ畬鎴愯嚜鍔ㄧ粺璁★紝鑻ュ彧璋冪敤鏌愪竴涓嚱鏁颁笉浼氱敓鎴愭湁鏁堟暟鎹��
+ 鍦ㄨ椤甸潰灞曠ず鏃惰皟鐢╞eginLogPageView:锛屽綋閫�鍑鸿椤甸潰鏃惰皟鐢╡ndLogPageView:
+ @param pageName 缁熻鐨勯〉闈㈠悕绉�.
+ @return void.
+ */
++ (void)beginLogPageView:(NSString *)pageName;
+
+/** 鑷姩椤甸潰鏃堕暱缁熻, 缁撴潫璁板綍鏌愪釜椤甸潰灞曠ず鏃堕暱.
+ 浣跨敤鏂规硶锛氬繀椤婚厤瀵硅皟鐢╞eginLogPageView:鍜宔ndLogPageView:涓や釜鍑芥暟鏉ュ畬鎴愯嚜鍔ㄧ粺璁★紝鑻ュ彧璋冪敤鏌愪竴涓嚱鏁颁笉浼氱敓鎴愭湁鏁堟暟鎹��
+ 鍦ㄨ椤甸潰灞曠ず鏃惰皟鐢╞eginLogPageView:锛屽綋閫�鍑鸿椤甸潰鏃惰皟鐢╡ndLogPageView:
+ @param pageName 缁熻鐨勯〉闈㈠悕绉�.
+ @return void.
+ */
++ (void)endLogPageView:(NSString *)pageName;
+
+
+///---------------------------------------------------------------------------------------
+/// @name  浜嬩欢缁熻
+///---------------------------------------------------------------------------------------
+
+/** 鑷畾涔変簨浠�,鏁伴噺缁熻.
+浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID
+ 
+ @param  eventId 缃戠珯涓婃敞鍐岀殑浜嬩欢Id.
+ @param  label 鍒嗙被鏍囩銆備笉鍚岀殑鏍囩浼氬垎鍒繘琛岀粺璁★紝鏂逛究鍚屼竴浜嬩欢鐨勪笉鍚屾爣绛剧殑瀵规瘮,涓簄il鎴栫┖瀛楃涓叉椂鍚庡彴浼氱敓鎴愬拰eventId鍚屽悕鐨勬爣绛�.
+ @param  accumulation 绱姞鍊笺�備负鍑忓皯缃戠粶浜や簰锛屽彲浠ヨ嚜琛屽鏌愪竴浜嬩欢ID鐨勬煇涓�鍒嗙被鏍囩杩涜绱姞锛屽啀浼犲叆娆℃暟浣滀负鍙傛暟銆�
+ @return void.
+ */
++ (void)event:(NSString *)eventId; //绛夊悓浜� event:eventId label:eventId;
+/** 鑷畾涔変簨浠�,鏁伴噺缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID
+ */
++ (void)event:(NSString *)eventId label:(NSString *)label; // label涓簄il鎴朄""鏃讹紝绛夊悓浜� event:eventId label:eventId;
+
+/** 鑷畾涔変簨浠�,鏁伴噺缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID
+ */
++ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes;
+
++ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes counter:(int)number;
+
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+    浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+    beginEvent,endEvent瑕侀厤瀵逛娇鐢�,涔熷彲浠ヨ嚜宸辫鏃跺悗閫氳繃durations鍙傛暟浼犻�掕繘鏉�
+ 
+ @param  eventId 缃戠珯涓婃敞鍐岀殑浜嬩欢Id.
+ @param  label 鍒嗙被鏍囩銆備笉鍚岀殑鏍囩浼氬垎鍒繘琛岀粺璁★紝鏂逛究鍚屼竴浜嬩欢鐨勪笉鍚屾爣绛剧殑瀵规瘮,涓簄il鎴栫┖瀛楃涓叉椂鍚庡彴浼氱敓鎴愬拰eventId鍚屽悕鐨勬爣绛�.
+ @param  primarykey 杩欎釜鍙傛暟鐢ㄤ簬鍜宔vent_id涓�璧锋爣绀轰竴涓敮涓�浜嬩欢锛屽苟涓嶄細琚粺璁★紱瀵逛簬鍚屼竴涓簨浠跺湪beginEvent鍜宔ndEvent 涓浼犻�掔浉鍚岀殑eventId 鍜� primarykey
+ @param millisecond 鑷繁璁℃椂闇�瑕佺殑璇濋渶瑕佷紶姣杩涙潵
+ @return void.
+ 
+ @warning 姣忎釜event鐨刟ttributes涓嶈兘瓒呰繃100涓�
+    eventId銆乤ttributes涓璳ey鍜寁alue閮戒笉鑳戒娇鐢ㄧ┖鏍煎拰鐗规畩瀛楃锛屽繀椤绘槸NSString,涓旈暱搴︿笉鑳借秴杩�255涓瓧绗︼紙鍚﹀垯灏嗘埅鍙栧墠255涓瓧绗︼級
+    id锛� ts锛� du鏄繚鐣欏瓧娈碉紝涓嶈兘浣滀负eventId鍙妅ey鐨勫悕绉�
+*/
++ (void)beginEvent:(NSString *)eventId;
+
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)endEvent:(NSString *)eventId;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)beginEvent:(NSString *)eventId label:(NSString *)label;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)endEvent:(NSString *)eventId label:(NSString *)label;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)beginEvent:(NSString *)eventId primarykey :(NSString *)keyName attributes:(NSDictionary *)attributes;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)endEvent:(NSString *)eventId primarykey:(NSString *)keyName;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)event:(NSString *)eventId durations:(int)millisecond;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)event:(NSString *)eventId label:(NSString *)label durations:(int)millisecond;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
++ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes durations:(int)millisecond;
+
+
+#pragma mark - user methods
+/** active user sign-in.
+ 浣跨敤sign-In鍑芥暟鍚庯紝濡傛灉缁撴潫璇UID鐨勭粺璁★紝闇�瑕佽皟鐢╯ign-Off鍑芥暟
+ @param puid : user's ID
+ @param provider : 涓嶈兘浠ヤ笅鍒掔嚎"_"寮�澶达紝浣跨敤澶у啓瀛楁瘝鍜屾暟瀛楁爣璇�; 濡傛灉鏄笂甯傚叕鍙革紝寤鸿浣跨敤鑲$エ浠g爜銆�
+ @return void.
+ */
++ (void)profileSignInWithPUID:(NSString *)puid;
++ (void)profileSignInWithPUID:(NSString *)puid provider:(NSString *)provider;
+
+/** active user sign-off.
+ 鍋滄sign-in PUID鐨勭粺璁�
+ @return void.
+ */
++ (void)profileSignOff;
+
+///---------------------------------------------------------------------------------------
+/// @name 鍦扮悊浣嶇疆璁剧疆
+/// 闇�瑕侀摼鎺� CoreLocation.framework 骞朵笖 #import <CoreLocation/CoreLocation.h>
+///---------------------------------------------------------------------------------------
+
+/** 璁剧疆缁忕含搴︿俊鎭�
+ @param latitude 绾害.
+ @param longitude 缁忓害.
+ @return void
+ */
++ (void)setLatitude:(double)latitude longitude:(double)longitude;
+
+
+///---------------------------------------------------------------------------------------
+/// @name Utility鍑芥暟
+///---------------------------------------------------------------------------------------
+
+/** 鍒ゆ柇璁惧鏄惁瓒婄嫳锛屼緷鎹槸鍚﹀瓨鍦╝pt鍜孋ydia.app
+ */
++ (BOOL)isJailbroken;
+
+/** 鍒ゆ柇App鏄惁琚牬瑙�
+ */
++ (BOOL)isPirated;
+
+/** 璁剧疆 app secret
+ @param secret string
+ @return void.
+ */
++ (void)setSecret:(NSString *)secret;
+
+
+/**
+ * 璁剧疆棰勭疆浜嬩欢灞炴�� 閿�煎 浼氳鐩栧悓鍚嶇殑key
+ */
++(void) registerPreProperties:(NSDictionary *)property;
+
+/**
+ *
+ * 鍒犻櫎鎸囧畾棰勭疆浜嬩欢灞炴��
+ @param key
+ */
++(void) unregisterPreProperty:(NSString *)propertyName;
+
+/**
+ * 鑾峰彇棰勭疆浜嬩欢鎵�鏈夊睘鎬э紱濡傛灉涓嶅瓨鍦紝鍒欒繑鍥炵┖銆�
+ */
++(NSDictionary *)getPreProperties;
+
+/**
+ *娓呯┖鎵�鏈夐缃簨浠跺睘鎬с��
+ */
++(void)clearPreProperties;
+
+
+/**
+ * 璁剧疆鍏虫敞浜嬩欢鏄惁棣栨瑙﹀彂,鍙叧娉╡ventList鍓嶄簲涓悎娉昬ventID.鍙宸茬粡淇濆瓨浜斾釜,姝ゆ帴鍙f棤鏁�
+ */
++(void)setFirstLaunchEvent:(NSArray *)eventList;
+
+/** 璁剧疆鏄惁鑷姩閲囬泦椤甸潰, 榛樿NO(涓嶈嚜鍔ㄩ噰闆�).
+ @param value 璁剧疆涓篩ES, umeng SDK 浼氬皢鑷姩閲囬泦椤甸潰淇℃伅
+ */
++ (void)setAutoPageEnabled:(BOOL)value;
+
+/**
+ *闆嗘垚娴嬭瘯銆�
+ */
++ (BOOL)handleUrl:(NSURL *)url;
+
+
+@end
+
+
diff --git a/DLL/UMeng/UMCommon.framework/Versions/A/Headers/UMCommon.h b/DLL/UMeng/UMCommon.framework/Versions/A/Headers/UMCommon.h
new file mode 100644
index 0000000..3b6f087
--- /dev/null
+++ b/DLL/UMeng/UMCommon.framework/Versions/A/Headers/UMCommon.h
@@ -0,0 +1,19 @@
+//
+//  UMCommon.h
+//  UMCommon
+//
+//  Created by San Zhang on 11/2/16.
+//  Copyright 漏 2016 UMeng. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+//! Project version number for UMCommon.
+FOUNDATION_EXPORT double UMCommonVersionNumber;
+
+//! Project version string for UMCommon.
+FOUNDATION_EXPORT const unsigned char UMCommonVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <UMCommon/PublicHeader.h>
+
+#import <UMCommon/UMConfigure.h>
diff --git a/DLL/UMeng/UMCommon.framework/Versions/A/Headers/UMConfigure.h b/DLL/UMeng/UMCommon.framework/Versions/A/Headers/UMConfigure.h
new file mode 100644
index 0000000..be79988
--- /dev/null
+++ b/DLL/UMeng/UMCommon.framework/Versions/A/Headers/UMConfigure.h
@@ -0,0 +1,45 @@
+//
+//  UMConfigure.h
+//  UMCommon
+//
+//  Created by San Zhang on 9/6/16.
+//  Copyright 漏 2016 UMeng. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface UMConfigure : NSObject
+
+/** 鍒濆鍖栧弸鐩熸墍鏈夌粍浠朵骇鍝�
+ @param appKey 寮�鍙戣�呭湪鍙嬬洘瀹樼綉鐢宠鐨刟ppkey.
+ @param channel 娓犻亾鏍囪瘑锛屽彲璁剧疆nil琛ㄧず"App Store".
+ */
++ (void)initWithAppkey:(NSString *)appKey channel:(NSString *)channel;
+
+/** 璁剧疆鏄惁鍦╟onsole杈撳嚭sdk鐨刲og淇℃伅.
+ @param bFlag 榛樿NO(涓嶈緭鍑簂og); 璁剧疆涓篩ES, 杈撳嚭鍙緵璋冭瘯鍙傝�冪殑log淇℃伅. 鍙戝竷浜у搧鏃跺繀椤昏缃负NO.
+ */
++ (void)setLogEnabled:(BOOL)bFlag;
+
+/** 璁剧疆鏄惁瀵规棩蹇椾俊鎭繘琛屽姞瀵�, 榛樿NO(涓嶅姞瀵�).
+ @param value 璁剧疆涓篩ES, umeng SDK 浼氬皢鏃ュ織淇℃伅鍋氬姞瀵嗗鐞�
+ */
++ (void)setEncryptEnabled:(BOOL)value;
+
++ (NSString *)umidString;
+
+/**
+ 闆嗘垚娴嬭瘯闇�瑕乨evice_id
+ */
++ (NSString*)deviceIDForIntegration;
+
+/** 鏄惁寮�鍚粺璁★紝榛樿涓篩ES(寮�鍚姸鎬�)
+ @param value 璁剧疆涓篘O,鍙叧闂弸鐩熺粺璁″姛鑳�.
+ @return void.
+*/
++ (void)setAnalyticsEnabled:(BOOL)value;
+
+//鑾峰彇zid
++ (NSString *)getUmengZID;
+
+@end
diff --git a/DLL/UMeng/UMCommon.framework/Versions/A/UMCommon b/DLL/UMeng/UMCommon.framework/Versions/A/UMCommon
new file mode 100644
index 0000000..995e6b5
--- /dev/null
+++ b/DLL/UMeng/UMCommon.framework/Versions/A/UMCommon
Binary files differ
diff --git a/DLL/UMeng/UMCommon.framework/Versions/Current/Headers/MobClick.h b/DLL/UMeng/UMCommon.framework/Versions/Current/Headers/MobClick.h
new file mode 100644
index 0000000..059931d
--- /dev/null
+++ b/DLL/UMeng/UMCommon.framework/Versions/Current/Headers/MobClick.h
@@ -0,0 +1,220 @@
+//
+//  MobClick.h
+//  Analytics
+//
+//  Copyright (C) 2010-2017 Umeng.com . All rights reserved.
+
+#import <UIKit/UIKit.h>
+#import <Foundation/Foundation.h>
+
+@interface MobClick : NSObject
+
+#pragma mark basics
+
+///---------------------------------------------------------------------------------------
+/// @name  璁剧疆
+///---------------------------------------------------------------------------------------
+
+
+
+#pragma mark event logs
+///---------------------------------------------------------------------------------------
+/// @name  椤甸潰璁℃椂
+///---------------------------------------------------------------------------------------
+
+/** 鎵嬪姩椤甸潰鏃堕暱缁熻, 璁板綍鏌愪釜椤甸潰灞曠ず鐨勬椂闀�.
+ @param pageName 缁熻鐨勯〉闈㈠悕绉�.
+ @param seconds 鍗曚綅涓虹锛宨nt鍨�.
+ @return void.
+ */
++ (void)logPageView:(NSString *)pageName seconds:(int)seconds;
+
+/** 鑷姩椤甸潰鏃堕暱缁熻, 寮�濮嬭褰曟煇涓〉闈㈠睍绀烘椂闀�.
+ 浣跨敤鏂规硶锛氬繀椤婚厤瀵硅皟鐢╞eginLogPageView:鍜宔ndLogPageView:涓や釜鍑芥暟鏉ュ畬鎴愯嚜鍔ㄧ粺璁★紝鑻ュ彧璋冪敤鏌愪竴涓嚱鏁颁笉浼氱敓鎴愭湁鏁堟暟鎹��
+ 鍦ㄨ椤甸潰灞曠ず鏃惰皟鐢╞eginLogPageView:锛屽綋閫�鍑鸿椤甸潰鏃惰皟鐢╡ndLogPageView:
+ @param pageName 缁熻鐨勯〉闈㈠悕绉�.
+ @return void.
+ */
++ (void)beginLogPageView:(NSString *)pageName;
+
+/** 鑷姩椤甸潰鏃堕暱缁熻, 缁撴潫璁板綍鏌愪釜椤甸潰灞曠ず鏃堕暱.
+ 浣跨敤鏂规硶锛氬繀椤婚厤瀵硅皟鐢╞eginLogPageView:鍜宔ndLogPageView:涓や釜鍑芥暟鏉ュ畬鎴愯嚜鍔ㄧ粺璁★紝鑻ュ彧璋冪敤鏌愪竴涓嚱鏁颁笉浼氱敓鎴愭湁鏁堟暟鎹��
+ 鍦ㄨ椤甸潰灞曠ず鏃惰皟鐢╞eginLogPageView:锛屽綋閫�鍑鸿椤甸潰鏃惰皟鐢╡ndLogPageView:
+ @param pageName 缁熻鐨勯〉闈㈠悕绉�.
+ @return void.
+ */
++ (void)endLogPageView:(NSString *)pageName;
+
+
+///---------------------------------------------------------------------------------------
+/// @name  浜嬩欢缁熻
+///---------------------------------------------------------------------------------------
+
+/** 鑷畾涔変簨浠�,鏁伴噺缁熻.
+浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID
+ 
+ @param  eventId 缃戠珯涓婃敞鍐岀殑浜嬩欢Id.
+ @param  label 鍒嗙被鏍囩銆備笉鍚岀殑鏍囩浼氬垎鍒繘琛岀粺璁★紝鏂逛究鍚屼竴浜嬩欢鐨勪笉鍚屾爣绛剧殑瀵规瘮,涓簄il鎴栫┖瀛楃涓叉椂鍚庡彴浼氱敓鎴愬拰eventId鍚屽悕鐨勬爣绛�.
+ @param  accumulation 绱姞鍊笺�備负鍑忓皯缃戠粶浜や簰锛屽彲浠ヨ嚜琛屽鏌愪竴浜嬩欢ID鐨勬煇涓�鍒嗙被鏍囩杩涜绱姞锛屽啀浼犲叆娆℃暟浣滀负鍙傛暟銆�
+ @return void.
+ */
++ (void)event:(NSString *)eventId; //绛夊悓浜� event:eventId label:eventId;
+/** 鑷畾涔変簨浠�,鏁伴噺缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID
+ */
++ (void)event:(NSString *)eventId label:(NSString *)label; // label涓簄il鎴朄""鏃讹紝绛夊悓浜� event:eventId label:eventId;
+
+/** 鑷畾涔変簨浠�,鏁伴噺缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID
+ */
++ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes;
+
++ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes counter:(int)number;
+
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+    浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+    beginEvent,endEvent瑕侀厤瀵逛娇鐢�,涔熷彲浠ヨ嚜宸辫鏃跺悗閫氳繃durations鍙傛暟浼犻�掕繘鏉�
+ 
+ @param  eventId 缃戠珯涓婃敞鍐岀殑浜嬩欢Id.
+ @param  label 鍒嗙被鏍囩銆備笉鍚岀殑鏍囩浼氬垎鍒繘琛岀粺璁★紝鏂逛究鍚屼竴浜嬩欢鐨勪笉鍚屾爣绛剧殑瀵规瘮,涓簄il鎴栫┖瀛楃涓叉椂鍚庡彴浼氱敓鎴愬拰eventId鍚屽悕鐨勬爣绛�.
+ @param  primarykey 杩欎釜鍙傛暟鐢ㄤ簬鍜宔vent_id涓�璧锋爣绀轰竴涓敮涓�浜嬩欢锛屽苟涓嶄細琚粺璁★紱瀵逛簬鍚屼竴涓簨浠跺湪beginEvent鍜宔ndEvent 涓浼犻�掔浉鍚岀殑eventId 鍜� primarykey
+ @param millisecond 鑷繁璁℃椂闇�瑕佺殑璇濋渶瑕佷紶姣杩涙潵
+ @return void.
+ 
+ @warning 姣忎釜event鐨刟ttributes涓嶈兘瓒呰繃100涓�
+    eventId銆乤ttributes涓璳ey鍜寁alue閮戒笉鑳戒娇鐢ㄧ┖鏍煎拰鐗规畩瀛楃锛屽繀椤绘槸NSString,涓旈暱搴︿笉鑳借秴杩�255涓瓧绗︼紙鍚﹀垯灏嗘埅鍙栧墠255涓瓧绗︼級
+    id锛� ts锛� du鏄繚鐣欏瓧娈碉紝涓嶈兘浣滀负eventId鍙妅ey鐨勫悕绉�
+*/
++ (void)beginEvent:(NSString *)eventId;
+
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)endEvent:(NSString *)eventId;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)beginEvent:(NSString *)eventId label:(NSString *)label;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)endEvent:(NSString *)eventId label:(NSString *)label;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)beginEvent:(NSString *)eventId primarykey :(NSString *)keyName attributes:(NSDictionary *)attributes;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)endEvent:(NSString *)eventId primarykey:(NSString *)keyName;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)event:(NSString *)eventId durations:(int)millisecond;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
+
++ (void)event:(NSString *)eventId label:(NSString *)label durations:(int)millisecond;
+/** 鑷畾涔変簨浠�,鏃堕暱缁熻.
+ 浣跨敤鍓嶏紝璇峰厛鍒板弸鐩烝pp绠$悊鍚庡彴鐨勮缃�->缂栬緫鑷畾涔変簨浠� 涓坊鍔犵浉搴旂殑浜嬩欢ID锛岀劧鍚庡湪宸ョ▼涓紶鍏ョ浉搴旂殑浜嬩欢ID.
+ */
++ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes durations:(int)millisecond;
+
+
+#pragma mark - user methods
+/** active user sign-in.
+ 浣跨敤sign-In鍑芥暟鍚庯紝濡傛灉缁撴潫璇UID鐨勭粺璁★紝闇�瑕佽皟鐢╯ign-Off鍑芥暟
+ @param puid : user's ID
+ @param provider : 涓嶈兘浠ヤ笅鍒掔嚎"_"寮�澶达紝浣跨敤澶у啓瀛楁瘝鍜屾暟瀛楁爣璇�; 濡傛灉鏄笂甯傚叕鍙革紝寤鸿浣跨敤鑲$エ浠g爜銆�
+ @return void.
+ */
++ (void)profileSignInWithPUID:(NSString *)puid;
++ (void)profileSignInWithPUID:(NSString *)puid provider:(NSString *)provider;
+
+/** active user sign-off.
+ 鍋滄sign-in PUID鐨勭粺璁�
+ @return void.
+ */
++ (void)profileSignOff;
+
+///---------------------------------------------------------------------------------------
+/// @name 鍦扮悊浣嶇疆璁剧疆
+/// 闇�瑕侀摼鎺� CoreLocation.framework 骞朵笖 #import <CoreLocation/CoreLocation.h>
+///---------------------------------------------------------------------------------------
+
+/** 璁剧疆缁忕含搴︿俊鎭�
+ @param latitude 绾害.
+ @param longitude 缁忓害.
+ @return void
+ */
++ (void)setLatitude:(double)latitude longitude:(double)longitude;
+
+
+///---------------------------------------------------------------------------------------
+/// @name Utility鍑芥暟
+///---------------------------------------------------------------------------------------
+
+/** 鍒ゆ柇璁惧鏄惁瓒婄嫳锛屼緷鎹槸鍚﹀瓨鍦╝pt鍜孋ydia.app
+ */
++ (BOOL)isJailbroken;
+
+/** 鍒ゆ柇App鏄惁琚牬瑙�
+ */
++ (BOOL)isPirated;
+
+/** 璁剧疆 app secret
+ @param secret string
+ @return void.
+ */
++ (void)setSecret:(NSString *)secret;
+
+
+/**
+ * 璁剧疆棰勭疆浜嬩欢灞炴�� 閿�煎 浼氳鐩栧悓鍚嶇殑key
+ */
++(void) registerPreProperties:(NSDictionary *)property;
+
+/**
+ *
+ * 鍒犻櫎鎸囧畾棰勭疆浜嬩欢灞炴��
+ @param key
+ */
++(void) unregisterPreProperty:(NSString *)propertyName;
+
+/**
+ * 鑾峰彇棰勭疆浜嬩欢鎵�鏈夊睘鎬э紱濡傛灉涓嶅瓨鍦紝鍒欒繑鍥炵┖銆�
+ */
++(NSDictionary *)getPreProperties;
+
+/**
+ *娓呯┖鎵�鏈夐缃簨浠跺睘鎬с��
+ */
++(void)clearPreProperties;
+
+
+/**
+ * 璁剧疆鍏虫敞浜嬩欢鏄惁棣栨瑙﹀彂,鍙叧娉╡ventList鍓嶄簲涓悎娉昬ventID.鍙宸茬粡淇濆瓨浜斾釜,姝ゆ帴鍙f棤鏁�
+ */
++(void)setFirstLaunchEvent:(NSArray *)eventList;
+
+/** 璁剧疆鏄惁鑷姩閲囬泦椤甸潰, 榛樿NO(涓嶈嚜鍔ㄩ噰闆�).
+ @param value 璁剧疆涓篩ES, umeng SDK 浼氬皢鑷姩閲囬泦椤甸潰淇℃伅
+ */
++ (void)setAutoPageEnabled:(BOOL)value;
+
+/**
+ *闆嗘垚娴嬭瘯銆�
+ */
++ (BOOL)handleUrl:(NSURL *)url;
+
+
+@end
+
+
diff --git a/DLL/UMeng/UMCommon.framework/Versions/Current/Headers/UMCommon.h b/DLL/UMeng/UMCommon.framework/Versions/Current/Headers/UMCommon.h
new file mode 100644
index 0000000..3b6f087
--- /dev/null
+++ b/DLL/UMeng/UMCommon.framework/Versions/Current/Headers/UMCommon.h
@@ -0,0 +1,19 @@
+//
+//  UMCommon.h
+//  UMCommon
+//
+//  Created by San Zhang on 11/2/16.
+//  Copyright 漏 2016 UMeng. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+//! Project version number for UMCommon.
+FOUNDATION_EXPORT double UMCommonVersionNumber;
+
+//! Project version string for UMCommon.
+FOUNDATION_EXPORT const unsigned char UMCommonVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <UMCommon/PublicHeader.h>
+
+#import <UMCommon/UMConfigure.h>
diff --git a/DLL/UMeng/UMCommon.framework/Versions/Current/Headers/UMConfigure.h b/DLL/UMeng/UMCommon.framework/Versions/Current/Headers/UMConfigure.h
new file mode 100644
index 0000000..be79988
--- /dev/null
+++ b/DLL/UMeng/UMCommon.framework/Versions/Current/Headers/UMConfigure.h
@@ -0,0 +1,45 @@
+//
+//  UMConfigure.h
+//  UMCommon
+//
+//  Created by San Zhang on 9/6/16.
+//  Copyright 漏 2016 UMeng. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface UMConfigure : NSObject
+
+/** 鍒濆鍖栧弸鐩熸墍鏈夌粍浠朵骇鍝�
+ @param appKey 寮�鍙戣�呭湪鍙嬬洘瀹樼綉鐢宠鐨刟ppkey.
+ @param channel 娓犻亾鏍囪瘑锛屽彲璁剧疆nil琛ㄧず"App Store".
+ */
++ (void)initWithAppkey:(NSString *)appKey channel:(NSString *)channel;
+
+/** 璁剧疆鏄惁鍦╟onsole杈撳嚭sdk鐨刲og淇℃伅.
+ @param bFlag 榛樿NO(涓嶈緭鍑簂og); 璁剧疆涓篩ES, 杈撳嚭鍙緵璋冭瘯鍙傝�冪殑log淇℃伅. 鍙戝竷浜у搧鏃跺繀椤昏缃负NO.
+ */
++ (void)setLogEnabled:(BOOL)bFlag;
+
+/** 璁剧疆鏄惁瀵规棩蹇椾俊鎭繘琛屽姞瀵�, 榛樿NO(涓嶅姞瀵�).
+ @param value 璁剧疆涓篩ES, umeng SDK 浼氬皢鏃ュ織淇℃伅鍋氬姞瀵嗗鐞�
+ */
++ (void)setEncryptEnabled:(BOOL)value;
+
++ (NSString *)umidString;
+
+/**
+ 闆嗘垚娴嬭瘯闇�瑕乨evice_id
+ */
++ (NSString*)deviceIDForIntegration;
+
+/** 鏄惁寮�鍚粺璁★紝榛樿涓篩ES(寮�鍚姸鎬�)
+ @param value 璁剧疆涓篘O,鍙叧闂弸鐩熺粺璁″姛鑳�.
+ @return void.
+*/
++ (void)setAnalyticsEnabled:(BOOL)value;
+
+//鑾峰彇zid
++ (NSString *)getUmengZID;
+
+@end
diff --git a/DLL/UMeng/UMCommon.framework/Versions/Current/UMCommon b/DLL/UMeng/UMCommon.framework/Versions/Current/UMCommon
new file mode 100644
index 0000000..995e6b5
--- /dev/null
+++ b/DLL/UMeng/UMCommon.framework/Versions/Current/UMCommon
Binary files differ
diff --git a/DLL/UMeng/UMDevice.framework/Headers/UMZid.h b/DLL/UMeng/UMDevice.framework/Headers/UMZid.h
new file mode 100644
index 0000000..56af630
--- /dev/null
+++ b/DLL/UMeng/UMDevice.framework/Headers/UMZid.h
@@ -0,0 +1,29 @@
+//
+//  UMZid.h
+//  UMZid
+//
+//  Created by UMZid on 8/29/20.
+//  Copyright 漏 2020 UMZid. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface UMZid : NSObject
+
+/// SDK鍒濆鍖栵紝寮傛璇锋眰uToken
+/// @param appkey     appkey
+/// @param completion 璇锋眰uToken鐨勫洖璋冿紝uToken涓鸿繑鍥炲�硷紝濡傛灉澶辫触锛寀Token涓虹┖瀛楃涓睝鈥溾��
++ (void)initWithAppKey:(NSString *)appkey completion:(void (^)(NSString *uToken))completion;
+
+/// 鍚屾鑾峰緱uToken锛屽け璐ヨ繑鍥炵┖瀛楃涓睝鈥溾��
++ (NSString *)getZID;
+
+/// 鑾峰彇SDK鐗堟湰鍙�
++ (NSString *)getSDKVersion;
+
+/// 鑾峰緱resetToken
++ (NSString *)getResetToken;
+
+/// 鑾峰緱at
++ (NSString *)getATStr;
+@end
diff --git a/DLL/UMeng/UMDevice.framework/UMDevice b/DLL/UMeng/UMDevice.framework/UMDevice
new file mode 100644
index 0000000..ce6f18f
--- /dev/null
+++ b/DLL/UMeng/UMDevice.framework/UMDevice
Binary files differ
diff --git a/DLL/UMeng/libHDLUMSDK.a b/DLL/UMeng/libHDLUMSDK.a
new file mode 100644
index 0000000..d5cb10d
--- /dev/null
+++ b/DLL/UMeng/libHDLUMSDK.a
Binary files differ
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index 3a9497f..a48482d 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -128,7 +128,7 @@
 127=Mode
 128=Fan speed
 129=Are you sure to shut off all functions in the room?
-130= already opened
+130=already opened
 131=Already added to favorites
 132=Congratulations! Successful registration.
 133=Automatic log-in soon鈥�
@@ -512,7 +512,14 @@
 524=Bypass
 525=Enable
 526=Cancel account
- 
+527=Homekit support notes
+528=Firmware update
+529=
+530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
+531=Password free unlocking within five minutes
+532=The device is offline and cannot be operated temporarily
+
+
 1000=Room Humidity
 1001=V-chip
 1002=Anion
@@ -594,7 +601,6 @@
 1078=Residual filter screen
 1079=Energy
 1080=Ventilated
-;鍒湅涓嬮潰閮戒竴鏍�,閮芥槸UI鐗规畩瑕佹眰鏁寸殑,鍐嶅姞涓婅�冭檻鑻辨枃闀垮害
 1081=1st Gear
 1082=2nd Gear
 1083=3rd Gear
@@ -1042,9 +1048,9 @@
 9011=Enter new password again
 9012=Agree
 9013=Service Agreement
-9014=User information protection regulations
+9014=Privacy Agreement
 9015=and
-9016=Please read and agree on User Service Agreement and User information protection regulations.
+9016=Please read and agree on User Service Agreement and Privacy Agreement.
 9017=Are you sure to log out?
 9018=Please select country/region.
 9019=Update now
@@ -1647,7 +1653,14 @@
 524=鍋滅敤
 525=鍚敤
 526=娉ㄩ攢璐﹀彿
- 
+527=鏀寔HomeKit璇存槑
+528=鍥轰欢鏇存柊
+529=
+530=涓洪槻姝㈠紑鍏抽棬鐨勮瑙︾偣鍑伙紝淇濊瘉瀹跺涵瀹夊叏锛岃杈撳叆鎮ㄧ殑闂ㄩ攣寮�闂ㄥ瘑鐮併��
+531=浜斿垎閽熷唴鍏嶅瘑鐮佸紑閿�
+532=璁惧绂荤嚎涓紝鏆傛椂鏃犳硶鎿嶄綔
+533=璁垮绠$悊
+
 1000=瀹ゅ唴婀垮害
 1001=绔ラ攣
 1002=璐熺瀛�
@@ -1748,7 +1761,6 @@
 1092=鐢熸晥鏃堕棿
 1092=Effective time
 1093=澶辨晥鏃堕棿
-1093=
 1094=閫夋嫨鏃堕棿
 1095=閫夋嫨鏃ユ湡
 1096=鐢熸垚
@@ -2251,3 +2263,1144 @@
 10031=璁惧涓嶈兘涓虹┖
 10032=鐢ㄦ埛娌℃湁璁惧鐨勬潈闄�
 10033=璁惧涓嶅瓨鍦�
+
+
+
+
+[russian]
+1=袥芯谐懈薪
+2=袧芯屑械褉 褌械谢械褎芯薪邪
+3=袨褋胁械褖械薪懈械
+4=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+5=袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 褋胁芯褞 褍褔械褌薪褍褞 蟹邪锌懈褋褜
+6=袩邪褉芯谢褜
+7=袟邪斜褘谢懈
+8=袟邪褉械谐懈褋褌褉懈褉褍泄褌械褋褜
+9=袩褉芯胁械褉芯褔薪褘泄 泻芯写 写谢褟 谢芯谐懈薪邪
+10=袩芯卸邪谢褍泄褋褌邪 锌芯写芯卸写懈褌械
+11=袟邪泻褉褘褌褜
+12=袩芯谢褍褔懈褌褜 锌褉芯胁械褉芯褔薪褘泄 泻芯写
+13=袩邪褉芯谢褜 写谢褟 谢芯谐懈薪邪
+14=袪械谐懈褋褌褉邪褑懈褟
+15=袧芯屑械褉 褌械谢械褎芯薪邪
+16=袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 锌邪褉芯谢褜
+17=袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 锌邪褉芯谢褜 锌芯胁褌芯褉薪芯
+18=袩褉芯胁械褉芯褔薪褘泄 泻芯写
+19=袧械胁械褉薪褘泄 薪芯屑械褉 褌械谢械褎芯薪邪.袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 褋薪芯胁邪
+20=袩邪褉芯谢懈 薪械 褋芯胁锌邪写邪褞褌. 袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 褋薪芯胁邪
+21=袩邪褉芯谢褜 薪械 褍写芯胁谢械褌胁芯褉褟械褌 褌褉械斜芯胁邪薪懈褟屑. 袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 褋薪芯胁邪
+22=袩芯谢褜蟹芯胁邪褌械谢褜 芯褌泻谢芯薪械薪.袩芯胁褌芯褉薪邪褟 褉械谐懈褋褌褉邪褑懈褟 胁芯蟹屑芯卸薪邪 褔械褉械蟹 24 褔邪褋邪.
+23=袧械胁械褉薪褘泄 锌褉芯胁械褉芯褔薪褘泄 泻芯写.袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 褋薪芯胁邪
+24=袧械胁械褉薪邪褟  褍褔械褌薪邪褟 蟹邪锌懈褋褜. 袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 胁械褉薪褘泄  邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+25=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+26=袪械蟹懈写械薪褑懈褟
+27=校褔邪褋褌薪懈泻
+28=小薪褟褌褜
+29=袩芯褋褌邪胁懈褌褜
+30=袪械蟹械褉胁薪芯械 泻芯锌懈褉芯胁邪薪懈械 写邪薪薪褘褏
+31=袙褋锌芯屑芯谐邪褌械谢褜薪邪褟 褎褍薪泻褑懈褟
+32=袛芯斜邪胁懈褌褜 褎褍薪泻褑懈懈
+33=袪械卸懈屑 薪芯褔褜
+34=袨褋薪芯胁薪褘械 薪邪褋褌褉芯泄泻懈
+35=袩芯谢褍褔懈褌褜 锌芯写写械褉卸泻褍
+36=袛芯屑
+37=袣邪褌械谐芯褉懈褟
+38=小屑邪褉褌
+39=袠薪写懈胁懈写褍邪谢褜薪褘泄
+40=袧械褍褋锌械褕薪邪褟 邪胁褌芯褉懈蟹邪褑懈褟, 薪械胁械褉薪邪 褍褔械褌薪邪褟 蟹邪锌懈褋褜 懈谢懈 锌邪褉芯谢褜
+41=袧械 褍写邪谢芯褋褜 芯褌锌褉邪胁懈褌褜 锌褉芯胁械褉芯褔薪褘泄 泻芯写
+42=袨褕懈斜泻邪 褋械褌懈
+43=袧械 褍写邪谢芯褋褜 蟹邪褉械谐懈褋褌褉懈褉芯胁邪褌褜褋褟
+44=袩芯写褌胁械褉写懈褌械 褋斜褉芯褋
+45=校褔械褌薪邪褟 蟹邪锌懈褋褜 薪械 褋褍褖械褋褌胁褍械褌, 锌褉芯胁械褉褜褌械 褔褌芯 芯薪邪 蟹邪褉械谐懈褋褌褉懈褉芯胁邪薪邪
+46=袧械胁械褉薪芯械 锌芯写褌胁械褉卸写械薪懈械 芯 胁褏芯写械 胁 褋懈褋褌械屑褍, 锌芯卸邪谢褍泄褋褌邪, 胁芯泄写懈褌械 胁 褋懈褋褌械屑褍 械褖械 褉邪蟹.
+47=袥懈褔薪褘泄 泻邪斜懈薪械褌
+48=袠屑褟
+49=QR 泻芯写
+50=袧芯屑械褉 褌械谢械褎芯薪邪
+51=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+52=袧械 锌褉懈胁褟蟹邪薪
+53=袪邪蟹褉械褕械薪懈械 褌褉械褌褜械泄 褋褌芯褉芯薪褘
+54=小屑械薪懈褌褜 锌邪褉芯谢褜
+55=袧邪褋褌褉芯泄泻邪 褉邪蟹斜谢芯泻懈褉芯胁泻懈
+56=校褋褌邪薪芯胁懈褌械 锌邪褉芯谢褜, 卸械褋褌, 芯褌锌械褔邪褌芯泻 锌邪谢褜褑邪 懈谢懈 褉邪褋锌芯蟹薪邪薪懈褟 谢懈褑邪, 褔褌芯斜褘 蟹邪褖懈褌懈褌褜 胁邪褕褍 泻芯薪褎懈写械薪褑懈邪谢褜薪芯褋褌褜
+57=袙褘泄褌懈 懈蟹 褋懈褋褌械屑褘
+58=袣芯屑薪邪褌邪
+59=校褋褌褉芯泄褋褌胁芯
+60=肖褍薪泻褑懈褟
+61=携褉泻芯褋褌褜
+62=袧邪褋褌褉芯泄泻懈
+63=袥芯泻邪褑懈褟
+64=袩芯写械谢懈褌褜褋褟
+65=袛芯斜邪胁懈褌褜 锌邪锌泻褍 薪邪 谐谢邪胁薪褘泄 褝泻褉邪薪
+66=小屑械薪懈褌褜 懈屑褟
+67=袨褌屑械薪懈褌褜
+68=袩芯写褌胁械褉写懈褌褜
+69=袙褋械
+70=楔褌芯褉褘
+71=袠屑褟
+72=袗写褉械褋
+73=校锌褉邪胁谢械薪懈械 褝褌邪卸邪屑懈
+74=校锌褉邪胁谢械薪懈械 泻芯屑薪邪褌邪屑懈
+75=袩械褉械写邪褌褜 锌褉邪胁邪 邪写屑懈薪懈褋褌褉邪褌芯褉邪
+76=袩械褉械写邪褌褜 写芯褋褌褍锌
+77=袛芯褋褌褍锌 写谢褟 芯褌谢邪写泻懈
+78=袩褉邪胁邪 邪写屑懈薪懈褋褌褉邪褌芯褉邪 锌械褉械写邪薪褘 写褉褍谐芯屑褍 锌芯谢褜蟹芯胁邪褌械谢褞.
+79=袙褋械 写邪薪薪褘械 芯 褉械蟹懈写械薪褑懈懈 锌械褉械写邪薪褘 薪芯胁芯屑褍 锌芯谢褜蟹芯胁邪褌械谢褞.
+80=袪邪蟹褉械褕懈褌褜 锌械褉褋芯薪邪谢褍 锌芯褋械褖邪褌褜 胁邪褕 锌褉芯械泻褌 褍写邪谢械薪薪芯
+81=协褌邪卸
+82=袛芯斜邪胁懈褌褜 褝褌邪卸
+83=袠蟹屑械薪懈褌褜 薪邪蟹胁邪薪懈械 褝褌邪卸邪
+84=袧械 褍写邪谢芯褋褜 写芯斜邪胁懈褌褜, 褝褌邪卸 褍卸械 褋褍褖械褋褌胁褍械褌
+85=小褑械薪邪
+86=校写邪谢懈褌褜
+87=袩芯写褋泻邪蟹泻邪
+88=校写邪谢懈褌褜 褝褌邪卸 懈谢懈 薪械褌?
+89=袛芯斜邪胁懈褌褜 泻芯屑薪邪褌褍
+90=袠蟹屑械薪懈褌褜 懈薪褎芯褉屑邪褑懈褞 写谢褟 泻芯屑薪邪褌褘
+91=袠薪褎芯褉屑邪褑懈褟 芯 泻芯屑薪邪褌械
+92=袧邪蟹胁邪薪懈械
+93=协褌邪卸
+94=校锌褉邪胁谢械薪懈械 褎褍薪泻褑懈褟屑懈
+95=小芯褏褉邪薪懈褌褜
+96=校写邪谢懈褌褜 泻芯屑薪邪褌褍
+97=袚邪谢械褉械褟 锌芯 褍屑芯谢褔邪薪懈褞
+98=袣邪屑械褉邪
+99=袙褘斜褉邪褌褜 懈蟹 谐邪谢械褉械懈
+100=袧械 锌褉懈褋胁芯械薪芯
+101=袩褉懈胁褟蟹邪薪芯
+102=袨褌胁褟蟹邪薪芯
+103=校写邪谢懈褌褜 泻芯屑薪邪褌褍 懈谢懈 薪械褌?
+104=袙褉械屑褟 锌械褉械褏芯写邪
+105=孝械屑锌械褉邪褌褍褉邪 胁 锌芯屑械褖械薪懈懈
+106=袣芯薪写懈褑懈芯薪懈褉芯胁邪薪懈械
+107=袙懈写械芯写芯屑芯褎芯薪
+108=袛邪褌褔懈泻
+109=袦芯薪懈褌芯褉 斜械蟹芯锌邪褋薪芯褋褌懈
+110=袠薪褌械谢谢械泻褌褍邪谢褜薪邪褟 锌邪薪械谢褜
+111=袦褍蟹褘泻邪
+112=袣邪褔械褋褌胁芯 胁芯蟹写褍褏邪
+113=袨泻褉褍卸邪褞褖邪褟 褋褉械写邪
+114=袦芯薪懈褌芯褉懈薪谐 褝薪械褉谐芯锌芯褌褉械斜谢械薪懈褟
+115=袘褘褌芯胁褘械 锌褉懈斜芯褉褘
+116=小屑邪褉褌 蟹邪屑芯泻
+117=袩芯写芯谐褉械胁 锌芯谢邪
+118=袨褌泻褉褘褌褜
+119=袨褏谢邪卸写械薪懈械
+120=袨褌芯锌谢械薪懈械
+121=袨褋褍褕械薪懈械 胁芯蟹写褍褏邪
+122=袗胁褌芯
+123=袩芯写邪褔邪 袙芯蟹写褍褏邪
+124=袙褘褋芯泻邪褟
+125=小褉械写薪褟褟
+126=袧懈蟹泻邪褟
+127=袪械卸懈屑
+128=小泻芯褉芯褋褌褜 胁械薪褌懈谢褟褌芯褉邪
+129=袙褘 褍胁械褉械薪褘, 褔褌芯 褏芯褌懈褌械 芯褌泻谢褞褔懈褌褜 胁褋械 褎褍薪泻褑懈懈 胁 泻芯屑薪邪褌械?
+130=校卸械 芯褌泻褉褘褌
+131=校卸械 写芯斜邪胁谢械薪芯 胁 懈蟹斜褉邪薪薪芯械
+132=袩芯蟹写褉邪胁谢褟械屑! 校褋锌械褕薪邪褟 褉械谐懈褋褌褉邪褑懈褟.
+133=袙褏芯写 胁 褋懈褋褌械屑褍 锌芯懈蟹芯泄写械褌 邪胁褌芯屑邪褌懈褔械褋泻懈  胁 斜谢懈卸邪泄褕械械 胁褉械屑褟鈥�
+134=袧芯屑械褉 褍褔械褌薪芯泄 蟹邪锌懈褋懈 薪械 蟹邪褉械谐懈褋褌褉懈褉芯胁邪薪, 锌芯卸邪谢褍泄褋褌邪, 蟹邪褉械谐懈褋褌褉懈褉褍泄褌械褋褜, 邪 蟹邪褌械屑 胁芯泄写懈褌械 胁 褋懈褋褌械屑褍 褋薪芯胁邪.
+135=袩芯卸邪谢褍泄褋褌邪, 锌芯谢褍褔懈褌械 锌褉芯胁械褉芯褔薪褘泄 泻芯写.
+136=袩邪褉芯谢褜 斜褘谢 懈蟹屑械薪械薪.
+137=袗写褉械褋 褉械蟹懈写械薪褑懈懈 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+138=袧邪蟹胁邪薪懈械 褉械蟹懈写械薪褑懈懈 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+139=袧邪蟹胁邪薪懈械 泻芯屑薪邪褌褘 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+140=袧邪蟹胁邪薪懈械 褝褌邪卸邪 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+141=袧械 褍写邪谢芯褋褜 懈褋锌褉邪胁懈褌褜, 褝褌邪卸 褋褍褖械褋褌胁褍械褌.
+142=袠屑褟 褍褋褌褉芯泄褋褌胁邪 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+143=袠屑褟 锌芯谢褜蟹芯胁邪褌械谢褟 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+144=袠屑褟 锌芯谢褜蟹芯胁邪褌械谢褟
+145=袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 褋褌褉邪薪懈褑褍 写谢褟 斜谢芯泻懈褉芯胁泻懈.
+146=袙褘 屑芯卸械褌械 胁褘斜褉邪褌褜 薪械褋泻芯谢褜泻芯 褋褌褉邪薪懈褑, 泻芯褌芯褉褘屑懈 褏芯褌懈褌械 褍锌褉邪胁谢褟褌褜.
+147=袨褕懈斜泻邪 锌褉芯胁械褉芯褔薪芯谐芯 泻芯写邪
+148=袧械褌 蟹邪褖懈褌褘
+149=袩褉懈 蟹邪锌褍褋泻械
+150=袩芯褋褌邪胁懈褌褜/小薪褟褌褜
+151=袪邪蟹斜谢芯泻懈褉芯胁邪褌褜 褍写邪谢械薪薪芯
+152=袧械褌 薪械芯斜褏芯写懈屑芯褋褌懈 胁胁芯写懈褌褜 锌邪褉芯谢褜 /褋写械谢邪泄褌械 卸械褋褌 锌褉懈 蟹邪锌褍褋泻械 锌褉芯谐褉邪屑屑褘
+153=袣邪褋邪褌械谢褜薪芯 胁褏芯写邪 胁 褋懈褋褌械屑褍 褔械褉械蟹 5 屑懈薪褍褌 锌芯褋谢械 胁褘褏芯写邪 褋芯 褋褌褉邪薪懈褑褘, 锌芯褌褉械斜褍械褌褋褟 褋芯芯褌胁械褌褋褌胁褍褞褖懈泄 屑械褌芯写 褉邪蟹斜谢芯泻懈褉芯胁泻懈.
+154=袥懈褔薪褘泄 泻邪斜懈薪械褌 锌芯谢褜蟹芯胁邪褌械谢褟 - 懈褋锌芯谢褜蟹褍械褌褋褟 写谢褟 褉邪蟹斜谢芯泻懈褉芯胁泻懈 褎褍薪泻褑懈懈 斜械蟹芯锌邪褋薪芯褋褌懈, 褌邪泻芯泄 泻邪泻 褋薪褟褌褜 /锌芯褋褌邪胁懈褌褜
+155=袠褋锌芯谢褜蟹褍械褌褋褟 写谢褟 褉邪蟹斜谢芯泻懈褉芯胁泻懈 懈薪褌械谢谢械泻褌褍邪谢褜薪芯谐芯 蟹邪屑泻邪
+156=袧邪褋褌褉芯泄泻邪 褉邪蟹斜谢芯泻懈褉芯胁泻懈
+157=袛械泄褋褌胁懈褌械谢械薪 褌芯谢褜泻芯 写谢褟 褋芯斜褋褌胁械薪薪懈泻邪
+158=袪邪蟹斜谢芯泻懈褉芯胁泻邪 褋 锌芯屑芯褖褜褞 锌邪褉芯谢褟
+159=袪邪蟹斜谢芯泻懈褉芯胁泻邪 卸械褋褌芯屑
+160=袪邪蟹斜谢芯泻懈褉芯胁泻邪 褋 锌芯屑芯褖褜褞 芯褌锌械褔邪褌泻芯胁 锌邪谢褜褑械胁
+161=袪邪蟹斜谢芯泻懈褉芯胁泻邪 褋 锌芯屑芯褖褜褞 褉邪褋锌芯蟹薪邪薪懈褟 谢懈褑邪
+162=袧邪褋褌褉芯泄泻邪 褑懈褎褉芯胁芯谐芯 锌邪褉芯谢褟
+163=校褋锌械褕薪邪褟 薪邪褋褌褉芯泄泻邪
+164=袧邪褋褌褉芯泄泻邪 卸械褋褌芯胁
+165=袩芯卸邪谢褍泄褋褌邪, 薪邪褉懈褋褍泄褌械 褍蟹芯褉 写谢褟 褉邪蟹斜谢芯泻懈褉芯胁泻懈.
+166=孝褉械斜褍械褌褋褟 褋芯械写懈薪懈褌褜 泻邪泻 屑懈薪懈屑褍屑 4-褌芯褔泻懈, 锌芯卸邪谢褍泄褋褌邪, 薪邪褉懈褋褍泄褌械 械褖械 褉邪蟹.
+167=校蟹芯褉 懈 械谐芯 锌芯写褌胁械褉卸写械薪懈械, 泻芯褌芯褉褘械 胁褘 薪邪褉懈褋芯胁邪谢懈, 薪械 褋芯胁锌邪写邪褞褌. 袩芯卸邪谢褍泄褋褌邪, 薪邪褉懈褋褍泄褌械 械褖械 褉邪蟹.
+168=袩芯卸邪谢褍泄褋褌邪, 薪邪褉懈褋褍泄褌械 褋胁芯泄 褍蟹芯褉 褉邪蟹斜谢芯泻懈褉芯胁泻懈 械褖械 褉邪蟹.
+169=袪邪蟹斜谢芯泻懈褉芯胁邪褌褜 褋 锌芯屑芯褖褜褞 芯褌锌械褔邪褌泻芯胁 锌邪谢褜褑械胁 懈谢懈 薪械褌?
+170=袪邪蟹斜谢芯泻懈褉芯胁邪褌褜 褋 锌芯屑芯褖褜褞 褉邪褋锌芯蟹薪邪薪懈褟 谢懈褑邪 懈谢懈 薪械褌?
+171=袩芯写褌胁械褉写懈褌械 褑懈褎褉芯胁芯泄 锌邪褉芯谢褜
+172=袩芯写褌胁械褉写懈褌械 卸械褋褌
+173=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 懈褋褏芯写薪褘泄 卸械褋褌.
+174=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 懈褋褏芯写薪褘泄 褑懈褎褉芯胁芯泄 锌邪褉芯谢褜.
+175=小斜芯泄 锌褉芯胁械褉泻懈, 芯褕懈斜泻邪 锌邪褉芯谢褟
+176=袠蟹屑械薪懈褌械 褑懈褎褉芯胁芯泄 锌邪褉芯谢褜
+177=袠蟹屑械薪懈褌褜 卸械褋褌
+178=袨褌泻谢褞褔懈褌褜 薪邪褋褌褉芯泄泻褍 褉邪蟹斜谢芯泻懈褉芯胁泻懈 懈谢懈 薪械褌?
+179=袩芯卸邪谢褍泄褋褌邪, 锌褉芯胁械褉褜褌械 芯褌锌械褔邪褌泻懈 锌邪谢褜褑械胁.
+180=袨褕懈斜泻邪 锌褉芯胁械褉泻懈, 芯褕懈斜泻邪 卸械褋褌邪
+181=袨斜褖懈械 褋胁械写械薪懈褟
+182=袛械薪褜
+183=袧芯褔褜
+184=携 褍褕械谢
+185=袩芯卸邪谢褍泄褋褌邪 锌褉懈胁褟卸懈褌械 褝褌邪卸
+186=袪械谐褍谢懈褉芯胁泻邪 褋泻芯褉芯褋褌懈 胁械薪褌懈谢褟褌芯褉邪
+187=袙械薪褌懈谢褟褌芯褉
+188=袪芯蟹械褌泻邪
+189=校褉芯胁械薪褜
+190=袣邪薪邪谢
+191=袚褉芯屑泻芯褋褌褜
+192=孝袙
+193=袣芯屑薪邪褌邪 褍卸械 褋褍褖械褋褌胁褍械褌, 薪械 褍写邪谢芯褋褜 懈蟹屑械薪懈褌褜.
+194=袨泻褉褍卸邪褞褖邪褟 褋褉械写邪
+195=小懈谢褜薪芯械 蟹邪谐褉褟蟹薪械薪懈械
+196=袧械蟹薪邪褔懈褌械谢褜薪芯械 蟹邪谐褉褟蟹薪械薪懈械
+197=啸芯褉芯褕芯
+198=袨褌谢懈褔薪芯
+199=袦芯褉芯蟹薪芯
+200=啸芯谢芯写薪芯
+201=锌褉芯褏谢邪写薪芯
+202=袣芯屑褎芯褉褌薪芯
+203=孝械锌谢芯
+204=袞邪褉泻芯
+205=袨褔械薪褜 卸邪褉泻芯
+206=小褌邪薪写邪褉褌薪芯
+207=袧械蟹薪邪褔懈褌械谢褜薪芯械 蟹邪谐褉褟蟹薪械薪懈械
+208=小褉械写薪械械 蟹邪谐褉褟蟹薪械薪懈械 
+209=小懈谢褜薪芯械 蟹邪谐褉褟蟹薪械薪懈械
+210=小胁械卸懈泄
+211=小屑芯谐
+212=袟邪谐褉褟蟹薪械薪
+213=小懈谢褜薪芯 蟹邪谐褉褟蟹薪械薪
+214=袙褘褋芯泻邪褟 袙谢邪卸薪芯褋褌褜
+215=袙谢邪卸薪芯
+216=小褍褏芯
+217=孝械屑锌械褉邪褌褍褉邪
+218=袙谢邪卸薪芯褋褌褜
+219=袛懈邪锌邪蟹芯薪
+220=校褉芯胁械薪褜
+221=袟薪邪褔械薪懈械 褑胁械褌邪
+222=校谢褜褌褉邪写懈褋锌械褉褋薪邪褟 锌褘谢褜
+223=袦械谢泻芯写懈褋锌械褉褋薪邪褟 锌褘谢褜
+224=楔褍屑
+225=小懈谢邪 胁械褌褉邪
+226=校谐谢械泻懈褋谢褘泄 谐邪蟹
+227=袨袥袨小
+228=袛械薪褜
+229=袧械写械谢褟
+230=袦械褋褟褑
+231=袛褉褍谐芯泄 褉械谐懈芯薪
+232=校锌褉邪胁谢械薪懈械 褍褔邪褋褌薪懈泻邪屑懈
+233=袩褋械胁写芯薪懈屑
+234=袩芯谢薪芯屑芯褔懈褟 邪写屑懈薪懈褋褌褉邪褌芯褉邪
+235=小芯蟹写邪褌褜 褋褑械薪褍
+236=袩褋械胁写芯薪懈屑 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+237=袠蟹屑械薪懈褌褜 锌褋械胁写芯薪懈屑
+238=袠褋锌芯谢褜蟹褍械屑褘泄 褉械谐懈芯薪
+239=袛芯斜邪胁懈褌褜 褍褔邪褋褌薪懈泻邪
+240=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 褍褔械褌薪褍褞 蟹邪锌懈褋褜 褍褔邪褋褌薪懈泻邪.
+241=小泻邪薪懈褉芯胁邪褌褜 QR-泻芯写
+242=袩芯写褌胁械褉写懈褌褜 锌褉懈谐谢邪褕械薪懈械
+243=袨褕懈斜泻邪 褍褔械褌薪芯泄 蟹邪锌懈褋懈, 锌芯卸邪谢褍泄褋褌邪 锌褉芯胁械褉褜褌械.
+244=校褔邪褋褌薪懈泻邪 褍褋锌械褕薪芯 写芯斜邪胁谢械薪
+245=袨褕懈斜泻邪 写邪薪薪褘褏, 锌芯锌褉芯斜褍泄褌械 械褖械 褉邪蟹.
+246=袧械 褍写邪谢芯褋褜 写芯斜邪胁懈褌褜, 褍褔械褌薪邪褟 蟹邪锌懈褋褜 褍褔邪褋褌薪懈泻邪 薪械 蟹邪褉械谐懈褋褌褉懈褉芯胁邪薪邪.
+247=袧械 褍写邪谢芯褋褜 写芯斜邪胁懈褌褜 褋械斜褟.
+248=袩芯谢褜蟹芯胁邪褌械谢褜 薪械 褋褍褖械褋褌胁褍械褌 胁 褝褌芯泄 褉械蟹懈写械薪褑懈懈.
+249=校褔械褌薪邪褟 蟹邪锌懈褋褜 褍褔邪褋褌薪懈泻邪 斜褘谢邪 写芯斜邪胁谢械薪邪, 锌芯褝褌芯屑褍 械械 薪械谢褜蟹褟 写芯斜邪胁懈褌褜 褋薪芯胁邪.
+250=小斜芯泄 芯锌械褉邪褑懈懈
+251=袧械 褍写邪谢芯褋褜 写芯斜邪胁懈褌褜, 薪械写芯褋褌邪褌芯褔薪芯 锌芯谢薪芯屑芯褔懈泄
+252=校褋锌械褕薪芯 褋芯褏褉邪薪械薪芯
+253=小芯褏褉邪薪械薪懈械鈥� 锌芯卸邪谢褍泄褋褌邪, 锌芯写芯卸写懈褌械.
+254=袪械写邪泻褌懈褉芯胁邪薪懈械 锌褋械胁写芯薪懈屑邪
+255=校写邪谢懈褌褜 褝褌芯谐芯 褍褔邪褋褌薪懈泻邪
+256=袧械褌 懈蟹斜褉邪薪薪褘褏
+257=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 褋芯写械褉卸懈屑芯械.
+258=袩褉懈胁械褌褋褌胁褍械屑 薪芯胁芯谐芯 褍褔邪褋褌薪懈泻邪.
+259=袙褘 褍胁械褉械薪褘, 褔褌芯 褏芯褌懈褌械 褍写邪谢懈褌褜 褝褌芯谐芯 褍褔邪褋褌薪懈泻邪?
+260=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 锌邪褉芯谢褜 写谢褟 胁褏芯写邪 胁 褋懈褋褌械屑褍.
+261=校褋锌械褕薪芯 褋屑械薪械薪邪 褉械蟹懈写械薪褑懈褟
+262=袙褘斜褉邪褌褜 胁褋械
+263=袩芯写械谢懈褌褜褋褟 褎褍薪泻褑懈芯薪邪谢芯屑
+264=袩芯写褌胁械褉写懈褌褜 褋芯胁屑械褋褌薪芯械 懈褋锌芯谢褜蟹芯胁邪薪懈械
+265=袩芯写械谢懈褌褜褋褟 褋
+266=小斜芯泄 褋芯胁屑械褋褌薪芯谐芯 懈褋锌芯谢褜蟹芯胁邪薪懈褟 褎褍薪泻褑懈泄
+267=校褋锌械褕薪芯械 褋芯胁屑械褋褌薪芯械 懈褋锌芯谢褜蟹芯胁邪薪懈械 褎褍薪泻褑懈泄
+268=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+269=袠蟹屑械薪懈褌褜 锌褉懈胁褟蟹泻褍
+270=校写邪谢懈褌褜 锌褉懈胁褟蟹泻褍
+271=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+272=袠蟹屑械薪懈褌械 锌褉懈胁褟蟹邪薪薪褘泄 邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+273=袠蟹屑械薪懈褌褜 屑械褌芯写 锌褉芯胁械褉泻懈
+274=袨褌锌褉邪胁谢械薪 锌褉芯胁械褉芯褔薪褘泄 泻芯写, 锌芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 械谐芯.
+275=锌芯胁褌芯褉薪邪褟 芯褌锌褉邪胁泻邪
+276=校褋锌械褕薪邪褟 锌褉芯胁械褉泻邪
+277=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+278=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪芯胁褘泄 邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘.
+279=胁邪褕 邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘 褍褋锌械褕薪芯 锌褉懈胁褟蟹邪薪 泻 胁邪褕械泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈 
+280=袧械 褍写邪械褌褋褟 锌褉懈胁褟蟹邪褌褜  邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘 泻 胁邪褕械泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈 
+281=校写邪谢懈褌械 锌褉懈胁褟蟹泻褍 泻 胁邪褕械屑褍 邪写褉械褋褍 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+282=校褋锌械褕薪芯械 褍写邪谢械薪懈械 锌褉懈胁褟蟹泻懈
+283=袧芯屑械褉 褌械谢械褎芯薪邪
+284=袧芯屑械褉 褌械谢械褎芯薪邪
+285=袧芯屑械褉 褌械谢械褎芯薪邪
+286=袧芯屑械褉 胁邪褕械谐芯 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪 褍褋锌械褕薪芯 锌褉懈胁褟蟹邪薪  泻 胁邪褕械泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈 
+287=袧械 褍写邪械褌褋褟 锌褉懈胁褟蟹邪褌褜 薪芯屑械褉 胁邪褕械谐芯 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪 泻 胁邪褕械泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈 
+288=袠蟹屑械薪懈褌褜 袩褉懈胁褟蟹泻褍
+289=校写邪谢懈褌褜 袩褉懈胁褟蟹泻褍
+290=袧械 褍写邪械褌褋褟 锌芯谢褍褔懈褌褜 懈褋褌芯褉懈褞
+291=袧械褌 懈蟹斜褉邪薪薪褘褏
+292=袨 锌褉芯谐褉邪屑屑械
+293=校褔邪褋褌薪懈泻
+294=袗写屑懈薪懈褋褌褉邪褌芯褉
+295=小屑械薪懈褌褜 锌邪褉芯谢褜
+296=袩械褉械写 褋屑械薪芯泄 锌邪褉芯谢褟 写谢褟 胁褏芯写邪 胁 褋懈褋褌械屑褍
+297=袩芯卸邪谢褍泄褋褌邪, 锌芯写褌胁械褉写懈褌械 懈写械薪褌懈褎懈泻邪褌芯褉.
+298=袩褉芯胁械褉泻邪 锌芯 褌械谢械褎芯薪褍
+299=袩褉芯胁械褉泻邪 锌芯 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌械
+300=袧械 锌褉懈胁褟蟹邪薪 泻 邪写褉械褋褍 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘, 薪械 褍写邪谢芯褋褜 锌芯写褌胁械褉写懈褌褜
+301=袧械 锌褉懈胁褟蟹邪薪 泻 薪芯屑械褉褍 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪, 薪械 褍写邪谢芯褋褜 锌芯写褌胁械褉写懈褌褜
+302=袩褉芯写芯谢卸懈褌褜 锌褉懈胁褟蟹泻褍
+303=袩褉懈胁褟蟹泻褍 泻 薪芯屑械褉褍 胁邪褕械谐芯 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪 褍褋锌械褕薪芯 褍写邪谢械薪邪 
+304=袩褉芯胁械褉芯褔薪褘泄 泻芯写 斜褘谢 芯褌锌褉邪胁谢械薪 薪邪:
+305=袧芯屑械褉 褌械谢械褎芯薪邪
+306=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+307=袩芯谢褍褔械薪褘 薪芯胁褘械 写邪薪薪褘械, 胁褘 褍胁械褉械薪褘, 褔褌芯 懈褏 薪褍卸薪芯 锌械褉械锌懈褋邪褌褜?
+308=袗胁褌芯屑邪褌懈蟹邪褑懈褟
+309=小芯蟹写邪褌褜 褋褑械薪褍
+310=袛芯斜邪胁懈褌褜 褋褑械薪褍
+311=袘邪蟹芯胁邪褟 泻芯薪褎懈谐褍褉邪褑懈褟
+312=袠屑褟
+313=袪械谐懈芯薪
+314=袟邪胁械褉褕懈褌褜
+315=袩芯谢薪褘泄 胁懈写 薪邪 褉械蟹懈写械薪褑懈褞
+316=袙褘斜褉邪褌褜
+317=校卸械 写芯斜邪胁谢械薪芯
+318=袩械褉械泻谢褞褔懈褌褜
+319=小泻芯褉芯褋褌褜 胁械薪褌懈谢褟褌芯褉邪
+320=袪械卸懈屑
+321=袙泻谢.
+322=袙褘泻谢.
+323=小褑械薪邪
+324=袟邪写械褉卸泻邪 胁褘锌芯谢薪械薪懈褟 褋褑械薪褘
+325=袧邪褋褌褉芯泄泻邪 蟹邪写械褉卸泻懈
+326=袟邪写械褉卸泻邪
+327=袟邪褏胁邪褌 褋褑械薪褘
+328=袟邪锌懈褋邪褌褜 褋褑械薪褍
+329=袨斜褖懈械 褋胁械写械薪懈褟
+330=袗胁褌芯屑邪褌懈褔械褋泻懈泄 褉械卸懈屑
+331=袦芯褖薪芯褋褌褜 锌芯写芯谐褉械胁邪 锌芯谢邪 
+332=袨褏谢邪卸写械薪懈械 锌芯谢邪
+333=袦芯褖薪芯褋褌褜 芯褏谢邪卸写械薪懈褟 锌芯谢邪 
+334=袪械谐褍谢懈褉芯胁泻邪 锌褉芯褑械薪褌薪芯谐芯 褋芯芯褌薪芯褕械薪懈褟
+335=袘械蟹 蟹邪写械褉卸泻懈
+336=袧械褌 写芯褋褌褍锌薪褘褏 褋褑械薪. 袛芯斜邪胁褜褌械 芯写薪褍! 
+337=袪械写邪泻褌懈褉芯胁邪褌褜 褋褑械薪褍
+338=袧邪蟹胁邪薪懈械 褋褑械薪褘 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+339=袧邪蟹胁邪薪懈械 褋褑械薪褘 褍卸械 褋褍褖械褋褌胁褍械褌, 锌芯卸邪谢褍泄褋褌邪, 懈褋锌褉邪胁褜褌械.
+340=袧邪蟹胁邪薪懈械 泻芯屑薪邪褌褘 褍卸械 褋褍褖械褋褌胁褍械褌, 锌芯卸邪谢褍泄褋褌邪, 懈褋锌褉邪胁褜褌械
+341=校写邪谢褟褌褜 褝褌褍 褋褑械薪褍 懈谢懈 薪械褌?
+342=楔谢褞蟹 薪械 写芯褋褌褍锌械薪, 褋斜芯泄 褍写邪谢械薪薪芯谐芯 锌芯写泻谢褞褔械薪懈褟.
+343=袨褕懈斜泻邪 MAC 邪写褉械褋邪, 褋斜芯泄 褍写邪谢械薪薪芯谐芯 锌芯写泻谢褞褔械薪懈褟.
+344=小斜芯泄 褍写邪谢械薪薪芯谐芯 锌芯写泻谢褞褔械薪懈褟
+345=袧芯屑械褉 褌械谢械褎芯薪邪
+346=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+347=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪芯胁褘泄 薪芯屑械褉 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪.
+348=袘褘谢 懈褋锌芯谢褜蟹芯胁邪薪 薪芯屑械褉 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪.
+349=袘褘谢 懈褋锌芯谢褜蟹芯胁邪薪 邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘.
+350=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘 褋芯胁锌邪写邪械褌 褋 褌械泻褍褖懈屑, 屑械薪褟褌褜 薪械 薪褍卸薪芯.
+351=袧芯屑械褉 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪 褋芯胁锌邪写邪械褌 褋 褌械泻褍褖懈屑, 屑械薪褟褌褜 薪械 薪褍卸薪芯.
+352=袧邪蟹薪邪褔械薪懈械 褝褌邪卸邪
+353=袪邪蟹写械谢懈褌褜
+354=袟邪泻褉褘褌褜
+355=袩褉芯
+356=袧芯屑械褉 胁械褉褋懈懈
+357=协褌邪 褎褍薪泻褑懈褟 薪械写芯褋褌褍锌薪邪!
+358=孝械谢械褎芯薪:
+359=协谢械泻褌褉芯薪薪邪褟 锌芯褔褌邪:
+360=小褑械薪邪 锌邪薪械谢懈 褍锌褉邪胁谢械薪懈褟
+361=袧械 写芯斜邪胁谢械薪芯
+362=袙褘斜褉邪褌褜 胁褋械
+363=袧械 褍写邪械褌褋褟 褍褋褌邪薪芯胁懈褌褜 褋胁褟蟹褜 褋 褋械褉胁械褉芯屑, 薪械 褍写邪械褌褋褟 芯褌褉械写邪泻褌懈褉芯胁邪褌褜 懈薪褎芯褉屑邪褑懈褞 芯斜 褍褋褌褉芯泄褋褌胁械
+364=袧械 褍写邪械褌褋褟 褍褋褌邪薪芯胁懈褌褜 褋胁褟蟹褜 褋 褋械褉胁械褉芯屑, 薪械 褍写邪械褌褋褟 芯褌褉械写邪泻褌懈褉芯胁邪褌褜 懈薪褎芯褉屑邪褑懈褞 芯 泻芯屑薪邪褌械
+365=袧械 褍写邪械褌褋褟 褍褋褌邪薪芯胁懈褌褜 褋胁褟蟹褜 褋 褋械褉胁械褉芯屑, 薪械 褍写邪械褌褋褟 芯褌褉械写邪泻褌懈褉芯胁邪褌褜 懈薪褎芯褉屑邪褑懈褞 芯 褋褑械薪械
+366=袧械 褍写邪械褌褋褟 褍褋褌邪薪芯胁懈褌褜 褋胁褟蟹褜 褋 褋械褉胁械褉芯屑, 薪械 褍写邪械褌褋褟 褍写邪谢懈褌褜 褋褑械薪褍
+367=袧械 褍写邪械褌褋褟 褍褋褌邪薪芯胁懈褌褜 褋胁褟蟹褜 褋 褋械褉胁械褉芯屑, 薪械 褍写邪械褌褋褟 褍写邪谢懈褌褜 褝褌邪卸
+368=袛芯斜褉芯 锌芯卸邪谢芯胁邪褌褜,薪邪褋谢邪卸写邪泄褌械褋褜 On Pro
+369=袛芯斜邪胁懈褌褜 薪芯胁褍褞 褉械蟹懈写械薪褑懈褞
+370=小褌邪褌褜 褔谢械薪芯屑 褋械屑褜懈
+371=袧械胁芯蟹屑芯卸薪芯 懈褋锌芯谢褜蟹芯胁邪褌褜 褎褍薪泻褑懈褞, 锌芯卸邪谢褍泄褋褌邪, 锌褉懈胁褟卸懈褌械 褕谢褞蟹
+372=袧械 褍写邪械褌褋褟 褋芯蟹写邪褌褜 褋褑械薪褍, 锌芯卸邪谢褍泄褋褌邪, 锌褉懈胁褟卸懈褌械 褕谢褞蟹
+373=袧械 褍写邪谢芯褋褜 写芯斜邪胁懈褌褜 褝褌邪卸
+374=袛邪薪薪褘械 芯 褉械蟹懈写械薪褑懈懈 斜褘谢懈 褍写邪谢械薪褘, 锌褉懈谢芯卸械薪懈械 邪胁褌芯屑邪褌懈褔械褋泻懈 锌械褉械泻谢褞褔懈褌褋褟 薪邪 写褉褍谐褍褞 褉械蟹懈写械薪褑懈褞.
+375=楔谢褞蟹 薪械 锌芯写泻谢褞褔械薪 泻 褋械褉胁械褉褍, 薪械 褍写邪械褌褋褟 褋芯蟹写邪褌褜 褋褑械薪褍.
+376=袧械 褍写邪械褌褋褟 胁胁械褋褌懈 褋锌械褑懈邪谢褜薪褘泄 褋懈屑胁芯谢
+377=袙褋褟 褉械蟹懈写械薪褑懈褟
+378=袙褉械屑褟 锌械褉械褏芯写邪
+379=小泻芯褉芯褋褌褜 锌械褉械褏芯写邪
+380=协褌邪 褎褍薪泻褑懈褟 薪械写芯褋褌褍锌薪邪!
+381=袩械褉械蟹邪谐褉褍蟹泻邪
+400=袛芯斜褉芯 锌芯卸邪谢芯胁邪褌褜 写芯屑芯泄
+401=袧械胁械褉薪褘泄 褕褌褉懈褏-泻芯写, 锌芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍
+402=袩芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍
+403=笑胁械褌芯胁邪褟 褌械屑锌械褉邪褌褍褉邪
+404=袘褘褋褌褉邪褟 薪邪褋褌褉芯泄泻邪
+405=校褞褌薪褘泄
+406=袙褋褌褉械褔邪
+407=效褌械薪懈械
+408=袛芯斜邪胁懈褌褜
+409=肖褍薪泻褑懈褟 屑邪褉泻懈 芯斜芯褉褍写芯胁邪薪懈褟
+410=袙 薪邪褋褌芯褟褖械械 胁褉械屑褟 胁褘 薪械 写芯斜邪胁懈谢懈 薪懈 芯写薪芯谐芯 锌谢邪褌褎芯褉屑械薪薪芯谐芯 褍褋褌褉芯泄褋褌胁邪 
+411=袛褉褍谐懈械 锌谢邪褌褎芯褉屑械薪薪褘械 褍褋褌褉芯泄褋褌胁邪 锌芯写写械褉卸懈胁邪褞褌褋褟 褋褌芯褉芯薪薪懈屑懈 锌褉芯胁邪泄写械褉邪屑懈
+412=袛芯斜邪胁懈褌褜
+413=袣芯薪褌褉芯谢谢械褉 薪械 胁泻谢褞褔械薪
+414=袣芯薪褌褉芯谢谢械褉 胁泻谢褞褔械薪
+415=袣褌芯-褌芯
+416=袞褍褉薪邪谢
+417=校褌械褔泻邪 胁芯写褘
+418=袙 小芯褋褌芯褟薪懈懈 褌褉械胁芯谐懈
+419=袧芯褉屑邪谢褜薪褘泄
+420=袚芯褉褟褔懈泄 褋褍褏芯泄
+421=小褍褏芯泄 胁芯蟹写褍褏
+422=袛械蟹懈薪褎懈褑懈褉芯胁邪褌褜
+423=袨褋胁械褖械薪懈械
+424=袙褉械屑褟
+425=袙褉械屑褟 谐芯褉褟褔械泄 锌褉芯褋褍褕泻懈
+426=袙褉械屑褟 锌褉芯褋褍褕泻懈
+427=袙褉械屑褟 写械蟹懈薪褎械泻褑懈懈
+428=袙褉械屑褟 邪薪懈芯薪懈蟹邪褑懈懈
+429=效
+430=袦懈薪
+431=袙 薪邪褋褌芯褟褖械械 胁褉械屑褟 胁褘 写芯斜邪胁谢褟械褌械 泻邪泻懈械-谢懈斜芯 锌谢邪褌褎芯褉屑械薪薪褘械 褍褋褌褉芯泄褋褌胁邪 胁
+432=袛褉褍谐懈械 锌谢邪褌褎芯褉屑械薪薪芯械 芯斜芯褉褍写芯胁邪薪懈械 锌芯写写械褉卸懈胁邪械褌褋褟 褋褌芯褉芯薪薪懈屑懈 锌褉芯胁邪泄写械褉邪屑懈
+433=袙芯写褟薪芯泄 泻谢邪锌邪薪
+434=袩械褉械泻谢褞褔邪褌械谢褜 胁褉械屑械薪懈
+435=袛懈褋褌邪薪褑懈芯薪薪芯械 褍锌褉邪胁谢械薪懈械
+436=袛芯斜邪胁谢械薪薪褘械 褍褋褌褉芯泄褋褌胁邪
+437=小锌懈褋芯泻 褍褋褌褉芯泄褋褌胁
+438=胁谢邪卸薪芯褋褌褜:{0}% 胁芯蟹写褍褏:{1} 胁械褌械褉:{2}
+439=袙 褉械邪谢褜薪芯屑 胁褉械屑械薪懈: {0} 泻袙褌
+440=小谢械写褍褞褖懈泄 褕邪谐
+441=袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 胁褋械 芯斜谢邪褋褌懈 写谢褟 褋斜芯褉邪 褋褌邪褌褍褋芯胁
+442=小芯蟹写邪褌褜 褋褑械薪褍
+443=袩芯谢褜蟹芯胁邪褌械谢褜褋泻芯械 褉邪蟹屑械褖械薪懈械
+444=笑械薪褌褉 斜械蟹芯锌邪褋薪芯褋褌懈
+445=袟邪褖懈褌邪 写芯屑邪
+446=袟邪褖懈褌邪 锌褉懈 薪邪褏芯卸写械薪懈懈 写芯屑邪
+447=袟邪褖懈褌邪 锌褉懈 芯褌褋褍褌褋褌胁懈懈 写芯屑邪
+448=肖懈泻褋懈褉芯胁邪薪薪芯械 褉邪蟹胁械褉褌褘胁邪薪懈械
+449=*袨褌屑械薪邪 蟹邪褖懈褌褘 薪械 胁谢懈褟械褌
+450=袟邪褖懈褌邪 芯褌 褋褌懈褏懈泄薪褘褏 斜械写褋褌胁懈泄
+451=24-褔邪褋芯胁邪褟 蟹邪褖懈褌邪
+452=袨褏褉邪薪薪邪褟 褋懈谐薪邪谢懈蟹邪褑懈褟
+453=袨褌泻谢褞褔械薪懈械 褋懈谐薪邪谢邪 褌褉械胁芯谐懈
+454=袠薪褎芯褉屑邪褑懈褟 芯 褉邪蟹屑械褖械薪懈懈
+455=袠屑褟 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+456=袠蟹芯斜褉邪卸械薪懈械
+457=袩芯褌褉械斜谢械薪懈械 褝薪械褉谐懈懈
+458=袛邪褌邪
+459=袩芯褌褉械斜谢械薪懈械 褝薪械褉谐懈懈 胁 褉械邪谢褜薪芯屑 胁褉械屑械薪懈
+460=袩芯褌褉械斜谢械薪懈械 褝薪械褉谐懈懈 胁 褝褌芯屑 屑械褋褟褑械
+461=袧邪褉褍卸薪褘泄 /袙薪褍褌褉械薪薪懈泄
+462=袙褘 械褖械 薪械 写芯斜邪胁懈谢懈 薪懈泻邪泻懈褏 褍褋褌褉芯泄褋褌胁
+463=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 SN-泻芯写 褍褋褌褉芯泄褋褌胁邪
+464=袦芯卸薪芯 薪邪褔邪褌褜 懈褋锌芯谢褜蟹芯胁邪薪懈械 小袙效 写邪褌褔懈泻邪 
+465=校写邪谢懈褌褜 褍褋褌褉芯泄褋褌胁芯
+466=袩褉懈褋褌邪胁泻邪
+467=袩褉芯械泻褌芯褉
+468=袣褌芯-褌芯 胁褘褕械谢
+469=袣褌芯-褌芯 胁薪褍褌褉懈
+470=袩芯写 蟹邪褖懈褌芯泄
+471=小袙效 写邪褌褔懈泻
+472=袧邪褉褍卸薪褘泄
+473=袣邪褔邪薪懈械
+474=袣邪褔邪薪懈械 胁胁械褉褏 懈 胁薪懈蟹
+475=袩芯胁芯褉芯褌 胁谢械胁芯 懈 胁锌褉邪胁芯
+476=袛芯斜邪胁懈褌褜 褉械蟹懈写械薪褑懈褞
+477=袣邪褔邪薪懈械
+478=校蟹芯褉
+479=小泻芯褉芯褋褌褜
+480=袛邪褌褔懈泻 芯泻褉褍卸邪褞褖械泄 褋褉械写褘
+481=袦芯卸薪芯 薪邪褔邪褌褜 懈褋锌芯谢褜蟹芯胁邪薪懈械 写邪褌褔懈泻邪 芯泻褉褍卸邪褞褖械泄 褋褉械写褘
+482=袚邪蟹芯胁褘泄 写邪褌褔懈泻
+483=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 MAC-泻芯写 褍褋褌褉芯泄褋褌胁邪
+484=袨褌泻褉褘褌芯
+485=袩褉芯胁械褉泻邪/袠蟹屑械薪械薪懈械
+486=肖褍薪泻褑懈褟 蟹邪褖懈褌褘 / 小芯褋褌芯褟薪懈械 褌褉械胁芯谐懈
+487=笑械谢褜 褌褉械胁芯谐懈 锌芯褋谢械 褋褉邪斜邪褌褘胁邪薪懈褟
+488=袛芯褋褌褍锌 锌芯 褉邪褋锌芯蟹薪邪薪懈褞 谢懈褑邪
+489=袩褉懈屑械薪懈褌褜 褉邪褋锌芯蟹薪邪薪懈械 谢懈褑邪 泻:
+490=袣芯薪褌褉芯谢褜 芯斜褖械谐芯 写芯褋褌褍锌邪 
+491=袨 褉邪褋锌芯蟹薪邪薪懈懈 谢懈褑邪 懈 泻芯薪褎懈写械薪褑懈邪谢褜薪芯褋褌懈
+492=小褌械褉械褌褜 写邪薪薪褘械
+493=小斜褉芯褋 懈写械薪褌懈褎懈泻邪褌芯褉邪 谢懈褑邪
+494=校褋褌邪薪芯胁懈褌褜 懈写械薪褌懈褎懈泻邪褌芯褉 谢懈褑邪
+495=袧邪褋褌褉芯泄泻懈 写芯褋褌褍锌邪 锌芯 褉邪褋锌芯蟹薪邪薪懈褞 谢懈褑邪
+496=袧械褌 褋胁褟蟹邪薪薪芯泄 蟹邪写邪褔懈 褋褌邪褌褍褋邪 锌芯褋褌邪薪芯胁泻懈
+497=袩芯谢褜蟹芯胁邪褌械谢褜褋泻懈泄
+498=袨褌谢芯卸械薪薪邪褟 锌芯褋褌邪薪芯胁泻邪
+499=袛芯斜邪胁懈褌褜 褎褍薪泻褑懈褞 蟹邪褖懈褌褘
+500=袛芯斜邪胁懈褌褜 褑械谢褜 褌褉械胁芯谐懈
+501=袨褏褉邪薪薪邪褟 褋懈谐薪邪谢懈蟹邪褑懈褟: {0} 蟹邪锌褍褖械薪邪
+502=袨褌泻谢褞褔懈褌褜 芯褏褉邪薪薪褍褞 褋懈谐薪邪谢懈蟹邪褑懈褞?
+503=袩褉械胁褘褕械薪懈械 褋褌邪薪写邪褉褌邪
+504=啸芯褉芯褕芯
+505=袨褌谢懈褔薪芯
+506=袙胁芯写 谢懈褑邪 胁褘锌芯谢薪械薪 褍褋锌械褕薪芯
+507=袨褕懈斜泻邪 胁胁芯写邪 谢懈褑邪
+508=肖芯褉屑邪谢褜写械谐懈写
+509=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪邪蟹胁邪薪懈械 芯褏褉邪薪薪芯泄 褎褍薪泻褑懈懈.
+510=袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 褑械谢褜 锌芯褋褌邪薪芯胁泻懈.
+511=袣芯屑斜懈薪懈褉芯胁邪薪薪芯械 写懈屑屑懈褉芯胁邪薪懈械
+512=袨褌锌褉邪胁泻邪 褋芯芯斜褖械薪懈泄 薪械 胁泻谢褞褔械薪邪, 锌芯卸邪谢褍泄褋褌邪, 锌械褉械泄写懈褌械 胁 薪邪褋褌褉芯泄泻懈.
+513=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 泻芯写 褋芯锌褉褟卸械薪懈褟
+514=袠薪褎芯褉屑邪褑懈褟 芯 屑械褋褌芯锌芯谢芯卸械薪懈懈 褕谢褞蟹邪 薪械 薪邪褋褌褉芯械薪邪
+515=袛芯斜邪胁懈褌褜 芯褏褉邪薪薪褍褞 褎褍薪泻褑懈褞
+516=胁褘褏芯写
+517=屑谐薪芯胁械薪薪芯械 蟹薪邪褔械薪懈械
+518=薪邪泻芯锌谢械薪薪邪褟 屑芯褖薪芯褋褌褜
+519=薪邪锌褉褟卸械薪懈械 (V)
+520=褌械泻褍褖懈泄 (邪)
+521=屑芯褖薪芯褋褌褜 (锌)
+522=芯斜薪芯胁懈褌褜
+523=蟹邪写械褉卸泻邪 薪邪锌芯屑懈薪邪薪懈褟
+524=斜邪泄锌邪褋
+525=胁泻谢褞褔械薪芯
+526=邪薪薪褍谢懈褉芯胁邪褌褜 褋褔褢褌
+527=懈薪褋褌褉褍泻褑懈褟 锌芯 锌芯写写械褉卸泻械 薪邪斜芯褉邪 懈薪褋褌褉褍屑械薪褌邪谢褜薪褘褏 褋褉械写褋褌胁 写谢褟 褋械屑械泄
+528=芯斜薪芯胁谢械薪懈械 锌褉芯褕懈胁泻懈
+529=
+530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
+531=Password free unlocking within five minutes
+532=The device is offline and cannot be operated temporarily
+
+
+
+1000=袙谢邪卸薪芯褋褌褜 胁 袩芯屑械褖械薪懈懈
+1001=V-芯斜褉邪蟹薪褘泄 褔懈锌
+1002=袗薪懈芯薪
+1003=小褌械褉懈谢懈蟹邪褑懈褟
+1004=校胁谢邪卸薪械薪懈械 胁芯蟹写褍褏邪
+1005=小斜褉芯褋 肖懈谢褜褌褉褍褞褖械谐芯 协谢械屑械薪褌邪
+1006=袨褋胁械褖械薪懈械
+1007=袗胁褌芯屑邪褌懈褔械褋泻懈泄
+1008=袪褍褔薪芯泄
+1009=小懈谢褜薪褘泄
+1010=袪械卸懈屑 褋薪邪
+1011=袨褌褋褔械褌 胁褉械屑械薪懈
+1012=小泻芯褉芯褋褌褜 胁械褌褉邪
+1013=袩械褉械写邪褔邪
+1014=袩芯卸邪谢褍泄褋褌邪, 锌芯写褌胁械褉写懈褌械, 斜褘谢 谢懈 褋斜褉芯褕械薪 褎懈谢褜褌褉褍褞褖懈泄 褝谢械屑械薪褌, 懈 褍锌褉邪胁谢褟泄褌械 芯斜芯褉褍写芯胁邪薪懈械屑 胁 褋芯芯褌胁械褌褋褌胁懈懈 褋 懈薪褋褌褉褍泻褑懈械泄 锌芯 褝泻褋锌谢褍邪褌邪褑懈懈, 褔褌芯斜褘 褉邪褋褋褔懈褌邪褌褜 褋褉芯泻 褋谢褍卸斜褘 褎懈谢褜褌褉褍褞褖械谐芯 褝谢械屑械薪褌邪
+1015=袧懈蟹泻邪褟 锌械褉械写邪褔邪
+1016=小褉械写薪褟褟 锌械褉械写邪褔邪
+1017=袙褘褋芯泻邪褟 袩械褉械写邪褔邪
+1018=袧邪褋褌褉芯泄泻邪 芯褌褋褔械褌邪 胁褉械屑械薪懈
+1019=效邪褋
+1020=袙褉械屑褟 褉邪斜芯褌褘 肖懈谢褜褌褉褍褞褖械谐芯 协谢械屑械薪褌邪锛�
+1021=袙芯蟹写褍褏芯芯褔懈褋褌懈褌械谢褜
+1022=孝械泻褍褖邪褟 褋泻芯褉芯褋褌褜 胁械褌褉邪
+1023=袨褌屑械薪邪 芯褌褋褔械褌邪 胁褉械屑械薪懈
+1024=袪芯斜芯褌 锌褘谢械褋芯褋
+1025=袙褋邪褋褘胁邪褞褖懈泄
+1026=1-褟 锌械褉械写邪褔邪
+1027=2-褟 锌械褉械写邪褔邪
+1028=3-褟 锌械褉械写邪褔邪
+1029=袟邪褉褟写泻邪
+1030=袚芯谢芯褋
+1031=袨褌泻谢褞褔械薪懈械 蟹胁褍泻邪
+1032=袪械卸懈屑 袨褔懈褋褌泻懈
+1033=校锌褉邪胁谢械薪懈械 褉邪褋褏芯写薪褘屑懈 屑邪褌械褉懈邪谢邪屑懈
+1034=袠褋褌芯褉懈褟
+1035=袗胁褌芯屑邪褌懈褔械褋泻懈泄
+1036=小谢褍褔邪泄薪褘泄
+1037=小褌械薪邪
+1038=小锌懈褉邪谢褜
+1039=袨斜褖邪褟 锌谢芯褖邪写褜 芯褔懈褋褌泻懈
+1040=袨斜褖械械 胁褉械屑褟 袨褔懈褋褌泻懈
+1041=袨褋褌邪胁褕懈泄褋褟 褋褉芯泻 褋谢褍卸斜褘 斜芯泻芯胁芯泄 褖械褌泻懈
+1042=袨褋褌邪胁褕懈泄褋褟 褋褉芯泻 褋谢褍卸斜褘 褉芯谢懈泻芯胁芯泄 褖械褌泻懈
+1043=袨褋褌邪胁褕懈泄褋褟 褋褉芯泻 褋谢褍卸斜褘 褎懈谢褜褌褉褍褞褖械谐芯 褝泻褉邪薪邪
+1044=小斜褉芯褋懈褌褜 泻褉邪械胁褍褞 褖械褌泻褍
+1045=小斜褉芯褋懈褌褜 褉芯谢懈泻芯胁褍褞 褖械褌泻褍
+1046=小斜褉芯褋懈褌褜 协泻褉邪薪 
+1047=袩芯写褌胁械褉卸写邪械褌械 褋斜褉芯褋 泻褉邪械胁芯泄 褖械褌泻懈?
+1048=袩芯写褌胁械褉卸写邪械褌械 褋斜褉芯褋 褉芯谢懈泻芯胁芯泄 褖械褌泻懈?
+1049=袩芯写褌胁械褉卸写邪械褌械 褋斜褉芯褋 褝泻褉邪薪邪?
+1050=袛芯斜邪胁懈褌褜 褍褋褌褉芯泄褋褌胁芯
+1051= 小屑邪褉褌 屑懈薪懈锌褍谢褜褌 褍锌褉邪胁谢械薪懈褟
+1052=袛芯斜邪胁懈褌褜 懈薪褎褉邪泻褉邪褋薪褘泄 锌褍谢褜褌 褍锌褉邪胁谢械薪懈褟
+1053=袧邪卸屑懈褌械 泻薪芯锌泻褍 {0} 薪邪 懈薪褎褉邪泻褉邪褋薪芯屑 锌褍谢褜褌械 褍锌褉邪胁谢械薪懈褟 胁 褌械褔械薪懈械 3 褋械泻褍薪写, 懈 懈薪写懈泻邪褌芯褉 {0} 斜褘褋褌褉芯 蟹邪屑懈谐邪械褌 褋懈薪懈屑 褑胁械褌芯屑
+1054=袩芯卸邪谢褍泄褋褌邪, 褍斜械写懈褌械褋褜, 褔褌芯 胁邪褕械 Bluetooth 褍褋褌褉芯泄褋褌胁芯 {0} 胁泻谢褞褔械薪芯 懈 写芯褋褌褍锌薪芯 写谢褟 锌芯懈褋泻邪.
+1055=小谢械写褍褞褖懈泄 褕邪谐
+1056=袩芯懈褋泻 褍褋褌褉芯泄褋褌胁邪...
+1057=袠薪褎褉邪泻褉邪褋薪褘泄 锌褍谢褜褌 褍锌褉邪胁谢械薪懈褟 薪械 薪邪泄写械薪
+1058=1.袩芯卸邪谢褍泄褋褌邪, 锌褉芯胁械褉褜褌械, 胁泻谢褞褔械薪芯 谢懈 褍褋褌褉芯泄褋褌胁芯 {0} 2.袩芯卸邪谢褍泄褋褌邪, 锌褉芯胁械褉褜褌械, 胁泻谢褞褔械薪邪 谢懈 褎褍薪泻褑懈褟 Bluetooth 褍褋褌褉芯泄褋褌胁邪{0} 3.袩芯卸邪谢褍泄褋褌邪, 锌褉芯胁械褉褜褌械, 屑懈谐邪械褌 谢懈 懈薪写懈泻邪褌芯褉 褍褋褌褉芯泄褋褌胁邪{0} 褋懈薪懈屑 褑胁械褌芯屑
+1059=袩芯胁褌芯褉懈褌械 袩芯懈褋泻
+1060=袩芯写泻谢褞褔懈褌械 Wi Fi
+1061=袙 薪邪褋褌芯褟褖械械 胁褉械屑褟  锌芯写写械褉卸懈胁邪械褌褋褟 褌芯谢褜泻芯 褋械褌褜 Wi-Fi 2,4 袚袚褑 {0} 懈 薪械 锌芯写写械褉卸懈胁邪褞褌褋褟 懈屑械薪邪 褋械褌械泄 Wi-Fi {0} 褋 泻懈褌邪泄褋泻懈屑懈 懈械褉芯谐谢懈褎邪屑懈
+1062=袩邪褉芯谢褜
+1063=袩芯写泻谢褞褔械薪懈械...
+1064=袩芯卸邪谢褍泄褋褌邪, 褉邪褋锌芯谢芯卸懈褌械 懈薪褎褉邪泻褉邪褋薪褘泄 锌褍谢褜褌 褍锌褉邪胁谢械薪懈褟 {0} 泻邪泻 屑芯卸薪芯 斜谢懈卸械 泻 屑邪褉褕褉褍褌懈蟹邪褌芯褉褍 Wi-Fi
+1065=小械褌械胁芯械 褋芯械写懈薪械薪懈械
+1066=袟邪谐褉褍蟹泻邪 胁 芯斜谢邪泻芯
+1067=校褋锌械褕薪芯械 锌芯写泻谢褞褔械薪懈械
+1068=1.袩芯卸邪谢褍泄褋褌邪, 锌褉芯胁械褉褜褌械, 胁泻谢褞褔械薪芯 谢懈 褍褋褌褉芯泄褋褌胁芯{0}2.袩芯卸邪谢褍泄褋褌邪, 胁泻谢褞褔懈褌械 褎褍薪泻褑懈褞 Bluetooth{0}3.袧邪卸屑懈褌械 泻薪芯锌泻褍 胁 褌械褔械薪懈械 10 褋械泻褍薪写, 懈 蟹邪谐芯褉懈褌褋褟 懈薪写懈泻邪褌芯褉 {0}.
+1069=袨褕懈斜泻邪 写芯斜邪胁谢械薪懈褟
+1070=袛芯斜邪胁谢械薪芯 褍褋锌械褕薪芯
+1071=袙褘 屑芯卸械褌械 薪邪褔邪褌褜 懈褋锌芯谢褜蟹芯胁邪褌褜 懈薪褎褉邪泻褉邪褋薪褘泄 锌褍谢褜褌 褍锌褉邪胁谢械薪懈褟 {0}!
+1072=袧邪褔邪褌褜 懈褋锌芯谢褜蟹芯胁邪褌褜
+1073=袩芯卸邪谢褍泄褋褌邪, 胁泻谢褞褔懈褌械 Bluetooth
+1074=袠薪褎芯褉屑邪褑懈褟 芯 屑械褋褌芯锌芯谢芯卸械薪懈懈 (GBS) 薪械写芯褋褌褍锌薪邪
+1075=小械褌褜 薪械写芯褋褌褍锌薪邪
+1076=袙褘斜械褉懈褌械 懈薪褎褉邪泻褉邪褋薪褘泄 锌褍谢褜褌 褍锌褉邪胁谢械薪懈褟
+1077=小胁械卸懈泄 胁芯蟹写褍褏
+1078=袨褋褌邪褌芯褔薪褘泄 褎懈谢褜褌褉褍褞褖懈泄 褝泻褉邪薪
+1079=协薪械褉谐懈褟
+1080=袙械薪褌懈谢懈褉褍械屑褘泄
+1081=1-褟 锌械褉械写邪褔邪
+1082=2-褟 锌械褉械写邪褔邪
+1083=3-褟 锌械褉械写邪褔邪
+1084=1-褟 锌械褉械写邪褔邪
+1085=2-褟 锌械褉械写邪褔邪
+1086=3-褟 锌械褉械写邪褔邪
+1087=袪邪蟹斜谢芯泻懈褉芯胁邪褌褜
+1088=孝械屑锌械褉邪褌褍褉邪. 袩邪褉芯谢褜
+1089=袩芯写泻谢褞褔械薪芯
+1090=袨褌泻谢褞褔械薪芯
+1091=小谐械薪械褉懈褉褍泄褌械
+1092=袙褉械屑褟 胁褋褌褍锌谢械薪懈褟 胁 褋懈谢褍
+1093=袙褉械屑褟 懈褋褌械褔械薪懈褟 褋褉芯泻邪 写械泄褋褌胁懈褟
+1094=袙褘斜械褉懈褌械 胁褉械屑褟
+1095=袙褘斜械褉懈褌械 写邪褌褍
+1096=小谐械薪械褉懈褉褍泄褌械
+1097=胁褉械屑械薪薪褘泄 锌邪褉芯谢褜 褋泻芯锌懈褉芯胁邪薪
+1098=袨褔懈褋褌懈褌褜 锌邪褉芯谢褜?
+1099=袙褉械屑褟 懈褋褌械褔械薪懈褟 褋褉芯泻邪 写械泄褋褌胁懈褟 写芯谢卸薪芯 斜褘褌褜 锌芯蟹卸械 胁褉械屑械薪懈 胁褋褌褍锌谢械薪懈褟 胁 褋懈谢褍
+1100=小锌芯褋芯斜 褉邪蟹斜谢芯泻懈褉芯胁泻懈
+1101=协褌芯 褋懈薪褏褉芯薪懈蟹懈褉褍械褌 褋 褎邪泻褌懈褔械褋泻芯泄 斜谢芯泻懈褉芯胁泻芯泄, 锌芯写褌胁械褉卸写邪械褌械 褍写邪谢械薪懈械?
+1102=校写邪谢懈褌褜
+1103=袩褉懈屑械褔邪薪懈械
+1104=袩褉懈屑械褔邪薪懈械 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+1105=袩褉懈褋胁芯懈褌褜
+1106=笑械谢械胁邪褟 褋褑械薪邪 薪械 褋褍褖械褋褌胁褍械褌
+1107=袙褘斜械褉懈褌械 褋褑械薪褍
+1108=袪邪蟹斜谢芯泻懈褉芯胁邪褌褜
+1109=袙褋械谐写邪 胁泻谢褞褔械薪芯
+1110=袧邪褋褌褉芯泄泻邪
+1111=袗胁褌芯屑邪褌懈蟹邪褑懈褟
+1112=袙泻谢褞褔懈褌褜 褉械卸懈屑 "袙褋械谐写邪 胁泻谢褞褔械薪"
+1113=袨褌泻谢褞褔懈褌褜 褉械卸懈屑 "袙褋械谐写邪 胁泻谢褞褔械薪"
+1114=袪械写邪泻褌懈褉芯胁邪褌褜
+1115=袪械卸懈屑 "袙褋械谐写邪 胁泻谢褞褔械薪" 斜褍写械褌 胁褘泻谢褞褔械薪 胁 {0}
+1116=校褋谢芯胁懈械
+1117=袛胁懈卸械薪懈械
+1118=袙褋械谐写邪 胁泻谢褞褔械薪
+1119=袘谢芯泻懈褉芯胁泻邪
+1120=袩芯谢褜蟹芯胁邪褌械谢褜
+1121=小锌芯褋芯斜 褉邪蟹斜谢芯泻懈褉芯胁泻懈
+1122=袨褌锌械褔邪褌芯泻 锌邪谢褜褑邪
+1123=袣邪褉褌邪
+1124=袣谢褞褔
+1125=袠薪褎芯褉屑邪褑懈褟
+1126=袪邪蟹斜谢芯泻懈褉芯胁邪褌褜
+1127=小懈谐薪邪谢 褌褉械胁芯谐懈
+1128=袨褎褎谢邪泄薪
+1129=袛谢褟 锌械褉胁芯谐芯 锌芯谢褜蟹芯胁邪褌械谢褟, 锌芯卸邪谢褍泄褋褌邪, 锌褉懈胁褟卸懈褌械 锌邪褉芯谢褜 斜谢芯泻懈褉芯胁泻懈
+1130=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 锌邪褉芯谢褜 邪写屑懈薪懈褋褌褉邪褌芯褉邪
+1131=袩褉懈胁褟蟹泻邪 胁褘锌芯谢薪械薪邪 褍褋锌械褕薪芯
+1132=袩械褉械泄褌懈 泻 谢懈褔薪芯屑褍 锌邪褉芯谢褞 写谢褟 褉邪蟹斜谢芯泻懈褉芯胁泻懈
+1133=袩褉芯锌褍褋褌懈褌褜
+1134=袩芯卸邪谢褍泄褋褌邪, 薪邪褉懈褋褍泄褌械 褋胁芯泄 褍蟹芯褉
+1135=袘谢芯泻懈褉芯胁泻邪 斜褍写械褌 胁褋械谐写邪 胁泻谢褞褔械薪邪 锌芯褋谢械 薪邪褋褌褉芯泄泻懈, 锌芯写褌胁械褉写懈褌械, 褔褌芯斜褘 锌褉芯写芯谢卸懈褌褜
+1136=袩芯写褌胁械褉写懈褌褜
+1137=袠褋褌械褔械褌
+1138=袪械卸懈屑 "袙褋械谐写邪 胁泻谢褞褔械薪" 懈褋褌械褔械褌 褔械褉械蟹 {0} 褔邪褋芯胁
+1139=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 胁褉械屑褟 懈褋褌械褔械薪懈褟 褋褉芯泻邪
+1140=袙褉械屑褟 懈褋褌械褔械薪懈褟 褋褉芯泻邪 薪械 写芯谢卸薪芯 锌褉械胁褘褕邪褌褜 72 褔邪褋芯胁
+1141=袙褉械屑褟 懈褋褌械褔械薪懈褟 褋褉芯泻邪 薪械 写芯谢卸薪芯 斜褘褌褜 屑械薪械械 1 褔邪褋邪
+1142=袧械 褍写邪谢芯褋褜 褍褋褌邪薪芯胁懈褌褜, 锌芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍
+1143=袧械 褍写邪械褌褋褟 锌芯写褌胁械褉写懈褌褜 懈写械薪褌懈褎懈泻邪褌芯褉 邪写屑懈薪懈褋褌褉邪褌芯褉邪, 锌芯卸邪谢褍泄褋褌邪, 胁芯泄写懈褌械 胁 褍褔械褌薪褍褞 蟹邪锌懈褋褜 褋薪芯胁邪 
+1144=袙邪褕邪 褉械蟹懈写械薪褑懈褟 锌械褉械薪芯褋懈褌褋褟 胁 写褉褍谐芯泄 邪泻泻邪褍薪褌
+1145=袩褉懈屑械褔邪薪懈械:
+1146=1. 袙褋械 胁邪褕懈 写邪薪薪褘械 芯 褉械蟹懈写械薪褑懈懈 斜褍写褍褌 锌械褉械写邪薪褘 薪芯胁芯屑褍 锌芯谢褜蟹芯胁邪褌械谢褞.{0}2. 袩芯褋谢械 锌械褉械写邪褔懈 锌械褉胁芯薪邪褔邪谢褜薪褘泄 褍褔邪褋褌薪懈泻 斜褍写械褌 邪胁褌芯屑邪褌懈褔械褋泻懈 {0} 芯褌胁褟蟹邪薪 芯褌 褝褌芯泄 褉械蟹懈写械薪褑懈懈.{0}3. 袧芯胁邪褟 褍褔械褌薪邪褟 蟹邪锌懈褋褜 褟胁谢褟械褌褋褟 写械泄褋褌胁懈褌械谢褜薪芯泄 褍褔械褌薪芯泄 蟹邪锌懈褋褜褞.{0} 4. 校褔械褌薪邪褟 蟹邪锌懈褋褜 锌芯谢褍褔邪褌械谢褟 薪械 屑芯卸械褌 斜褘褌褜 褌邪泻芯泄 卸械{0}, 泻邪泻 锌械褉胁芯薪邪褔邪谢褜薪邪褟.
+1147=袩芯写褌胁械褉写懈褌褜
+1148=胁胁械写懈褌械 褍褔械褌薪褍褞 蟹邪锌懈褋褜 锌芯谢褍褔邪褌械谢褟
+1149=袩褉芯褎懈谢褜
+1150=袩芯写褌胁械褉写懈褌械 锌械褉械薪芯褋 邪写屑懈薪懈褋褌褉邪褌芯褉邪 褋 {0} 薪邪 {1}
+1151=校褔械褌薪邪褟 蟹邪锌懈褋褜 薪械 褋褍褖械褋褌胁褍械褌.
+1152=袧械 褍写邪械褌褋褟 锌械褉械写邪褌褜 锌褉邪胁芯 褋芯斜褋褌胁械薪薪芯褋褌懈 褋邪屑芯屑褍 褋械斜械
+1153=袟邪胁械褉褕懈褌褜
+1154=袩械褉械写邪褔邪 锌芯谢褜蟹芯胁邪褌械谢褞, 锌芯卸邪谢褍泄褋褌邪, 锌芯写芯卸写懈褌械鈥�
+1155={0} 褋褌邪谢 邪写屑懈薪懈褋褌褉邪褌芯褉芯屑 褉械蟹懈写械薪褑懈懈
+1156=袛邪薪薪褘械 芯 褉械蟹懈写械薪褑懈懈 斜褍写褍褌 褍写邪谢械薪褘 懈蟹 胁邪褕械泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈
+1157=袧械 褍写邪谢芯褋褜 胁褘锌芯谢薪懈褌褜 锌械褉械写邪褔褍
+1158=袩芯卸邪谢褍泄褋褌邪, 锌芯锌褉芯斜褍泄褌械 械褖械 褉邪蟹
+1159=袩械褉械写邪褔邪 锌芯谢薪芯屑芯褔懈泄 邪写屑懈薪懈褋褌褉邪褌芯褉邪
+1160=袙邪褕懈 锌芯谢薪芯屑芯褔懈褟 邪写屑懈薪懈褋褌褉邪褌芯褉邪 锌械褉械写邪褞褌褋褟 写褉褍谐懈屑 褍褔邪褋褌薪懈泻邪屑
+1161=1.袙邪褕懈 写邪薪薪褘械 (芯斜谢邪褔薪褘械 写邪薪薪褘械) 褉械蟹懈写械薪褑懈懈 斜褍写褍褌{0} 锌械褉械写邪薪褘 薪芯胁芯屑褍 邪写屑懈薪懈褋褌褉邪褌芯褉褍{0}2.袙邪褕懈 写邪薪薪褘械 斜褍写褍褌 蟹邪屑械薪械薪褘 写邪薪薪褘屑懈 褑械谢械胁芯谐芯 褍褔邪褋褌薪懈泻邪 {0}, 懈 胁邪褕械 褉邪蟹褉械褕械薪懈械 斜褍写械褌 懈蟹屑械薪械薪芯 薪邪 褑械谢械胁芯谐芯 褍褔邪褋褌薪懈泻邪 {0}
+1162=袩芯写褌胁械褉写懈褌褜
+1163=袧械褌 褍褔邪褋褌薪懈泻芯胁 写谢褟 胁褘斜芯褉邪
+1164=袩芯写褌胁械褉写懈褌械 锌械褉械写邪褔褍 锌芯谢薪芯屑芯褔懈泄 邪写屑懈薪懈褋褌褉邪褌芯褉邪 褋 {0} 薪邪 {1}
+1165=校褋锌械褕薪邪褟 锌械褉械写邪褔邪
+1166=袧械 褍写邪械褌褋褟 胁褘锌芯谢薪懈褌褜 锌械褉械写邪褔褍
+1167=袩械褉械写邪褔邪 锌褉芯褕谢邪 褍褋锌械褕薪芯, 胁邪褕懈 褉邪蟹褉械褕械薪懈褟 褋褌邪薪褍褌 写芯褋褌褍锌薪褘屑懈 写谢褟 褍褔邪褋褌薪懈泻芯胁
+
+4000=袙懈写械芯写芯屑芯褎芯薪
+4001=袟邪锌懈褋褜 胁褘蟹芯胁邪
+4002=*袨斜谢邪褔薪褘械 蟹邪锌懈褋懈 褏褉邪薪褟褌褋褟 褌芯谢褜泻芯 胁 褌械褔械薪懈械 30 写薪械泄
+4003=袟胁芯薪芯泻 胁 写胁械褉褜
+4004=袨褌胁械褔械薪芯
+4005=袪邪蟹斜谢芯泻懈褉芯胁邪薪芯
+4006=谐芯写
+4007=袨褌
+4008=袙褘蟹芯胁
+4009=袪邪蟹斜谢芯泻懈褉芯胁邪薪
+4010=袩褉芯锌褍褖械薪芯
+4011=袨褌泻谢芯薪械薪芯
+4012=袩邪褉邪屑械褌褉褘 泻芯薪褎懈谐褍褉邪褑懈懈 薪械胁械褉薪褘!
+4013=QR-泻芯写 泻芯薪褌褉芯谢褟 写芯褋褌褍锌邪
+4014=袙褉械屑械薪薪褘泄 锌邪褉芯谢褜
+
+
+
+
+
+5000=袦褍蟹褘泻邪
+5001=袚褉褍锌锌邪
+5002=袧邪褋褌褉芯泄泻邪
+5003=袨斜褖邪褟 懈薪褎芯褉屑邪褑懈褟
+5004=袦械写懈邪锌谢械械褉
+5005=Bluetooth
+5006=袪械谐懈芯薪
+5007=小锌懈褋芯泻 锌械褋械薪
+5008=袦芯懈 谢褞斜懈屑褘械
+5009=袦芯泄 褋锌懈褋芯泻
+5010=袙褘斜械褉懈褌械 懈褋褌芯褔薪懈泻
+5011=袥芯泻邪谢褜薪褘泄
+5012=USB
+5013=袨薪谢邪泄薪-褉邪写懈芯
+5014=袦褍蟹褘泻邪 QQ
+5015=Bluetooth
+5016=袥懈薪械泄薪褘泄 胁褏芯写
+5017=袠蟹屑械薪懈褌褜 薪邪蟹胁邪薪懈械
+5018=袨写懈薪芯褔薪褘泄
+5019=袙芯褋锌褉芯懈蟹胁械褋褌懈 胁 褋谢褍褔邪泄薪芯屑 锌芯褉褟写泻械
+5020=小锌懈褋芯泻
+5021=小屑械褋褌懈谢褋褟 薪邪
+5022=袨褌屑械薪邪
+5023=校写邪谢懈褌褜
+5024=袪械写邪泻褌懈褉芯胁邪褌褜
+5025=袧邪蟹胁邪薪懈械 褋锌懈褋泻邪 褋芯胁锌邪写邪械褌.
+5026=袧邪蟹胁邪薪懈械 褋锌懈褋泻邪 锌褍褋褌芯械.
+5027=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪邪蟹胁邪薪懈械 褋锌懈褋泻邪.
+5028=袛芯斜邪胁懈褌褜 薪芯胁褘泄 褋锌懈褋芯泻
+5029=袩芯写褋泻邪蟹泻邪
+5030=校写邪谢懈褌褜 锌邪锌泻褍 懈谢懈 薪械褌?
+5031=袩芯写褌胁械褉写懈褌褜
+5032=袧邪蟹胁邪薪懈械 锌褍褋褌芯械
+5033=袛芯斜邪胁谢械薪芯 胁 褋锌懈褋芯泻 锌械褋械薪
+5034=袪邪写懈芯
+5035=袙褘斜械褉懈褌械 谐褉褍锌锌褍
+5036=袙芯褋锌褉芯懈蟹胁械褋褌懈
+5037=袙褘斜械褉懈褌械 薪械 屑械薪械械 2-褏 屑械写懈邪锌谢械械褉芯胁
+5038=袧械 褍写邪械褌褋褟 胁褘斜褉邪褌褜 2 懈谢懈 斜芯谢械械 2-褏 芯褋薪芯胁薪褘褏 屑械写懈邪锌谢械械褉芯胁, 褔褌芯斜褘 褋褌邪褌褜 谐褉褍锌锌芯泄
+5039=袧械 胁褘斜褉邪薪 屑械写懈邪锌谢械械褉
+5040=袙褘斜械褉懈褌械 写谢褟 褍写邪谢械薪懈褟 屑械写懈邪锌谢械械褉邪
+5041=袧械 胁褘斜褉邪薪 写谢褟 褍写邪谢械薪懈褟 屑械写懈邪锌谢械械褉邪
+5042=袧邪褋褌褉芯泄泻邪鈥�
+5043=校写邪谢械薪懈械鈥�
+5044=袚褉芯屑泻芯褋褌褜
+5045=袨褋薪芯胁薪邪褟 谐褉芯屑泻芯褋褌褜
+5046=袪械谐褍谢懈褉芯胁泻邪 谐褉芯屑泻芯褋褌懈
+5047=小械褉胁懈褋"QQ music" 薪械 褍褋褌邪薪芯胁谢械薪 薪邪 胁邪褕械屑 屑芯斜懈谢褜薪芯屑 褌械谢械褎芯薪械, 锌芯卸邪谢褍泄褋褌邪, 锌械褉械泄写懈褌械 胁 褑械薪褌褉 锌褉懈谢芯卸械薪懈泄.
+
+6000=袧芯褉屑邪谢褜薪褘泄
+6001=小芯褋褌芯褟薪懈械 褍褋褌褉芯泄褋褌胁邪
+6002=褕褌
+6003=孝械泻褍褖械械 褍褋褌褉芯泄褋褌胁芯 袠袣-褍锌褉邪胁谢械薪懈褟
+6004=袛芯斜邪胁谢械薪 锌褍谢褜褌 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟
+6005=袣芯薪写懈褑懈芯薪懈褉芯胁邪薪懈械
+6006=孝袙
+6007=袙械薪褌懈谢褟褌芯褉
+6008=孝械谢械胁懈蟹懈芯薪薪邪褟 锌褉懈褋褌邪胁泻邪
+6009=DVD
+6010=袩褉芯械泻褌芯褉
+6011=袩芯谢褜蟹芯胁邪褌械谢褜褋泻懈泄
+6012=袠袣-褍锌褉邪胁谢械薪懈械
+6013=校锌褉邪胁谢械薪懈械 褍褋褌褉芯泄褋褌胁邪屑懈
+6014=袛芯斜邪胁懈褌褜 锌褍谢褜褌 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟 
+6015=袨薪谢邪泄薪
+6016=袨褎褎谢邪泄薪
+6017=袧芯屑械褉 胁械褉褋懈懈
+6018=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪邪蟹胁邪薪懈械 锌褍谢褜褌邪 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟
+6019=袧邪锌芯屑懈薪邪薪懈械: 袩芯褋谢械 褋芯蟹写邪薪懈褟 锌褍谢褜褌邪 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟 械谐芯 屑芯卸薪芯 薪邪泄褌懈 懈 懈褋锌芯谢褜蟹芯胁邪褌褜 胁 泻邪褌械谐芯褉懈懈 肖褍薪泻褑懈懈-协谢械泻褌褉懈褔械褋泻懈械 {\ r\n}
+6020=袪械泻芯屑械薪写褍械屑邪褟 泻薪芯锌泻邪
+6021=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪邪蟹胁邪薪懈械 泻薪芯锌泻懈
+6022=袛邪谢械械
+6023=袦芯褖薪芯褋褌褜
+6024=袚褉芯屑泻芯褋褌褜+
+6025=袚褉芯屑泻芯褋褌褜-
+6026=袣邪薪邪谢+
+6027=袣邪薪邪谢-
+6028=袙胁械褉褏
+6029=袙薪懈蟹
+6030=袙谢械胁芯
+6031=袙锌褉邪胁芯
+6032=袨褌泻谢褞褔械薪懈械 蟹胁褍泻邪
+6034=袩芯写褌胁械褉卸写械薪懈械
+6035=袙芯褋锌褉芯懈蟹胁械写械薪懈械
+6037=袙褘褏芯写
+6038=袦械薪褞
+6039=袩邪褍蟹邪
+6040=袧邪蟹邪写
+6041=小褌芯锌
+6042=袚谢邪胁薪邪褟 褋褌褉邪薪懈褑邪
+6043=袩械褉械屑芯褌泻邪 胁锌械褉械写
+6044=袩械褉械屑芯褌泻邪 薪邪蟹邪写
+6045=袨褌褋褔械褌 胁褉械屑械薪懈
+6046=小泻芯锌懈褉芯胁邪褌褜 褎褍薪泻褑懈褞 锌褍谢褜褌邪 褍锌褉邪胁谢械薪懈褟
+6047=袧邪胁械写懈褌械 泻褍褉褋芯褉 薪邪 褑械薪褌褉 锌褍谢褜褌邪 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟 懈 薪邪卸屑懈褌械 褌褍 卸械 泻薪芯锌泻褍
+6048=小屑邪褉褌 锌褍谢褜褌 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟
+6049=袛芯斜邪胁懈褌褜 泻薪芯锌泻褍
+6050=* 袛谢懈褌械谢褜薪芯械 薪邪卸邪褌懈械 写谢褟 锌芯谢褜蟹芯胁邪褌械谢褜褋泻芯泄 褋芯褉褌懈褉芯胁泻懈
+6051=袙褘锌芯谢薪械薪芯
+6052=袛芯斜邪胁谢械薪芯 褍褋锌械褕薪芯
+6053=袦芯卸械褌 斜褘褌褜 泻谢邪褋褋懈褎懈褑懈褉芯胁邪薪芯 -褎褍薪泻褑懈褟-褝谢械泻褌褉懈褔械褋泻芯械 褍锌褉邪胁谢械薪懈械 懈 懈褋锌芯谢褜蟹芯胁邪薪懈械
+6054=袣谢邪褋褋懈褎懈泻邪褑懈褟
+6055=袧邪蟹胁邪薪懈械 锌褍谢褜褌邪 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟
+6056=袪械谐懈芯薪
+6057=袩褉芯写芯谢卸懈褌褜 写谢褟  写芯斜邪胁谢械薪懈褟
+6058=协谢械泻褌褉懈褔械褋泻懈械
+6059=袧械 褍写邪谢芯褋褜 写芯斜邪胁懈褌褜
+6060=袩芯胁褌芯褉薪邪褟 锌芯锌褘褌泻邪
+6061=小芯芯褌胁械褌褋褌胁褍械褌 锌褍谢褜褌褍 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟
+6062=袩芯卸邪谢褍泄褋褌邪, 薪邪卸屑懈褌械 泻薪芯锌泻褍 薪懈卸械
+6063=袩芯写褌胁械褉写懈褌械, 芯褌胁械褔邪械褌 谢懈 褍褋褌褉芯泄褋褌胁芯
+6064=小斜芯泄 褍锌褉邪胁谢械薪懈褟
+6065=校锌褉邪胁谢械薪懈械 胁褘锌芯谢薪械薪芯 褍褋锌械褕薪芯
+6066=袙泻谢褞褔械薪懈械 锌懈褌邪薪懈褟
+6067=袪械卸懈屑 芯褏谢邪卸写械薪懈褟
+6068=小泻芯褉芯褋褌褜 胁械褌褉邪
+6069=孝械屑锌械褉邪褌褍褉邪 26鈩�
+6070=校写邪谢懈褌褜 褍褋褌褉芯泄褋褌胁芯
+6071=袠蟹屑械薪懈褌褜 薪邪蟹胁邪薪懈械
+6072=袩芯写褌胁械褉写懈褌褜 褍写邪谢械薪懈械
+6073=袨褌屑械薪邪
+6074=袣芯谢懈褔械褋褌胁芯 锌褍谢褜褌芯胁 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟 薪械 屑芯卸械褌 锌褉械胁褘褕邪褌褜 10 褕褌.
+6075=袨斜谢邪褋褌褜, 胁 泻芯褌芯褉芯泄 薪邪褏芯写懈褌褋褟 锌褍谢褜褌 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟:
+6076=袠薪褎芯褉屑邪褑懈褟 写谢褟 褉械写邪泻褌懈褉芯胁邪薪懈褟
+6077=袨斜薪芯胁谢械薪懈械 胁械褉褋懈懈
+6078=小懈褋褌械屑邪 薪邪褏芯写懈褌褋褟 薪邪 芯斜褋谢褍卸懈胁邪薪懈懈 ~ 袩芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍 锌芯蟹卸械 ~
+6079=袧械 褍写邪谢芯褋褜 锌芯谢褍褔懈褌褜 写邪薪薪褘械
+6080=协褌邪 褎褍薪泻褑懈褟 胁褉械屑械薪薪芯 薪械 锌芯写写械褉卸懈胁邪械褌褋褟
+6081=袙褘斜械褉懈褌械 屑邪褉泻褍 袠袣 褍锌褉邪胁谢械薪懈褟
+6082=袙褋褌褉褟褏懈胁邪薪懈械
+6083=袧懈蟹泻邪褟 褋泻芯褉芯褋褌褜
+6084=袩械褉械泻谢褞褔邪褌械谢褜 褋泻芯褉芯褋褌懈 胁械褌褉邪
+6085=袙褘褋芯泻邪褟 褋泻芯褉芯褋褌褜
+6086=袗胁褌芯
+6087=孝械屑锌械褉邪褌褍褉邪 +
+6088=孝械屑锌械褉邪褌褍褉邪-
+6089=袨褔懈褋褌懈褌械谢褜 胁芯蟹写褍褏邪
+6090=袙芯写芯薪邪谐褉械胁邪褌械谢褜
+6091=袩褉芯写褍泻褌, 泻芯褌芯褉芯谐芯 薪械 褋褍褖械褋褌胁褍械褌
+6092=校褋褌褉芯泄褋褌胁芯 薪械 褋褍褖械褋褌胁褍械褌
+6093=校褋褌褉芯泄褋褌胁芯 薪械 锌芯写泻谢褞褔械薪芯 泻 褋械褌懈
+6094=校褋褌褉芯泄褋褌胁芯 褕谢褞蟹邪 薪械 褋褍褖械褋褌胁褍械褌
+6095=袛芯斜邪胁懈褌褜 斜芯谢械械 30 泻薪芯锌芯泻 
+
+
+
+
+
+6000=袩械褉械懈屑械薪芯胁邪褌褜
+6001=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪邪蟹胁邪薪懈械
+6002=屑邪褉泻邪 Xiaodu
+6003=袪邪褋锌芯蟹薪邪胁邪褌械谢褜 褉械褔懈
+6004="袛谢褟 芯褌屑械薪褘 锌褉懈胁褟蟹泻懈 褌褉械斜褍械褌褋褟 褋褌芯褉芯薪薪械械 锌褉懈谢芯卸械薪懈械 ", "锌械褉械写邪褌褜 胁 褋褌芯褉芯薪薪械械 锌褉懈谢芯卸械薪懈械"
+6005=袨褌胁褟蟹邪褌褜
+6006=校屑薪褘泄 写懈薪邪屑懈泻
+6007=校锌褉邪胁谢械薪懈械 褋芯写械褉卸懈屑褘屑
+6008=袧械 褍写邪谢芯褋褜 蟹邪谐褉褍蟹懈褌褜 写邪薪薪褘械
+6009=袧械 褍写邪谢芯褋褜 薪邪褋褌褉芯懈褌褜 写邪薪薪褘械
+6010="袛懈薪邪屑懈泻 械褖械 薪械 褍褋褌邪薪芯胁谢械薪", "袩芯卸邪谢褍泄褋褌邪, 锌械褉械泄写懈褌械 胁 褋褌芯褉芯薪薪械械 锌褉懈谢芯卸械薪懈械, 褔褌芯斜褘 锌褉懈胁褟蟹邪褌褜 褋屑邪褉褌 写懈薪邪屑懈泻".
+6011=袠蟹屑械薪械薪懈械 锌褉懈屑械褔邪薪懈泄 薪械 褍写邪谢芯褋褜!
+6012=袙褘 褏芯褌懈褌械 芯褌屑械薪懈褌褜 锌褉懈胁褟蟹泻褍?
+6013=袨褌胁褟蟹褘胁邪薪懈械...
+6014=锌械褉械褏芯写 胁 褋褌芯褉芯薪薪械械 锌褉懈谢芯卸械薪懈械
+6015=袛芯斜邪胁懈褌褜 写懈薪邪屑懈泻懈
+
+
+7000=小芯蟹写邪褌褜 邪胁褌芯屑邪褌懈蟹邪褑懈褞
+7001=袪械写邪泻褌懈褉芯胁邪褌褜 邪胁褌芯屑邪褌懈蟹邪褑懈褞
+7002=袝褋谢懈
+7003=袣芯谐写邪 褝褌芯 芯写薪芯胁褉械屑械薪薪芯 褍写芯胁谢械褌胁芯褉褟械褌 褋谢械写褍褞褖懈屑 褍褋谢芯胁懈褟屑
+7004=袣芯谐写邪 褝褌芯 褍写芯胁谢械褌胁芯褉褟械褌 芯写薪芯屑褍 懈蟹 褋谢械写褍褞褖懈褏 褍褋谢芯胁懈泄
+7005=袩褉芯写芯谢卸懈褌褜 胁褘锌芯谢薪械薪懈械
+7006=小谢械写褍褞褖械械 写械泄褋褌胁懈械
+7007=小锌芯褋芯斜 芯斜褉邪斜芯褌泻懈
+7008=袙褘锌芯谢薪懈褌褜 芯写懈薪 褉邪蟹
+7009=袣邪卸写褘泄 写械薪褜
+7010=袣邪卸写褍褞 薪械写械谢褞
+7011=袣邪卸写褘泄 屑械褋褟褑
+7012=小芯褏褉邪薪懈褌褜
+7013=袨褌锌褉邪胁懈褌褜 褋芯芯斜褖械薪懈械
+7014=袨褌锌褉邪胁懈褌褜 褍胁械写芯屑谢械薪懈械
+7015=袙褘斜械褉懈褌械 褍褋谢芯胁懈械
+7016=袦芯屑械薪褌
+7017=袙褘斜械褉懈褌械 褍褋谢芯胁懈械 胁褉械屑械薪懈
+7018=效邪褋
+7019=袛懈邪锌邪蟹芯薪 胁褉械屑械薪懈
+7020=效邪褋
+7021=袦懈薪褍褌邪
+7022=小械泻褍薪写邪
+7023=袨褌屑械薪邪
+7024=校胁械褉械薪褘
+7025=*协褌芯 写芯谢卸薪芯 胁褘锌芯谢薪懈褌褜 蟹邪写邪薪薪褍褞 胁邪屑懈 邪胁褌芯屑邪褌懈蟹邪褑懈褞 芯写懈薪 褉邪蟹 胁 褌械褔械薪懈械 蟹邪写邪薪薪芯谐芯 胁邪屑懈 写懈邪锌邪蟹芯薪邪 胁褉械屑械薪懈.
+7026=袙褉械屑褟 薪邪褔邪谢邪
+7027=袙褉械屑褟 芯泻芯薪褔邪薪懈褟
+7028=肖褍薪泻褑懈褟
+7029=袙褘斜械褉懈褌械 褎褍薪泻褑懈芯薪邪谢褜薪芯械 褍褋谢芯胁懈械
+7030=袙械褋褜 褉械谐懈芯薪
+7031=袙褋械 褎褍薪泻褑懈懈
+7032=袙泻谢.
+7033=袙褘泻谢
+7034=袩械褉械泻谢褞褔邪褌械谢褜
+7035=袟邪胁械褉褕械薪芯
+7036=袛芯斜邪胁懈褌褜 胁褘锌芯谢薪械薪懈械
+7037=袩芯薪械写械谢褜薪懈泻
+7038=袙褌芯褉薪懈泻
+7039=小褉械写邪
+7040=效械褌胁械褉谐
+7041=袩褟褌薪懈褑邪
+7042=小褍斜斜芯褌邪
+7043=袙芯褋泻褉械褋械薪褜械
+7044=小芯芯褌胁械褌褋褌胁褍械褌 褍褋谢芯胁懈褞
+7045=袧邪褋褌褉芯泄泻邪
+7046=袧邪蟹胁邪薪懈械
+7047=袠蟹屑械薪懈褌褜 薪邪蟹胁邪薪懈械
+7048=袧邪蟹胁邪薪懈械 邪胁褌芯屑邪褌懈蟹邪褑懈懈 褍卸械 褋褍褖械褋褌胁褍械褌.
+7049=校写邪谢懈褟褌褜 邪胁褌芯屑邪褌懈蟹邪褑懈褞 懈谢懈 薪械褌?
+7050=袛芯斜邪胁懈褌褜 褋褑械薪褍
+7051=袟邪写械褉卸泻邪
+7052=袧械 褍写邪谢芯褋褜 褋芯褏褉邪薪懈褌褜, 锌芯卸邪谢褍泄褋褌邪, 锌芯锌褉芯斜褍泄褌械 械褖械 褉邪蟹.
+7053=袧械 褍写邪械褌褋褟 褍写邪谢懈褌褜, 锌芯卸邪谢褍泄褋褌邪, 锌芯锌褉芯斜褍泄褌械 械褖械 褉邪蟹.
+7054=袩邪褍蟹邪
+7055=携褉泻芯褋褌褜
+7056=袩褉芯褑械薪褌薪芯械 褋芯芯褌薪芯褕械薪懈械
+7057=袪械卸懈屑
+7058=袨褏谢邪卸写械薪懈械
+7059=袨褌芯锌谢械薪懈械
+7060=袗胁褌芯屑邪褌懈褔械褋泻懈泄
+7061=袨褋褍褕械薪懈械 胁芯蟹写褍褏邪
+7062=孝械屑锌械褉邪褌褍褉邪
+7063=小泻芯褉芯褋褌褜 胁械薪褌懈谢褟褌芯褉邪
+7064=袛械薪褜
+7065=袧芯褔褜
+7066=携 褍褕械谢
+7067=袨褋薪芯胁薪芯泄
+7068=袙褉械屑褟
+7069=袗胁褌芯屑邪褌懈蟹邪褑懈褟 薪械 薪邪褋褌褉芯械薪邪 , 锌芯卸邪谢褍泄褋褌邪, 锌褉芯写芯谢卸邪泄褌械 薪邪褋褌褉芯泄泻褍.
+7070=袟写械褋褜 薪懈褔械谐芯 薪械褌.
+7071=袙褉械屑褟 薪邪褔邪谢邪 薪械 斜褘谢芯 褍褋褌邪薪芯胁谢械薪芯, 锌芯卸邪谢褍泄褋褌邪, 褍褋褌邪薪芯胁懈褌械.
+7072=袙褉械屑褟 芯泻芯薪褔邪薪懈褟 薪械 褍褋褌邪薪芯胁谢械薪芯, 锌芯卸邪谢褍泄褋褌邪, 褍褋褌邪薪芯胁懈褌械.
+7073=袙褉械屑褟 薪邪褔邪谢邪 懈 胁褉械屑褟 芯泻芯薪褔邪薪懈褟 薪械 写芯谢卸薪褘 褋芯胁锌邪写邪褌褜.
+7074=袙褉械屑褟 薪邪褔邪谢邪 薪械 写芯谢卸薪芯 斜褘褌褜 斜芯谢褜褕械 胁褉械屑械薪懈 芯泻芯薪褔邪薪懈褟.
+7075=校褋谢芯胁懈械 薪械 写芯谢卸薪芯 斜褘褌褜 锌褍褋褌褘屑.
+7076=笑械谢褜 薪械 写芯谢卸薪邪 斜褘褌褜 锌褍褋褌芯泄.
+7077=袙褉械屑褟 薪械 斜褘谢芯 褍褋褌邪薪芯胁谢械薪芯, 锌芯卸邪谢褍泄褋褌邪, 褍褋褌邪薪芯胁懈褌械.
+7078=校褋谢芯胁懈械 懈谢懈 褑械谢褜 薪械 写芯谢卸薪褘 斜褘褌褜 锌褍褋褌褘屑懈.
+7079=楔谢褞蟹 薪械写芯褋褌褍锌械薪
+7080=袙芯褋褏芯写/袟邪泻邪褌/袩芯谢写械薪褜
+7081=袙芯褋褏芯写 褋芯谢薪褑邪
+7082=袟邪泻邪褌
+7083=袩芯谢写械薪褜
+7084=袙芯胁褉械屑褟
+7085=小 芯锌械褉械卸械薪懈械屑
+7086=袦懈薪褍褌褘
+7087=袠蟹屑械薪械薪懈械 胁薪械褕薪械泄 褋褉械写褘
+7088=袙褘斜械褉懈褌械 褍褋谢芯胁懈械 懈蟹屑械薪械薪懈褟 胁薪械褕薪械泄 褋褉械写褘
+7089=袠蟹屑械薪械薪懈械 褌械屑锌械褉邪褌褍褉褘 薪邪褉褍卸薪芯谐芯 胁芯蟹写褍褏邪, 胁谢邪卸薪芯褋褌懈, PM2.5
+7090=袠蟹屑械薪械薪懈械 锌芯谐芯写褘 (胁 褔械褉褌械 谐芯褉芯写邪)
+7091=袠蟹屑械薪械薪懈械 胁薪械褕薪械泄 褋褉械写褘
+7092=孝械屑锌械褉邪褌褍褉邪 胁褘褕械
+7093=孝械屑锌械褉邪褌褍褉邪 薪懈卸械
+7094=袙谢邪卸薪芯褋褌褜 胁褘褕械
+7095=袙谢邪卸薪芯褋褌褜 薪懈卸械
+7096=PM2.5 胁褘褕械, 褔械屑
+7097=PM2.5 薪懈卸械
+7098=小芯谢薪械褔薪褘泄 写械薪褜
+7099=袨斜谢邪褔薪芯
+7100=袧械锌芯谐芯写邪
+7101=*袩芯卸邪谢褍泄褋褌邪, 褍褋褌邪薪芯胁懈褌械 蟹薪邪褔械薪懈械 胁 褝褌芯屑 写懈邪锌邪蟹芯薪械 (1 ~ 100).
+7102=袟邪写邪薪薪芯械 蟹薪邪褔械薪懈械 芯褌褋褍褌褋褌胁褍械褌.
+7103=袨褌谢懈褔薪芯: 0 ~ 35 屑泻谐/屑3
+7104=啸芯褉芯褕芯: 36 ~ 75 屑泻谐/屑3
+7105=袥械谐泻芯械 蟹邪谐褉褟蟹薪械薪懈械: 76 ~ 115 屑泻谐/屑3
+7106=校屑械褉械薪薪芯械 蟹邪谐褉褟蟹薪械薪懈械: 116 ~ 150 屑泻谐/屑3
+7107=小懈谢褜薪芯械 蟹邪谐褉褟蟹薪械薪懈械: > 150 屑泻谐/屑3
+7108=校褌械褔泻邪/袨褌褋褍褌褋褌胁懈械 褍褌械褔泻懈
+7109=校褌械褔泻邪
+7110=袧械褌 褍褌械褔泻懈
+7111=校褌械褔泻邪 胁芯写褘 / 薪械褌 褍褌械褔泻懈 胁芯写褘
+7112=校褌械褔泻邪 胁芯写褘
+7113=袧械褌 褍褌械褔泻懈 胁芯写褘
+7114=袣褌芯-褌芯/袧懈泻褌芯
+7115=袣褌芯-褌芯
+7116=袧懈泻褌芯
+7117=袨褌泻褉褘褌褜/袟邪泻褉褘褌褜
+7118=袙泻谢.
+7119=袟邪泻褉褘褌褜
+7120=肖褍薪泻褑懈褟 蟹邪褖懈褌褘 芯褌 褋薪褟褌懈褟
+7121=袨薪谢邪泄薪
+7122=袧械褌 胁 褋械褌懈
+7123=袣邪褔械褋褌胁芯 胁芯蟹写褍褏邪
+7124=袨褌谢懈褔薪芯
+7125=啸芯褉芯褕芯
+7126=小谢邪斜芯
+7127=袨褌锌褉邪胁懈褌褜 褍胁械写芯屑谢械薪懈械
+7128=小芯写械褉卸邪薪懈械 褍胁械写芯屑谢械薪懈褟
+7129=(胁 锌褉械写械谢邪褏 100 褋懈屑胁芯谢芯胁)
+7130=袙褘斜芯褉 褍褔械褌薪芯泄 蟹邪锌懈褋懈
+7131=褍胁械写芯屑谢械薪懈械 锌褉懈谢芯卸械薪懈褟
+7132=袗胁褌芯屑邪褌懈蟹邪褑懈褟
+7133=袙褘锌芯谢薪械薪芯
+7134=小芯褋褌芯褟薪懈械 褑械谢懈
+7135=袩邪写械薪懈械
+7136=孝械屑锌械褉邪褌褍褉邪
+7137=袙谢邪卸薪芯褋褌褜
+7138=PM2.5
+7139=CO2
+7140=TVOC
+7141=袩褉械胁褘褕械薪芯械
+7142=袨锌邪褋薪芯械
+7143=袙褘褋芯泻芯械
+7144=袠写械邪谢褜薪芯械
+7145=袘械蟹芯锌邪褋薪芯褋褌褜
+7146=袛芯斜邪胁懈褌褜 褎褍薪泻褑懈褞 斜械蟹芯锌邪褋薪芯褋褌懈
+7147=袩芯褋褌邪胁懈褌褜
+7148=小薪褟褌褜
+7149=袙褉褍褔薪褍褞
+7150=小屑邪褉褌
+7151=啸芯褉芯褕懈泄
+7152=袩芯泻懈薪褍褌褜 懈谢懈 锌褉懈斜褘褌褜
+7153=袩芯泻懈薪褍褌褜
+7154=袩褉懈斜褘褌褜
+
+
+
+
+9000=袩芯卸邪谢褍泄褋褌邪, 胁芯泄写懈褌械 胁 褋懈褋褌械屑褍 褋 薪芯胁褘屑 薪芯屑械褉芯屑 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪.
+9001=袩芯卸邪谢褍泄褋褌邪, 胁芯泄写懈褌械 胁 褋懈褋褌械屑褍 褋 薪芯胁褘屑 邪写褉械褋芯屑 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘.
+9002=袧芯胁褘泄 薪芯屑械褉 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪 懈蟹屑械薪械薪 
+9003=袧芯胁褘泄 薪芯屑械褉 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪 锌褉懈胁褟蟹邪薪
+9004=袧芯胁褘泄 邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘 懈蟹屑械薪械薪 
+9005=袧芯胁褘泄 邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘 锌褉懈胁褟蟹邪薪
+9006=袣芯写 锌芯写褌胁械褉卸写械薪懈褟 屑芯卸械褌 斜褘褌褜 芯褌锌褉邪胁谢械薪 锌芯蟹卸械, 锌芯卸邪谢褍泄褋褌邪, 锌芯写芯卸写懈褌械.
+9007=袩芯卸邪谢褍泄褋褌邪, 锌芯写芯卸写懈褌械.
+9008=袧邪蟹邪写
+9009=袩芯谢褜蟹芯胁邪褌械谢褜, 泻芯褌芯褉褘泄 薪械 褏芯褔械褌, 褔褌芯斜褘 械谐芯 薪邪蟹褘胁邪谢懈
+9010=袧芯胁褘泄 锌邪褉芯谢褜
+9011=袙胁械写懈褌械 薪芯胁褘泄 锌邪褉芯谢褜 褋薪芯胁邪
+9012=小芯谐谢邪褋懈褌褜褋褟
+9013=小芯谐谢邪褕械薪懈械 芯斜 芯斜褋谢褍卸懈胁邪薪懈懈
+9014=袩褉邪胁懈谢邪 蟹邪褖懈褌褘 懈薪褎芯褉屑邪褑懈懈 锌芯谢褜蟹芯胁邪褌械谢褟
+9015=懈
+9016=袩芯卸邪谢褍泄褋褌邪, 锌褉芯褔褌懈褌械 懈 褋芯谐谢邪褋懈褌械褋褜 褋 袩芯谢褜蟹芯胁邪褌械谢褜褋泻懈屑 小芯谐谢邪褕械薪懈械屑 芯斜 芯斜褋谢褍卸懈胁邪薪懈懈 懈 袩褉邪胁懈谢邪屑懈 蟹邪褖懈褌褘 锌芯谢褜蟹芯胁邪褌械谢褜褋泻芯泄 懈薪褎芯褉屑邪褑懈懈.
+9017=袙褘 褍胁械褉械薪褘, 褔褌芯 褏芯褌懈褌械 胁褘泄褌懈 懈蟹 褋懈褋褌械屑褘?
+9018=袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 褋褌褉邪薪褍/褉械谐懈芯薪.
+9019=袨斜薪芯胁懈褌褜 褋械泄褔邪褋
+9020=袧械 褋械泄褔邪褋
+9021=小褌褉邪薪邪/褉械谐懈芯薪
+9022=袠薪褎芯褉屑邪褑懈褟 芯 褋械褉胁械褉械
+9023=孝械泻褍褖懈泄 褋械褉胁械褉:
+9024=*小械褉胁械褉 褋褋褘谢邪械褌褋褟 薪邪 斜邪蟹褍 写邪薪薪褘褏 写谢褟 芯斜谢邪泻邪, 斜械蟹 薪械芯斜褏芯写懈屑芯褋褌懈 胁褘锌芯谢薪褟褌褜 锌械褉械写邪褔褍 写邪薪薪褘褏 薪械 褉械泻芯屑械薪写褍械褌褋褟.
+9025=袝褋谢懈 褌褉械斜褍械褌褋褟 锌械褉械写邪褔邪 写邪薪薪褘褏, 锌芯卸邪谢褍泄褋褌邪, 薪邪斜械褉懈褌械
+9026=袙胁械写械薪懈械 胁 褎褍薪泻褑懈褞
+9027=袞邪谢芯斜褘
+9028=袨斜薪芯胁谢械薪懈械 胁械褉褋懈懈
+9029=(锌芯卸邪谢褍泄褋褌邪, 褍泻邪卸懈褌械 "卸邪谢芯斜褘" 胁 薪邪蟹胁邪薪懈懈, 褌芯谐写邪 屑褘 芯斜褉邪斜芯褌邪械屑 胁 锌褉懈芯褉懈褌械褌薪芯屑 锌芯褉褟写泻械.)
+9030=袣芯锌懈褉芯胁邪薪懈械 胁褘锌芯谢薪械薪芯
+9031=袟写械褋褜 薪懈褔械谐芯 薪械褌.
+9032=袩芯谢褍褔懈褌褜 薪芯胁褍褞 胁械褉褋懈褞
+9033=袩芯褋谢械写薪褟褟 胁械褉褋懈褞
+9034=效褌芯 褟 屑芯谐褍 写谢褟 胁邪褋 褋写械谢邪褌褜?
+9035=袩褉芯斜谢械屑邪 褋 褎褍薪泻褑懈械泄
+9036=袩褉芯斜谢械屑邪 褋芯 褋褑械薪芯泄
+9037=袩芯写写械褉卸泻邪 锌褉懈谢芯卸械薪懈褟
+9038=(效邪褋褌芯 蟹邪写邪胁邪械屑褘械 胁芯锌褉芯褋褘)
+9039=小芯胁屑械褋褌薪芯械 懈褋锌芯谢褜蟹芯胁邪薪懈械 懈 褎褍薪泻褑懈褟
+9040=袨锌芯胁械褖械薪懈褟
+9041=袠薪褎芯褉屑邪褑懈褟 芯 褋懈褋褌械屑械
+9042=袠薪褎芯褉屑邪褑懈芯薪薪褘泄 褑械薪褌褉
+9043=袩芯卸邪谢褍泄褋褌邪, 芯斜褉邪褌懈褌械 胁薪懈屑邪薪懈械, 褔褌芯 薪芯屑械褉 胁邪褕械泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈 蟹邪褉械谐懈褋褌褉懈褉芯胁邪薪 胁 写褉褍谐芯屑 屑械褋褌械. 袝褋谢懈 褝褌芯 褋写械谢邪薪芯 薪械 胁邪屑懈, 锌芯卸邪谢褍泄褋褌邪, 薪械屑械写谢械薪薪芯 懈蟹屑械薪懈褌械 锌邪褉芯谢褜.
+9044=校褋锌械褕薪芯 蟹邪谐褉褍卸械薪芯
+9045=袧械 褍写邪械褌褋褟 蟹邪谐褉褍蟹懈褌褜
+9046=校褋锌械褕薪芯 懈蟹屑械薪械薪
+9047=袩邪褉芯谢褜, 泻芯褌芯褉褘泄 胁褘 懈蟹屑械薪懈谢懈, 胁褋褌褍锌懈谢 胁 褋懈谢褍, 锌芯卸邪谢褍泄褋褌邪, 胁芯泄写懈褌械 胁 褋懈褋褌械屑褍 褋薪芯胁邪.
+9048=袙芯泄写懈褌械 胁 褋懈褋褌械屑褍 褋 锌邪褉芯谢械屑 薪芯屑械褉邪 褍褔械褌薪芯泄 蟹邪锌懈褋懈 
+9049=袧械锌褉邪胁懈谢褜薪褘泄 锌邪褉芯谢褜 胁胁械写械薪 屑薪芯谐芯 褉邪蟹, 薪芯屑械褉 褍褔械褌薪芯泄 蟹邪锌懈褋懈 蟹邪斜谢芯泻懈褉芯胁邪薪!
+9050=袩褉芯胁械褉泻邪 褉邪褋锌芯蟹薪邪薪懈褟 谢懈褑邪
+9051=袧械 褍写邪械褌褋褟 褋芯褏褉邪薪懈褌褜 懈写械薪褌懈褎懈泻邪褌芯褉 谢懈褑邪 锌芯谢褜蟹芯胁邪褌械谢褟
+9052=袛芯褋褌褍锌薪芯 push-褍胁械写芯屑谢械薪懈械 芯 褉械谐懈褋褌褉邪褑懈懈.
+9053=Push-褍胁械写芯屑谢械薪懈械 芯 褉械谐懈褋褌褉邪褑懈懈 褟胁谢褟械褌褋褟 薪械薪芯褉屑邪谢褜薪褘屑.
+9054=袩褉芯胁械褉泻邪 褑懈褎褉芯胁芯谐芯 锌邪褉芯谢褟
+9055=袩褉芯胁械褉泻邪 卸械褋褌芯胁
+9056=袚芯写
+9057=袧械褌 褉械谐懈芯薪邪谢褜薪芯泄 褎褍薪泻褑懈懈
+9058=小芯褏褉邪薪懈褌褜 懈谢懈 薪械褌?
+9059=小械泄褔邪褋 薪械褌 芯斜褖械谐芯 写芯褋褌褍锌邪 
+9060=袪邪蟹褉械褕械薪懈械 薪邪 懈褋锌芯谢褜蟹芯胁邪薪懈械
+9061=袧邪泄写懈褌械 褋胁芯泄 锌邪褉芯谢褜, 薪邪卸邪胁 薪邪 "袟邪斜褘谢懈 锌邪褉芯谢褜", 懈谢懈 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍 褔械褉械蟹 {0} 屑懈薪褍褌褍.
+9062=袩褉芯胁械褉褜褌械
+9063=校 胁邪褋 \械褖械 械褋褌褜 {0} 锌芯锌褘褌芯泻
+9064=小屑邪褉褌 写懈薪邪屑懈泻
+9065=校锌褉邪胁谢械薪懈械 写邪薪薪褘屑懈
+9066=袩褉懈屑械褔邪薪懈褟
+9067=袩褉懈屑械褔邪薪懈褟 薪械 屑芯谐褍褌 斜褘褌褜 锌褍褋褌褘屑懈.
+9068=袙褘 褏芯褌懈褌械 芯褌屑械薪懈褌褜 锌褉懈胁褟蟹泻褍?
+9069=校胁械写芯屑谢械薪懈械 芯 褋芯斜褋褌胁械薪薪芯褋褌懈
+
+10000=袧械胁械褉薪褘泄 锌邪褉芯谢褜, 锌芯卸邪谢褍泄褋褌邪, 胁芯泄写懈褌械 胁 褋懈褋褌械屑褍 械褖械 褉邪蟹.
+10001=袧械 褍写邪械褌褋褟 蟹邪锌褉芯褋懈褌褜 褋械褉胁械褉, 锌芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍 锌芯蟹卸械.
+10002=袨斜褋谢褍卸懈胁邪薪懈械 褋懈褋褌械屑褘, 锌芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍 锌芯蟹卸械.
+10003=袧械 褍写邪械褌褋褟 胁芯泄褌懈 胁 褋懈褋褌械屑褍, 锌芯卸邪谢褍泄褋褌邪, 褋薪邪褔邪谢邪 写芯斜邪胁褜褌械 褉械蟹懈写械薪褑懈褞.
+10004=袧芯屑械褉 褍褔械褌薪芯泄 蟹邪锌懈褋懈 褋褍褖械褋褌胁褍械褌.
+10005=袙褘 芯褌锌褉邪胁谢褟械褌械 锌褉芯胁械褉芯褔薪褘泄 泻芯写 褋谢懈褕泻芯屑 褔邪褋褌芯, 锌芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍 锌芯蟹卸械.
+10006=袨褕懈斜泻邪 锌芯写锌懈褋懈
+10007=小懈褋褌械屑邪 蟹邪薪褟褌邪, 锌芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍 锌芯蟹卸械!
+10008=袧械胁械褉薪褘泄 锌邪褉芯谢褜 写谢褟 胁褏芯写邪 胁 褋懈褋褌械屑褍
+10009=袩芯谢褜蟹芯胁邪褌械谢褜 斜褘谢 芯褌泻谢褞褔械薪.
+10010=袨褕懈斜泻邪 懈褋褏芯写薪芯谐芯 锌邪褉芯谢褟
+10011=袛芯锌芯谢薪懈褌械谢褜薪邪褟 褍褔械褌薪邪褟 蟹邪锌懈褋褜 褋褍褖械褋褌胁褍械褌.
+10012=袛芯锌芯谢薪懈褌械谢褜薪邪褟 褍褔械褌薪邪褟 蟹邪锌懈褋褜 薪械 褋褍褖械褋褌胁褍械褌.
+10013=袧械 褉邪蟹褉械褕邪械褌褋褟 写芯斜邪胁谢褟褌褜 褋械斜褟 胁 泻邪褔械褋褌胁械 褍褔邪褋褌薪懈泻邪.
+10014=孝械泻褍褖邪褟 褉械蟹懈写械薪褑懈褟 薪械 芯褌薪芯褋懈褌褋褟 泻 褝褌芯泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈.
+10015=袧邪蟹胁邪薪懈械 褉械蟹懈写械薪褑懈懈 褋褍褖械褋褌胁褍械褌.
+10016=袪械蟹懈写械薪褑懈褟 薪械 褋褍褖械褋褌胁褍械褌
+10017=袨褕懈斜泻邪 蟹邪锌褉芯褋邪, 薪械薪芯褉屑邪谢褜薪褘泄 锌邪褉邪屑械褌褉!
+10018=袧芯屑械褉, 泻芯褌芯褉褘泄 胁褘 锌褉懈胁褟蟹邪谢懈, 褟胁谢褟械褌褋褟 写褍斜谢懈泻邪褌芯屑.
+10019=袩芯卸邪谢褍泄褋褌邪, 褋薪邪褔邪谢邪 锌褉懈胁褟卸懈褌械 褕谢褞蟹.
+10020=楔谢褞蟹 薪械 褋褍褖械褋褌胁褍械褌.
+10021=楔谢褞蟹 薪械 写芯褋褌褍锌械薪.
+10022=校褋褌褉芯泄褋褌胁芯 薪邪褏芯写懈褌褋褟 胁 芯褎褎谢邪泄薪
+10023=小斜芯泄 褍锌褉邪胁谢械薪懈褟
+10024=小褑械薪邪 褋褍褖械褋褌胁褍械褌.
+10025=袗胁褌芯屑邪褌懈蟹邪褑懈褟 褋褍褖械褋褌胁褍械褌.
+10026=Spk 薪械 锌芯写写械褉卸懈胁邪械褌 褝褌褍 褎褍薪泻褑懈褞.
+10027=Spk 薪械 锌芯写写械褉卸懈胁邪械褌 褝褌芯 褎褍薪泻褑懈芯薪邪谢褜薪芯械 蟹薪邪褔械薪懈械.
+10028=校 胁邪褋 薪械褌 褉邪蟹褉械褕械薪懈褟.
+10029=笑械谢械胁芯械 褍褋褌褉芯泄褋褌胁芯 锌褉芯写褍斜谢懈褉芯胁邪薪芯
+10030=校 胁邪褋 薪械褌 褉邪蟹褉械褕械薪懈褟 薪邪 褍写邪谢械薪薪芯械 褍锌褉邪胁谢械薪懈械.
+10031=校褋褌褉芯泄褋褌胁芯 薪械 写芯谢卸薪芯 斜褘褌褜 锌褍褋褌褘屑.
+10032=校 锌芯谢褜蟹芯胁邪褌械谢褟 薪械褌 褉邪蟹褉械褕械薪懈褟.
+10033=校褋褌褉芯泄褋褌胁芯 薪械 褋褍褖械褋褌胁褍械褌.
diff --git a/HDL-ON_Android/Assets/Phone/Collection/FunctionOfflineBg.png b/HDL-ON_Android/Assets/Phone/Collection/FunctionOfflineBg.png
new file mode 100644
index 0000000..bc09c9b
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Collection/FunctionOfflineBg.png
Binary files differ
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index 3168eb9..cbc8b17 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -46,6 +46,7 @@
     <BundleAssemblies>false</BundleAssemblies>
     <AndroidEnableMultiDex>false</AndroidEnableMultiDex>
     <AndroidUseAapt2>true</AndroidUseAapt2>
+    <EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugSymbols>True</DebugSymbols>
@@ -225,6 +226,7 @@
     <AndroidAsset Include="Assets\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg2.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg3.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg4.png" />
+    <AndroidAsset Include="Assets\Phone\Collection\FunctionOfflineBg.png" />
   </ItemGroup>
   <ItemGroup>
     <AndroidResource Include="Resources\values\colors.xml" />
diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index 3fc1704..bdc6cdf 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:versionCode="202201141" android:versionName="1.5.2" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202203111" android:versionName="1.5.5" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools">
 	<uses-sdk android:minSdkVersion="28" android:targetSdkVersion="30" />
 	<!--鍙嬬洘-->
 	<!--<uses-sdk android:minSdkVersion="8"></uses-sdk>-->
@@ -88,7 +88,7 @@
 	<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 	<uses-permission android:name="android.permission.READ_LOGS" />
 	<!-- 鏋佸厜鎺ㄩ�佺粨鏉� -->
-	<application android:allowBackup="true" android:debuggable="true" android:icon="@drawable/Icon" android:networkSecurityConfig="@xml/network_security_config" android:largeHeap="true" android:label="On Pro">
+	<application android:allowBackup="true" android:debuggable="false" android:icon="@drawable/Icon" android:networkSecurityConfig="@xml/network_security_config" android:largeHeap="true" android:label="On Pro">
 		<!--/鎵弿浜岀淮鐮乤ctivity-->
 		<!--<activity
             android:name="com.journeyapps.barcodescanner.CaptureActivity"
diff --git a/HDL-ON_Android/Resources/Resource.designer.cs b/HDL-ON_Android/Resources/Resource.designer.cs
index f4be883..5a58a59 100644
--- a/HDL-ON_Android/Resources/Resource.designer.cs
+++ b/HDL-ON_Android/Resources/Resource.designer.cs
@@ -14,7 +14,7 @@
 {
 	
 	
-	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
+	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.2.4.160")]
 	public partial class Resource
 	{
 		
diff --git a/HDL-ON_Android/SplashActivity.cs b/HDL-ON_Android/SplashActivity.cs
index 680bb95..afcbe50 100644
--- a/HDL-ON_Android/SplashActivity.cs
+++ b/HDL-ON_Android/SplashActivity.cs
@@ -28,10 +28,6 @@
                 {
                     if (!OnAppConfig.Instance.FirstRunApp)
                     {
-                        //鍒濆鍖栧弸鐩焥dk
-                        Com.Hdl.Umsdk.UmSdk.InitUmSdk(this, "61d565d9e0f9bb492bbc3d5a", "Android");
-                        //鍒濆鍖栧弸鐩焥dk config
-                        Com.Hdl.Umsdk.UmSdk.InitUMConfigure(this, "61d565d9e0f9bb492bbc3d5a", "Android", "");
                         ////鎵撳紑baseActivity
                         Intent i = new Intent(this, typeof(BaseActivity));//Intent intent=new Intent( 璧峰缁勪欢瀵硅薄 , 鐩爣 Service.class);
                         StartActivityForResult(i, 1);
@@ -65,10 +61,6 @@
             }
             else
             {
-                //鍒濆鍖栧弸鐩焥dk
-                Com.Hdl.Umsdk.UmSdk.InitUmSdk(this, "61d565d9e0f9bb492bbc3d5a", "Android");
-                //鍒濆鍖栧弸鐩焥dk config
-                Com.Hdl.Umsdk.UmSdk.InitUMConfigure(this, "61d565d9e0f9bb492bbc3d5a", "Android","");
                 ////鎵撳紑baseActivity
                 Intent i = new Intent(this, typeof(BaseActivity));//Intent intent=new Intent( 璧峰缁勪欢瀵硅薄 , 鐩爣 Service.class);
                 StartActivityForResult(i, 1);
@@ -99,6 +91,10 @@
 
             };
 
+            //鍒濆鍖栧弸鐩焥dk
+            Com.Hdl.Umsdk.UmSdk.InitUmSdk(this, "61d565d9e0f9bb492bbc3d5a", "Android");
+            //鍒濆鍖栧弸鐩焥dk config
+            Com.Hdl.Umsdk.UmSdk.InitUMConfigure(this, "61d565d9e0f9bb492bbc3d5a", "Android", "");
 
         }
 
@@ -203,7 +199,7 @@
                     {
                         //鍙Е鍙戜竴娆�
                         //Shared.Application.LocationAction = null;
-                        new HDL_ON.DAL.Server.HttpServerRequest().GetCityWeatherInfo(lon.ToString(), lat.ToString());
+                        new HDL_ON.DAL.Server.HttpServerRequest().GetCityWeatherInfo(lon.ToString().Replace(",", "."), lat.ToString().Replace(",", "."));
                     }
                     isfirst = false;
                     ///鐩戝惉缁忕含搴�
diff --git a/HDL-ON_iOS/AppDelegate.cs b/HDL-ON_iOS/AppDelegate.cs
index 4dba627..2669b27 100644
--- a/HDL-ON_iOS/AppDelegate.cs
+++ b/HDL-ON_iOS/AppDelegate.cs
@@ -92,6 +92,14 @@
 
             // Get previous device token
             var oldDeviceToken = NSUserDefaults.StandardUserDefaults.StringForKey("PushDeviceToken");
+            new Alert("", DeviceToken, "鍙栨秷", "纭畾").Show();
+
+            //NSDictionary test = new NSDictionary(new NSString("123"), new NSString("test"));
+            //NSError error;
+            //NSData dicD = NSJsonSerialization.Serialize(test, NSJsonWritingOptions.PrettyPrinted,out error); ;
+            //NSString str = new NSString(dicD,NSStringEncoding.UTF8);
+
+            //new Alert("", str, "鍙栨秷", "纭畾").Show();
 
             // Has the token changed?
             if (string.IsNullOrEmpty(oldDeviceToken) || !oldDeviceToken.Equals(DeviceToken))
@@ -123,6 +131,14 @@
         public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
         {
             Console.WriteLine("DidReceiveRemoteNotification:" + application.ApplicationState.ToString());
+
+            Console.WriteLine("鎺ㄩ�佹秷鎭細"+userInfo);
+            //var test = new NSDictionary();
+            //test.SetNilValueForKey(new NSString("test"));
+            NSError error;
+            NSData dicD = NSJsonSerialization.Serialize(userInfo, NSJsonWritingOptions.PrettyPrinted, out error); ;
+            NSString str = new NSString(dicD, NSStringEncoding.UTF8);
+            new Alert("", str, "鍙栨秷", "纭畾").Show();
 
             //璇诲彇鎺ㄩ�佷俊鎭�
             UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
@@ -172,12 +188,18 @@
 
         public override void OnResignActivation(UIApplication application)
         {
+            //璁剧疆鍏ㄨ閫氱姸鎬�
+            Shared.IOS.HDLFVSDK.Video.FVapplicationWillResignActive(application);
+
             Console.WriteLine("OnResignActivation");
             UserInfo.Current.unlockTime = DateTime.Now;
         }
 
         public override void DidEnterBackground(UIApplication application)
         {
+            //璁剧疆鍏ㄨ閫氱姸鎬�
+            Shared.IOS.HDLFVSDK.Video.FVapplicationDidEnterBackground(application);
+
             //SharedMethod.SharedMethod.IsBackground = true;
             //MainPage.IsEnterBackground = true;
             ////杩涘叆鍚庡彴mqtt姝e湪杩炴帴閲嶇疆鐘舵��
@@ -203,6 +225,9 @@
 
         public override void OnActivated(UIApplication application)
         {
+            //璁剧疆鍏ㄨ閫氱姸鎬�
+            Shared.IOS.HDLFVSDK.Video.FVapplicationDidBecomeActive(application);
+
             Console.WriteLine("OnActivated");
             base.OnActivated(application);
             //HDL_ON.DriverLayer.Control.Ins.SearchLoaclGateway();
@@ -233,6 +258,10 @@
                 {
                     Language.CurrentLanguage = "Czech";
                 }
+                //else if (NSLocale.PreferredLanguages[0].Contains("ru-"))
+                //{
+                //    Language.CurrentLanguage = "russian";
+                //}
                 else
                 {
                     Language.CurrentLanguage = "English";
@@ -246,6 +275,10 @@
 
         public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
         {
+
+            //璁剧疆鍏ㄨ閫氱姸鎬�
+            Shared.IOS.HDLFVSDK.Video.FVapplication(application, new NSDictionary());
+
             Console.WriteLine("111111111111");
             SetCurrentLanguage();
             //Shared.Application.FontSize = 12;
@@ -303,6 +336,7 @@
                     var messageType = "";
                     var expantContent = "";
                     var homeId = "";
+
                     if (userInfo.ContainsKey(new NSString("expandData")))
                     {
                         var expandDataStr = userInfo["expandData"] as NSString;
@@ -329,6 +363,7 @@
                                     Utlis.WriteLine("homeId: " + homeId);
                                 }
 
+
                             }
                         }
                         else
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index 97b08bc..73a83b1 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -38,8 +38,9 @@
         <WarningLevel>4</WarningLevel>
         <MtouchLink>SdkOnly</MtouchLink>
         <MtouchArch>x86_64</MtouchArch>
-<CodesignKey>iPhone Developer</CodesignKey>
+<CodesignKey>Apple Distribution: HDL Automation Co., Ltd (BVTA78PRYA)</CodesignKey>
 <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+<CodesignProvision>ComHdlOnProAdHoc20220117-1</CodesignProvision>
     </PropertyGroup>
     <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
         <DebugSymbols>true</DebugSymbols>
@@ -56,9 +57,9 @@
         <MtouchLink>SdkOnly</MtouchLink>
         <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC"</MtouchExtraArgs>
         <MtouchEnableSGenConc>false</MtouchEnableSGenConc>
-<CodesignProvision>OnPro211201-1-Dev</CodesignProvision>
 <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
 <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+<CodesignProvision>OnPro220307-2-Dev</CodesignProvision>
     </PropertyGroup>
     <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
         <DebugType>none</DebugType>
@@ -68,7 +69,7 @@
         <WarningLevel>4</WarningLevel>
         <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
         <MtouchArch>ARM64</MtouchArch>
-        <CodesignKey>Apple Distribution: HDL Automation Co., Ltd (BVTA78PRYA)</CodesignKey>
+        <CodesignKey>iPhone Distribution: HDL Automation Co., Ltd (BVTA78PRYA)</CodesignKey>
         <MtouchLink>SdkOnly</MtouchLink>
         <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC"</MtouchExtraArgs>
         <MtouchI18n>cjk</MtouchI18n>
@@ -104,14 +105,14 @@
         <Reference Include="Shared.IOS.LCVideoOnSDK">
           <HintPath>..\DLL\LC\IOS\Shared.IOS.LCVideoOnSDK.dll</HintPath>
         </Reference>
+        <Reference Include="Shared.IOS.HDLSceneSiri">
+          <HintPath>..\DLL\IOS\Shared.IOS.HDLSceneSiri.dll</HintPath>
+        </Reference>
+        <Reference Include="Shared.IOS.HDLFVSDK">
+          <HintPath>..\DLL\IOS\Shared.IOS.HDLFVSDK.dll</HintPath>
+        </Reference>
         <Reference Include="Shared.IOS.HDLLinphoneSDK">
           <HintPath>..\DLL\Linphone\iOS\Shared.IOS.HDLLinphoneSDK.dll</HintPath>
-        </Reference>
-        <Reference Include="Shared.IOS.HDLSceneSiri">
-          <HintPath>..\..\HDLXamarinSceneSiri\Shared.IOS.HDLSceneSiri\Shared.IOS.HDLSceneSiri\bin\Release\Shared.IOS.HDLSceneSiri.dll</HintPath>
-        </Reference>
-        <Reference Include="UMSdk">
-          <HintPath>..\DLL\UMeng\UMSdk.dll</HintPath>
         </Reference>
     </ItemGroup>
     <ItemGroup>
@@ -1387,6 +1388,7 @@
       <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg2.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg3.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg4.png" />
+      <BundleResource Include="Resources\Phone\Collection\FunctionOfflineBg.png" />
     </ItemGroup>
     <ItemGroup>
       <ITunesArtwork Include="iTunesArtwork" />
@@ -1431,6 +1433,10 @@
         <Project>{8B1652FA-5158-4D57-B90D-07BB91766625}</Project>
         <Name>SiriKit</Name>
       </ProjectReference>
+      <ProjectReference Include="..\UMSdk\UMSdk.csproj">
+        <Project>{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}</Project>
+        <Name>UMSdk</Name>
+      </ProjectReference>
     </ItemGroup>
     <ItemGroup>
       <Content Include="Base.lproj\Intents.intentdefinition" />
diff --git a/HDL-ON_iOS/HDL-ON_iOS.sln b/HDL-ON_iOS/HDL-ON_iOS.sln
new file mode 100644
index 0000000..540b586
--- /dev/null
+++ b/HDL-ON_iOS/HDL-ON_iOS.sln
@@ -0,0 +1,31 @@
+锘�
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.810.22
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HDL-ON_iOS", "HDL-ON_iOS.csproj", "{D998E133-F0DD-4760-BE3C-461632F54DA4}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|iPhoneSimulator = Debug|iPhoneSimulator
+		Release|iPhoneSimulator = Release|iPhoneSimulator
+		Debug|iPhone = Debug|iPhone
+		Release|iPhone = Release|iPhone
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|iPhone.ActiveCfg = Debug|iPhone
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|iPhone.Build.0 = Debug|iPhone
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|iPhone.ActiveCfg = Release|iPhone
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|iPhone.Build.0 = Release|iPhone
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {C02ACC50-5824-46E9-9734-E66C965E2174}
+	EndGlobalSection
+EndGlobal
diff --git a/HDL-ON_iOS/Info.plist b/HDL-ON_iOS/Info.plist
index 484070e..fa24946 100644
--- a/HDL-ON_iOS/Info.plist
+++ b/HDL-ON_iOS/Info.plist
@@ -100,9 +100,9 @@
 	<key>UIStatusBarStyle</key>
 	<string>UIStatusBarStyleLightContent</string>
 	<key>CFBundleShortVersionString</key>
-	<string>1.5.102101121</string>
+	<string>1.5.502203111</string>
 	<key>CFBundleVersion</key>
-	<string>1.5.101121</string>
+	<string>1.5.503111</string>
 	<key>NSLocationWhenInUseUsageDescription</key>
 	<string>Use geographic location to provide services such as weather</string>
 	<key>NSAppleMusicUsageDescription</key>
@@ -120,6 +120,7 @@
 	<key>UIBackgroundModes</key>
 	<array>
 		<string>audio</string>
+		<string>location</string>
 		<string>voip</string>
 		<string>remote-notification</string>
 	</array>
diff --git a/HDL-ON_iOS/Main.cs b/HDL-ON_iOS/Main.cs
index 1c6b56e..09293dc 100644
--- a/HDL-ON_iOS/Main.cs
+++ b/HDL-ON_iOS/Main.cs
@@ -16,7 +16,7 @@
                 try
                 {
                     Shared.Application.LocationAction = null;
-                    new HttpServerRequest().GetCityWeatherInfo(lon.ToString(), lat.ToString());
+                    new HttpServerRequest().GetCityWeatherInfo(lon.ToString().Replace(",", "."), lat.ToString().Replace(",", "."));
                 }
                 catch(Exception ex)
                 {
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index 77d363e..73f20e4 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -128,7 +128,7 @@
 127=Mode
 128=Fan speed
 129=Are you sure to shut off all functions in the room?
-130= already opened
+130=already opened
 131=Already added to favorites
 132=Congratulations! Successful registration.
 133=Automatic log-in soon鈥�
@@ -512,7 +512,14 @@
 524=Bypass
 525=Enable
 526=Cancel account
- 
+527=Homekit support notes
+528=Firmware update
+529=
+530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
+531=Password free unlocking within five minutes
+532=The device is offline and cannot be operated temporarily
+
+
 1000=Room Humidity
 1001=V-chip
 1002=Anion
@@ -594,7 +601,6 @@
 1078=Residual filter screen
 1079=Energy
 1080=Ventilated
-;鍒湅涓嬮潰閮戒竴鏍�,閮芥槸UI鐗规畩瑕佹眰鏁寸殑,鍐嶅姞涓婅�冭檻鑻辨枃闀垮害
 1081=1st Gear
 1082=2nd Gear
 1083=3rd Gear
@@ -1042,9 +1048,9 @@
 9011=Enter new password again
 9012=Agree
 9013=Service Agreement
-9014=User information protection regulations
+9014=Privacy Agreement
 9015=and
-9016=Please read and agree on User Service Agreement and User information protection regulations.
+9016=Please read and agree on User Service Agreement and Privacy Agreement.
 9017=Are you sure to log out?
 9018=Please select country/region.
 9019=Update now
@@ -1647,7 +1653,15 @@
 524=鍋滅敤
 525=鍚敤
 526=娉ㄩ攢璐﹀彿
- 
+527=鏀寔HomeKit璇存槑
+528=鍥轰欢鏇存柊
+529=
+530=涓洪槻姝㈠紑鍏抽棬鐨勮瑙︾偣鍑伙紝淇濊瘉瀹跺涵瀹夊叏锛岃杈撳叆鎮ㄧ殑闂ㄩ攣寮�闂ㄥ瘑鐮併��
+531=浜斿垎閽熷唴鍏嶅瘑鐮佸紑閿�
+532=璁惧绂荤嚎涓紝鏆傛椂鏃犳硶鎿嶄綔
+533=璁垮绠$悊
+
+
 1000=瀹ゅ唴婀垮害
 1001=绔ラ攣
 1002=璐熺瀛�
@@ -2250,3 +2264,1144 @@
 10031=璁惧涓嶈兘涓虹┖
 10032=鐢ㄦ埛娌℃湁璁惧鐨勬潈闄�
 10033=璁惧涓嶅瓨鍦�
+
+
+
+
+[russian]
+1=袥芯谐懈薪
+2=袧芯屑械褉 褌械谢械褎芯薪邪
+3=袨褋胁械褖械薪懈械
+4=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+5=袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 褋胁芯褞 褍褔械褌薪褍褞 蟹邪锌懈褋褜
+6=袩邪褉芯谢褜
+7=袟邪斜褘谢懈
+8=袟邪褉械谐懈褋褌褉懈褉褍泄褌械褋褜
+9=袩褉芯胁械褉芯褔薪褘泄 泻芯写 写谢褟 谢芯谐懈薪邪
+10=袩芯卸邪谢褍泄褋褌邪 锌芯写芯卸写懈褌械
+11=袟邪泻褉褘褌褜
+12=袩芯谢褍褔懈褌褜 锌褉芯胁械褉芯褔薪褘泄 泻芯写
+13=袩邪褉芯谢褜 写谢褟 谢芯谐懈薪邪
+14=袪械谐懈褋褌褉邪褑懈褟
+15=袧芯屑械褉 褌械谢械褎芯薪邪
+16=袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 锌邪褉芯谢褜
+17=袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 锌邪褉芯谢褜 锌芯胁褌芯褉薪芯
+18=袩褉芯胁械褉芯褔薪褘泄 泻芯写
+19=袧械胁械褉薪褘泄 薪芯屑械褉 褌械谢械褎芯薪邪.袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 褋薪芯胁邪
+20=袩邪褉芯谢懈 薪械 褋芯胁锌邪写邪褞褌. 袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 褋薪芯胁邪
+21=袩邪褉芯谢褜 薪械 褍写芯胁谢械褌胁芯褉褟械褌 褌褉械斜芯胁邪薪懈褟屑. 袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 褋薪芯胁邪
+22=袩芯谢褜蟹芯胁邪褌械谢褜 芯褌泻谢芯薪械薪.袩芯胁褌芯褉薪邪褟 褉械谐懈褋褌褉邪褑懈褟 胁芯蟹屑芯卸薪邪 褔械褉械蟹 24 褔邪褋邪.
+23=袧械胁械褉薪褘泄 锌褉芯胁械褉芯褔薪褘泄 泻芯写.袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 褋薪芯胁邪
+24=袧械胁械褉薪邪褟  褍褔械褌薪邪褟 蟹邪锌懈褋褜. 袩芯卸邪谢褍泄褋褌邪 胁胁械写懈褌械 胁械褉薪褘泄  邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+25=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+26=袪械蟹懈写械薪褑懈褟
+27=校褔邪褋褌薪懈泻
+28=小薪褟褌褜
+29=袩芯褋褌邪胁懈褌褜
+30=袪械蟹械褉胁薪芯械 泻芯锌懈褉芯胁邪薪懈械 写邪薪薪褘褏
+31=袙褋锌芯屑芯谐邪褌械谢褜薪邪褟 褎褍薪泻褑懈褟
+32=袛芯斜邪胁懈褌褜 褎褍薪泻褑懈懈
+33=袪械卸懈屑 薪芯褔褜
+34=袨褋薪芯胁薪褘械 薪邪褋褌褉芯泄泻懈
+35=袩芯谢褍褔懈褌褜 锌芯写写械褉卸泻褍
+36=袛芯屑
+37=袣邪褌械谐芯褉懈褟
+38=小屑邪褉褌
+39=袠薪写懈胁懈写褍邪谢褜薪褘泄
+40=袧械褍褋锌械褕薪邪褟 邪胁褌芯褉懈蟹邪褑懈褟, 薪械胁械褉薪邪 褍褔械褌薪邪褟 蟹邪锌懈褋褜 懈谢懈 锌邪褉芯谢褜
+41=袧械 褍写邪谢芯褋褜 芯褌锌褉邪胁懈褌褜 锌褉芯胁械褉芯褔薪褘泄 泻芯写
+42=袨褕懈斜泻邪 褋械褌懈
+43=袧械 褍写邪谢芯褋褜 蟹邪褉械谐懈褋褌褉懈褉芯胁邪褌褜褋褟
+44=袩芯写褌胁械褉写懈褌械 褋斜褉芯褋
+45=校褔械褌薪邪褟 蟹邪锌懈褋褜 薪械 褋褍褖械褋褌胁褍械褌, 锌褉芯胁械褉褜褌械 褔褌芯 芯薪邪 蟹邪褉械谐懈褋褌褉懈褉芯胁邪薪邪
+46=袧械胁械褉薪芯械 锌芯写褌胁械褉卸写械薪懈械 芯 胁褏芯写械 胁 褋懈褋褌械屑褍, 锌芯卸邪谢褍泄褋褌邪, 胁芯泄写懈褌械 胁 褋懈褋褌械屑褍 械褖械 褉邪蟹.
+47=袥懈褔薪褘泄 泻邪斜懈薪械褌
+48=袠屑褟
+49=QR 泻芯写
+50=袧芯屑械褉 褌械谢械褎芯薪邪
+51=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+52=袧械 锌褉懈胁褟蟹邪薪
+53=袪邪蟹褉械褕械薪懈械 褌褉械褌褜械泄 褋褌芯褉芯薪褘
+54=小屑械薪懈褌褜 锌邪褉芯谢褜
+55=袧邪褋褌褉芯泄泻邪 褉邪蟹斜谢芯泻懈褉芯胁泻懈
+56=校褋褌邪薪芯胁懈褌械 锌邪褉芯谢褜, 卸械褋褌, 芯褌锌械褔邪褌芯泻 锌邪谢褜褑邪 懈谢懈 褉邪褋锌芯蟹薪邪薪懈褟 谢懈褑邪, 褔褌芯斜褘 蟹邪褖懈褌懈褌褜 胁邪褕褍 泻芯薪褎懈写械薪褑懈邪谢褜薪芯褋褌褜
+57=袙褘泄褌懈 懈蟹 褋懈褋褌械屑褘
+58=袣芯屑薪邪褌邪
+59=校褋褌褉芯泄褋褌胁芯
+60=肖褍薪泻褑懈褟
+61=携褉泻芯褋褌褜
+62=袧邪褋褌褉芯泄泻懈
+63=袥芯泻邪褑懈褟
+64=袩芯写械谢懈褌褜褋褟
+65=袛芯斜邪胁懈褌褜 锌邪锌泻褍 薪邪 谐谢邪胁薪褘泄 褝泻褉邪薪
+66=小屑械薪懈褌褜 懈屑褟
+67=袨褌屑械薪懈褌褜
+68=袩芯写褌胁械褉写懈褌褜
+69=袙褋械
+70=楔褌芯褉褘
+71=袠屑褟
+72=袗写褉械褋
+73=校锌褉邪胁谢械薪懈械 褝褌邪卸邪屑懈
+74=校锌褉邪胁谢械薪懈械 泻芯屑薪邪褌邪屑懈
+75=袩械褉械写邪褌褜 锌褉邪胁邪 邪写屑懈薪懈褋褌褉邪褌芯褉邪
+76=袩械褉械写邪褌褜 写芯褋褌褍锌
+77=袛芯褋褌褍锌 写谢褟 芯褌谢邪写泻懈
+78=袩褉邪胁邪 邪写屑懈薪懈褋褌褉邪褌芯褉邪 锌械褉械写邪薪褘 写褉褍谐芯屑褍 锌芯谢褜蟹芯胁邪褌械谢褞.
+79=袙褋械 写邪薪薪褘械 芯 褉械蟹懈写械薪褑懈懈 锌械褉械写邪薪褘 薪芯胁芯屑褍 锌芯谢褜蟹芯胁邪褌械谢褞.
+80=袪邪蟹褉械褕懈褌褜 锌械褉褋芯薪邪谢褍 锌芯褋械褖邪褌褜 胁邪褕 锌褉芯械泻褌 褍写邪谢械薪薪芯
+81=协褌邪卸
+82=袛芯斜邪胁懈褌褜 褝褌邪卸
+83=袠蟹屑械薪懈褌褜 薪邪蟹胁邪薪懈械 褝褌邪卸邪
+84=袧械 褍写邪谢芯褋褜 写芯斜邪胁懈褌褜, 褝褌邪卸 褍卸械 褋褍褖械褋褌胁褍械褌
+85=小褑械薪邪
+86=校写邪谢懈褌褜
+87=袩芯写褋泻邪蟹泻邪
+88=校写邪谢懈褌褜 褝褌邪卸 懈谢懈 薪械褌?
+89=袛芯斜邪胁懈褌褜 泻芯屑薪邪褌褍
+90=袠蟹屑械薪懈褌褜 懈薪褎芯褉屑邪褑懈褞 写谢褟 泻芯屑薪邪褌褘
+91=袠薪褎芯褉屑邪褑懈褟 芯 泻芯屑薪邪褌械
+92=袧邪蟹胁邪薪懈械
+93=协褌邪卸
+94=校锌褉邪胁谢械薪懈械 褎褍薪泻褑懈褟屑懈
+95=小芯褏褉邪薪懈褌褜
+96=校写邪谢懈褌褜 泻芯屑薪邪褌褍
+97=袚邪谢械褉械褟 锌芯 褍屑芯谢褔邪薪懈褞
+98=袣邪屑械褉邪
+99=袙褘斜褉邪褌褜 懈蟹 谐邪谢械褉械懈
+100=袧械 锌褉懈褋胁芯械薪芯
+101=袩褉懈胁褟蟹邪薪芯
+102=袨褌胁褟蟹邪薪芯
+103=校写邪谢懈褌褜 泻芯屑薪邪褌褍 懈谢懈 薪械褌?
+104=袙褉械屑褟 锌械褉械褏芯写邪
+105=孝械屑锌械褉邪褌褍褉邪 胁 锌芯屑械褖械薪懈懈
+106=袣芯薪写懈褑懈芯薪懈褉芯胁邪薪懈械
+107=袙懈写械芯写芯屑芯褎芯薪
+108=袛邪褌褔懈泻
+109=袦芯薪懈褌芯褉 斜械蟹芯锌邪褋薪芯褋褌懈
+110=袠薪褌械谢谢械泻褌褍邪谢褜薪邪褟 锌邪薪械谢褜
+111=袦褍蟹褘泻邪
+112=袣邪褔械褋褌胁芯 胁芯蟹写褍褏邪
+113=袨泻褉褍卸邪褞褖邪褟 褋褉械写邪
+114=袦芯薪懈褌芯褉懈薪谐 褝薪械褉谐芯锌芯褌褉械斜谢械薪懈褟
+115=袘褘褌芯胁褘械 锌褉懈斜芯褉褘
+116=小屑邪褉褌 蟹邪屑芯泻
+117=袩芯写芯谐褉械胁 锌芯谢邪
+118=袨褌泻褉褘褌褜
+119=袨褏谢邪卸写械薪懈械
+120=袨褌芯锌谢械薪懈械
+121=袨褋褍褕械薪懈械 胁芯蟹写褍褏邪
+122=袗胁褌芯
+123=袩芯写邪褔邪 袙芯蟹写褍褏邪
+124=袙褘褋芯泻邪褟
+125=小褉械写薪褟褟
+126=袧懈蟹泻邪褟
+127=袪械卸懈屑
+128=小泻芯褉芯褋褌褜 胁械薪褌懈谢褟褌芯褉邪
+129=袙褘 褍胁械褉械薪褘, 褔褌芯 褏芯褌懈褌械 芯褌泻谢褞褔懈褌褜 胁褋械 褎褍薪泻褑懈懈 胁 泻芯屑薪邪褌械?
+130=校卸械 芯褌泻褉褘褌
+131=校卸械 写芯斜邪胁谢械薪芯 胁 懈蟹斜褉邪薪薪芯械
+132=袩芯蟹写褉邪胁谢褟械屑! 校褋锌械褕薪邪褟 褉械谐懈褋褌褉邪褑懈褟.
+133=袙褏芯写 胁 褋懈褋褌械屑褍 锌芯懈蟹芯泄写械褌 邪胁褌芯屑邪褌懈褔械褋泻懈  胁 斜谢懈卸邪泄褕械械 胁褉械屑褟鈥�
+134=袧芯屑械褉 褍褔械褌薪芯泄 蟹邪锌懈褋懈 薪械 蟹邪褉械谐懈褋褌褉懈褉芯胁邪薪, 锌芯卸邪谢褍泄褋褌邪, 蟹邪褉械谐懈褋褌褉懈褉褍泄褌械褋褜, 邪 蟹邪褌械屑 胁芯泄写懈褌械 胁 褋懈褋褌械屑褍 褋薪芯胁邪.
+135=袩芯卸邪谢褍泄褋褌邪, 锌芯谢褍褔懈褌械 锌褉芯胁械褉芯褔薪褘泄 泻芯写.
+136=袩邪褉芯谢褜 斜褘谢 懈蟹屑械薪械薪.
+137=袗写褉械褋 褉械蟹懈写械薪褑懈懈 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+138=袧邪蟹胁邪薪懈械 褉械蟹懈写械薪褑懈懈 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+139=袧邪蟹胁邪薪懈械 泻芯屑薪邪褌褘 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+140=袧邪蟹胁邪薪懈械 褝褌邪卸邪 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+141=袧械 褍写邪谢芯褋褜 懈褋锌褉邪胁懈褌褜, 褝褌邪卸 褋褍褖械褋褌胁褍械褌.
+142=袠屑褟 褍褋褌褉芯泄褋褌胁邪 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+143=袠屑褟 锌芯谢褜蟹芯胁邪褌械谢褟 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+144=袠屑褟 锌芯谢褜蟹芯胁邪褌械谢褟
+145=袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 褋褌褉邪薪懈褑褍 写谢褟 斜谢芯泻懈褉芯胁泻懈.
+146=袙褘 屑芯卸械褌械 胁褘斜褉邪褌褜 薪械褋泻芯谢褜泻芯 褋褌褉邪薪懈褑, 泻芯褌芯褉褘屑懈 褏芯褌懈褌械 褍锌褉邪胁谢褟褌褜.
+147=袨褕懈斜泻邪 锌褉芯胁械褉芯褔薪芯谐芯 泻芯写邪
+148=袧械褌 蟹邪褖懈褌褘
+149=袩褉懈 蟹邪锌褍褋泻械
+150=袩芯褋褌邪胁懈褌褜/小薪褟褌褜
+151=袪邪蟹斜谢芯泻懈褉芯胁邪褌褜 褍写邪谢械薪薪芯
+152=袧械褌 薪械芯斜褏芯写懈屑芯褋褌懈 胁胁芯写懈褌褜 锌邪褉芯谢褜 /褋写械谢邪泄褌械 卸械褋褌 锌褉懈 蟹邪锌褍褋泻械 锌褉芯谐褉邪屑屑褘
+153=袣邪褋邪褌械谢褜薪芯 胁褏芯写邪 胁 褋懈褋褌械屑褍 褔械褉械蟹 5 屑懈薪褍褌 锌芯褋谢械 胁褘褏芯写邪 褋芯 褋褌褉邪薪懈褑褘, 锌芯褌褉械斜褍械褌褋褟 褋芯芯褌胁械褌褋褌胁褍褞褖懈泄 屑械褌芯写 褉邪蟹斜谢芯泻懈褉芯胁泻懈.
+154=袥懈褔薪褘泄 泻邪斜懈薪械褌 锌芯谢褜蟹芯胁邪褌械谢褟 - 懈褋锌芯谢褜蟹褍械褌褋褟 写谢褟 褉邪蟹斜谢芯泻懈褉芯胁泻懈 褎褍薪泻褑懈懈 斜械蟹芯锌邪褋薪芯褋褌懈, 褌邪泻芯泄 泻邪泻 褋薪褟褌褜 /锌芯褋褌邪胁懈褌褜
+155=袠褋锌芯谢褜蟹褍械褌褋褟 写谢褟 褉邪蟹斜谢芯泻懈褉芯胁泻懈 懈薪褌械谢谢械泻褌褍邪谢褜薪芯谐芯 蟹邪屑泻邪
+156=袧邪褋褌褉芯泄泻邪 褉邪蟹斜谢芯泻懈褉芯胁泻懈
+157=袛械泄褋褌胁懈褌械谢械薪 褌芯谢褜泻芯 写谢褟 褋芯斜褋褌胁械薪薪懈泻邪
+158=袪邪蟹斜谢芯泻懈褉芯胁泻邪 褋 锌芯屑芯褖褜褞 锌邪褉芯谢褟
+159=袪邪蟹斜谢芯泻懈褉芯胁泻邪 卸械褋褌芯屑
+160=袪邪蟹斜谢芯泻懈褉芯胁泻邪 褋 锌芯屑芯褖褜褞 芯褌锌械褔邪褌泻芯胁 锌邪谢褜褑械胁
+161=袪邪蟹斜谢芯泻懈褉芯胁泻邪 褋 锌芯屑芯褖褜褞 褉邪褋锌芯蟹薪邪薪懈褟 谢懈褑邪
+162=袧邪褋褌褉芯泄泻邪 褑懈褎褉芯胁芯谐芯 锌邪褉芯谢褟
+163=校褋锌械褕薪邪褟 薪邪褋褌褉芯泄泻邪
+164=袧邪褋褌褉芯泄泻邪 卸械褋褌芯胁
+165=袩芯卸邪谢褍泄褋褌邪, 薪邪褉懈褋褍泄褌械 褍蟹芯褉 写谢褟 褉邪蟹斜谢芯泻懈褉芯胁泻懈.
+166=孝褉械斜褍械褌褋褟 褋芯械写懈薪懈褌褜 泻邪泻 屑懈薪懈屑褍屑 4-褌芯褔泻懈, 锌芯卸邪谢褍泄褋褌邪, 薪邪褉懈褋褍泄褌械 械褖械 褉邪蟹.
+167=校蟹芯褉 懈 械谐芯 锌芯写褌胁械褉卸写械薪懈械, 泻芯褌芯褉褘械 胁褘 薪邪褉懈褋芯胁邪谢懈, 薪械 褋芯胁锌邪写邪褞褌. 袩芯卸邪谢褍泄褋褌邪, 薪邪褉懈褋褍泄褌械 械褖械 褉邪蟹.
+168=袩芯卸邪谢褍泄褋褌邪, 薪邪褉懈褋褍泄褌械 褋胁芯泄 褍蟹芯褉 褉邪蟹斜谢芯泻懈褉芯胁泻懈 械褖械 褉邪蟹.
+169=袪邪蟹斜谢芯泻懈褉芯胁邪褌褜 褋 锌芯屑芯褖褜褞 芯褌锌械褔邪褌泻芯胁 锌邪谢褜褑械胁 懈谢懈 薪械褌?
+170=袪邪蟹斜谢芯泻懈褉芯胁邪褌褜 褋 锌芯屑芯褖褜褞 褉邪褋锌芯蟹薪邪薪懈褟 谢懈褑邪 懈谢懈 薪械褌?
+171=袩芯写褌胁械褉写懈褌械 褑懈褎褉芯胁芯泄 锌邪褉芯谢褜
+172=袩芯写褌胁械褉写懈褌械 卸械褋褌
+173=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 懈褋褏芯写薪褘泄 卸械褋褌.
+174=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 懈褋褏芯写薪褘泄 褑懈褎褉芯胁芯泄 锌邪褉芯谢褜.
+175=小斜芯泄 锌褉芯胁械褉泻懈, 芯褕懈斜泻邪 锌邪褉芯谢褟
+176=袠蟹屑械薪懈褌械 褑懈褎褉芯胁芯泄 锌邪褉芯谢褜
+177=袠蟹屑械薪懈褌褜 卸械褋褌
+178=袨褌泻谢褞褔懈褌褜 薪邪褋褌褉芯泄泻褍 褉邪蟹斜谢芯泻懈褉芯胁泻懈 懈谢懈 薪械褌?
+179=袩芯卸邪谢褍泄褋褌邪, 锌褉芯胁械褉褜褌械 芯褌锌械褔邪褌泻懈 锌邪谢褜褑械胁.
+180=袨褕懈斜泻邪 锌褉芯胁械褉泻懈, 芯褕懈斜泻邪 卸械褋褌邪
+181=袨斜褖懈械 褋胁械写械薪懈褟
+182=袛械薪褜
+183=袧芯褔褜
+184=携 褍褕械谢
+185=袩芯卸邪谢褍泄褋褌邪 锌褉懈胁褟卸懈褌械 褝褌邪卸
+186=袪械谐褍谢懈褉芯胁泻邪 褋泻芯褉芯褋褌懈 胁械薪褌懈谢褟褌芯褉邪
+187=袙械薪褌懈谢褟褌芯褉
+188=袪芯蟹械褌泻邪
+189=校褉芯胁械薪褜
+190=袣邪薪邪谢
+191=袚褉芯屑泻芯褋褌褜
+192=孝袙
+193=袣芯屑薪邪褌邪 褍卸械 褋褍褖械褋褌胁褍械褌, 薪械 褍写邪谢芯褋褜 懈蟹屑械薪懈褌褜.
+194=袨泻褉褍卸邪褞褖邪褟 褋褉械写邪
+195=小懈谢褜薪芯械 蟹邪谐褉褟蟹薪械薪懈械
+196=袧械蟹薪邪褔懈褌械谢褜薪芯械 蟹邪谐褉褟蟹薪械薪懈械
+197=啸芯褉芯褕芯
+198=袨褌谢懈褔薪芯
+199=袦芯褉芯蟹薪芯
+200=啸芯谢芯写薪芯
+201=锌褉芯褏谢邪写薪芯
+202=袣芯屑褎芯褉褌薪芯
+203=孝械锌谢芯
+204=袞邪褉泻芯
+205=袨褔械薪褜 卸邪褉泻芯
+206=小褌邪薪写邪褉褌薪芯
+207=袧械蟹薪邪褔懈褌械谢褜薪芯械 蟹邪谐褉褟蟹薪械薪懈械
+208=小褉械写薪械械 蟹邪谐褉褟蟹薪械薪懈械 
+209=小懈谢褜薪芯械 蟹邪谐褉褟蟹薪械薪懈械
+210=小胁械卸懈泄
+211=小屑芯谐
+212=袟邪谐褉褟蟹薪械薪
+213=小懈谢褜薪芯 蟹邪谐褉褟蟹薪械薪
+214=袙褘褋芯泻邪褟 袙谢邪卸薪芯褋褌褜
+215=袙谢邪卸薪芯
+216=小褍褏芯
+217=孝械屑锌械褉邪褌褍褉邪
+218=袙谢邪卸薪芯褋褌褜
+219=袛懈邪锌邪蟹芯薪
+220=校褉芯胁械薪褜
+221=袟薪邪褔械薪懈械 褑胁械褌邪
+222=校谢褜褌褉邪写懈褋锌械褉褋薪邪褟 锌褘谢褜
+223=袦械谢泻芯写懈褋锌械褉褋薪邪褟 锌褘谢褜
+224=楔褍屑
+225=小懈谢邪 胁械褌褉邪
+226=校谐谢械泻懈褋谢褘泄 谐邪蟹
+227=袨袥袨小
+228=袛械薪褜
+229=袧械写械谢褟
+230=袦械褋褟褑
+231=袛褉褍谐芯泄 褉械谐懈芯薪
+232=校锌褉邪胁谢械薪懈械 褍褔邪褋褌薪懈泻邪屑懈
+233=袩褋械胁写芯薪懈屑
+234=袩芯谢薪芯屑芯褔懈褟 邪写屑懈薪懈褋褌褉邪褌芯褉邪
+235=小芯蟹写邪褌褜 褋褑械薪褍
+236=袩褋械胁写芯薪懈屑 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+237=袠蟹屑械薪懈褌褜 锌褋械胁写芯薪懈屑
+238=袠褋锌芯谢褜蟹褍械屑褘泄 褉械谐懈芯薪
+239=袛芯斜邪胁懈褌褜 褍褔邪褋褌薪懈泻邪
+240=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 褍褔械褌薪褍褞 蟹邪锌懈褋褜 褍褔邪褋褌薪懈泻邪.
+241=小泻邪薪懈褉芯胁邪褌褜 QR-泻芯写
+242=袩芯写褌胁械褉写懈褌褜 锌褉懈谐谢邪褕械薪懈械
+243=袨褕懈斜泻邪 褍褔械褌薪芯泄 蟹邪锌懈褋懈, 锌芯卸邪谢褍泄褋褌邪 锌褉芯胁械褉褜褌械.
+244=校褔邪褋褌薪懈泻邪 褍褋锌械褕薪芯 写芯斜邪胁谢械薪
+245=袨褕懈斜泻邪 写邪薪薪褘褏, 锌芯锌褉芯斜褍泄褌械 械褖械 褉邪蟹.
+246=袧械 褍写邪谢芯褋褜 写芯斜邪胁懈褌褜, 褍褔械褌薪邪褟 蟹邪锌懈褋褜 褍褔邪褋褌薪懈泻邪 薪械 蟹邪褉械谐懈褋褌褉懈褉芯胁邪薪邪.
+247=袧械 褍写邪谢芯褋褜 写芯斜邪胁懈褌褜 褋械斜褟.
+248=袩芯谢褜蟹芯胁邪褌械谢褜 薪械 褋褍褖械褋褌胁褍械褌 胁 褝褌芯泄 褉械蟹懈写械薪褑懈懈.
+249=校褔械褌薪邪褟 蟹邪锌懈褋褜 褍褔邪褋褌薪懈泻邪 斜褘谢邪 写芯斜邪胁谢械薪邪, 锌芯褝褌芯屑褍 械械 薪械谢褜蟹褟 写芯斜邪胁懈褌褜 褋薪芯胁邪.
+250=小斜芯泄 芯锌械褉邪褑懈懈
+251=袧械 褍写邪谢芯褋褜 写芯斜邪胁懈褌褜, 薪械写芯褋褌邪褌芯褔薪芯 锌芯谢薪芯屑芯褔懈泄
+252=校褋锌械褕薪芯 褋芯褏褉邪薪械薪芯
+253=小芯褏褉邪薪械薪懈械鈥� 锌芯卸邪谢褍泄褋褌邪, 锌芯写芯卸写懈褌械.
+254=袪械写邪泻褌懈褉芯胁邪薪懈械 锌褋械胁写芯薪懈屑邪
+255=校写邪谢懈褌褜 褝褌芯谐芯 褍褔邪褋褌薪懈泻邪
+256=袧械褌 懈蟹斜褉邪薪薪褘褏
+257=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 褋芯写械褉卸懈屑芯械.
+258=袩褉懈胁械褌褋褌胁褍械屑 薪芯胁芯谐芯 褍褔邪褋褌薪懈泻邪.
+259=袙褘 褍胁械褉械薪褘, 褔褌芯 褏芯褌懈褌械 褍写邪谢懈褌褜 褝褌芯谐芯 褍褔邪褋褌薪懈泻邪?
+260=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 锌邪褉芯谢褜 写谢褟 胁褏芯写邪 胁 褋懈褋褌械屑褍.
+261=校褋锌械褕薪芯 褋屑械薪械薪邪 褉械蟹懈写械薪褑懈褟
+262=袙褘斜褉邪褌褜 胁褋械
+263=袩芯写械谢懈褌褜褋褟 褎褍薪泻褑懈芯薪邪谢芯屑
+264=袩芯写褌胁械褉写懈褌褜 褋芯胁屑械褋褌薪芯械 懈褋锌芯谢褜蟹芯胁邪薪懈械
+265=袩芯写械谢懈褌褜褋褟 褋
+266=小斜芯泄 褋芯胁屑械褋褌薪芯谐芯 懈褋锌芯谢褜蟹芯胁邪薪懈褟 褎褍薪泻褑懈泄
+267=校褋锌械褕薪芯械 褋芯胁屑械褋褌薪芯械 懈褋锌芯谢褜蟹芯胁邪薪懈械 褎褍薪泻褑懈泄
+268=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+269=袠蟹屑械薪懈褌褜 锌褉懈胁褟蟹泻褍
+270=校写邪谢懈褌褜 锌褉懈胁褟蟹泻褍
+271=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+272=袠蟹屑械薪懈褌械 锌褉懈胁褟蟹邪薪薪褘泄 邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+273=袠蟹屑械薪懈褌褜 屑械褌芯写 锌褉芯胁械褉泻懈
+274=袨褌锌褉邪胁谢械薪 锌褉芯胁械褉芯褔薪褘泄 泻芯写, 锌芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 械谐芯.
+275=锌芯胁褌芯褉薪邪褟 芯褌锌褉邪胁泻邪
+276=校褋锌械褕薪邪褟 锌褉芯胁械褉泻邪
+277=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+278=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪芯胁褘泄 邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘.
+279=胁邪褕 邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘 褍褋锌械褕薪芯 锌褉懈胁褟蟹邪薪 泻 胁邪褕械泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈 
+280=袧械 褍写邪械褌褋褟 锌褉懈胁褟蟹邪褌褜  邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘 泻 胁邪褕械泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈 
+281=校写邪谢懈褌械 锌褉懈胁褟蟹泻褍 泻 胁邪褕械屑褍 邪写褉械褋褍 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+282=校褋锌械褕薪芯械 褍写邪谢械薪懈械 锌褉懈胁褟蟹泻懈
+283=袧芯屑械褉 褌械谢械褎芯薪邪
+284=袧芯屑械褉 褌械谢械褎芯薪邪
+285=袧芯屑械褉 褌械谢械褎芯薪邪
+286=袧芯屑械褉 胁邪褕械谐芯 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪 褍褋锌械褕薪芯 锌褉懈胁褟蟹邪薪  泻 胁邪褕械泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈 
+287=袧械 褍写邪械褌褋褟 锌褉懈胁褟蟹邪褌褜 薪芯屑械褉 胁邪褕械谐芯 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪 泻 胁邪褕械泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈 
+288=袠蟹屑械薪懈褌褜 袩褉懈胁褟蟹泻褍
+289=校写邪谢懈褌褜 袩褉懈胁褟蟹泻褍
+290=袧械 褍写邪械褌褋褟 锌芯谢褍褔懈褌褜 懈褋褌芯褉懈褞
+291=袧械褌 懈蟹斜褉邪薪薪褘褏
+292=袨 锌褉芯谐褉邪屑屑械
+293=校褔邪褋褌薪懈泻
+294=袗写屑懈薪懈褋褌褉邪褌芯褉
+295=小屑械薪懈褌褜 锌邪褉芯谢褜
+296=袩械褉械写 褋屑械薪芯泄 锌邪褉芯谢褟 写谢褟 胁褏芯写邪 胁 褋懈褋褌械屑褍
+297=袩芯卸邪谢褍泄褋褌邪, 锌芯写褌胁械褉写懈褌械 懈写械薪褌懈褎懈泻邪褌芯褉.
+298=袩褉芯胁械褉泻邪 锌芯 褌械谢械褎芯薪褍
+299=袩褉芯胁械褉泻邪 锌芯 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌械
+300=袧械 锌褉懈胁褟蟹邪薪 泻 邪写褉械褋褍 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘, 薪械 褍写邪谢芯褋褜 锌芯写褌胁械褉写懈褌褜
+301=袧械 锌褉懈胁褟蟹邪薪 泻 薪芯屑械褉褍 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪, 薪械 褍写邪谢芯褋褜 锌芯写褌胁械褉写懈褌褜
+302=袩褉芯写芯谢卸懈褌褜 锌褉懈胁褟蟹泻褍
+303=袩褉懈胁褟蟹泻褍 泻 薪芯屑械褉褍 胁邪褕械谐芯 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪 褍褋锌械褕薪芯 褍写邪谢械薪邪 
+304=袩褉芯胁械褉芯褔薪褘泄 泻芯写 斜褘谢 芯褌锌褉邪胁谢械薪 薪邪:
+305=袧芯屑械褉 褌械谢械褎芯薪邪
+306=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+307=袩芯谢褍褔械薪褘 薪芯胁褘械 写邪薪薪褘械, 胁褘 褍胁械褉械薪褘, 褔褌芯 懈褏 薪褍卸薪芯 锌械褉械锌懈褋邪褌褜?
+308=袗胁褌芯屑邪褌懈蟹邪褑懈褟
+309=小芯蟹写邪褌褜 褋褑械薪褍
+310=袛芯斜邪胁懈褌褜 褋褑械薪褍
+311=袘邪蟹芯胁邪褟 泻芯薪褎懈谐褍褉邪褑懈褟
+312=袠屑褟
+313=袪械谐懈芯薪
+314=袟邪胁械褉褕懈褌褜
+315=袩芯谢薪褘泄 胁懈写 薪邪 褉械蟹懈写械薪褑懈褞
+316=袙褘斜褉邪褌褜
+317=校卸械 写芯斜邪胁谢械薪芯
+318=袩械褉械泻谢褞褔懈褌褜
+319=小泻芯褉芯褋褌褜 胁械薪褌懈谢褟褌芯褉邪
+320=袪械卸懈屑
+321=袙泻谢.
+322=袙褘泻谢.
+323=小褑械薪邪
+324=袟邪写械褉卸泻邪 胁褘锌芯谢薪械薪懈褟 褋褑械薪褘
+325=袧邪褋褌褉芯泄泻邪 蟹邪写械褉卸泻懈
+326=袟邪写械褉卸泻邪
+327=袟邪褏胁邪褌 褋褑械薪褘
+328=袟邪锌懈褋邪褌褜 褋褑械薪褍
+329=袨斜褖懈械 褋胁械写械薪懈褟
+330=袗胁褌芯屑邪褌懈褔械褋泻懈泄 褉械卸懈屑
+331=袦芯褖薪芯褋褌褜 锌芯写芯谐褉械胁邪 锌芯谢邪 
+332=袨褏谢邪卸写械薪懈械 锌芯谢邪
+333=袦芯褖薪芯褋褌褜 芯褏谢邪卸写械薪懈褟 锌芯谢邪 
+334=袪械谐褍谢懈褉芯胁泻邪 锌褉芯褑械薪褌薪芯谐芯 褋芯芯褌薪芯褕械薪懈褟
+335=袘械蟹 蟹邪写械褉卸泻懈
+336=袧械褌 写芯褋褌褍锌薪褘褏 褋褑械薪. 袛芯斜邪胁褜褌械 芯写薪褍! 
+337=袪械写邪泻褌懈褉芯胁邪褌褜 褋褑械薪褍
+338=袧邪蟹胁邪薪懈械 褋褑械薪褘 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+339=袧邪蟹胁邪薪懈械 褋褑械薪褘 褍卸械 褋褍褖械褋褌胁褍械褌, 锌芯卸邪谢褍泄褋褌邪, 懈褋锌褉邪胁褜褌械.
+340=袧邪蟹胁邪薪懈械 泻芯屑薪邪褌褘 褍卸械 褋褍褖械褋褌胁褍械褌, 锌芯卸邪谢褍泄褋褌邪, 懈褋锌褉邪胁褜褌械
+341=校写邪谢褟褌褜 褝褌褍 褋褑械薪褍 懈谢懈 薪械褌?
+342=楔谢褞蟹 薪械 写芯褋褌褍锌械薪, 褋斜芯泄 褍写邪谢械薪薪芯谐芯 锌芯写泻谢褞褔械薪懈褟.
+343=袨褕懈斜泻邪 MAC 邪写褉械褋邪, 褋斜芯泄 褍写邪谢械薪薪芯谐芯 锌芯写泻谢褞褔械薪懈褟.
+344=小斜芯泄 褍写邪谢械薪薪芯谐芯 锌芯写泻谢褞褔械薪懈褟
+345=袧芯屑械褉 褌械谢械褎芯薪邪
+346=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘
+347=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪芯胁褘泄 薪芯屑械褉 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪.
+348=袘褘谢 懈褋锌芯谢褜蟹芯胁邪薪 薪芯屑械褉 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪.
+349=袘褘谢 懈褋锌芯谢褜蟹芯胁邪薪 邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘.
+350=袗写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘 褋芯胁锌邪写邪械褌 褋 褌械泻褍褖懈屑, 屑械薪褟褌褜 薪械 薪褍卸薪芯.
+351=袧芯屑械褉 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪 褋芯胁锌邪写邪械褌 褋 褌械泻褍褖懈屑, 屑械薪褟褌褜 薪械 薪褍卸薪芯.
+352=袧邪蟹薪邪褔械薪懈械 褝褌邪卸邪
+353=袪邪蟹写械谢懈褌褜
+354=袟邪泻褉褘褌褜
+355=袩褉芯
+356=袧芯屑械褉 胁械褉褋懈懈
+357=协褌邪 褎褍薪泻褑懈褟 薪械写芯褋褌褍锌薪邪!
+358=孝械谢械褎芯薪:
+359=协谢械泻褌褉芯薪薪邪褟 锌芯褔褌邪:
+360=小褑械薪邪 锌邪薪械谢懈 褍锌褉邪胁谢械薪懈褟
+361=袧械 写芯斜邪胁谢械薪芯
+362=袙褘斜褉邪褌褜 胁褋械
+363=袧械 褍写邪械褌褋褟 褍褋褌邪薪芯胁懈褌褜 褋胁褟蟹褜 褋 褋械褉胁械褉芯屑, 薪械 褍写邪械褌褋褟 芯褌褉械写邪泻褌懈褉芯胁邪褌褜 懈薪褎芯褉屑邪褑懈褞 芯斜 褍褋褌褉芯泄褋褌胁械
+364=袧械 褍写邪械褌褋褟 褍褋褌邪薪芯胁懈褌褜 褋胁褟蟹褜 褋 褋械褉胁械褉芯屑, 薪械 褍写邪械褌褋褟 芯褌褉械写邪泻褌懈褉芯胁邪褌褜 懈薪褎芯褉屑邪褑懈褞 芯 泻芯屑薪邪褌械
+365=袧械 褍写邪械褌褋褟 褍褋褌邪薪芯胁懈褌褜 褋胁褟蟹褜 褋 褋械褉胁械褉芯屑, 薪械 褍写邪械褌褋褟 芯褌褉械写邪泻褌懈褉芯胁邪褌褜 懈薪褎芯褉屑邪褑懈褞 芯 褋褑械薪械
+366=袧械 褍写邪械褌褋褟 褍褋褌邪薪芯胁懈褌褜 褋胁褟蟹褜 褋 褋械褉胁械褉芯屑, 薪械 褍写邪械褌褋褟 褍写邪谢懈褌褜 褋褑械薪褍
+367=袧械 褍写邪械褌褋褟 褍褋褌邪薪芯胁懈褌褜 褋胁褟蟹褜 褋 褋械褉胁械褉芯屑, 薪械 褍写邪械褌褋褟 褍写邪谢懈褌褜 褝褌邪卸
+368=袛芯斜褉芯 锌芯卸邪谢芯胁邪褌褜,薪邪褋谢邪卸写邪泄褌械褋褜 On Pro
+369=袛芯斜邪胁懈褌褜 薪芯胁褍褞 褉械蟹懈写械薪褑懈褞
+370=小褌邪褌褜 褔谢械薪芯屑 褋械屑褜懈
+371=袧械胁芯蟹屑芯卸薪芯 懈褋锌芯谢褜蟹芯胁邪褌褜 褎褍薪泻褑懈褞, 锌芯卸邪谢褍泄褋褌邪, 锌褉懈胁褟卸懈褌械 褕谢褞蟹
+372=袧械 褍写邪械褌褋褟 褋芯蟹写邪褌褜 褋褑械薪褍, 锌芯卸邪谢褍泄褋褌邪, 锌褉懈胁褟卸懈褌械 褕谢褞蟹
+373=袧械 褍写邪谢芯褋褜 写芯斜邪胁懈褌褜 褝褌邪卸
+374=袛邪薪薪褘械 芯 褉械蟹懈写械薪褑懈懈 斜褘谢懈 褍写邪谢械薪褘, 锌褉懈谢芯卸械薪懈械 邪胁褌芯屑邪褌懈褔械褋泻懈 锌械褉械泻谢褞褔懈褌褋褟 薪邪 写褉褍谐褍褞 褉械蟹懈写械薪褑懈褞.
+375=楔谢褞蟹 薪械 锌芯写泻谢褞褔械薪 泻 褋械褉胁械褉褍, 薪械 褍写邪械褌褋褟 褋芯蟹写邪褌褜 褋褑械薪褍.
+376=袧械 褍写邪械褌褋褟 胁胁械褋褌懈 褋锌械褑懈邪谢褜薪褘泄 褋懈屑胁芯谢
+377=袙褋褟 褉械蟹懈写械薪褑懈褟
+378=袙褉械屑褟 锌械褉械褏芯写邪
+379=小泻芯褉芯褋褌褜 锌械褉械褏芯写邪
+380=协褌邪 褎褍薪泻褑懈褟 薪械写芯褋褌褍锌薪邪!
+381=袩械褉械蟹邪谐褉褍蟹泻邪
+400=袛芯斜褉芯 锌芯卸邪谢芯胁邪褌褜 写芯屑芯泄
+401=袧械胁械褉薪褘泄 褕褌褉懈褏-泻芯写, 锌芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍
+402=袩芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍
+403=笑胁械褌芯胁邪褟 褌械屑锌械褉邪褌褍褉邪
+404=袘褘褋褌褉邪褟 薪邪褋褌褉芯泄泻邪
+405=校褞褌薪褘泄
+406=袙褋褌褉械褔邪
+407=效褌械薪懈械
+408=袛芯斜邪胁懈褌褜
+409=肖褍薪泻褑懈褟 屑邪褉泻懈 芯斜芯褉褍写芯胁邪薪懈褟
+410=袙 薪邪褋褌芯褟褖械械 胁褉械屑褟 胁褘 薪械 写芯斜邪胁懈谢懈 薪懈 芯写薪芯谐芯 锌谢邪褌褎芯褉屑械薪薪芯谐芯 褍褋褌褉芯泄褋褌胁邪 
+411=袛褉褍谐懈械 锌谢邪褌褎芯褉屑械薪薪褘械 褍褋褌褉芯泄褋褌胁邪 锌芯写写械褉卸懈胁邪褞褌褋褟 褋褌芯褉芯薪薪懈屑懈 锌褉芯胁邪泄写械褉邪屑懈
+412=袛芯斜邪胁懈褌褜
+413=袣芯薪褌褉芯谢谢械褉 薪械 胁泻谢褞褔械薪
+414=袣芯薪褌褉芯谢谢械褉 胁泻谢褞褔械薪
+415=袣褌芯-褌芯
+416=袞褍褉薪邪谢
+417=校褌械褔泻邪 胁芯写褘
+418=袙 小芯褋褌芯褟薪懈懈 褌褉械胁芯谐懈
+419=袧芯褉屑邪谢褜薪褘泄
+420=袚芯褉褟褔懈泄 褋褍褏芯泄
+421=小褍褏芯泄 胁芯蟹写褍褏
+422=袛械蟹懈薪褎懈褑懈褉芯胁邪褌褜
+423=袨褋胁械褖械薪懈械
+424=袙褉械屑褟
+425=袙褉械屑褟 谐芯褉褟褔械泄 锌褉芯褋褍褕泻懈
+426=袙褉械屑褟 锌褉芯褋褍褕泻懈
+427=袙褉械屑褟 写械蟹懈薪褎械泻褑懈懈
+428=袙褉械屑褟 邪薪懈芯薪懈蟹邪褑懈懈
+429=效
+430=袦懈薪
+431=袙 薪邪褋褌芯褟褖械械 胁褉械屑褟 胁褘 写芯斜邪胁谢褟械褌械 泻邪泻懈械-谢懈斜芯 锌谢邪褌褎芯褉屑械薪薪褘械 褍褋褌褉芯泄褋褌胁邪 胁
+432=袛褉褍谐懈械 锌谢邪褌褎芯褉屑械薪薪芯械 芯斜芯褉褍写芯胁邪薪懈械 锌芯写写械褉卸懈胁邪械褌褋褟 褋褌芯褉芯薪薪懈屑懈 锌褉芯胁邪泄写械褉邪屑懈
+433=袙芯写褟薪芯泄 泻谢邪锌邪薪
+434=袩械褉械泻谢褞褔邪褌械谢褜 胁褉械屑械薪懈
+435=袛懈褋褌邪薪褑懈芯薪薪芯械 褍锌褉邪胁谢械薪懈械
+436=袛芯斜邪胁谢械薪薪褘械 褍褋褌褉芯泄褋褌胁邪
+437=小锌懈褋芯泻 褍褋褌褉芯泄褋褌胁
+438=胁谢邪卸薪芯褋褌褜:{0}% 胁芯蟹写褍褏:{1} 胁械褌械褉:{2}
+439=袙 褉械邪谢褜薪芯屑 胁褉械屑械薪懈: {0} 泻袙褌
+440=小谢械写褍褞褖懈泄 褕邪谐
+441=袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 胁褋械 芯斜谢邪褋褌懈 写谢褟 褋斜芯褉邪 褋褌邪褌褍褋芯胁
+442=小芯蟹写邪褌褜 褋褑械薪褍
+443=袩芯谢褜蟹芯胁邪褌械谢褜褋泻芯械 褉邪蟹屑械褖械薪懈械
+444=笑械薪褌褉 斜械蟹芯锌邪褋薪芯褋褌懈
+445=袟邪褖懈褌邪 写芯屑邪
+446=袟邪褖懈褌邪 锌褉懈 薪邪褏芯卸写械薪懈懈 写芯屑邪
+447=袟邪褖懈褌邪 锌褉懈 芯褌褋褍褌褋褌胁懈懈 写芯屑邪
+448=肖懈泻褋懈褉芯胁邪薪薪芯械 褉邪蟹胁械褉褌褘胁邪薪懈械
+449=*袨褌屑械薪邪 蟹邪褖懈褌褘 薪械 胁谢懈褟械褌
+450=袟邪褖懈褌邪 芯褌 褋褌懈褏懈泄薪褘褏 斜械写褋褌胁懈泄
+451=24-褔邪褋芯胁邪褟 蟹邪褖懈褌邪
+452=袨褏褉邪薪薪邪褟 褋懈谐薪邪谢懈蟹邪褑懈褟
+453=袨褌泻谢褞褔械薪懈械 褋懈谐薪邪谢邪 褌褉械胁芯谐懈
+454=袠薪褎芯褉屑邪褑懈褟 芯 褉邪蟹屑械褖械薪懈懈
+455=袠屑褟 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+456=袠蟹芯斜褉邪卸械薪懈械
+457=袩芯褌褉械斜谢械薪懈械 褝薪械褉谐懈懈
+458=袛邪褌邪
+459=袩芯褌褉械斜谢械薪懈械 褝薪械褉谐懈懈 胁 褉械邪谢褜薪芯屑 胁褉械屑械薪懈
+460=袩芯褌褉械斜谢械薪懈械 褝薪械褉谐懈懈 胁 褝褌芯屑 屑械褋褟褑械
+461=袧邪褉褍卸薪褘泄 /袙薪褍褌褉械薪薪懈泄
+462=袙褘 械褖械 薪械 写芯斜邪胁懈谢懈 薪懈泻邪泻懈褏 褍褋褌褉芯泄褋褌胁
+463=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 SN-泻芯写 褍褋褌褉芯泄褋褌胁邪
+464=袦芯卸薪芯 薪邪褔邪褌褜 懈褋锌芯谢褜蟹芯胁邪薪懈械 小袙效 写邪褌褔懈泻邪 
+465=校写邪谢懈褌褜 褍褋褌褉芯泄褋褌胁芯
+466=袩褉懈褋褌邪胁泻邪
+467=袩褉芯械泻褌芯褉
+468=袣褌芯-褌芯 胁褘褕械谢
+469=袣褌芯-褌芯 胁薪褍褌褉懈
+470=袩芯写 蟹邪褖懈褌芯泄
+471=小袙效 写邪褌褔懈泻
+472=袧邪褉褍卸薪褘泄
+473=袣邪褔邪薪懈械
+474=袣邪褔邪薪懈械 胁胁械褉褏 懈 胁薪懈蟹
+475=袩芯胁芯褉芯褌 胁谢械胁芯 懈 胁锌褉邪胁芯
+476=袛芯斜邪胁懈褌褜 褉械蟹懈写械薪褑懈褞
+477=袣邪褔邪薪懈械
+478=校蟹芯褉
+479=小泻芯褉芯褋褌褜
+480=袛邪褌褔懈泻 芯泻褉褍卸邪褞褖械泄 褋褉械写褘
+481=袦芯卸薪芯 薪邪褔邪褌褜 懈褋锌芯谢褜蟹芯胁邪薪懈械 写邪褌褔懈泻邪 芯泻褉褍卸邪褞褖械泄 褋褉械写褘
+482=袚邪蟹芯胁褘泄 写邪褌褔懈泻
+483=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 MAC-泻芯写 褍褋褌褉芯泄褋褌胁邪
+484=袨褌泻褉褘褌芯
+485=袩褉芯胁械褉泻邪/袠蟹屑械薪械薪懈械
+486=肖褍薪泻褑懈褟 蟹邪褖懈褌褘 / 小芯褋褌芯褟薪懈械 褌褉械胁芯谐懈
+487=笑械谢褜 褌褉械胁芯谐懈 锌芯褋谢械 褋褉邪斜邪褌褘胁邪薪懈褟
+488=袛芯褋褌褍锌 锌芯 褉邪褋锌芯蟹薪邪薪懈褞 谢懈褑邪
+489=袩褉懈屑械薪懈褌褜 褉邪褋锌芯蟹薪邪薪懈械 谢懈褑邪 泻:
+490=袣芯薪褌褉芯谢褜 芯斜褖械谐芯 写芯褋褌褍锌邪 
+491=袨 褉邪褋锌芯蟹薪邪薪懈懈 谢懈褑邪 懈 泻芯薪褎懈写械薪褑懈邪谢褜薪芯褋褌懈
+492=小褌械褉械褌褜 写邪薪薪褘械
+493=小斜褉芯褋 懈写械薪褌懈褎懈泻邪褌芯褉邪 谢懈褑邪
+494=校褋褌邪薪芯胁懈褌褜 懈写械薪褌懈褎懈泻邪褌芯褉 谢懈褑邪
+495=袧邪褋褌褉芯泄泻懈 写芯褋褌褍锌邪 锌芯 褉邪褋锌芯蟹薪邪薪懈褞 谢懈褑邪
+496=袧械褌 褋胁褟蟹邪薪薪芯泄 蟹邪写邪褔懈 褋褌邪褌褍褋邪 锌芯褋褌邪薪芯胁泻懈
+497=袩芯谢褜蟹芯胁邪褌械谢褜褋泻懈泄
+498=袨褌谢芯卸械薪薪邪褟 锌芯褋褌邪薪芯胁泻邪
+499=袛芯斜邪胁懈褌褜 褎褍薪泻褑懈褞 蟹邪褖懈褌褘
+500=袛芯斜邪胁懈褌褜 褑械谢褜 褌褉械胁芯谐懈
+501=袨褏褉邪薪薪邪褟 褋懈谐薪邪谢懈蟹邪褑懈褟: {0} 蟹邪锌褍褖械薪邪
+502=袨褌泻谢褞褔懈褌褜 芯褏褉邪薪薪褍褞 褋懈谐薪邪谢懈蟹邪褑懈褞?
+503=袩褉械胁褘褕械薪懈械 褋褌邪薪写邪褉褌邪
+504=啸芯褉芯褕芯
+505=袨褌谢懈褔薪芯
+506=袙胁芯写 谢懈褑邪 胁褘锌芯谢薪械薪 褍褋锌械褕薪芯
+507=袨褕懈斜泻邪 胁胁芯写邪 谢懈褑邪
+508=肖芯褉屑邪谢褜写械谐懈写
+509=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪邪蟹胁邪薪懈械 芯褏褉邪薪薪芯泄 褎褍薪泻褑懈懈.
+510=袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 褑械谢褜 锌芯褋褌邪薪芯胁泻懈.
+511=袣芯屑斜懈薪懈褉芯胁邪薪薪芯械 写懈屑屑懈褉芯胁邪薪懈械
+512=袨褌锌褉邪胁泻邪 褋芯芯斜褖械薪懈泄 薪械 胁泻谢褞褔械薪邪, 锌芯卸邪谢褍泄褋褌邪, 锌械褉械泄写懈褌械 胁 薪邪褋褌褉芯泄泻懈.
+513=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 泻芯写 褋芯锌褉褟卸械薪懈褟
+514=袠薪褎芯褉屑邪褑懈褟 芯 屑械褋褌芯锌芯谢芯卸械薪懈懈 褕谢褞蟹邪 薪械 薪邪褋褌褉芯械薪邪
+515=袛芯斜邪胁懈褌褜 芯褏褉邪薪薪褍褞 褎褍薪泻褑懈褞
+516=胁褘褏芯写
+517=屑谐薪芯胁械薪薪芯械 蟹薪邪褔械薪懈械
+518=薪邪泻芯锌谢械薪薪邪褟 屑芯褖薪芯褋褌褜
+519=薪邪锌褉褟卸械薪懈械 (V)
+520=褌械泻褍褖懈泄 (邪)
+521=屑芯褖薪芯褋褌褜 (锌)
+522=芯斜薪芯胁懈褌褜
+523=蟹邪写械褉卸泻邪 薪邪锌芯屑懈薪邪薪懈褟
+524=斜邪泄锌邪褋
+525=胁泻谢褞褔械薪芯
+526=邪薪薪褍谢懈褉芯胁邪褌褜 褋褔褢褌
+527=懈薪褋褌褉褍泻褑懈褟 锌芯 锌芯写写械褉卸泻械 薪邪斜芯褉邪 懈薪褋褌褉褍屑械薪褌邪谢褜薪褘褏 褋褉械写褋褌胁 写谢褟 褋械屑械泄
+528=芯斜薪芯胁谢械薪懈械 锌褉芯褕懈胁泻懈
+529=
+530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
+531=Password free unlocking within five minutes
+532=The device is offline and cannot be operated temporarily
+
+
+
+1000=袙谢邪卸薪芯褋褌褜 胁 袩芯屑械褖械薪懈懈
+1001=V-芯斜褉邪蟹薪褘泄 褔懈锌
+1002=袗薪懈芯薪
+1003=小褌械褉懈谢懈蟹邪褑懈褟
+1004=校胁谢邪卸薪械薪懈械 胁芯蟹写褍褏邪
+1005=小斜褉芯褋 肖懈谢褜褌褉褍褞褖械谐芯 协谢械屑械薪褌邪
+1006=袨褋胁械褖械薪懈械
+1007=袗胁褌芯屑邪褌懈褔械褋泻懈泄
+1008=袪褍褔薪芯泄
+1009=小懈谢褜薪褘泄
+1010=袪械卸懈屑 褋薪邪
+1011=袨褌褋褔械褌 胁褉械屑械薪懈
+1012=小泻芯褉芯褋褌褜 胁械褌褉邪
+1013=袩械褉械写邪褔邪
+1014=袩芯卸邪谢褍泄褋褌邪, 锌芯写褌胁械褉写懈褌械, 斜褘谢 谢懈 褋斜褉芯褕械薪 褎懈谢褜褌褉褍褞褖懈泄 褝谢械屑械薪褌, 懈 褍锌褉邪胁谢褟泄褌械 芯斜芯褉褍写芯胁邪薪懈械屑 胁 褋芯芯褌胁械褌褋褌胁懈懈 褋 懈薪褋褌褉褍泻褑懈械泄 锌芯 褝泻褋锌谢褍邪褌邪褑懈懈, 褔褌芯斜褘 褉邪褋褋褔懈褌邪褌褜 褋褉芯泻 褋谢褍卸斜褘 褎懈谢褜褌褉褍褞褖械谐芯 褝谢械屑械薪褌邪
+1015=袧懈蟹泻邪褟 锌械褉械写邪褔邪
+1016=小褉械写薪褟褟 锌械褉械写邪褔邪
+1017=袙褘褋芯泻邪褟 袩械褉械写邪褔邪
+1018=袧邪褋褌褉芯泄泻邪 芯褌褋褔械褌邪 胁褉械屑械薪懈
+1019=效邪褋
+1020=袙褉械屑褟 褉邪斜芯褌褘 肖懈谢褜褌褉褍褞褖械谐芯 协谢械屑械薪褌邪锛�
+1021=袙芯蟹写褍褏芯芯褔懈褋褌懈褌械谢褜
+1022=孝械泻褍褖邪褟 褋泻芯褉芯褋褌褜 胁械褌褉邪
+1023=袨褌屑械薪邪 芯褌褋褔械褌邪 胁褉械屑械薪懈
+1024=袪芯斜芯褌 锌褘谢械褋芯褋
+1025=袙褋邪褋褘胁邪褞褖懈泄
+1026=1-褟 锌械褉械写邪褔邪
+1027=2-褟 锌械褉械写邪褔邪
+1028=3-褟 锌械褉械写邪褔邪
+1029=袟邪褉褟写泻邪
+1030=袚芯谢芯褋
+1031=袨褌泻谢褞褔械薪懈械 蟹胁褍泻邪
+1032=袪械卸懈屑 袨褔懈褋褌泻懈
+1033=校锌褉邪胁谢械薪懈械 褉邪褋褏芯写薪褘屑懈 屑邪褌械褉懈邪谢邪屑懈
+1034=袠褋褌芯褉懈褟
+1035=袗胁褌芯屑邪褌懈褔械褋泻懈泄
+1036=小谢褍褔邪泄薪褘泄
+1037=小褌械薪邪
+1038=小锌懈褉邪谢褜
+1039=袨斜褖邪褟 锌谢芯褖邪写褜 芯褔懈褋褌泻懈
+1040=袨斜褖械械 胁褉械屑褟 袨褔懈褋褌泻懈
+1041=袨褋褌邪胁褕懈泄褋褟 褋褉芯泻 褋谢褍卸斜褘 斜芯泻芯胁芯泄 褖械褌泻懈
+1042=袨褋褌邪胁褕懈泄褋褟 褋褉芯泻 褋谢褍卸斜褘 褉芯谢懈泻芯胁芯泄 褖械褌泻懈
+1043=袨褋褌邪胁褕懈泄褋褟 褋褉芯泻 褋谢褍卸斜褘 褎懈谢褜褌褉褍褞褖械谐芯 褝泻褉邪薪邪
+1044=小斜褉芯褋懈褌褜 泻褉邪械胁褍褞 褖械褌泻褍
+1045=小斜褉芯褋懈褌褜 褉芯谢懈泻芯胁褍褞 褖械褌泻褍
+1046=小斜褉芯褋懈褌褜 协泻褉邪薪 
+1047=袩芯写褌胁械褉卸写邪械褌械 褋斜褉芯褋 泻褉邪械胁芯泄 褖械褌泻懈?
+1048=袩芯写褌胁械褉卸写邪械褌械 褋斜褉芯褋 褉芯谢懈泻芯胁芯泄 褖械褌泻懈?
+1049=袩芯写褌胁械褉卸写邪械褌械 褋斜褉芯褋 褝泻褉邪薪邪?
+1050=袛芯斜邪胁懈褌褜 褍褋褌褉芯泄褋褌胁芯
+1051= 小屑邪褉褌 屑懈薪懈锌褍谢褜褌 褍锌褉邪胁谢械薪懈褟
+1052=袛芯斜邪胁懈褌褜 懈薪褎褉邪泻褉邪褋薪褘泄 锌褍谢褜褌 褍锌褉邪胁谢械薪懈褟
+1053=袧邪卸屑懈褌械 泻薪芯锌泻褍 {0} 薪邪 懈薪褎褉邪泻褉邪褋薪芯屑 锌褍谢褜褌械 褍锌褉邪胁谢械薪懈褟 胁 褌械褔械薪懈械 3 褋械泻褍薪写, 懈 懈薪写懈泻邪褌芯褉 {0} 斜褘褋褌褉芯 蟹邪屑懈谐邪械褌 褋懈薪懈屑 褑胁械褌芯屑
+1054=袩芯卸邪谢褍泄褋褌邪, 褍斜械写懈褌械褋褜, 褔褌芯 胁邪褕械 Bluetooth 褍褋褌褉芯泄褋褌胁芯 {0} 胁泻谢褞褔械薪芯 懈 写芯褋褌褍锌薪芯 写谢褟 锌芯懈褋泻邪.
+1055=小谢械写褍褞褖懈泄 褕邪谐
+1056=袩芯懈褋泻 褍褋褌褉芯泄褋褌胁邪...
+1057=袠薪褎褉邪泻褉邪褋薪褘泄 锌褍谢褜褌 褍锌褉邪胁谢械薪懈褟 薪械 薪邪泄写械薪
+1058=1.袩芯卸邪谢褍泄褋褌邪, 锌褉芯胁械褉褜褌械, 胁泻谢褞褔械薪芯 谢懈 褍褋褌褉芯泄褋褌胁芯 {0} 2.袩芯卸邪谢褍泄褋褌邪, 锌褉芯胁械褉褜褌械, 胁泻谢褞褔械薪邪 谢懈 褎褍薪泻褑懈褟 Bluetooth 褍褋褌褉芯泄褋褌胁邪{0} 3.袩芯卸邪谢褍泄褋褌邪, 锌褉芯胁械褉褜褌械, 屑懈谐邪械褌 谢懈 懈薪写懈泻邪褌芯褉 褍褋褌褉芯泄褋褌胁邪{0} 褋懈薪懈屑 褑胁械褌芯屑
+1059=袩芯胁褌芯褉懈褌械 袩芯懈褋泻
+1060=袩芯写泻谢褞褔懈褌械 Wi Fi
+1061=袙 薪邪褋褌芯褟褖械械 胁褉械屑褟  锌芯写写械褉卸懈胁邪械褌褋褟 褌芯谢褜泻芯 褋械褌褜 Wi-Fi 2,4 袚袚褑 {0} 懈 薪械 锌芯写写械褉卸懈胁邪褞褌褋褟 懈屑械薪邪 褋械褌械泄 Wi-Fi {0} 褋 泻懈褌邪泄褋泻懈屑懈 懈械褉芯谐谢懈褎邪屑懈
+1062=袩邪褉芯谢褜
+1063=袩芯写泻谢褞褔械薪懈械...
+1064=袩芯卸邪谢褍泄褋褌邪, 褉邪褋锌芯谢芯卸懈褌械 懈薪褎褉邪泻褉邪褋薪褘泄 锌褍谢褜褌 褍锌褉邪胁谢械薪懈褟 {0} 泻邪泻 屑芯卸薪芯 斜谢懈卸械 泻 屑邪褉褕褉褍褌懈蟹邪褌芯褉褍 Wi-Fi
+1065=小械褌械胁芯械 褋芯械写懈薪械薪懈械
+1066=袟邪谐褉褍蟹泻邪 胁 芯斜谢邪泻芯
+1067=校褋锌械褕薪芯械 锌芯写泻谢褞褔械薪懈械
+1068=1.袩芯卸邪谢褍泄褋褌邪, 锌褉芯胁械褉褜褌械, 胁泻谢褞褔械薪芯 谢懈 褍褋褌褉芯泄褋褌胁芯{0}2.袩芯卸邪谢褍泄褋褌邪, 胁泻谢褞褔懈褌械 褎褍薪泻褑懈褞 Bluetooth{0}3.袧邪卸屑懈褌械 泻薪芯锌泻褍 胁 褌械褔械薪懈械 10 褋械泻褍薪写, 懈 蟹邪谐芯褉懈褌褋褟 懈薪写懈泻邪褌芯褉 {0}.
+1069=袨褕懈斜泻邪 写芯斜邪胁谢械薪懈褟
+1070=袛芯斜邪胁谢械薪芯 褍褋锌械褕薪芯
+1071=袙褘 屑芯卸械褌械 薪邪褔邪褌褜 懈褋锌芯谢褜蟹芯胁邪褌褜 懈薪褎褉邪泻褉邪褋薪褘泄 锌褍谢褜褌 褍锌褉邪胁谢械薪懈褟 {0}!
+1072=袧邪褔邪褌褜 懈褋锌芯谢褜蟹芯胁邪褌褜
+1073=袩芯卸邪谢褍泄褋褌邪, 胁泻谢褞褔懈褌械 Bluetooth
+1074=袠薪褎芯褉屑邪褑懈褟 芯 屑械褋褌芯锌芯谢芯卸械薪懈懈 (GBS) 薪械写芯褋褌褍锌薪邪
+1075=小械褌褜 薪械写芯褋褌褍锌薪邪
+1076=袙褘斜械褉懈褌械 懈薪褎褉邪泻褉邪褋薪褘泄 锌褍谢褜褌 褍锌褉邪胁谢械薪懈褟
+1077=小胁械卸懈泄 胁芯蟹写褍褏
+1078=袨褋褌邪褌芯褔薪褘泄 褎懈谢褜褌褉褍褞褖懈泄 褝泻褉邪薪
+1079=协薪械褉谐懈褟
+1080=袙械薪褌懈谢懈褉褍械屑褘泄
+1081=1-褟 锌械褉械写邪褔邪
+1082=2-褟 锌械褉械写邪褔邪
+1083=3-褟 锌械褉械写邪褔邪
+1084=1-褟 锌械褉械写邪褔邪
+1085=2-褟 锌械褉械写邪褔邪
+1086=3-褟 锌械褉械写邪褔邪
+1087=袪邪蟹斜谢芯泻懈褉芯胁邪褌褜
+1088=孝械屑锌械褉邪褌褍褉邪. 袩邪褉芯谢褜
+1089=袩芯写泻谢褞褔械薪芯
+1090=袨褌泻谢褞褔械薪芯
+1091=小谐械薪械褉懈褉褍泄褌械
+1092=袙褉械屑褟 胁褋褌褍锌谢械薪懈褟 胁 褋懈谢褍
+1093=袙褉械屑褟 懈褋褌械褔械薪懈褟 褋褉芯泻邪 写械泄褋褌胁懈褟
+1094=袙褘斜械褉懈褌械 胁褉械屑褟
+1095=袙褘斜械褉懈褌械 写邪褌褍
+1096=小谐械薪械褉懈褉褍泄褌械
+1097=胁褉械屑械薪薪褘泄 锌邪褉芯谢褜 褋泻芯锌懈褉芯胁邪薪
+1098=袨褔懈褋褌懈褌褜 锌邪褉芯谢褜?
+1099=袙褉械屑褟 懈褋褌械褔械薪懈褟 褋褉芯泻邪 写械泄褋褌胁懈褟 写芯谢卸薪芯 斜褘褌褜 锌芯蟹卸械 胁褉械屑械薪懈 胁褋褌褍锌谢械薪懈褟 胁 褋懈谢褍
+1100=小锌芯褋芯斜 褉邪蟹斜谢芯泻懈褉芯胁泻懈
+1101=协褌芯 褋懈薪褏褉芯薪懈蟹懈褉褍械褌 褋 褎邪泻褌懈褔械褋泻芯泄 斜谢芯泻懈褉芯胁泻芯泄, 锌芯写褌胁械褉卸写邪械褌械 褍写邪谢械薪懈械?
+1102=校写邪谢懈褌褜
+1103=袩褉懈屑械褔邪薪懈械
+1104=袩褉懈屑械褔邪薪懈械 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑.
+1105=袩褉懈褋胁芯懈褌褜
+1106=笑械谢械胁邪褟 褋褑械薪邪 薪械 褋褍褖械褋褌胁褍械褌
+1107=袙褘斜械褉懈褌械 褋褑械薪褍
+1108=袪邪蟹斜谢芯泻懈褉芯胁邪褌褜
+1109=袙褋械谐写邪 胁泻谢褞褔械薪芯
+1110=袧邪褋褌褉芯泄泻邪
+1111=袗胁褌芯屑邪褌懈蟹邪褑懈褟
+1112=袙泻谢褞褔懈褌褜 褉械卸懈屑 "袙褋械谐写邪 胁泻谢褞褔械薪"
+1113=袨褌泻谢褞褔懈褌褜 褉械卸懈屑 "袙褋械谐写邪 胁泻谢褞褔械薪"
+1114=袪械写邪泻褌懈褉芯胁邪褌褜
+1115=袪械卸懈屑 "袙褋械谐写邪 胁泻谢褞褔械薪" 斜褍写械褌 胁褘泻谢褞褔械薪 胁 {0}
+1116=校褋谢芯胁懈械
+1117=袛胁懈卸械薪懈械
+1118=袙褋械谐写邪 胁泻谢褞褔械薪
+1119=袘谢芯泻懈褉芯胁泻邪
+1120=袩芯谢褜蟹芯胁邪褌械谢褜
+1121=小锌芯褋芯斜 褉邪蟹斜谢芯泻懈褉芯胁泻懈
+1122=袨褌锌械褔邪褌芯泻 锌邪谢褜褑邪
+1123=袣邪褉褌邪
+1124=袣谢褞褔
+1125=袠薪褎芯褉屑邪褑懈褟
+1126=袪邪蟹斜谢芯泻懈褉芯胁邪褌褜
+1127=小懈谐薪邪谢 褌褉械胁芯谐懈
+1128=袨褎褎谢邪泄薪
+1129=袛谢褟 锌械褉胁芯谐芯 锌芯谢褜蟹芯胁邪褌械谢褟, 锌芯卸邪谢褍泄褋褌邪, 锌褉懈胁褟卸懈褌械 锌邪褉芯谢褜 斜谢芯泻懈褉芯胁泻懈
+1130=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 锌邪褉芯谢褜 邪写屑懈薪懈褋褌褉邪褌芯褉邪
+1131=袩褉懈胁褟蟹泻邪 胁褘锌芯谢薪械薪邪 褍褋锌械褕薪芯
+1132=袩械褉械泄褌懈 泻 谢懈褔薪芯屑褍 锌邪褉芯谢褞 写谢褟 褉邪蟹斜谢芯泻懈褉芯胁泻懈
+1133=袩褉芯锌褍褋褌懈褌褜
+1134=袩芯卸邪谢褍泄褋褌邪, 薪邪褉懈褋褍泄褌械 褋胁芯泄 褍蟹芯褉
+1135=袘谢芯泻懈褉芯胁泻邪 斜褍写械褌 胁褋械谐写邪 胁泻谢褞褔械薪邪 锌芯褋谢械 薪邪褋褌褉芯泄泻懈, 锌芯写褌胁械褉写懈褌械, 褔褌芯斜褘 锌褉芯写芯谢卸懈褌褜
+1136=袩芯写褌胁械褉写懈褌褜
+1137=袠褋褌械褔械褌
+1138=袪械卸懈屑 "袙褋械谐写邪 胁泻谢褞褔械薪" 懈褋褌械褔械褌 褔械褉械蟹 {0} 褔邪褋芯胁
+1139=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 胁褉械屑褟 懈褋褌械褔械薪懈褟 褋褉芯泻邪
+1140=袙褉械屑褟 懈褋褌械褔械薪懈褟 褋褉芯泻邪 薪械 写芯谢卸薪芯 锌褉械胁褘褕邪褌褜 72 褔邪褋芯胁
+1141=袙褉械屑褟 懈褋褌械褔械薪懈褟 褋褉芯泻邪 薪械 写芯谢卸薪芯 斜褘褌褜 屑械薪械械 1 褔邪褋邪
+1142=袧械 褍写邪谢芯褋褜 褍褋褌邪薪芯胁懈褌褜, 锌芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍
+1143=袧械 褍写邪械褌褋褟 锌芯写褌胁械褉写懈褌褜 懈写械薪褌懈褎懈泻邪褌芯褉 邪写屑懈薪懈褋褌褉邪褌芯褉邪, 锌芯卸邪谢褍泄褋褌邪, 胁芯泄写懈褌械 胁 褍褔械褌薪褍褞 蟹邪锌懈褋褜 褋薪芯胁邪 
+1144=袙邪褕邪 褉械蟹懈写械薪褑懈褟 锌械褉械薪芯褋懈褌褋褟 胁 写褉褍谐芯泄 邪泻泻邪褍薪褌
+1145=袩褉懈屑械褔邪薪懈械:
+1146=1. 袙褋械 胁邪褕懈 写邪薪薪褘械 芯 褉械蟹懈写械薪褑懈懈 斜褍写褍褌 锌械褉械写邪薪褘 薪芯胁芯屑褍 锌芯谢褜蟹芯胁邪褌械谢褞.{0}2. 袩芯褋谢械 锌械褉械写邪褔懈 锌械褉胁芯薪邪褔邪谢褜薪褘泄 褍褔邪褋褌薪懈泻 斜褍写械褌 邪胁褌芯屑邪褌懈褔械褋泻懈 {0} 芯褌胁褟蟹邪薪 芯褌 褝褌芯泄 褉械蟹懈写械薪褑懈懈.{0}3. 袧芯胁邪褟 褍褔械褌薪邪褟 蟹邪锌懈褋褜 褟胁谢褟械褌褋褟 写械泄褋褌胁懈褌械谢褜薪芯泄 褍褔械褌薪芯泄 蟹邪锌懈褋褜褞.{0} 4. 校褔械褌薪邪褟 蟹邪锌懈褋褜 锌芯谢褍褔邪褌械谢褟 薪械 屑芯卸械褌 斜褘褌褜 褌邪泻芯泄 卸械{0}, 泻邪泻 锌械褉胁芯薪邪褔邪谢褜薪邪褟.
+1147=袩芯写褌胁械褉写懈褌褜
+1148=胁胁械写懈褌械 褍褔械褌薪褍褞 蟹邪锌懈褋褜 锌芯谢褍褔邪褌械谢褟
+1149=袩褉芯褎懈谢褜
+1150=袩芯写褌胁械褉写懈褌械 锌械褉械薪芯褋 邪写屑懈薪懈褋褌褉邪褌芯褉邪 褋 {0} 薪邪 {1}
+1151=校褔械褌薪邪褟 蟹邪锌懈褋褜 薪械 褋褍褖械褋褌胁褍械褌.
+1152=袧械 褍写邪械褌褋褟 锌械褉械写邪褌褜 锌褉邪胁芯 褋芯斜褋褌胁械薪薪芯褋褌懈 褋邪屑芯屑褍 褋械斜械
+1153=袟邪胁械褉褕懈褌褜
+1154=袩械褉械写邪褔邪 锌芯谢褜蟹芯胁邪褌械谢褞, 锌芯卸邪谢褍泄褋褌邪, 锌芯写芯卸写懈褌械鈥�
+1155={0} 褋褌邪谢 邪写屑懈薪懈褋褌褉邪褌芯褉芯屑 褉械蟹懈写械薪褑懈懈
+1156=袛邪薪薪褘械 芯 褉械蟹懈写械薪褑懈懈 斜褍写褍褌 褍写邪谢械薪褘 懈蟹 胁邪褕械泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈
+1157=袧械 褍写邪谢芯褋褜 胁褘锌芯谢薪懈褌褜 锌械褉械写邪褔褍
+1158=袩芯卸邪谢褍泄褋褌邪, 锌芯锌褉芯斜褍泄褌械 械褖械 褉邪蟹
+1159=袩械褉械写邪褔邪 锌芯谢薪芯屑芯褔懈泄 邪写屑懈薪懈褋褌褉邪褌芯褉邪
+1160=袙邪褕懈 锌芯谢薪芯屑芯褔懈褟 邪写屑懈薪懈褋褌褉邪褌芯褉邪 锌械褉械写邪褞褌褋褟 写褉褍谐懈屑 褍褔邪褋褌薪懈泻邪屑
+1161=1.袙邪褕懈 写邪薪薪褘械 (芯斜谢邪褔薪褘械 写邪薪薪褘械) 褉械蟹懈写械薪褑懈懈 斜褍写褍褌{0} 锌械褉械写邪薪褘 薪芯胁芯屑褍 邪写屑懈薪懈褋褌褉邪褌芯褉褍{0}2.袙邪褕懈 写邪薪薪褘械 斜褍写褍褌 蟹邪屑械薪械薪褘 写邪薪薪褘屑懈 褑械谢械胁芯谐芯 褍褔邪褋褌薪懈泻邪 {0}, 懈 胁邪褕械 褉邪蟹褉械褕械薪懈械 斜褍写械褌 懈蟹屑械薪械薪芯 薪邪 褑械谢械胁芯谐芯 褍褔邪褋褌薪懈泻邪 {0}
+1162=袩芯写褌胁械褉写懈褌褜
+1163=袧械褌 褍褔邪褋褌薪懈泻芯胁 写谢褟 胁褘斜芯褉邪
+1164=袩芯写褌胁械褉写懈褌械 锌械褉械写邪褔褍 锌芯谢薪芯屑芯褔懈泄 邪写屑懈薪懈褋褌褉邪褌芯褉邪 褋 {0} 薪邪 {1}
+1165=校褋锌械褕薪邪褟 锌械褉械写邪褔邪
+1166=袧械 褍写邪械褌褋褟 胁褘锌芯谢薪懈褌褜 锌械褉械写邪褔褍
+1167=袩械褉械写邪褔邪 锌褉芯褕谢邪 褍褋锌械褕薪芯, 胁邪褕懈 褉邪蟹褉械褕械薪懈褟 褋褌邪薪褍褌 写芯褋褌褍锌薪褘屑懈 写谢褟 褍褔邪褋褌薪懈泻芯胁
+
+4000=袙懈写械芯写芯屑芯褎芯薪
+4001=袟邪锌懈褋褜 胁褘蟹芯胁邪
+4002=*袨斜谢邪褔薪褘械 蟹邪锌懈褋懈 褏褉邪薪褟褌褋褟 褌芯谢褜泻芯 胁 褌械褔械薪懈械 30 写薪械泄
+4003=袟胁芯薪芯泻 胁 写胁械褉褜
+4004=袨褌胁械褔械薪芯
+4005=袪邪蟹斜谢芯泻懈褉芯胁邪薪芯
+4006=谐芯写
+4007=袨褌
+4008=袙褘蟹芯胁
+4009=袪邪蟹斜谢芯泻懈褉芯胁邪薪
+4010=袩褉芯锌褍褖械薪芯
+4011=袨褌泻谢芯薪械薪芯
+4012=袩邪褉邪屑械褌褉褘 泻芯薪褎懈谐褍褉邪褑懈懈 薪械胁械褉薪褘!
+4013=QR-泻芯写 泻芯薪褌褉芯谢褟 写芯褋褌褍锌邪
+4014=袙褉械屑械薪薪褘泄 锌邪褉芯谢褜
+
+
+
+
+
+5000=袦褍蟹褘泻邪
+5001=袚褉褍锌锌邪
+5002=袧邪褋褌褉芯泄泻邪
+5003=袨斜褖邪褟 懈薪褎芯褉屑邪褑懈褟
+5004=袦械写懈邪锌谢械械褉
+5005=Bluetooth
+5006=袪械谐懈芯薪
+5007=小锌懈褋芯泻 锌械褋械薪
+5008=袦芯懈 谢褞斜懈屑褘械
+5009=袦芯泄 褋锌懈褋芯泻
+5010=袙褘斜械褉懈褌械 懈褋褌芯褔薪懈泻
+5011=袥芯泻邪谢褜薪褘泄
+5012=USB
+5013=袨薪谢邪泄薪-褉邪写懈芯
+5014=袦褍蟹褘泻邪 QQ
+5015=Bluetooth
+5016=袥懈薪械泄薪褘泄 胁褏芯写
+5017=袠蟹屑械薪懈褌褜 薪邪蟹胁邪薪懈械
+5018=袨写懈薪芯褔薪褘泄
+5019=袙芯褋锌褉芯懈蟹胁械褋褌懈 胁 褋谢褍褔邪泄薪芯屑 锌芯褉褟写泻械
+5020=小锌懈褋芯泻
+5021=小屑械褋褌懈谢褋褟 薪邪
+5022=袨褌屑械薪邪
+5023=校写邪谢懈褌褜
+5024=袪械写邪泻褌懈褉芯胁邪褌褜
+5025=袧邪蟹胁邪薪懈械 褋锌懈褋泻邪 褋芯胁锌邪写邪械褌.
+5026=袧邪蟹胁邪薪懈械 褋锌懈褋泻邪 锌褍褋褌芯械.
+5027=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪邪蟹胁邪薪懈械 褋锌懈褋泻邪.
+5028=袛芯斜邪胁懈褌褜 薪芯胁褘泄 褋锌懈褋芯泻
+5029=袩芯写褋泻邪蟹泻邪
+5030=校写邪谢懈褌褜 锌邪锌泻褍 懈谢懈 薪械褌?
+5031=袩芯写褌胁械褉写懈褌褜
+5032=袧邪蟹胁邪薪懈械 锌褍褋褌芯械
+5033=袛芯斜邪胁谢械薪芯 胁 褋锌懈褋芯泻 锌械褋械薪
+5034=袪邪写懈芯
+5035=袙褘斜械褉懈褌械 谐褉褍锌锌褍
+5036=袙芯褋锌褉芯懈蟹胁械褋褌懈
+5037=袙褘斜械褉懈褌械 薪械 屑械薪械械 2-褏 屑械写懈邪锌谢械械褉芯胁
+5038=袧械 褍写邪械褌褋褟 胁褘斜褉邪褌褜 2 懈谢懈 斜芯谢械械 2-褏 芯褋薪芯胁薪褘褏 屑械写懈邪锌谢械械褉芯胁, 褔褌芯斜褘 褋褌邪褌褜 谐褉褍锌锌芯泄
+5039=袧械 胁褘斜褉邪薪 屑械写懈邪锌谢械械褉
+5040=袙褘斜械褉懈褌械 写谢褟 褍写邪谢械薪懈褟 屑械写懈邪锌谢械械褉邪
+5041=袧械 胁褘斜褉邪薪 写谢褟 褍写邪谢械薪懈褟 屑械写懈邪锌谢械械褉邪
+5042=袧邪褋褌褉芯泄泻邪鈥�
+5043=校写邪谢械薪懈械鈥�
+5044=袚褉芯屑泻芯褋褌褜
+5045=袨褋薪芯胁薪邪褟 谐褉芯屑泻芯褋褌褜
+5046=袪械谐褍谢懈褉芯胁泻邪 谐褉芯屑泻芯褋褌懈
+5047=小械褉胁懈褋"QQ music" 薪械 褍褋褌邪薪芯胁谢械薪 薪邪 胁邪褕械屑 屑芯斜懈谢褜薪芯屑 褌械谢械褎芯薪械, 锌芯卸邪谢褍泄褋褌邪, 锌械褉械泄写懈褌械 胁 褑械薪褌褉 锌褉懈谢芯卸械薪懈泄.
+
+6000=袧芯褉屑邪谢褜薪褘泄
+6001=小芯褋褌芯褟薪懈械 褍褋褌褉芯泄褋褌胁邪
+6002=褕褌
+6003=孝械泻褍褖械械 褍褋褌褉芯泄褋褌胁芯 袠袣-褍锌褉邪胁谢械薪懈褟
+6004=袛芯斜邪胁谢械薪 锌褍谢褜褌 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟
+6005=袣芯薪写懈褑懈芯薪懈褉芯胁邪薪懈械
+6006=孝袙
+6007=袙械薪褌懈谢褟褌芯褉
+6008=孝械谢械胁懈蟹懈芯薪薪邪褟 锌褉懈褋褌邪胁泻邪
+6009=DVD
+6010=袩褉芯械泻褌芯褉
+6011=袩芯谢褜蟹芯胁邪褌械谢褜褋泻懈泄
+6012=袠袣-褍锌褉邪胁谢械薪懈械
+6013=校锌褉邪胁谢械薪懈械 褍褋褌褉芯泄褋褌胁邪屑懈
+6014=袛芯斜邪胁懈褌褜 锌褍谢褜褌 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟 
+6015=袨薪谢邪泄薪
+6016=袨褎褎谢邪泄薪
+6017=袧芯屑械褉 胁械褉褋懈懈
+6018=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪邪蟹胁邪薪懈械 锌褍谢褜褌邪 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟
+6019=袧邪锌芯屑懈薪邪薪懈械: 袩芯褋谢械 褋芯蟹写邪薪懈褟 锌褍谢褜褌邪 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟 械谐芯 屑芯卸薪芯 薪邪泄褌懈 懈 懈褋锌芯谢褜蟹芯胁邪褌褜 胁 泻邪褌械谐芯褉懈懈 肖褍薪泻褑懈懈-协谢械泻褌褉懈褔械褋泻懈械 {\ r\n}
+6020=袪械泻芯屑械薪写褍械屑邪褟 泻薪芯锌泻邪
+6021=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪邪蟹胁邪薪懈械 泻薪芯锌泻懈
+6022=袛邪谢械械
+6023=袦芯褖薪芯褋褌褜
+6024=袚褉芯屑泻芯褋褌褜+
+6025=袚褉芯屑泻芯褋褌褜-
+6026=袣邪薪邪谢+
+6027=袣邪薪邪谢-
+6028=袙胁械褉褏
+6029=袙薪懈蟹
+6030=袙谢械胁芯
+6031=袙锌褉邪胁芯
+6032=袨褌泻谢褞褔械薪懈械 蟹胁褍泻邪
+6034=袩芯写褌胁械褉卸写械薪懈械
+6035=袙芯褋锌褉芯懈蟹胁械写械薪懈械
+6037=袙褘褏芯写
+6038=袦械薪褞
+6039=袩邪褍蟹邪
+6040=袧邪蟹邪写
+6041=小褌芯锌
+6042=袚谢邪胁薪邪褟 褋褌褉邪薪懈褑邪
+6043=袩械褉械屑芯褌泻邪 胁锌械褉械写
+6044=袩械褉械屑芯褌泻邪 薪邪蟹邪写
+6045=袨褌褋褔械褌 胁褉械屑械薪懈
+6046=小泻芯锌懈褉芯胁邪褌褜 褎褍薪泻褑懈褞 锌褍谢褜褌邪 褍锌褉邪胁谢械薪懈褟
+6047=袧邪胁械写懈褌械 泻褍褉褋芯褉 薪邪 褑械薪褌褉 锌褍谢褜褌邪 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟 懈 薪邪卸屑懈褌械 褌褍 卸械 泻薪芯锌泻褍
+6048=小屑邪褉褌 锌褍谢褜褌 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟
+6049=袛芯斜邪胁懈褌褜 泻薪芯锌泻褍
+6050=* 袛谢懈褌械谢褜薪芯械 薪邪卸邪褌懈械 写谢褟 锌芯谢褜蟹芯胁邪褌械谢褜褋泻芯泄 褋芯褉褌懈褉芯胁泻懈
+6051=袙褘锌芯谢薪械薪芯
+6052=袛芯斜邪胁谢械薪芯 褍褋锌械褕薪芯
+6053=袦芯卸械褌 斜褘褌褜 泻谢邪褋褋懈褎懈褑懈褉芯胁邪薪芯 -褎褍薪泻褑懈褟-褝谢械泻褌褉懈褔械褋泻芯械 褍锌褉邪胁谢械薪懈械 懈 懈褋锌芯谢褜蟹芯胁邪薪懈械
+6054=袣谢邪褋褋懈褎懈泻邪褑懈褟
+6055=袧邪蟹胁邪薪懈械 锌褍谢褜褌邪 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟
+6056=袪械谐懈芯薪
+6057=袩褉芯写芯谢卸懈褌褜 写谢褟  写芯斜邪胁谢械薪懈褟
+6058=协谢械泻褌褉懈褔械褋泻懈械
+6059=袧械 褍写邪谢芯褋褜 写芯斜邪胁懈褌褜
+6060=袩芯胁褌芯褉薪邪褟 锌芯锌褘褌泻邪
+6061=小芯芯褌胁械褌褋褌胁褍械褌 锌褍谢褜褌褍 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟
+6062=袩芯卸邪谢褍泄褋褌邪, 薪邪卸屑懈褌械 泻薪芯锌泻褍 薪懈卸械
+6063=袩芯写褌胁械褉写懈褌械, 芯褌胁械褔邪械褌 谢懈 褍褋褌褉芯泄褋褌胁芯
+6064=小斜芯泄 褍锌褉邪胁谢械薪懈褟
+6065=校锌褉邪胁谢械薪懈械 胁褘锌芯谢薪械薪芯 褍褋锌械褕薪芯
+6066=袙泻谢褞褔械薪懈械 锌懈褌邪薪懈褟
+6067=袪械卸懈屑 芯褏谢邪卸写械薪懈褟
+6068=小泻芯褉芯褋褌褜 胁械褌褉邪
+6069=孝械屑锌械褉邪褌褍褉邪 26鈩�
+6070=校写邪谢懈褌褜 褍褋褌褉芯泄褋褌胁芯
+6071=袠蟹屑械薪懈褌褜 薪邪蟹胁邪薪懈械
+6072=袩芯写褌胁械褉写懈褌褜 褍写邪谢械薪懈械
+6073=袨褌屑械薪邪
+6074=袣芯谢懈褔械褋褌胁芯 锌褍谢褜褌芯胁 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟 薪械 屑芯卸械褌 锌褉械胁褘褕邪褌褜 10 褕褌.
+6075=袨斜谢邪褋褌褜, 胁 泻芯褌芯褉芯泄 薪邪褏芯写懈褌褋褟 锌褍谢褜褌 写懈褋褌邪薪褑懈芯薪薪芯谐芯 褍锌褉邪胁谢械薪懈褟:
+6076=袠薪褎芯褉屑邪褑懈褟 写谢褟 褉械写邪泻褌懈褉芯胁邪薪懈褟
+6077=袨斜薪芯胁谢械薪懈械 胁械褉褋懈懈
+6078=小懈褋褌械屑邪 薪邪褏芯写懈褌褋褟 薪邪 芯斜褋谢褍卸懈胁邪薪懈懈 ~ 袩芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍 锌芯蟹卸械 ~
+6079=袧械 褍写邪谢芯褋褜 锌芯谢褍褔懈褌褜 写邪薪薪褘械
+6080=协褌邪 褎褍薪泻褑懈褟 胁褉械屑械薪薪芯 薪械 锌芯写写械褉卸懈胁邪械褌褋褟
+6081=袙褘斜械褉懈褌械 屑邪褉泻褍 袠袣 褍锌褉邪胁谢械薪懈褟
+6082=袙褋褌褉褟褏懈胁邪薪懈械
+6083=袧懈蟹泻邪褟 褋泻芯褉芯褋褌褜
+6084=袩械褉械泻谢褞褔邪褌械谢褜 褋泻芯褉芯褋褌懈 胁械褌褉邪
+6085=袙褘褋芯泻邪褟 褋泻芯褉芯褋褌褜
+6086=袗胁褌芯
+6087=孝械屑锌械褉邪褌褍褉邪 +
+6088=孝械屑锌械褉邪褌褍褉邪-
+6089=袨褔懈褋褌懈褌械谢褜 胁芯蟹写褍褏邪
+6090=袙芯写芯薪邪谐褉械胁邪褌械谢褜
+6091=袩褉芯写褍泻褌, 泻芯褌芯褉芯谐芯 薪械 褋褍褖械褋褌胁褍械褌
+6092=校褋褌褉芯泄褋褌胁芯 薪械 褋褍褖械褋褌胁褍械褌
+6093=校褋褌褉芯泄褋褌胁芯 薪械 锌芯写泻谢褞褔械薪芯 泻 褋械褌懈
+6094=校褋褌褉芯泄褋褌胁芯 褕谢褞蟹邪 薪械 褋褍褖械褋褌胁褍械褌
+6095=袛芯斜邪胁懈褌褜 斜芯谢械械 30 泻薪芯锌芯泻 
+
+
+
+
+
+6000=袩械褉械懈屑械薪芯胁邪褌褜
+6001=袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 薪邪蟹胁邪薪懈械
+6002=屑邪褉泻邪 Xiaodu
+6003=袪邪褋锌芯蟹薪邪胁邪褌械谢褜 褉械褔懈
+6004="袛谢褟 芯褌屑械薪褘 锌褉懈胁褟蟹泻懈 褌褉械斜褍械褌褋褟 褋褌芯褉芯薪薪械械 锌褉懈谢芯卸械薪懈械 ", "锌械褉械写邪褌褜 胁 褋褌芯褉芯薪薪械械 锌褉懈谢芯卸械薪懈械"
+6005=袨褌胁褟蟹邪褌褜
+6006=校屑薪褘泄 写懈薪邪屑懈泻
+6007=校锌褉邪胁谢械薪懈械 褋芯写械褉卸懈屑褘屑
+6008=袧械 褍写邪谢芯褋褜 蟹邪谐褉褍蟹懈褌褜 写邪薪薪褘械
+6009=袧械 褍写邪谢芯褋褜 薪邪褋褌褉芯懈褌褜 写邪薪薪褘械
+6010="袛懈薪邪屑懈泻 械褖械 薪械 褍褋褌邪薪芯胁谢械薪", "袩芯卸邪谢褍泄褋褌邪, 锌械褉械泄写懈褌械 胁 褋褌芯褉芯薪薪械械 锌褉懈谢芯卸械薪懈械, 褔褌芯斜褘 锌褉懈胁褟蟹邪褌褜 褋屑邪褉褌 写懈薪邪屑懈泻".
+6011=袠蟹屑械薪械薪懈械 锌褉懈屑械褔邪薪懈泄 薪械 褍写邪谢芯褋褜!
+6012=袙褘 褏芯褌懈褌械 芯褌屑械薪懈褌褜 锌褉懈胁褟蟹泻褍?
+6013=袨褌胁褟蟹褘胁邪薪懈械...
+6014=锌械褉械褏芯写 胁 褋褌芯褉芯薪薪械械 锌褉懈谢芯卸械薪懈械
+6015=袛芯斜邪胁懈褌褜 写懈薪邪屑懈泻懈
+
+
+7000=小芯蟹写邪褌褜 邪胁褌芯屑邪褌懈蟹邪褑懈褞
+7001=袪械写邪泻褌懈褉芯胁邪褌褜 邪胁褌芯屑邪褌懈蟹邪褑懈褞
+7002=袝褋谢懈
+7003=袣芯谐写邪 褝褌芯 芯写薪芯胁褉械屑械薪薪芯 褍写芯胁谢械褌胁芯褉褟械褌 褋谢械写褍褞褖懈屑 褍褋谢芯胁懈褟屑
+7004=袣芯谐写邪 褝褌芯 褍写芯胁谢械褌胁芯褉褟械褌 芯写薪芯屑褍 懈蟹 褋谢械写褍褞褖懈褏 褍褋谢芯胁懈泄
+7005=袩褉芯写芯谢卸懈褌褜 胁褘锌芯谢薪械薪懈械
+7006=小谢械写褍褞褖械械 写械泄褋褌胁懈械
+7007=小锌芯褋芯斜 芯斜褉邪斜芯褌泻懈
+7008=袙褘锌芯谢薪懈褌褜 芯写懈薪 褉邪蟹
+7009=袣邪卸写褘泄 写械薪褜
+7010=袣邪卸写褍褞 薪械写械谢褞
+7011=袣邪卸写褘泄 屑械褋褟褑
+7012=小芯褏褉邪薪懈褌褜
+7013=袨褌锌褉邪胁懈褌褜 褋芯芯斜褖械薪懈械
+7014=袨褌锌褉邪胁懈褌褜 褍胁械写芯屑谢械薪懈械
+7015=袙褘斜械褉懈褌械 褍褋谢芯胁懈械
+7016=袦芯屑械薪褌
+7017=袙褘斜械褉懈褌械 褍褋谢芯胁懈械 胁褉械屑械薪懈
+7018=效邪褋
+7019=袛懈邪锌邪蟹芯薪 胁褉械屑械薪懈
+7020=效邪褋
+7021=袦懈薪褍褌邪
+7022=小械泻褍薪写邪
+7023=袨褌屑械薪邪
+7024=校胁械褉械薪褘
+7025=*协褌芯 写芯谢卸薪芯 胁褘锌芯谢薪懈褌褜 蟹邪写邪薪薪褍褞 胁邪屑懈 邪胁褌芯屑邪褌懈蟹邪褑懈褞 芯写懈薪 褉邪蟹 胁 褌械褔械薪懈械 蟹邪写邪薪薪芯谐芯 胁邪屑懈 写懈邪锌邪蟹芯薪邪 胁褉械屑械薪懈.
+7026=袙褉械屑褟 薪邪褔邪谢邪
+7027=袙褉械屑褟 芯泻芯薪褔邪薪懈褟
+7028=肖褍薪泻褑懈褟
+7029=袙褘斜械褉懈褌械 褎褍薪泻褑懈芯薪邪谢褜薪芯械 褍褋谢芯胁懈械
+7030=袙械褋褜 褉械谐懈芯薪
+7031=袙褋械 褎褍薪泻褑懈懈
+7032=袙泻谢.
+7033=袙褘泻谢
+7034=袩械褉械泻谢褞褔邪褌械谢褜
+7035=袟邪胁械褉褕械薪芯
+7036=袛芯斜邪胁懈褌褜 胁褘锌芯谢薪械薪懈械
+7037=袩芯薪械写械谢褜薪懈泻
+7038=袙褌芯褉薪懈泻
+7039=小褉械写邪
+7040=效械褌胁械褉谐
+7041=袩褟褌薪懈褑邪
+7042=小褍斜斜芯褌邪
+7043=袙芯褋泻褉械褋械薪褜械
+7044=小芯芯褌胁械褌褋褌胁褍械褌 褍褋谢芯胁懈褞
+7045=袧邪褋褌褉芯泄泻邪
+7046=袧邪蟹胁邪薪懈械
+7047=袠蟹屑械薪懈褌褜 薪邪蟹胁邪薪懈械
+7048=袧邪蟹胁邪薪懈械 邪胁褌芯屑邪褌懈蟹邪褑懈懈 褍卸械 褋褍褖械褋褌胁褍械褌.
+7049=校写邪谢懈褟褌褜 邪胁褌芯屑邪褌懈蟹邪褑懈褞 懈谢懈 薪械褌?
+7050=袛芯斜邪胁懈褌褜 褋褑械薪褍
+7051=袟邪写械褉卸泻邪
+7052=袧械 褍写邪谢芯褋褜 褋芯褏褉邪薪懈褌褜, 锌芯卸邪谢褍泄褋褌邪, 锌芯锌褉芯斜褍泄褌械 械褖械 褉邪蟹.
+7053=袧械 褍写邪械褌褋褟 褍写邪谢懈褌褜, 锌芯卸邪谢褍泄褋褌邪, 锌芯锌褉芯斜褍泄褌械 械褖械 褉邪蟹.
+7054=袩邪褍蟹邪
+7055=携褉泻芯褋褌褜
+7056=袩褉芯褑械薪褌薪芯械 褋芯芯褌薪芯褕械薪懈械
+7057=袪械卸懈屑
+7058=袨褏谢邪卸写械薪懈械
+7059=袨褌芯锌谢械薪懈械
+7060=袗胁褌芯屑邪褌懈褔械褋泻懈泄
+7061=袨褋褍褕械薪懈械 胁芯蟹写褍褏邪
+7062=孝械屑锌械褉邪褌褍褉邪
+7063=小泻芯褉芯褋褌褜 胁械薪褌懈谢褟褌芯褉邪
+7064=袛械薪褜
+7065=袧芯褔褜
+7066=携 褍褕械谢
+7067=袨褋薪芯胁薪芯泄
+7068=袙褉械屑褟
+7069=袗胁褌芯屑邪褌懈蟹邪褑懈褟 薪械 薪邪褋褌褉芯械薪邪 , 锌芯卸邪谢褍泄褋褌邪, 锌褉芯写芯谢卸邪泄褌械 薪邪褋褌褉芯泄泻褍.
+7070=袟写械褋褜 薪懈褔械谐芯 薪械褌.
+7071=袙褉械屑褟 薪邪褔邪谢邪 薪械 斜褘谢芯 褍褋褌邪薪芯胁谢械薪芯, 锌芯卸邪谢褍泄褋褌邪, 褍褋褌邪薪芯胁懈褌械.
+7072=袙褉械屑褟 芯泻芯薪褔邪薪懈褟 薪械 褍褋褌邪薪芯胁谢械薪芯, 锌芯卸邪谢褍泄褋褌邪, 褍褋褌邪薪芯胁懈褌械.
+7073=袙褉械屑褟 薪邪褔邪谢邪 懈 胁褉械屑褟 芯泻芯薪褔邪薪懈褟 薪械 写芯谢卸薪褘 褋芯胁锌邪写邪褌褜.
+7074=袙褉械屑褟 薪邪褔邪谢邪 薪械 写芯谢卸薪芯 斜褘褌褜 斜芯谢褜褕械 胁褉械屑械薪懈 芯泻芯薪褔邪薪懈褟.
+7075=校褋谢芯胁懈械 薪械 写芯谢卸薪芯 斜褘褌褜 锌褍褋褌褘屑.
+7076=笑械谢褜 薪械 写芯谢卸薪邪 斜褘褌褜 锌褍褋褌芯泄.
+7077=袙褉械屑褟 薪械 斜褘谢芯 褍褋褌邪薪芯胁谢械薪芯, 锌芯卸邪谢褍泄褋褌邪, 褍褋褌邪薪芯胁懈褌械.
+7078=校褋谢芯胁懈械 懈谢懈 褑械谢褜 薪械 写芯谢卸薪褘 斜褘褌褜 锌褍褋褌褘屑懈.
+7079=楔谢褞蟹 薪械写芯褋褌褍锌械薪
+7080=袙芯褋褏芯写/袟邪泻邪褌/袩芯谢写械薪褜
+7081=袙芯褋褏芯写 褋芯谢薪褑邪
+7082=袟邪泻邪褌
+7083=袩芯谢写械薪褜
+7084=袙芯胁褉械屑褟
+7085=小 芯锌械褉械卸械薪懈械屑
+7086=袦懈薪褍褌褘
+7087=袠蟹屑械薪械薪懈械 胁薪械褕薪械泄 褋褉械写褘
+7088=袙褘斜械褉懈褌械 褍褋谢芯胁懈械 懈蟹屑械薪械薪懈褟 胁薪械褕薪械泄 褋褉械写褘
+7089=袠蟹屑械薪械薪懈械 褌械屑锌械褉邪褌褍褉褘 薪邪褉褍卸薪芯谐芯 胁芯蟹写褍褏邪, 胁谢邪卸薪芯褋褌懈, PM2.5
+7090=袠蟹屑械薪械薪懈械 锌芯谐芯写褘 (胁 褔械褉褌械 谐芯褉芯写邪)
+7091=袠蟹屑械薪械薪懈械 胁薪械褕薪械泄 褋褉械写褘
+7092=孝械屑锌械褉邪褌褍褉邪 胁褘褕械
+7093=孝械屑锌械褉邪褌褍褉邪 薪懈卸械
+7094=袙谢邪卸薪芯褋褌褜 胁褘褕械
+7095=袙谢邪卸薪芯褋褌褜 薪懈卸械
+7096=PM2.5 胁褘褕械, 褔械屑
+7097=PM2.5 薪懈卸械
+7098=小芯谢薪械褔薪褘泄 写械薪褜
+7099=袨斜谢邪褔薪芯
+7100=袧械锌芯谐芯写邪
+7101=*袩芯卸邪谢褍泄褋褌邪, 褍褋褌邪薪芯胁懈褌械 蟹薪邪褔械薪懈械 胁 褝褌芯屑 写懈邪锌邪蟹芯薪械 (1 ~ 100).
+7102=袟邪写邪薪薪芯械 蟹薪邪褔械薪懈械 芯褌褋褍褌褋褌胁褍械褌.
+7103=袨褌谢懈褔薪芯: 0 ~ 35 屑泻谐/屑3
+7104=啸芯褉芯褕芯: 36 ~ 75 屑泻谐/屑3
+7105=袥械谐泻芯械 蟹邪谐褉褟蟹薪械薪懈械: 76 ~ 115 屑泻谐/屑3
+7106=校屑械褉械薪薪芯械 蟹邪谐褉褟蟹薪械薪懈械: 116 ~ 150 屑泻谐/屑3
+7107=小懈谢褜薪芯械 蟹邪谐褉褟蟹薪械薪懈械: > 150 屑泻谐/屑3
+7108=校褌械褔泻邪/袨褌褋褍褌褋褌胁懈械 褍褌械褔泻懈
+7109=校褌械褔泻邪
+7110=袧械褌 褍褌械褔泻懈
+7111=校褌械褔泻邪 胁芯写褘 / 薪械褌 褍褌械褔泻懈 胁芯写褘
+7112=校褌械褔泻邪 胁芯写褘
+7113=袧械褌 褍褌械褔泻懈 胁芯写褘
+7114=袣褌芯-褌芯/袧懈泻褌芯
+7115=袣褌芯-褌芯
+7116=袧懈泻褌芯
+7117=袨褌泻褉褘褌褜/袟邪泻褉褘褌褜
+7118=袙泻谢.
+7119=袟邪泻褉褘褌褜
+7120=肖褍薪泻褑懈褟 蟹邪褖懈褌褘 芯褌 褋薪褟褌懈褟
+7121=袨薪谢邪泄薪
+7122=袧械褌 胁 褋械褌懈
+7123=袣邪褔械褋褌胁芯 胁芯蟹写褍褏邪
+7124=袨褌谢懈褔薪芯
+7125=啸芯褉芯褕芯
+7126=小谢邪斜芯
+7127=袨褌锌褉邪胁懈褌褜 褍胁械写芯屑谢械薪懈械
+7128=小芯写械褉卸邪薪懈械 褍胁械写芯屑谢械薪懈褟
+7129=(胁 锌褉械写械谢邪褏 100 褋懈屑胁芯谢芯胁)
+7130=袙褘斜芯褉 褍褔械褌薪芯泄 蟹邪锌懈褋懈
+7131=褍胁械写芯屑谢械薪懈械 锌褉懈谢芯卸械薪懈褟
+7132=袗胁褌芯屑邪褌懈蟹邪褑懈褟
+7133=袙褘锌芯谢薪械薪芯
+7134=小芯褋褌芯褟薪懈械 褑械谢懈
+7135=袩邪写械薪懈械
+7136=孝械屑锌械褉邪褌褍褉邪
+7137=袙谢邪卸薪芯褋褌褜
+7138=PM2.5
+7139=CO2
+7140=TVOC
+7141=袩褉械胁褘褕械薪芯械
+7142=袨锌邪褋薪芯械
+7143=袙褘褋芯泻芯械
+7144=袠写械邪谢褜薪芯械
+7145=袘械蟹芯锌邪褋薪芯褋褌褜
+7146=袛芯斜邪胁懈褌褜 褎褍薪泻褑懈褞 斜械蟹芯锌邪褋薪芯褋褌懈
+7147=袩芯褋褌邪胁懈褌褜
+7148=小薪褟褌褜
+7149=袙褉褍褔薪褍褞
+7150=小屑邪褉褌
+7151=啸芯褉芯褕懈泄
+7152=袩芯泻懈薪褍褌褜 懈谢懈 锌褉懈斜褘褌褜
+7153=袩芯泻懈薪褍褌褜
+7154=袩褉懈斜褘褌褜
+
+
+
+
+9000=袩芯卸邪谢褍泄褋褌邪, 胁芯泄写懈褌械 胁 褋懈褋褌械屑褍 褋 薪芯胁褘屑 薪芯屑械褉芯屑 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪.
+9001=袩芯卸邪谢褍泄褋褌邪, 胁芯泄写懈褌械 胁 褋懈褋褌械屑褍 褋 薪芯胁褘屑 邪写褉械褋芯屑 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘.
+9002=袧芯胁褘泄 薪芯屑械褉 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪 懈蟹屑械薪械薪 
+9003=袧芯胁褘泄 薪芯屑械褉 屑芯斜懈谢褜薪芯谐芯 褌械谢械褎芯薪邪 锌褉懈胁褟蟹邪薪
+9004=袧芯胁褘泄 邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘 懈蟹屑械薪械薪 
+9005=袧芯胁褘泄 邪写褉械褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌褘 锌褉懈胁褟蟹邪薪
+9006=袣芯写 锌芯写褌胁械褉卸写械薪懈褟 屑芯卸械褌 斜褘褌褜 芯褌锌褉邪胁谢械薪 锌芯蟹卸械, 锌芯卸邪谢褍泄褋褌邪, 锌芯写芯卸写懈褌械.
+9007=袩芯卸邪谢褍泄褋褌邪, 锌芯写芯卸写懈褌械.
+9008=袧邪蟹邪写
+9009=袩芯谢褜蟹芯胁邪褌械谢褜, 泻芯褌芯褉褘泄 薪械 褏芯褔械褌, 褔褌芯斜褘 械谐芯 薪邪蟹褘胁邪谢懈
+9010=袧芯胁褘泄 锌邪褉芯谢褜
+9011=袙胁械写懈褌械 薪芯胁褘泄 锌邪褉芯谢褜 褋薪芯胁邪
+9012=小芯谐谢邪褋懈褌褜褋褟
+9013=小芯谐谢邪褕械薪懈械 芯斜 芯斜褋谢褍卸懈胁邪薪懈懈
+9014=袩褉邪胁懈谢邪 蟹邪褖懈褌褘 懈薪褎芯褉屑邪褑懈懈 锌芯谢褜蟹芯胁邪褌械谢褟
+9015=懈
+9016=袩芯卸邪谢褍泄褋褌邪, 锌褉芯褔褌懈褌械 懈 褋芯谐谢邪褋懈褌械褋褜 褋 袩芯谢褜蟹芯胁邪褌械谢褜褋泻懈屑 小芯谐谢邪褕械薪懈械屑 芯斜 芯斜褋谢褍卸懈胁邪薪懈懈 懈 袩褉邪胁懈谢邪屑懈 蟹邪褖懈褌褘 锌芯谢褜蟹芯胁邪褌械谢褜褋泻芯泄 懈薪褎芯褉屑邪褑懈懈.
+9017=袙褘 褍胁械褉械薪褘, 褔褌芯 褏芯褌懈褌械 胁褘泄褌懈 懈蟹 褋懈褋褌械屑褘?
+9018=袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 褋褌褉邪薪褍/褉械谐懈芯薪.
+9019=袨斜薪芯胁懈褌褜 褋械泄褔邪褋
+9020=袧械 褋械泄褔邪褋
+9021=小褌褉邪薪邪/褉械谐懈芯薪
+9022=袠薪褎芯褉屑邪褑懈褟 芯 褋械褉胁械褉械
+9023=孝械泻褍褖懈泄 褋械褉胁械褉:
+9024=*小械褉胁械褉 褋褋褘谢邪械褌褋褟 薪邪 斜邪蟹褍 写邪薪薪褘褏 写谢褟 芯斜谢邪泻邪, 斜械蟹 薪械芯斜褏芯写懈屑芯褋褌懈 胁褘锌芯谢薪褟褌褜 锌械褉械写邪褔褍 写邪薪薪褘褏 薪械 褉械泻芯屑械薪写褍械褌褋褟.
+9025=袝褋谢懈 褌褉械斜褍械褌褋褟 锌械褉械写邪褔邪 写邪薪薪褘褏, 锌芯卸邪谢褍泄褋褌邪, 薪邪斜械褉懈褌械
+9026=袙胁械写械薪懈械 胁 褎褍薪泻褑懈褞
+9027=袞邪谢芯斜褘
+9028=袨斜薪芯胁谢械薪懈械 胁械褉褋懈懈
+9029=(锌芯卸邪谢褍泄褋褌邪, 褍泻邪卸懈褌械 "卸邪谢芯斜褘" 胁 薪邪蟹胁邪薪懈懈, 褌芯谐写邪 屑褘 芯斜褉邪斜芯褌邪械屑 胁 锌褉懈芯褉懈褌械褌薪芯屑 锌芯褉褟写泻械.)
+9030=袣芯锌懈褉芯胁邪薪懈械 胁褘锌芯谢薪械薪芯
+9031=袟写械褋褜 薪懈褔械谐芯 薪械褌.
+9032=袩芯谢褍褔懈褌褜 薪芯胁褍褞 胁械褉褋懈褞
+9033=袩芯褋谢械写薪褟褟 胁械褉褋懈褞
+9034=效褌芯 褟 屑芯谐褍 写谢褟 胁邪褋 褋写械谢邪褌褜?
+9035=袩褉芯斜谢械屑邪 褋 褎褍薪泻褑懈械泄
+9036=袩褉芯斜谢械屑邪 褋芯 褋褑械薪芯泄
+9037=袩芯写写械褉卸泻邪 锌褉懈谢芯卸械薪懈褟
+9038=(效邪褋褌芯 蟹邪写邪胁邪械屑褘械 胁芯锌褉芯褋褘)
+9039=小芯胁屑械褋褌薪芯械 懈褋锌芯谢褜蟹芯胁邪薪懈械 懈 褎褍薪泻褑懈褟
+9040=袨锌芯胁械褖械薪懈褟
+9041=袠薪褎芯褉屑邪褑懈褟 芯 褋懈褋褌械屑械
+9042=袠薪褎芯褉屑邪褑懈芯薪薪褘泄 褑械薪褌褉
+9043=袩芯卸邪谢褍泄褋褌邪, 芯斜褉邪褌懈褌械 胁薪懈屑邪薪懈械, 褔褌芯 薪芯屑械褉 胁邪褕械泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈 蟹邪褉械谐懈褋褌褉懈褉芯胁邪薪 胁 写褉褍谐芯屑 屑械褋褌械. 袝褋谢懈 褝褌芯 褋写械谢邪薪芯 薪械 胁邪屑懈, 锌芯卸邪谢褍泄褋褌邪, 薪械屑械写谢械薪薪芯 懈蟹屑械薪懈褌械 锌邪褉芯谢褜.
+9044=校褋锌械褕薪芯 蟹邪谐褉褍卸械薪芯
+9045=袧械 褍写邪械褌褋褟 蟹邪谐褉褍蟹懈褌褜
+9046=校褋锌械褕薪芯 懈蟹屑械薪械薪
+9047=袩邪褉芯谢褜, 泻芯褌芯褉褘泄 胁褘 懈蟹屑械薪懈谢懈, 胁褋褌褍锌懈谢 胁 褋懈谢褍, 锌芯卸邪谢褍泄褋褌邪, 胁芯泄写懈褌械 胁 褋懈褋褌械屑褍 褋薪芯胁邪.
+9048=袙芯泄写懈褌械 胁 褋懈褋褌械屑褍 褋 锌邪褉芯谢械屑 薪芯屑械褉邪 褍褔械褌薪芯泄 蟹邪锌懈褋懈 
+9049=袧械锌褉邪胁懈谢褜薪褘泄 锌邪褉芯谢褜 胁胁械写械薪 屑薪芯谐芯 褉邪蟹, 薪芯屑械褉 褍褔械褌薪芯泄 蟹邪锌懈褋懈 蟹邪斜谢芯泻懈褉芯胁邪薪!
+9050=袩褉芯胁械褉泻邪 褉邪褋锌芯蟹薪邪薪懈褟 谢懈褑邪
+9051=袧械 褍写邪械褌褋褟 褋芯褏褉邪薪懈褌褜 懈写械薪褌懈褎懈泻邪褌芯褉 谢懈褑邪 锌芯谢褜蟹芯胁邪褌械谢褟
+9052=袛芯褋褌褍锌薪芯 push-褍胁械写芯屑谢械薪懈械 芯 褉械谐懈褋褌褉邪褑懈懈.
+9053=Push-褍胁械写芯屑谢械薪懈械 芯 褉械谐懈褋褌褉邪褑懈懈 褟胁谢褟械褌褋褟 薪械薪芯褉屑邪谢褜薪褘屑.
+9054=袩褉芯胁械褉泻邪 褑懈褎褉芯胁芯谐芯 锌邪褉芯谢褟
+9055=袩褉芯胁械褉泻邪 卸械褋褌芯胁
+9056=袚芯写
+9057=袧械褌 褉械谐懈芯薪邪谢褜薪芯泄 褎褍薪泻褑懈懈
+9058=小芯褏褉邪薪懈褌褜 懈谢懈 薪械褌?
+9059=小械泄褔邪褋 薪械褌 芯斜褖械谐芯 写芯褋褌褍锌邪 
+9060=袪邪蟹褉械褕械薪懈械 薪邪 懈褋锌芯谢褜蟹芯胁邪薪懈械
+9061=袧邪泄写懈褌械 褋胁芯泄 锌邪褉芯谢褜, 薪邪卸邪胁 薪邪 "袟邪斜褘谢懈 锌邪褉芯谢褜", 懈谢懈 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍 褔械褉械蟹 {0} 屑懈薪褍褌褍.
+9062=袩褉芯胁械褉褜褌械
+9063=校 胁邪褋 \械褖械 械褋褌褜 {0} 锌芯锌褘褌芯泻
+9064=小屑邪褉褌 写懈薪邪屑懈泻
+9065=校锌褉邪胁谢械薪懈械 写邪薪薪褘屑懈
+9066=袩褉懈屑械褔邪薪懈褟
+9067=袩褉懈屑械褔邪薪懈褟 薪械 屑芯谐褍褌 斜褘褌褜 锌褍褋褌褘屑懈.
+9068=袙褘 褏芯褌懈褌械 芯褌屑械薪懈褌褜 锌褉懈胁褟蟹泻褍?
+9069=校胁械写芯屑谢械薪懈械 芯 褋芯斜褋褌胁械薪薪芯褋褌懈
+
+10000=袧械胁械褉薪褘泄 锌邪褉芯谢褜, 锌芯卸邪谢褍泄褋褌邪, 胁芯泄写懈褌械 胁 褋懈褋褌械屑褍 械褖械 褉邪蟹.
+10001=袧械 褍写邪械褌褋褟 蟹邪锌褉芯褋懈褌褜 褋械褉胁械褉, 锌芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍 锌芯蟹卸械.
+10002=袨斜褋谢褍卸懈胁邪薪懈械 褋懈褋褌械屑褘, 锌芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍 锌芯蟹卸械.
+10003=袧械 褍写邪械褌褋褟 胁芯泄褌懈 胁 褋懈褋褌械屑褍, 锌芯卸邪谢褍泄褋褌邪, 褋薪邪褔邪谢邪 写芯斜邪胁褜褌械 褉械蟹懈写械薪褑懈褞.
+10004=袧芯屑械褉 褍褔械褌薪芯泄 蟹邪锌懈褋懈 褋褍褖械褋褌胁褍械褌.
+10005=袙褘 芯褌锌褉邪胁谢褟械褌械 锌褉芯胁械褉芯褔薪褘泄 泻芯写 褋谢懈褕泻芯屑 褔邪褋褌芯, 锌芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍 锌芯蟹卸械.
+10006=袨褕懈斜泻邪 锌芯写锌懈褋懈
+10007=小懈褋褌械屑邪 蟹邪薪褟褌邪, 锌芯卸邪谢褍泄褋褌邪, 锌芯胁褌芯褉懈褌械 锌芯锌褘褌泻褍 锌芯蟹卸械!
+10008=袧械胁械褉薪褘泄 锌邪褉芯谢褜 写谢褟 胁褏芯写邪 胁 褋懈褋褌械屑褍
+10009=袩芯谢褜蟹芯胁邪褌械谢褜 斜褘谢 芯褌泻谢褞褔械薪.
+10010=袨褕懈斜泻邪 懈褋褏芯写薪芯谐芯 锌邪褉芯谢褟
+10011=袛芯锌芯谢薪懈褌械谢褜薪邪褟 褍褔械褌薪邪褟 蟹邪锌懈褋褜 褋褍褖械褋褌胁褍械褌.
+10012=袛芯锌芯谢薪懈褌械谢褜薪邪褟 褍褔械褌薪邪褟 蟹邪锌懈褋褜 薪械 褋褍褖械褋褌胁褍械褌.
+10013=袧械 褉邪蟹褉械褕邪械褌褋褟 写芯斜邪胁谢褟褌褜 褋械斜褟 胁 泻邪褔械褋褌胁械 褍褔邪褋褌薪懈泻邪.
+10014=孝械泻褍褖邪褟 褉械蟹懈写械薪褑懈褟 薪械 芯褌薪芯褋懈褌褋褟 泻 褝褌芯泄 褍褔械褌薪芯泄 蟹邪锌懈褋懈.
+10015=袧邪蟹胁邪薪懈械 褉械蟹懈写械薪褑懈懈 褋褍褖械褋褌胁褍械褌.
+10016=袪械蟹懈写械薪褑懈褟 薪械 褋褍褖械褋褌胁褍械褌
+10017=袨褕懈斜泻邪 蟹邪锌褉芯褋邪, 薪械薪芯褉屑邪谢褜薪褘泄 锌邪褉邪屑械褌褉!
+10018=袧芯屑械褉, 泻芯褌芯褉褘泄 胁褘 锌褉懈胁褟蟹邪谢懈, 褟胁谢褟械褌褋褟 写褍斜谢懈泻邪褌芯屑.
+10019=袩芯卸邪谢褍泄褋褌邪, 褋薪邪褔邪谢邪 锌褉懈胁褟卸懈褌械 褕谢褞蟹.
+10020=楔谢褞蟹 薪械 褋褍褖械褋褌胁褍械褌.
+10021=楔谢褞蟹 薪械 写芯褋褌褍锌械薪.
+10022=校褋褌褉芯泄褋褌胁芯 薪邪褏芯写懈褌褋褟 胁 芯褎褎谢邪泄薪
+10023=小斜芯泄 褍锌褉邪胁谢械薪懈褟
+10024=小褑械薪邪 褋褍褖械褋褌胁褍械褌.
+10025=袗胁褌芯屑邪褌懈蟹邪褑懈褟 褋褍褖械褋褌胁褍械褌.
+10026=Spk 薪械 锌芯写写械褉卸懈胁邪械褌 褝褌褍 褎褍薪泻褑懈褞.
+10027=Spk 薪械 锌芯写写械褉卸懈胁邪械褌 褝褌芯 褎褍薪泻褑懈芯薪邪谢褜薪芯械 蟹薪邪褔械薪懈械.
+10028=校 胁邪褋 薪械褌 褉邪蟹褉械褕械薪懈褟.
+10029=笑械谢械胁芯械 褍褋褌褉芯泄褋褌胁芯 锌褉芯写褍斜谢懈褉芯胁邪薪芯
+10030=校 胁邪褋 薪械褌 褉邪蟹褉械褕械薪懈褟 薪邪 褍写邪谢械薪薪芯械 褍锌褉邪胁谢械薪懈械.
+10031=校褋褌褉芯泄褋褌胁芯 薪械 写芯谢卸薪芯 斜褘褌褜 锌褍褋褌褘屑.
+10032=校 锌芯谢褜蟹芯胁邪褌械谢褟 薪械褌 褉邪蟹褉械褕械薪懈褟.
+10033=校褋褌褉芯泄褋褌胁芯 薪械 褋褍褖械褋褌胁褍械褌.
diff --git a/HDL-ON_iOS/Resources/Phone/Collection/FunctionOfflineBg.png b/HDL-ON_iOS/Resources/Phone/Collection/FunctionOfflineBg.png
new file mode 100644
index 0000000..bc09c9b
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Collection/FunctionOfflineBg.png
Binary files differ
diff --git a/HDL-ON_iOS/ViewController.cs b/HDL-ON_iOS/ViewController.cs
index 478b9b5..dfcbc4c 100644
--- a/HDL-ON_iOS/ViewController.cs
+++ b/HDL-ON_iOS/ViewController.cs
@@ -54,8 +54,9 @@
                 {
                     if (OnAppConfig.Instance.IsLogin)
                     {
-                        var um = new UMSdk.HDLUMSDK();
-                        um.InitUMSDKWithAppKey("61d56642e0f9bb492bbc3e72", "IOS");
+                        //var um = new UMSdk.HDLUMSDK();
+                        UMSdk.HDLUMSDK.InitUMSDKWithAppKey("61d56642e0f9bb492bbc3e72", "IOS");
+                        break;
                     }
                     System.Threading.Thread.Sleep(1000);
                 }
diff --git a/HDL-ON_iOS/mono_crash.824c6d50c.0.json b/HDL-ON_iOS/mono_crash.824c6d50c.0.json
new file mode 100644
index 0000000..c4e1f91
--- /dev/null
+++ b/HDL-ON_iOS/mono_crash.824c6d50c.0.json
@@ -0,0 +1,406 @@
+{
+  "protocol_version" : "0.0.6",
+  "configuration" : {
+    "version" : "(6.12.0.174) (2020-02/adf1bc4335d)",
+    "tlc" : "normal",
+    "sigsgev" : "altstack",
+    "notifications" : "kqueue",
+    "architecture" : "amd64",
+    "disabled_features" : "none",
+    "smallconfig" : "disabled",
+    "bigarrays" : "disabled",
+    "softdebug" : "enabled",
+    "interpreter" : "enabled",
+    "llvm_support" : "0",
+    "suspend" : "hybrid"
+  },
+  "memory" : {
+    "Resident Size" : "181948416",
+    "Virtual Size" : "36274827264",
+    "minor_gc_time" : "5825386",
+    "major_gc_time" : "297980436",
+    "minor_gc_count" : "11",
+    "major_gc_count" : "1669",
+    "major_gc_time_concurrent" : "0"
+ },
+  "threads" : [
+ {
+    "is_managed" : false,
+    "offset_free_hash" : "0x0",
+    "offset_rich_hash" : "0x0",
+    "crashed" : false,
+    "native_thread_id" : "0x11765a600",
+    "thread_info_addr" : "0x7fd13b015000",
+    "thread_name" : "tid_103",
+    "ctx" : {
+      "IP" : "0x7ff805bd19ce",
+      "SP" : "0x7ff7b6f54158",
+      "BP" : "0x7ff7b6f541d0"
+  },
+    "unmanaged_frames" : [
+  {
+      "is_managed" : "false",
+      "native_address" : "0x10905c776",
+      "native_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "false",
+      "native_address" : "0x1091f7fe5",
+      "native_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "false",
+      "native_address" : "0x1091f7d17",
+      "native_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "false",
+      "native_address" : "0x1090c8860",
+      "native_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "false",
+      "native_address" : "0x7ff805c23dfd",
+      "native_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "false",
+      "native_address" : "0x92",
+      "native_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "false",
+      "native_address" : "0x109238c47",
+      "native_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "false",
+      "native_address" : "0x108fbf0da",
+      "native_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "false",
+      "native_address" : "0x109021d36",
+      "native_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "false",
+      "native_address" : "0x108fade18",
+      "native_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "false",
+      "native_address" : "0x1175df51e",
+      "native_offset" : "0x00000"
+   }
+
+  ]
+ },
+ {
+    "is_managed" : true,
+    "offset_free_hash" : "0x824c6d50c",
+    "offset_rich_hash" : "0x824c6d599",
+    "crashed" : true,
+    "native_thread_id" : "0x700003e72000",
+    "thread_info_addr" : "0x7fd13b030800",
+    "thread_name" : "Finalizer",
+    "ctx" : {
+      "IP" : "0x7ff805c21189",
+      "SP" : "0x700003e71a30",
+      "BP" : "0x700003e71a30"
+  },
+    "managed_frames" : [
+  {
+      "is_managed" : "false",
+      "native_address" : "unregistered"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "81C889A3-FDAF-408A-ACAC-8A870695982B",
+      "token" : "0x00000",
+      "native_offset" : "0x0",
+      "filename" : "System.dll",
+      "sizeofimage" : "0x290000",
+      "timestamp" : "0xff396c70",
+      "il_offset" : "0x0000c"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "81C889A3-FDAF-408A-ACAC-8A870695982B",
+      "token" : "0x600429c",
+      "native_offset" : "0x0",
+      "filename" : "System.dll",
+      "sizeofimage" : "0x290000",
+      "timestamp" : "0xff396c70",
+      "il_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "0E2013AB-6B94-4E00-8349-D8DCD759AB4D",
+      "token" : "0x60040a5",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xf9ace8b0",
+      "il_offset" : "0x00003"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "0E2013AB-6B94-4E00-8349-D8DCD759AB4D",
+      "token" : "0x60040a4",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xf9ace8b0",
+      "il_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "81C889A3-FDAF-408A-ACAC-8A870695982B",
+      "token" : "0x6002f52",
+      "native_offset" : "0x0",
+      "filename" : "System.dll",
+      "sizeofimage" : "0x290000",
+      "timestamp" : "0xff396c70",
+      "il_offset" : "0x00041"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "81C889A3-FDAF-408A-ACAC-8A870695982B",
+      "token" : "0x6002f38",
+      "native_offset" : "0x0",
+      "filename" : "System.dll",
+      "sizeofimage" : "0x290000",
+      "timestamp" : "0xff396c70",
+      "il_offset" : "0x00013"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "81C889A3-FDAF-408A-ACAC-8A870695982B",
+      "token" : "0x6002f37",
+      "native_offset" : "0x0",
+      "filename" : "System.dll",
+      "sizeofimage" : "0x290000",
+      "timestamp" : "0xff396c70",
+      "il_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "0E2013AB-6B94-4E00-8349-D8DCD759AB4D",
+      "token" : "0x00000",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xf9ace8b0",
+      "il_offset" : "0x0002a"
+   }
+
+  ],
+  "unmanaged_frames" : [
+ {
+    "is_managed" : "false",
+    "native_address" : "0x10905c776",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1091f7fe5",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1091f865a",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1090c9927",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x10906140e",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1090c37d6",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7ff805c21189",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7ff81090d60b",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7ff81090be79",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7ff81090ceb1",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7ff81090b25c",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x110dbcdad",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "81C889A3-FDAF-408A-ACAC-8A870695982B",
+    "token" : "0x00000",
+    "native_offset" : "0x0",
+    "filename" : "System.dll",
+    "sizeofimage" : "0x290000",
+    "timestamp" : "0xff396c70",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "81C889A3-FDAF-408A-ACAC-8A870695982B",
+    "token" : "0x600429c",
+    "native_offset" : "0x0",
+    "filename" : "System.dll",
+    "sizeofimage" : "0x290000",
+    "timestamp" : "0xff396c70",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "(null)",
+    "token" : "0x00000",
+    "native_offset" : "0x0",
+    "filename" : "(null)",
+    "sizeofimage" : "0x0",
+    "timestamp" : "0x0",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "(null)",
+    "token" : "0x00000",
+    "native_offset" : "0x0",
+    "filename" : "(null)",
+    "sizeofimage" : "0x0",
+    "timestamp" : "0x0",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "81C889A3-FDAF-408A-ACAC-8A870695982B",
+    "token" : "0x6002f38",
+    "native_offset" : "0x0",
+    "filename" : "System.dll",
+    "sizeofimage" : "0x290000",
+    "timestamp" : "0xff396c70",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "81C889A3-FDAF-408A-ACAC-8A870695982B",
+    "token" : "0x6002f37",
+    "native_offset" : "0x0",
+    "filename" : "System.dll",
+    "sizeofimage" : "0x290000",
+    "timestamp" : "0xff396c70",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "0E2013AB-6B94-4E00-8349-D8DCD759AB4D",
+    "token" : "0x00000",
+    "native_offset" : "0x0",
+    "filename" : "mscorlib.dll",
+    "sizeofimage" : "0x472000",
+    "timestamp" : "0xf9ace8b0",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x109238879",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1092579bc",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x10923a75c",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1091f8c2d",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7ff805c0e4e1",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7ff805c09f6b",
+    "native_offset" : "0x00000"
+  }
+
+ ]
+}
+]
+}
\ No newline at end of file
diff --git a/HDL_APP_Project.sln b/HDL_APP_Project.sln
index aa7e006..fab839a 100644
--- a/HDL_APP_Project.sln
+++ b/HDL_APP_Project.sln
@@ -16,6 +16,8 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SiriIntents", "SiriIntents\SiriIntents.csproj", "{760980F5-1CD3-4F4F-9134-34D87BECD790}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UMSdk", "UMSdk\UMSdk.csproj", "{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}"
+EndProject
 Global
 	GlobalSection(SharedMSBuildProjectFiles) = preSolution
 		HDL_ON\HDL_ON.projitems*{09712674-2a38-407b-b1e2-560b2c352f9a}*SharedItemsImports = 4
@@ -105,6 +107,18 @@
 		{760980F5-1CD3-4F4F-9134-34D87BECD790}.Release|iPhone.Build.0 = Release|iPhone
 		{760980F5-1CD3-4F4F-9134-34D87BECD790}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
 		{760980F5-1CD3-4F4F-9134-34D87BECD790}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+		{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+		{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}.Debug|iPhone.Build.0 = Debug|Any CPU
+		{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+		{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}.Release|iPhone.ActiveCfg = Release|Any CPU
+		{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}.Release|iPhone.Build.0 = Release|Any CPU
+		{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/HDL_ON/Common/ApiUtlis.cs b/HDL_ON/Common/ApiUtlis.cs
index 5ef087c..ae6c314 100644
--- a/HDL_ON/Common/ApiUtlis.cs
+++ b/HDL_ON/Common/ApiUtlis.cs
@@ -153,16 +153,34 @@
                         MainPage.Log($"璇诲彇鎴块棿鏁版嵁澶辫触:Code:{roomResult.Code}; msg:{roomResult.message}");
                     }
                     //===================璁惧=======================
-                    var deviceResult = Ins.HttpRequest.GetDeviceList();
+                    var deviceResult = Ins.HttpRequest.GetDeviceList("30","1");
                     if (deviceResult.Code == StateCode.SUCCESS)
                     {
-                        endTime = DateTime.Now.AddSeconds(100);
+                        endTime = DateTime.Now.AddSeconds(5);
+
                         MainPage.Log($"璇诲彇璁惧淇℃伅鎴愬姛");
                         var deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString());
                         if (deviceList == null)
                         {
                             deviceList = new DevcieApiPack();
                         }
+                        try
+                        {
+                            while (deviceList.totalPage != deviceList.pageNo)
+                            {
+                                var deviceResult2 = Ins.HttpRequest.GetDeviceList("30", Convert.ToInt32(deviceList.pageNo) + 1 + "");
+                                if (deviceResult2.Code == StateCode.SUCCESS)
+                                {
+                                    var deviceList2 = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString());
+                                    deviceList.pageNo = deviceList2.pageNo;
+                                    deviceList.list.AddRange(deviceList2.list);
+                                }
+                            }
+                        }catch(Exception ex)
+                        {
+
+                        }
+
                         string delFile = "";
                         if (FunctionList.List.GetDeviceFunctionList().Count > 0)
                         {
@@ -170,11 +188,11 @@
                             for (int i = 0; i < FunctionList.List.GetDeviceFunctionList().Count;)
                             {
                                 var localFunction = FunctionList.List.GetDeviceFunctionList()[i];
-                                if (SPK.MusicSpkList().Contains(localFunction.spk))
-                                {
-                                    i++;
-                                    continue;
-                                }
+                                //if (SPK.MusicSpkList().Contains(localFunction.spk))
+                                //{
+                                //    i++;
+                                //    continue;
+                                //}
                                 var newFunction = deviceList.list.Find((obj) => obj.deviceId == localFunction.deviceId);
 
                                 if (delFile == localFunction.savePath)
@@ -266,7 +284,8 @@
 
                     //======================鑾峰彇鍙瀵硅璁惧鍒楄〃====================
                     bool isInterphoneType_HDL = false;//鏄惁涓篐DLLinphone鍙瀵硅
-                    var videoInfo= VideoSend.GetVideoInfoList();
+                    bool isInterphoneType_FREEVIEW = false;//鏄惁涓哄叏瑙嗛�氬彲瑙嗗璁�
+                    var videoInfo = VideoSend.GetVideoInfoList();
                     if (videoInfo.Code == StateCode.SUCCESS)
                     {
                         string videoList = videoInfo.Data.ToString();
@@ -281,6 +300,17 @@
                                 isInterphoneType_HDL = true;
                                 DB_ResidenceData.Instance.SupportFacePass = true;
                                 DB_ResidenceData.Instance.SaveResidenceData();
+
+                                Entity.DB_ResidenceData.Instance.SupportFVDevice = true;
+
+                            }
+                            else if (video.interphoneType == InterphoneType.FREEVIEW.ToString())
+                            {//涓哄叏瑙嗛�氬彲瑙嗗璁�
+                                Entity.DB_ResidenceData.Instance.SupportVisitorManage = true;
+                                Entity.DB_ResidenceData.Instance.SupportFVDevice = true;
+
+                                isInterphoneType_FREEVIEW = true;
+
                             }
                         }
                     }
@@ -293,14 +323,24 @@
                         {
                             //HDLLinphone鍙瀵硅,鑾峰彇Sip璐﹀彿骞跺垵濮嬪寲SDK
                             HDLLinphone.Current.GetHDLSipInfoAndInitSDK(DB_ResidenceData.Instance.CurrentRegion.id);
+
                         }
                         else
                         {
                             Utlis.WriteLine("褰撳墠浣忓畢涓嶆敮鎸丠DL鍙瀵硅,閫�鍑虹櫥褰曟墍鏈夎处鍙�");
                             //褰撳墠浣忓畢涓嶆敮鎸丠DL鍙瀵硅
                             HDLLinphone.Current.LogoutAllAccount();
+
                         }
                     }
+
+                    //======================鐧诲綍鍏ㄨ閫�====================
+                    if (isInterphoneType_FREEVIEW)
+                    {
+                        //鐧诲綍鍏ㄨ閫�
+                        Shared.IOS.HDLFVSDK.Video.Init("", DB_ResidenceData.Instance.CurrentRegion.id);
+                    }
+
 
                     //======================瀹夐槻====================
                     GetSecurityList();
@@ -369,8 +409,6 @@
                     if (DB_ResidenceData.Instance.CurrentRegion != null)
                     {
                         #region 璇诲彇鏈湴鏁版嵁
-                        //璇诲彇闊充箰淇℃伅
-                        UI.Music.A31MusicModel.ReadMusicStates();
                         //鎼滅储缃戝叧
                         DriverLayer.Control.Ins.SearchLoaclGateway();
                         //閲嶆柊杩炴帴mqtt
diff --git a/HDL_ON/Common/HDLCommon.cs b/HDL_ON/Common/HDLCommon.cs
index 6a2a061..88ca761 100644
--- a/HDL_ON/Common/HDLCommon.cs
+++ b/HDL_ON/Common/HDLCommon.cs
@@ -330,12 +330,15 @@
                         }
                         else if (interphoneTypeEnum == InterphoneType.HDL.ToString())
                         {
+
                             //HDL Linphone 鐙勮�愬厠
                             eSVideoInfo.HomeId = jpushMessageInfo.HomeId;
                             eSVideoInfo.callId = json["callId"].ToString();
                             eSVideoInfo.Lc_DeviceId = json["deviceId"].ToString();
                             eSVideoInfo.DeviceName = json["deviceName"].ToString();
                             eSVideoInfo.deviceSipAccount = json["deviceSipAccount"].ToString();
+                            eSVideoInfo.spk = json["spk"].ToString();
+
                             //ShowAlert("鐙勮�愬厠闂ㄥ彛鏈哄懠鍙�");
                             //鎵撳紑鍛煎彨椤甸潰
                             HDLLinphone.Current.ShowESVideoIntercom(eSVideoInfo);
@@ -427,8 +430,11 @@
                     DB_ResidenceData.Instance.EixtAccount();
                     //4.娉ㄩ攢HDLSIP璐﹀彿鐧诲綍 2021-08-20
                     HDLLinphone.Current.LogoutAllAccount();
+
 #if __IOS__
-                    //5.娓呯┖Siri鍏变韩鏁版嵁淇℃伅
+                    //5.鍏ㄨ閫氱櫥鍑�
+                    Shared.IOS.HDLFVSDK.Video.Logout();
+                    //6.娓呯┖Siri鍏变韩鏁版嵁淇℃伅
                     new Other.SkipControl().SetData(false, "", "", "","");
                     var sDM = new SiriKit.SceneDateManager();
                     Console.WriteLine($"IsLogin:{sDM.IsLgoin};accessToken:{sDM.AccessToken};refreshToken:{sDM.RefreshToken};RegionUrl:{sDM.RegionUrl};HomeId:{sDM.HomeId}");
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index fb07c0f..b290247 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -4,7 +4,34 @@
 {
     public static class StringId
     {
-
+        /// <summary>
+        /// 璁垮绠$悊
+        /// </summary>
+        public const int VisitorManage = 533;
+        /// <summary>
+        /// 璁惧绂荤嚎涓紝鏆傛椂鏃犳硶鎿嶄綔
+        /// </summary>
+        public const int DeviceOfflineCannotOption = 532;
+        /// <summary>
+        /// 浜斿垎閽熷唴鍏嶅瘑鐮佸紑閿�
+        /// </summary>
+        public const int DoorLock5minTip = 531;
+        /// <summary>
+        /// 涓洪槻姝㈠紑鍏抽棬鐨勮瑙︾偣鍑伙紝淇濊瘉瀹跺涵瀹夊叏锛岃杈撳叆鎮ㄧ殑闂ㄩ攣寮�闂ㄥ瘑鐮併��
+        /// </summary>
+        public const int DoorLockEntryPasswordTip = 530;
+        /// <summary>
+        /// 瀵嗙爜杈撳叆
+        /// </summary>
+        public const int EntryPassword = 529;
+        /// <summary>
+        /// 鍥轰欢鏇存柊
+        /// </summary>
+        public const int FirmwareUpdate = 528;
+        /// <summary>
+        /// 鏀寔HomeKit璇存槑
+        /// </summary>
+        public const int SupportHomeKitNotes = 527;
         /// <summary>
         /// 娉ㄩ攢璐﹀彿
         /// </summary>
diff --git a/HDL_ON/Common/UserInfo.cs b/HDL_ON/Common/UserInfo.cs
index c82538d..5ba0686 100644
--- a/HDL_ON/Common/UserInfo.cs
+++ b/HDL_ON/Common/UserInfo.cs
@@ -160,6 +160,29 @@
             }
         }
 
+        [Newtonsoft.Json.JsonIgnore]
+        public DateTime LastTimeOpenDoor = DateTime.MinValue;
+        public bool VerOpenDoorPw
+        {
+            get
+            {
+                return (DateTime.Now - LastTime).TotalMinutes > 5;
+            }
+        }
+        [Newtonsoft.Json.JsonIgnore]
+        public string doorPasswordString;
+
+        /// <summary>
+        /// 璁板綍鑷姩鍖栫瓫閫夌殑鎴块棿鐨勬潯浠�
+        /// </summary>
+        [Newtonsoft.Json.JsonIgnore]
+        public Entity.Room logicselectedRoom = new Entity.Room { roomId = "6688",roomName = Language.StringByID(StringId.allAreas) };
+        /// <summary>
+        /// 璁板綍鑷姩鍖栫瓫閫夌殑鍔熻兘鐨勬潯浠�
+        /// </summary>
+        [Newtonsoft.Json.JsonIgnore]
+        public string logicselectedFunction = Language.StringByID(StringId.allFun);
+
         #endregion
 
         /// <summary>
diff --git a/HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs b/HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs
index b4c7484..66599af 100644
--- a/HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs
+++ b/HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs
@@ -196,5 +196,15 @@
                 return $"/user/{Control.Ins.GatewayId}/custom/security/list/get";
             }
         }
+
+        #region 闂ㄩ攣
+        public string OneKeyUnlock
+        {
+            get
+            {
+                return $"/base/{Control.Ins.GatewayId}/thing/service/doorRemoteOpen/down";
+            }
+        }
+        #endregion
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index 1430b9b..f14125b 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -1,6 +1,7 @@
 锘縰sing System;
 using System.Collections.Generic;
 using System.Text;
+using HDL_ON.DAL.Server;
 using HDL_ON.Entity;
 using HDL_ON.UI;
 using Shared;
@@ -25,7 +26,7 @@
 
     public class Control
     {
-       
+
         static Control _control;
         public static Control Ins
         {
@@ -359,10 +360,11 @@
         /// <param name="function"></param>
         /// <param name="useRemote">鏄惁鐩存帴浣跨敤杩滅▼鍙戦��</param>
         /// <returns></returns>
-        public void SendWriteCommand(Function function, Dictionary<string, string> commandDictionary, bool useRemote = false,int resend = 3)
+        public bool SendWriteCommand(Function function, Dictionary<string, string> commandDictionary, bool useRemote = false,int resend = 3)
         {
             function.controlCounter++;
             function.refreshTime = DateTime.Now;
+
 
             //濡傛灉鏄帶鍒惰皟鍏夌殑寮�鏃讹紝浜害鍊间笉鑳戒负0
             if (commandDictionary.Count > 2)
@@ -403,7 +405,7 @@
                 upDataObj.objects.Add(asd);
                 revString = Newtonsoft.Json.JsonConvert.SerializeObject(upDataObj);
                 UpdataFunctionStatus(revString, null, true);
-                return;
+                return true;
             }
 
 
@@ -492,6 +494,8 @@
                 }
 
             }
+
+            return true;
         }
         /// <summary>
         /// 鍏ㄥ紑鍏ㄥ叧鍔熻兘
@@ -768,8 +772,8 @@
             topicAndLengthBytes.CopyTo(sendDataBytes, 0);
             bodyBytes.CopyTo(sendDataBytes, topicAndLengthBytes.Length);
 
-            //var sendDataString = Encoding.UTF8.GetString(sendDataBytes);
-            //MainPage.Log($"杞崲HDL-Link鏁版嵁\r\n{sendDataString}\r\n");
+            var sendDataString = Encoding.UTF8.GetString(sendDataBytes);
+            MainPage.Log($"杞崲HDL-Link鏁版嵁\r\n{sendDataString}\r\n");
             //***************************************************************
 
             return sendDataBytes;
@@ -865,7 +869,7 @@
 
                 if (receiveObj.Topic == CommunicationTopic.SearchLoaclGatewayReply || receiveObj.Topic == CommunicationTopic.GatewayBroadcast)
                 {
-                   
+
                     var bodyJObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]);
                     if (bodyJObj == null)
                     {
@@ -981,19 +985,34 @@
                         {
                             continue;
                         }
+                        MainPage.Log(localFunction.name);
+
                         if (Ins.GatewayOnline_Local && isCloudData)//鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�
                         {
-                            if (!SPK.Get3tySpk(SPK.BrandType.All3tyBrand).Contains(localFunction.spk))
+                            if (!SPK.Get3tySpk(SPK.BrandType.All3tyBrand).Contains(localFunction.spk) && !SPK.MusicSpkList().Contains( localFunction.spk))
                             {
                                 //MainPage.Log($"A鍗忚鏇存柊鐘舵��:鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�........");
+
                                 return;
                             }
                         }
+
+                        //if (SPK.MusicSpkList().Contains(localFunction.spk))
+                        //{
+                        //    if (updateTemp.status.Count < 3)
+                        //    {
+                        //        ///鏄煶涔愬姛鑳界殑
+                        //        ///涓婃姤灞炴�у皯3鏉′笉鍋氬鐞�
+                        //        return;
+                        //    }
+                        //}
                         //MainPage.Log($"A鍗忚鏇存柊鐘舵��:{revString}");
                         foreach (var attr in updateTemp.status)
                         {
                             localFunction.time_stamp = temp.time_stamp;
                             localFunction.SetAttrState(attr.key, attr.value);
+                            //Console.WriteLine("闊充箰鎾斁鍣ㄦ坊鍔犵紦瀛樻暟鎹�=======" + revString);
+
                         }
 
                         //鏇存柊鐣岄潰鐘舵��
@@ -1175,6 +1194,12 @@
                                 //鐘舵�佹洿鏂�
                                 Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
                                 break;
+                            case SPK.AvMusic:
+                            case SPK.MusicStandard:
+                                //UI.Music.MusicMain.mMusicMain.RefreshView(updateTemp);
+                                //Console.WriteLine("闊充箰鎾斁鍣ㄦ樉绀虹姸鎬�======="+ revString);
+                                //wjc
+                                break;
                         }
 
                         HomePage.UpdataFunctionStates(localFunction);
@@ -1191,5 +1216,110 @@
             }
         }
 
+
+
+        #region 闂ㄩ攣
+
+        /// <summary>
+        /// //涓�閿紙杩滅▼锛夊紑閿�
+        /// </summary>
+        public void OneKeyUnlocking(Function doorlock,string extStr)
+        {
+            if (Ins.GatewayOnline_Local)
+            {
+                Dictionary<string, string> dic = new Dictionary<string, string>();
+                var functionControlDataObj = doorlock.GetGatewayAlinkDoorlockData(UserInfo.Current.ID,extStr);
+                var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj);
+                var sendBytes = Ins.ConvertSendBodyData($"/base/{Control.Ins.GatewayId}/thing/service/doorRemoteOpen/down", functionControlDataJson);
+                new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id, 0);
+            }
+            else
+            {
+                ConfirmUnlocking(doorlock.deviceId, extStr);
+            }
+        }
+        /// <summary>
+        /// 纭寮�閿�
+        /// </summary>
+        /// <param name="functionId"></param>
+        /// <param name="pwd"></param>
+        public void ConfirmUnlocking(string functionId,string pwd)
+        {
+            Loading loading = new Loading();
+            MainPage.BaseView.AddChidren(loading);
+            loading.BackgroundColor = 0x88000000;
+            loading.LodingBackgroundColor = UI.CSS.CSS_Color.BackgroundColor;
+            loading.Start(Language.StringByID(StringId.PleaseWait));
+            new System.Threading.Thread(() =>
+            {
+                try
+                {
+                    Dictionary<string, object> d = new Dictionary<string, object>();
+                    d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+                    d.Add("deviceId", functionId);
+                    d.Add("pwd", pwd);
+                    var requestJson = HttpUtil.GetSignRequestJson(d);
+                    var pack = HttpUtil.RequestHttpsPost("/home-wisdom/app/device/door/pwdConfirm", requestJson);
+                    if (pack.Code == StateCode.SUCCESS)
+                    {
+                        Newtonsoft.Json.Linq.JObject pairs = Newtonsoft.Json.Linq.JObject.Parse(pack.Data.ToString());
+                        var scrip = pairs.GetValue("scrip");
+
+                        d = new Dictionary<string, object>();
+                        d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+                        d.Add("deviceId", functionId);
+                        d.Add("scrip", scrip);
+                        requestJson = HttpUtil.GetSignRequestJson(d);
+                        pack = HttpUtil.RequestHttpsPost("/home-wisdom/app/device/door/remoteOpen", requestJson);
+                        //if(pack.Code == StateCode.SUCCESS)
+                        //{
+                        //    return true;
+                        //}
+                        //else
+                        //{
+                        //    return false;
+                        //}
+                        if (pack.Code != StateCode.SUCCESS) {
+                            Application.RunOnMainThread(() => {
+                                new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), pack.message);
+                                UserInfo.Current.doorPasswordString = "";//
+                                UserInfo.Current.LastTimeOpenDoor = DateTime.MinValue;
+                            });
+                        }
+                    }
+                    if (pack.Code != StateCode.SUCCESS)
+                    {
+                        Application.RunOnMainThread(() => {
+                            if(string.IsNullOrEmpty(pack.message))
+                            {
+                                new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip),
+                                    Language.StringByID(StringId.OperationFailed));
+                            }
+                            else
+                            {
+                                new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), pack.message);
+                            }
+                        });
+                    }
+                }
+                catch (Exception ex)
+                {
+
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        loading.Hide();
+                        loading.RemoveFromParent();
+                    });
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+        //瀵嗙爜鍐荤粨
+        //瀵嗙爜楠岃瘉
+
+        #endregion
     }
-}
\ No newline at end of file
+}
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index e617b29..2adbeba 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -218,6 +218,12 @@
                         Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appDeviceRefresh/up",
                         QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                     };
+                    //璁惧鍦ㄧ嚎绂荤嚎鐘舵�佹帹閫�
+                    var deviceOnlinePush = new MqttTopicFilter()
+                    {
+                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/son/session/online",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+                    };
                     //appRoomRefresh锛氭埧闂存暟鎹埛鏂伴�氱煡
                     var appRoomRefresh = new MqttTopicFilter()
                     {
@@ -253,6 +259,7 @@
                         pirStatus,pirStudy,
                         appDeviceRefresh,appHomeRefresh,appRoomRefresh,residenceChange,
                         topicFilterPush2, topicAlinkStatus ,mqttkeyChange,
+                        deviceOnlinePush,
                         securityStatusChange});
                     if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
                     {
@@ -344,6 +351,32 @@
                                     var mMes = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
                                     //鏂版尋涓嬬嚎涓婚鏂规 鏀跺埌鎸や笅绾夸富棰�
                                     ReceiveNotifySqueezeAsync(mMes);
+                                }
+                                //璁惧鍦ㄧ嚎绂荤嚎鐘舵�佹帹閫�
+                                else if(topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/son/session/online")
+                                {
+                                    try
+                                    {
+                                        var mMes = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
+                                        Newtonsoft.Json.Linq.JObject pairs = Newtonsoft.Json.Linq.JObject.Parse(mMes);
+                                        var pairSid = pairs.GetValue("sid").ToString();
+                                        var pairOnline = pairs.GetValue("online");
+                                        if (!string.IsNullOrEmpty(pairSid.ToString()))
+                                        {
+                                            var function_online = FunctionList.List.Functions.Find((obj) => obj.sid == pairSid);
+                                            if (function_online != null){
+                                                function_online.online = (bool)pairOnline;
+                                                HomePage.LoadEvent_RefreshDevcieOnline(function_online);
+                                                FunctionPage.UpdataOnline(function_online);
+                                                RoomPage.UpdataOnline(function_online);
+                                            }
+                                        }
+
+                                    }
+                                    catch(Exception ex)
+                                    {
+
+                                    }
                                 }
                                 //App璁㈤槄绾㈠瀹�/缃戝叧閬ユ帶鍣ㄦ坊鍔犳垚鍔熼�氱煡
                                 else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/topo/found")
@@ -753,6 +786,9 @@
         /// </summary>
         static void ReceiveNotifySqueezeAsync(string mMes)
         {
+#if DEBUG
+            return;
+#endif
             if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊//鎴栬�呭綋鍓嶄笉鏄繙绋嬮摼鎺ョ姸鎬�
             //娴嬭瘯璐﹀彿锛屼笉鎸や笅绾�
             switch (UserInfo.Current.userMobileInfo)
@@ -809,7 +845,9 @@
         static void SendPushSignOut()
         {
             byte[] message = Encoding.UTF8.GetBytes(PushSignStr);
+#if DEBUG
             MqttRemoteSend(message, 4);
+#endif
         }
 
         /// <summary>
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index 2414895..8efd6e5 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -5,6 +5,7 @@
 using System.Text;
 using HDL_ON.Entity;
 using Newtonsoft.Json.Linq;
+using Shared;
 
 namespace HDL_ON.DAL.Server
 {
@@ -152,6 +153,10 @@
                 sdm.AccessToken = UserInfo.Current.LoginTokenString;
                 sdm.RefreshToken = UserInfo.Current.RefreshToken;
 #endif
+            }
+            else if (revertObj.Code == StateCode.PasswrodError)
+            {
+                UserInfo.Current.LastTime = DateTime.MinValue;
             }
             return revertObj.Code;
         }
@@ -1026,7 +1031,7 @@
                 //鏄惁鐢熶骇妯″紡
                 bool isProduce = true;
 #if DEBUG
-                isProduce = false;
+                isProduce = true;
 #endif
 
                 if (string.IsNullOrEmpty(OnAppConfig.Instance.PushDeviceToken))
@@ -1053,9 +1058,15 @@
 
                 //var mAddpushinfoJson = Newtonsoft.Json.JsonConvert.SerializeObject(mAddpushinfoObj);
                 var mAddpushinfoJson = HttpUtil.GetSignRequestJson(mAddpushinfoObj);
+
+                Utlis.WriteLine("mAddpushinfoJson: " + mAddpushinfoJson);
+
+                //new Alert("", , "鍙栨秷", "纭畾").Show();
                 var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_AddToken, mAddpushinfoJson);
                 if (revertObj.Code == StateCode.SUCCESS)
                 {
+                    //new Alert("", "鎻愪氦pushToken鎴愬姛" + OnAppConfig.Instance.PushDeviceToken, "鍙栨秷", "纭畾").Show();
+
                     if (revertObj.Data != null)
                     {
                         var pushId = revertObj.Data.ToString();
@@ -1064,7 +1075,7 @@
                             OnAppConfig.Instance.PushId = pushId;
                             OnAppConfig.Instance.SaveConfig();
                             Utlis.WriteLine("PushId: " + pushId);
-
+                            //new Alert("","鎻愪氦pushToken鎴愬姛"+ OnAppConfig.Instance.PushDeviceToken, "鍙栨秷","纭畾").Show();
                             return true;
                         }
                     }
@@ -1072,7 +1083,7 @@
                 }
                 else
                 {
-                    //Utlis.WriteLine("AddToken 澶辫触");
+                    Utlis.WriteLine("AddToken 澶辫触");
                 }
                 return false;
             }
@@ -1946,15 +1957,18 @@
         /// 鑾峰彇璁惧鍒楄〃
         /// </summary>
         /// <returns></returns>
-        public ResponsePackNew GetDeviceList()
+        public ResponsePackNew GetDeviceList(string pageSize="",string pageNo ="")
         {
             Dictionary<string, object> d = new Dictionary<string, object>();
             d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
             //d.Add("gatewayId", DB_ResidenceData.residenceData.HomeGateway.gatewayId);
             //d.Add("roomId", DB_ResidenceData.residenceData.residecenInfo.RegionID);//鍙帶鍙傛暟锛屽綋闇�瑕佸垎椤佃幏鍙栵紝鎬庝箞鐭ラ亾鍒嗛〉鎬绘暟
             //d.Add("searchType", DB_ResidenceData.residenceData.residecenInfo.RegionID);
-            //d.Add("pageSize", DB_ResidenceData.residenceData.residecenInfo.RegionID);
-            //d.Add("pageNo", DB_ResidenceData.residenceData.residecenInfo.RegionID);
+            if (!string.IsNullOrEmpty(pageSize))
+            {
+                d.Add("pageSize", pageSize);
+                d.Add("pageNo", pageNo);
+            }
 
             var requestJson = HttpUtil.GetSignRequestJson(d);
             return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetDevcieList, requestJson);
diff --git a/HDL_ON/DAL/Server/HttpUtil.cs b/HDL_ON/DAL/Server/HttpUtil.cs
index 6c692b6..72fa068 100644
--- a/HDL_ON/DAL/Server/HttpUtil.cs
+++ b/HDL_ON/DAL/Server/HttpUtil.cs
@@ -305,6 +305,10 @@
                     sdm.RefreshToken = UserInfo.Current.RefreshToken;
 #endif
                 }
+                else if (revertObj.Code == StateCode.PasswrodError)
+                {
+                    UserInfo.Current.LastTime = DateTime.MinValue;
+                }
                 return false;
             }
             catch
diff --git a/HDL_ON/DAL/Server/IMessageCommon.cs b/HDL_ON/DAL/Server/IMessageCommon.cs
index 2564a72..c6d29f4 100644
--- a/HDL_ON/DAL/Server/IMessageCommon.cs
+++ b/HDL_ON/DAL/Server/IMessageCommon.cs
@@ -358,6 +358,10 @@
         /// 瀵嗙爜杈撳叆閿欒瓒呰繃10娆★紝璇�30鍒嗛挓鍚庨噸璇�!
         /// </summary>
         public const string AccountLoginLock = "10019";
+        /// <summary>
+        /// 瀵嗙爜閿欒
+        /// </summary>
+        public const string PasswrodError = "100008";
         
 
 
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
index 3314fee..d1d23bb 100644
--- a/HDL_ON/DAL/Server/NewAPI.cs
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -739,6 +739,12 @@
         /// </summary>
         public const string Api_Post_BindSourcePanel = "/home-wisdom/source/screen/home/bind";
 
+        #region  鈻�  -- 闊充箰鐩稿叧鎺ュ彛_______________________________
+        /// <summary>
+        /// 鑾峰彇闊充箰鍒楄〃
+        /// </summary>
+        public const string Api_Post_PlayerList = "/home-wisdom/app/wise/music/playerList";
+        #endregion
 
     }
 
diff --git a/HDL_ON/DAL/Server/NewApiRes.cs b/HDL_ON/DAL/Server/NewApiRes.cs
index 055a093..a3973e3 100644
--- a/HDL_ON/DAL/Server/NewApiRes.cs
+++ b/HDL_ON/DAL/Server/NewApiRes.cs
@@ -1474,7 +1474,14 @@
         /// 鎵╁睍鏁版嵁鍐呭
         /// </summary>
         public string expantContent = "";
-        
+        /// <summary>
+        /// spk鏍囧織锛屽�间负door.gate鏃惰〃绀鸿嚜鐮�
+        /// </summary>
+        public string spk="";
+        /// <summary>
+        /// sip璐﹀彿
+        /// </summary>
+        public string sipAccount;
 
     }
 
diff --git a/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs b/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
index 0965c39..dd1c235 100644
--- a/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
+++ b/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
@@ -110,6 +110,15 @@
             {
                 //HDLLinphone 鐙勮�愬厠
                 HDLLinphone.Current.ShowESVideoMonitor(mESVideoInfo);
+                ////鍏ㄨ閫�
+                //NSDictionary deviceInfo = new NSDictionary("deviceCode","3-1-11-2", "deviceName", mESVideoInfo.DeviceName);
+                //Shared.IOS.HDLFVSDK.Video.Monitor(deviceInfo);
+            } else if (interphoneType == InterphoneType.FREEVIEW.ToString())
+            {
+                //鍏ㄨ閫氱洃瑙�
+                NSDictionary deviceInfo = new NSDictionary("deviceCode",mESVideoInfo.deviceCode, "deviceName", mESVideoInfo.DeviceName);
+                Shared.IOS.HDLFVSDK.Video.Monitor(deviceInfo);
+                //HDLLinphone.Current.ShowESVideoMonitor(mESVideoInfo);
             }
             else
             {
@@ -822,6 +831,16 @@
         /// 璁惧sip璐﹀彿 interphoneType鏄疕DL鏃舵墠浼氭湁鍊�
         /// </summary>
         public string deviceSipAccount;
+        /// <summary>
+        /// spk
+        /// </summary>
+        public string spk="";
+
+        //========================鍏ㄨ閫�==========================
+        /// <summary>
+        /// 璁惧缂栧彿锛岀浉褰撲簬鍏ㄨ閫氱殑LocalDirectory瀛楁
+        /// </summary>
+        public string deviceCode;
     }
 
 
@@ -865,7 +884,10 @@
         /// 鐙勮�愬厠 HDL Linphone
         /// </summary>
         HDL,
-
+        /// <summary>
+        /// 鍏ㄨ閫氬璁�
+        /// </summary>
+        FREEVIEW,
 
     }
 }
diff --git a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
index 49857bf..15aaa60 100644
--- a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
+++ b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
@@ -57,6 +57,10 @@
         /// </summary>
         public bool IsEnable = false;
         /// <summary>
+        /// 褰撳墠瑙嗛閫氳瘽鏄惁涓鸿嚜鐮�
+        /// </summary>
+        public bool IsSelfResearch = false;
+        /// <summary>
         /// 鏄惁鑷姩璺宠浆鍛煎彨椤甸潰,
         /// false锛氭敹鍒版帹閫佸苟涓斿凡缁忔敹鍒皊ip鍛煎彨鎵嶈烦杞懠鍙〉闈�
         /// true锛氬師鐢熸敹鍒板懠鍙┈涓婅烦杞懠鍙〉闈紝涓嶇瓑寰呮帹閫佽繃鏉�
@@ -93,6 +97,7 @@
             Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().IsAutoJumpCallView = IsAutoJumpCallView;
             //璁剧疆Listener鐩戝惉
             mOnHDLLinphoneCallDelegate = new OnHDLLinphoneCallDelegate(this);
+            Console.WriteLine(UserInfo.Current.ID);
             Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().HdlLinphoneCallDelegate = mOnHDLLinphoneCallDelegate;
 #else
             HDLLinphoneKit.Instance.InitLinphone(Application.Activity);
@@ -428,6 +433,7 @@
             mHDLCallVideoInfo.DeviceName = mESVideoInfo.DeviceName;
             mHDLCallVideoInfo.InterphoneType = InterphoneType.HDL.ToString();
             mHDLCallVideoInfo.DeviceSipAccount = mESVideoInfo.deviceSipAccount;
+            mHDLCallVideoInfo.spk = mESVideoInfo.spk;
             InitCallInfo(mHDLCallVideoInfo);
 
             //褰撳墠鍛煎彨鏉ョ數鐨勪綇瀹呭拰涔嬪墠娉ㄥ唽鐧诲綍鐨勪綇瀹呬竴鑷寸殑鎯呭喌涓�
@@ -460,20 +466,30 @@
         /// <param name="mESVideoInfo"></param>
         public void CheckCallStateAndGotoPage()
         {
-            //濡傛灉寮�鍚簡鑷姩璺宠浆鏂规锛屽垯鏃犻渶缁х画涓嬮潰澶勭悊銆佹棤闇�鎵嬪姩璺宠浆
-            if (IsAutoJumpCallView) return;
-            //鍏堢粨鏉熸帀涔嬪墠鐨勭嚎绋�
-            EndCheckIncomingCallThread();
-            //妫�娴嬫槸鍚︽潵鐢典簡濡傛灉鏄洿鎺ヨ皟鏁村懠鍙〉闈㈠鏋滀笉鏄垯寮�鍚嚎绋嬬瓑寰呭垽鏂�
-            if (IsIncomingReceivedCallState()) {
-                Utlis.WriteLine("CALL 宸茬粡鏉ョ數浜嗐�傘�傘�傛墦寮�鍛煎彨椤甸潰");
-                GoToHDLLinphoneIntercomActivity();
-            }
-            else
+            if (mHDLCallVideoInfo.spk == "door.gate")
             {
-                //濡傛灉杩樻病鏉ョ數 寮�鍚嚎绋嬫娴�
-                StartCheckIncomingCallThread();
+                //鑷爺鍙瀵硅
+                HDLLinPhoneSDK.Instance().GotoHDLSRLinphoneIntercomVC(mHDLCallVideoInfo.DeviceName,mHDLCallVideoInfo.DeviceSipAccount);
+           }
+            else {
+                //鐙勮�愬厠鍙瀵硅
+                //濡傛灉寮�鍚簡鑷姩璺宠浆鏂规锛屽垯鏃犻渶缁х画涓嬮潰澶勭悊銆佹棤闇�鎵嬪姩璺宠浆
+                if (IsAutoJumpCallView) return;
+                //鍏堢粨鏉熸帀涔嬪墠鐨勭嚎绋�
+                EndCheckIncomingCallThread();
+                //妫�娴嬫槸鍚︽潵鐢典簡濡傛灉鏄洿鎺ヨ皟鏁村懠鍙〉闈㈠鏋滀笉鏄垯寮�鍚嚎绋嬬瓑寰呭垽鏂�
+                if (IsIncomingReceivedCallState())
+                {
+                    Utlis.WriteLine("CALL 宸茬粡鏉ョ數浜嗐�傘�傘�傛墦寮�鍛煎彨椤甸潰");
+                    GoToHDLLinphoneIntercomActivity();
+                }
+                else
+                {
+                    //濡傛灉杩樻病鏉ョ數 寮�鍚嚎绋嬫娴�
+                    StartCheckIncomingCallThread();
+                }
             }
+
 
         }
 
@@ -813,6 +829,10 @@
         /// 绫诲瀷
         /// </summary>
         public string InterphoneType;
+        /// <summary>
+        /// spk
+        /// </summary>
+        public string spk="";
 
     }
 
diff --git a/HDL_ON/Entity/DB_ResidenceData.cs b/HDL_ON/Entity/DB_ResidenceData.cs
index 7e9c6f8..75d6fc6 100644
--- a/HDL_ON/Entity/DB_ResidenceData.cs
+++ b/HDL_ON/Entity/DB_ResidenceData.cs
@@ -155,6 +155,12 @@
             ///鍒囨崲浣忓畢娓呯┖鍓嶄綇瀹呯紦瀛樿嚜鍔ㄥ寲鍒楄〃锛�
             HDL_ON.UI.UI2.Intelligence.Automation.Logic.LogicList.Clear();
             DAL.Mqtt.MqttClient.DisConnectRemote("閫�鍑虹櫥褰曪紝鎴栬�呭垏鎹綇瀹�");
+
+            //閫�鍑哄叏瑙嗛�氱櫥褰�
+            Shared.IOS.HDLFVSDK.Video.Logout();
+            //閲嶇疆榛樿涓嶆敮鎸佸叏瑙嗛��
+            Entity.DB_ResidenceData.Instance.SupportFVDevice = false;
+
         }
         /// <summary>
         /// 鏄惁鏀寔浜鸿劯閫氳
@@ -162,6 +168,16 @@
         public bool SupportFacePass = false;
 
         /// <summary>
+        /// 鏄惁鏀寔璁垮绠$悊
+        /// </summary>
+        public bool SupportVisitorManage = false;
+
+        /// <summary>
+        /// 鏄惁鏀寔鍏ㄨ閫�
+        /// </summary>
+        public bool SupportFVDevice = false;
+
+        /// <summary>
         /// 缃戝叧璇︾粏淇℃伅
         /// </summary>
         public HomeGatewayInfo HomeGateway;
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 300e667..b64d1e6 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -556,6 +556,13 @@
                 SaveFunctionFile();
                 if (pack.Code == StateCode.SUCCESS)
                 {
+                    if (UI.RoomPage.bodyView != null)
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            UI.RoomPage.bodyView.ReLoadPage();
+                        });
+                    }
                 }
                 else
                 {
@@ -701,6 +708,20 @@
             sendDataObj.objects.Add(acd);
             return sendDataObj;
         }
+
+        public AlinkDoorlockObj GetGatewayAlinkDoorlockData(string userId,string extStr)
+        {
+            var sendDataObj = new AlinkDoorlockObj();
+            sendDataObj.id = Control.Ins.msg_id.ToString();
+            sendDataObj.time_stamp = Utlis.GetTimestamp();
+            var acd = new AlinkDoorlockStatus();
+            acd.sid = sid;
+            acd.user_id = extStr;
+            acd.ext_str = extStr;
+            sendDataObj.objects.Add(acd);
+            return sendDataObj;
+        }
+
         /// <summary>
         /// 鑾峰彇Api鎺у埗鏁版嵁
         /// </summary>
@@ -755,6 +776,24 @@
         public string id = "";
     }
     /// <summary>
+    /// 闂ㄩ攣閫氳鏁版嵁
+    /// </summary>
+    public class AlinkDoorlockObj
+    {
+        public List<AlinkDoorlockStatus> objects = new List<AlinkDoorlockStatus>();
+        public string time_stamp = "";
+        public string id = "";
+    }
+
+    public class AlinkDoorlockStatus
+    {
+        public string sid;
+        public string user_id;
+        public string ext_str;
+    }
+
+
+    /// <summary>
     /// 鏈湴鐘舵�佽鍙�
     /// A鍗忚鐘舵�佽鍙栨牸寮忓璞�
     /// </summary>
diff --git a/HDL_ON/Entity/Function/SecurityAlarm.cs b/HDL_ON/Entity/Function/SecurityAlarm.cs
index fa1a558..4ff0b58 100644
--- a/HDL_ON/Entity/Function/SecurityAlarm.cs
+++ b/HDL_ON/Entity/Function/SecurityAlarm.cs
@@ -474,11 +474,11 @@
     {
         /// <summary>
         /// 鎺у埗鐩爣绫诲瀷
-        /// 0:璁惧
-        /// 1:鍦烘櫙
-        /// 2:鑷姩鍖�
+        /// 1:璁惧
+        /// 2:鍦烘櫙
+        /// 3:鑷姩鍖�
         /// </summary>
-        public string target_type = "0";
+        public string target_type = "1";
         /// <summary>
         /// 杈撳嚭鐩爣鐨剆id
         /// </summary>
@@ -600,7 +600,7 @@
         public string StateText()
         {
             string text = "";
-            if (target_type == "0")
+            if (target_type == "1")
             {
                 switch (spk)
                 {
@@ -635,7 +635,7 @@
                         }
                         break;
                 }
-            }else if(target_type == "1")
+            }else if(target_type == "2")
             {
                 text = Language.StringByID(StringId.Open);
             }
diff --git a/HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs b/HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs
index e3d96a7..b4f5d8b 100644
--- a/HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs
+++ b/HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs
@@ -1,4 +1,6 @@
 锘縰sing System;
+using Shared;
+
 namespace HDL_ON.Entity
 {
     /// <summary>
@@ -42,6 +44,22 @@
         /// 浜у搧鍚嶇О
         /// </summary>
         public string productName;
+        public string productNameEn;
+
+        public string ProductShowName
+        {
+            get
+            {
+                if(Language.CurrentLanguage == "Chinese")
+                {
+                    return productName;
+                }
+                else
+                {
+                    return productNameEn;
+                }
+            }
+        }
 
         /// <summary>
         /// 浜у搧鍘傚晢
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index 4b81f4b..f17e8e8 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -60,31 +60,6 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmSensor\SensorSmokePage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmSensor\SensorPirPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmSensor\ArmSensorHistroyPaging.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\MusicMain.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31Radio.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\UpdateThread.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31RadioList.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31MusicModel.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31MusicSourcePage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31PlayMusicPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31LoveRadioList.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31LoveList.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31USBMusicList.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31PlayStatus.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31MyList.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\SendMethod.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31LocalMusicList.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31LoveMusicList.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31MyListMusic.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\DialogView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\TopView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\MusicView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\PlayView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\SizeClass.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\TipView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\MusicSourceView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\SongView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\MyListView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\TuyaFanPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\ClothesHangerPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\FanPage.cs" />
@@ -491,8 +466,29 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\SocketPage_InstantaneousValue.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\SocketPage_CumulativePowerConsumption.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\CancelAccountPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\Visitor\VisitorQRCodePage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\Visitor\VisitorHistoryPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\MusicMain.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31MusicModel.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31MusicSourcePage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31PlayMusicPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31MyList.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\SendMethod.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31LoveMusicList.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31MyListMusic.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\DialogView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\TopView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\MusicView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\PlayView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\SizeClass.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\TipView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\MusicSourceView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\SongView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\MyListView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31MusicFileList.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31SongPlay.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\MusicProperty.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AboutOn\SupportHomeKitNotesPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AboutOn\FirmwareUpdateView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\DoorLock\DoorLockUnlockPage.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
@@ -519,6 +515,5 @@
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\SenesorEnvironment\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Light\LightScene\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\FaceManagement\" />
-    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\Visitor\" />
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/HDL_ON/UI/MainPage.cs b/HDL_ON/UI/MainPage.cs
index 3a9894f..3acd47a 100644
--- a/HDL_ON/UI/MainPage.cs
+++ b/HDL_ON/UI/MainPage.cs
@@ -26,7 +26,7 @@
     /// <summary>
     /// 鐗堟湰鍙�
     /// </summary>
-    public static string VersionString = "1.5.2";
+    public static string VersionString = "1.5.5";
     ///// <summary>
     ///// 瀹㈡埛绔被鍨�
     ///// </summary>
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
index 4507e35..3cbd914 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -125,11 +125,11 @@
                         break;
                     case SPK.MusicStandard:
                     case SPK.AvMusic:
-                        Music.A31MusicModel.Current = (function as Music.A31MusicModel);//褰撳墠鎾斁鍣�
-                        var a31PlayMusicPage = new Music.A31PlayMusicPage();
-                        MainPage.BasePageView.AddChidren(a31PlayMusicPage);
-                        a31PlayMusicPage.Show();
-                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                        //Music.A31MusicModel.Current= new Music.A31MusicModel { functionMusic = function };//褰撳墠鎾斁鍣�
+                        //var a31PlayMusicPage = new Music.A31PlayMusicPage();
+                        //MainPage.BasePageView.AddChidren(a31PlayMusicPage);
+                        //a31PlayMusicPage.Show();
+                        //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                         break;
                     case SPK.LightCCT:
                         var TureView = new ColorTureLampPage(function);
@@ -197,7 +197,7 @@
                         airFresh2.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
                         break;
                     case SPK.DoorLock:
-                        var doorLockPage = new DoorLockListPage();
+                        var doorLockPage = new DoorLockPage();
                         doorLockPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
                         break;
                 }
@@ -205,4 +205,4 @@
             return eventHandler;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index 5369bff..c5577fa 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -202,6 +202,7 @@
             btnIcon.MouseUpEventHandler += (sender, e) =>
             {
 
+
                 //ESOnVideo.Current.Test(false);
 
                 //return;
@@ -212,11 +213,10 @@
                     //etAccount.Text = "18022428438";//wjc
                     //etAccount.Text = "13602944661";//kx
                     //etAccount.Text = "13226233133";//璞嗚眴
-                    //etAccount.Text = "18316672920";
+                    etAccount.Text = "18316672920";
                     //etAccount.Text = "18316120654";//tujie
-                    //etAccount.Text = "15626203746";
                     //etAccount.Text = "13450425807";//榛勭婧� knx椤圭洰
-                    etAccount.Text = "18059593333";
+                    etAccount.Text = "18244942707";
                 }
                 else
                 {
@@ -235,7 +235,7 @@
                     //etAccount.Text = "18598273624";
                     etAccount.Text = "tf@smarttech.com.ua";
                     //etAccount.Text = "18814122445";//钁f辰鏂� 澶╂渤鍔炲叕瀹�
-                    //etAccount.Text = "18824864143";//"464027401@qq.com"; //"2791308028@qq.com";//13697499568
+                    etAccount.Text = "18824864143";//"464027401@qq.com"; //"2791308028@qq.com";//13697499568
                     etAccount.Text = "18402017839";//wjc
                     //etAccount.Text = "13430286286";//cwc
                     //etAccount.Text = "13709260805";
@@ -243,19 +243,22 @@
                     //etAccount.Text = "13375012441";
                     //etAccount.Text = "info@smartlife-ks.com";
                     //etAccount.Text = "551775569@qq.com";//wcf
+                    etAccount.Text = "15626203746";
+                    //etAccount.Text = "zhangquansongjava@163.com";
+                    //etAccount.Text = "s.savinov@hdlautomation.ru";
                 }
                 b = !b;
                 etPassword.Text = "123456";
-                if(etAccount.Text == "tf@smarttech.com.ua")
+                if(etAccount.Text == "s.savinov@hdlautomation.ru")
                 {
-                    etPassword.Text = "Smart2021";
+                    etPassword.Text = "BWGVOFCJ";
                 }
                 //etPassword.Text = "Hdl85521566";
                 btnLogin.IsSelected = true;
             };
 #endif
 
-#region 鐧诲綍鏂瑰紡閫夋嫨
+            #region 鐧诲綍鏂瑰紡閫夋嫨
             btnPhoneLogin = new Button()
             {
                 X = Application.GetRealWidth(28),
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index 9443a70..d93097d 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -161,23 +161,9 @@
                 };
                 topView.AddChidren(btnTop);
 
-                btnLinkStateTip = new Button()
-                {
-                    X = Application.GetRealWidth(16),
-                    Y = Application.GetRealHeight(46),
-                    Width = Application.GetRealWidth(6),
-                    Height = Application.GetRealWidth(6),
-                    BackgroundColor = CSS_Color.LinkTipFail,
-                    Radius = (uint)Application.GetRealWidth(3),
-                };
-                topView.AddChidren(btnLinkStateTip);
-                //鏇存柊閾炬帴鐘舵�乮con棰滆壊
-                CheckLinkStatus();//2020-12-22
-                
-
                 btnResidenceName = new Button()
                 {
-                    X = Application.GetRealWidth(26),
+                    X = Application.GetRealWidth(16),
                     Y = Application.GetRealHeight(32),
                     Width = Application.GetRealWidth(300),
                     Height = Application.GetRealHeight(33),
@@ -188,12 +174,51 @@
                     IsBold = true
                 };
                 topView.AddChidren(btnResidenceName);
+                btnLinkStateTip = new Button()
+                {
+                    //X = Application.GetRealWidth(16),
+                    Y = btnResidenceName.Bottom,
+                    Height = Application.GetRealWidth(14),
+                    BackgroundColor = CSS_Color.LinkTipFail,
+                    TextAlignment = TextAlignment.Center,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                };
+                topView.AddChidren(btnLinkStateTip);
+                //btnLinkStateTip.Width = btnLinkStateTip.GetTextWidth();
+                //鏇存柊閾炬帴鐘舵�乮con棰滆壊
 
+
+                int ddd = 0;
 #if DEBUG
-                int msdId = 111;
                 btnResidenceName.MouseUpEventHandler = (sender, e) =>
                 {
-                    Control.Ins.AuthGateway();
+
+                    //if (UserInfo.Current.VerOpenDoorPw || string.IsNullOrEmpty(UserInfo.Current.doorPasswordString))
+                    //{
+                    //    var page = new DoorLockUnlockPage(new Function());
+                    //    MainPage.BasePageView.AddChidren(page);
+                    //    page.LoadView();
+                    //    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                    //}
+                    //else
+                    //{
+                    //    Control.Ins.OneKeyUnlocking(new Function(), UserInfo.Current.doorPasswordString);
+                    //}
+
+                ddd++;
+                    Function function_online = FunctionList.List.GetLightList().Find((obj) => obj.sid == "0001017DB92D2602020100010101");
+                    if(ddd%2 == 0)
+                    {
+                        function_online.online = true;
+                    }
+                    else
+                    {
+                        function_online.online = false;
+                    }
+                    HomePage.LoadEvent_RefreshDevcieOnline(function_online);
+                    
+
                 };
 #endif
 
@@ -203,6 +228,8 @@
                     Height = Application.GetRealHeight(32),
                 };
                 topView.AddChidren(environmentalView);
+                CheckLinkStatus();//2020-12-22
+
                 #region 鐜鏁版嵁
                 var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature);
                 var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity);
@@ -553,40 +580,40 @@
 
 #if DEBUG
 
-            FunctionList.List.Functions.Add(new Function
-            {
-                name = "闂ㄩ攣",
-                spk = SPK.DoorLock,
-                sid = "12345",
-                attributes = new List<FunctionAttributes> {
-                    new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" },
-                    new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" },
-                    new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" },
-                    new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" },
-                    new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" },
-                    new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" },
-                    new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" },
-                    new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" },
-                    new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" },
-                }
-            });
-            FunctionList.List.Functions.Add(new Function
-            {
-                name = "闂ㄩ攣1",
-                spk = SPK.DoorLock,
-                sid = "123",
-                attributes = new List<FunctionAttributes> {
-                    new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" },
-                    new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" },
-                    new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" },
-                    new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" },
-                    new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" },
-                    new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" },
-                    new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" },
-                    new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" },
-                    new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" },
-                }
-            });
+            //FunctionList.List.Functions.Add(new Function
+            //{
+            //    name = "闂ㄩ攣",
+            //    spk = SPK.DoorLock,
+            //    sid = "12345",
+            //    attributes = new List<FunctionAttributes> {
+            //        new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" },
+            //        new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" },
+            //        new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" },
+            //        new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" },
+            //        new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" },
+            //        new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" },
+            //        new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" },
+            //        new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" },
+            //        new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" },
+            //    }
+            //});
+            //FunctionList.List.Functions.Add(new Function
+            //{
+            //    name = "闂ㄩ攣1",
+            //    spk = SPK.DoorLock,
+            //    sid = "123",
+            //    attributes = new List<FunctionAttributes> {
+            //        new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" },
+            //        new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" },
+            //        new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" },
+            //        new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" },
+            //        new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" },
+            //        new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" },
+            //        new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" },
+            //        new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" },
+            //        new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" },
+            //    }
+            //});
 
             //FunctionList.List.Functions.Add(new Function()
             //{
@@ -855,30 +882,31 @@
                     //闊充箰妯″潡鏈変富浠庡叧绯伙紝闇�瑕佺壒娈婂鐞�
                     if (SPK.MusicSpkList().Contains( function.spk))
                     {
+                        continue;
                         //var music = function as Music.A31MusicModel;
-                        var music = Music.A31MusicModel.A31MusicModelList.Find((obj) => obj.sid == function.sid);
-                        if (music == null)
-                        {
-                            continue;
-                        }
-                        if (music.ServerClientType == -1)
-                        {
-                            continue;
-                        }
-                        else if (music.ServerClientType == 1)
-                        {
-                            if (!music.MainPlayCollection)
-                            {
-                                continue;
-                            }
-                        }
-                        else
-                        {
-                            if (!music.collect)
-                            {
-                                continue;
-                            }
-                        }
+                        //var music = Music.A31MusicModel.A31MusicModelList.Find((obj) => obj.sid == function.sid);
+                        //if (music == null)
+                        //{
+                        //    continue;
+                        //}
+                        //if (music.ServerClientType == -1)
+                        //{
+                        //    continue;
+                        //}
+                        //else if (music.ServerClientType == 1)
+                        //{
+                        //    if (!music.MainPlayCollection)
+                        //    {
+                        //        continue;
+                        //    }
+                        //}
+                        //else
+                        //{
+                        //    if (!music.collect)
+                        //    {
+                        //        continue;
+                        //    }
+                        //}
                     }
                     else
                     {
@@ -923,6 +951,12 @@
                     functionViews.Add(functionView);
                     LoadDeviceFunctionDiv(functionView, function);
                     index++;
+
+
+                    if (!function.online)
+                    {
+                        btnbg.UnSelectedImagePath = "Collection/FunctionOfflineBg.png";
+                    }
                 }
 
                 if (index == 0)
@@ -1186,6 +1220,7 @@
                 {
                     btnIcon.UnSelectedImagePath = "FunctionIcon/Music/MusicIcon.png";
                     btnIcon.SelectedImagePath = "FunctionIcon/Music/MusicOnIcon.png";
+                    btnCollection.Visible = false;
                     Button btnPower;
                     btnPower = new Button()
                     {
@@ -1197,8 +1232,8 @@
                         SelectedImagePath = "FunctionIcon/Music/MusicPlayOnIcon.png",
                     };
                     view.AddChidren(btnPower);
-                    var a31player = (function as UI.Music.A31MusicModel);
-                    btnState.Text = a31player.A31PlayStatus.Title;
+
+                    btnState.Text = function.GetAttrState("song_name");
 
                     btnState.SelectedTextColor = CSS_Color.MainBackgroundColor;
                     btnState.TextColor = CSS_Color.MainBackgroundColor;//PromptingColor1
@@ -1207,21 +1242,22 @@
 
                     btnPower.MouseUpEventHandler = (sender, e) =>
                     {
+
+                        string status = "off";
                         if (btnPower.IsSelected)
                         {
                             btnPower.IsSelected = false;
-                            Music.SendMethod.Pause(a31player);
-                            a31player.A31PlayStatus.status = "pause";
-                            a31player.trait_on_off.curValue = "off";
+                            status = "off";
                         }
                         else
                         {
                             btnPower.IsSelected = true;
-                            Music.SendMethod.Play(a31player);
-                            a31player.A31PlayStatus.status = "play";
-                            a31player.trait_on_off.curValue = "on";
+                            status = "on";
                         }
-                        UpdataFunctionStates(a31player);
+                       function.SetAttrState("on_off", status);
+                        Dictionary<string, string> dic = new Dictionary<string, string>();
+                        dic.Add("on_off", status);
+                        Music.SendMethod.mMethod.SendControlCommand(function, dic);
                     };
                 }
 
@@ -1279,14 +1315,14 @@
                 //鍙栨秷鏀惰棌浜嬩欢
                 Action cannelCollect = () => {
                     function.collect = false;
-                    if (SPK.MusicSpkList().Contains(function.spk))//澶勭悊闊充箰涓讳粠鍏崇郴
-                    {
-                        if ((function as Music.A31MusicModel).ServerClientType == 1)
-                        {
-                            (function as Music.A31MusicModel).MainPlayCollection = false;
-                            Music.A31MusicModel.Save();
-                        }
-                    }
+                    //if (SPK.MusicSpkList().Contains(function.spk))//澶勭悊闊充箰涓讳粠鍏崇郴
+                    //{
+                    //    if ((function as Music.A31MusicModel).ServerClientType == 1)
+                    //    {
+                    //        (function as Music.A31MusicModel).MainPlayCollection = false;
+                    //        Music.A31MusicModel.Save();
+                    //    }
+                    //}
                     string msg = function.name + Language.StringByID(StringId.CollectionCancelled);
                     LoadDeviceFunctionControlZone();
                     function.CollectFunction();
@@ -1303,6 +1339,21 @@
                 {
                     UpdataFunctionStates(function);
                 }
+
+                var btnOffline = new Button()
+                {
+                    X = btnIcon.Right,
+                    Y = Application.GetRealWidth(16),
+                    Height = Application.GetMinRealAverage(32),
+                    TextID = StringId.DeviceOffline,
+                    TextColor = CSS_Color.WarningColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    Tag = "OnlineTag",
+                    Visible = !function.online
+                };
+                view.AddChidren(btnOffline);
+
             }
             catch (Exception ex)
             {
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
index 80793fd..342d1d5 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -10,6 +10,52 @@
     public partial class HomePage
     {
         /// <summary>
+        /// 鏇存柊璁惧鍦ㄧ嚎鐘舵��
+        /// </summary>
+        public static void LoadEvent_RefreshDevcieOnline(Function function)
+        {
+            Application.RunOnMainThread(() =>
+            {
+                if (bodyView != null)
+                {
+                    foreach (var view in bodyView.functionViews)
+                    {
+                        if (view.Tag.ToString() == function.sid)
+                        {
+                            for (int i = 0; i < view.ChildrenCount; i++)
+                            {
+                                if (view.GetChildren(i).GetType() == typeof(Button))
+                                {
+                                    var btn = view.GetChildren(i) as Button;
+                                    if(btn.Tag == null)
+                                    {
+                                        continue;
+                                    }
+                                    if (btn.Tag.ToString() == function.sid)
+                                    {
+                                        if (function.online)
+                                        {
+                                            btn.UnSelectedImagePath = "Collection/Functionbg.png";
+                                            btn.IsSelected = false;
+                                        }
+                                        else
+                                        {
+                                            btn.UnSelectedImagePath = "Collection/FunctionOfflineBg.png";
+                                            btn.IsSelected = false;
+                                        }
+                                    }
+                                    else if (btn.Tag.ToString() == "OnlineTag")
+                                    {
+                                        btn.Visible = !function.online;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            });
+        }
+        /// <summary>
         /// 鏇存柊涓婚〉澶╂皵
         /// </summary>
         public static void LoadEvent_RefreshAir()
@@ -199,24 +245,20 @@
             //Dome妯″紡
             if (MainPage.NoLoginMode)
             {
-                bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.MainColor;
                 return;
             }
 
             if (!Control.Ins.GatewayOnline_Local && !Control.Ins.GatewayOnline_Cloud)
             {
                 bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipFail;
+                bodyView.btnLinkStateTip.TextID = StringId.NetworkAnomaly;
+                bodyView.environmentalView.Y = Application.GetRealHeight(8) + btnResidenceName.Bottom;
             }
             else
             {
-                if (Control.Ins.GatewayOnline_Local)
-                {
-                    bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipLocal;
-                }
-                else
-                {
-                    bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.MainColor;
-                }
+                bodyView.btnLinkStateTip.BackgroundColor = 0x00000000;
+                bodyView.btnLinkStateTip.Text = "";
+                bodyView.environmentalView.Y = Application.GetRealHeight(1) + btnResidenceName.Bottom;
             }
         }
 
@@ -244,11 +286,11 @@
                 function.collect = false;
                 if (SPK.MusicSpkList().Contains(function.spk))//澶勭悊闊充箰涓讳粠鍏崇郴
                 {
-                    if ((function as Music.A31MusicModel).ServerClientType == 1)
-                    {
-                        (function as Music.A31MusicModel).MainPlayCollection = false;
-                        Music.A31MusicModel.Save();
-                    }
+                    //if ((function as Music.A31MusicModel).ServerClientType == 1)
+                    //{
+                    //    (function as Music.A31MusicModel).MainPlayCollection = false;
+                    //    Music.A31MusicModel.Save();
+                    //}
                 }
                 string msg = function.name + Language.StringByID(StringId.CollectionCancelled);
                 LoadDeviceFunctionControlZone();
@@ -346,6 +388,11 @@
                         {
                             if (view.Tag.ToString() == function.sid)
                             {
+                                //if (!function.online)
+                                //{
+                                //    view.UnSelectedImagePath = "Collection/FunctionOfflineBg.png";
+                                //}
+
                                 var state = false;
                                 if (function.spk == SPK.CurtainRoller || function.spk == SPK.CurtainShades || function.spk == SPK.CurtainTrietex ||
                                 function.spk == SPK.CurtainSwitch)//绐楀笜璁惧鏍规嵁鐧惧垎姣斿垽鏂紑鍏崇姸鎬�
@@ -374,7 +421,7 @@
                                         {
                                             if (SPK.MusicSpkList().Contains(function.spk))
                                             {
-                                                btn.Text = (function as Music.A31MusicModel).A31PlayStatus.Title;
+                                                btn.Text =function.GetAttrState("song_name");
                                             }
                                             else
                                             {
@@ -467,6 +514,16 @@
         {
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 new System.Threading.Thread(() =>
                 {
@@ -520,6 +577,16 @@
         {
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     btnSwitch.IsSelected = !btnSwitch.IsSelected;
@@ -554,6 +621,16 @@
         {
             btnClose.MouseUpEventHandler = (sender, e) =>
             {
+                if (!curtain.online)//绂荤嚎涓嶅厑璁告搷浣�
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnClose.IsSelected = true;
                 curtain.trait_on_off.curValue = "off";
                 curtain.SetAttrState(FunctionAttributeKey.Percent, 0);
@@ -564,6 +641,16 @@
 
             btnOpen.MouseUpEventHandler = (sender, e) =>
             {
+                if (!curtain.online)//绂荤嚎涓嶅厑璁告搷浣�
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnOpen.IsSelected = true;
                 curtain.trait_on_off.curValue = "on";
                 curtain.SetAttrState(FunctionAttributeKey.Percent, 100);
@@ -584,6 +671,16 @@
             };
             btnUp.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -605,6 +702,16 @@
             };
             btnDown.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs b/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs
index 5a6a5d3..2cb9b13 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
 using Shared;
 
 namespace HDL_ON.UI
@@ -16,7 +17,7 @@
         /// <param name="updataFunction"></param>
         public void UpdataStates(Function updataFunction, FrameLayout view, VerticalScrolViewLayout scrolView, Room room = null)
         {
-            Application.RunOnMainThread((Action)(() =>
+            Application.RunOnMainThread((() =>
             {
                 try
                 {
@@ -156,12 +157,12 @@
                                     else if (SPK.MusicSpkList().Contains(updataFunction.spk))
                                     {
                                         #region 闊充箰鏇存柊
-                                        var uMusic = updataFunction as Music.A31MusicModel;
+                                        var uMusic = updataFunction;
                                         if (cTag == updataFunction.spk + "_State_" + updataFunction.sid)
                                         {
                                             try
                                             {
-                                                (fcView.GetChildren(j) as Button).IsSelected = uMusic.A31PlayStatus.status == "play";
+                                                (fcView.GetChildren(j) as Button).IsSelected = uMusic.GetAttrState("on_off") == "on";
                                             }
                                             catch (Exception ex)
                                             {
@@ -181,5 +182,49 @@
                 }
             }));
         }
+
+        public void UpdataOnlineStatus(Function updataFunction, FrameLayout view, VerticalScrolViewLayout scrolView, Room room = null)
+        {
+            Application.RunOnMainThread(() =>
+            {
+                try
+                {
+                    if (view == null || scrolView == null || updataFunction == null)
+                    {
+                        return;
+                    }
+                    if (!scrolView.ScrollEnabled)
+                    {
+                        return;
+                    }
+                    if (room != null)
+                    {
+                        if (!updataFunction.roomIds.Contains(room.roomId))
+                        {
+                            return;
+                        }
+                    }
+                    for (int i = 0; i < scrolView.ChildrenCount; i++)
+                    {
+                        if (scrolView.GetChildren(i).Tag == null || scrolView.GetChildren(i).Tag.ToString() == "")
+                        {
+                            continue;
+                        }
+                        var viewTag = scrolView.GetChildren(i).Tag.ToString();
+                        if (scrolView.GetChildren(i).Tag != null && viewTag == updataFunction.spk + updataFunction.sid)
+                        {
+                            if (scrolView.GetChildren(i).GetType() == typeof(FunctionControlZone)) {
+                                var fcView = scrolView.GetChildren(i) as FunctionControlZone;
+                                fcView.UpdataOnline(updataFunction.online);
+                            }
+                        }
+                    }
+                }catch (Exception ex)
+                {
+                    MainPage.Log("Function Online status error : " + ex.Message);
+                }
+            });
+        }
+
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
index 0e8f778..ede9b51 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
@@ -214,9 +214,12 @@
 
                             foreach (var m in Music.A31MusicModel.A31MusicModelList)
                             {
-                                if (m.roomIds.Contains(room.roomId))
+                                if (m.functionMusic.roomIds.Contains(room.roomId))
                                 {
-                                    Music.SendMethod.Pause(m);
+                                    m.functionMusic.SetAttrState("on_off", "off");
+                                    Dictionary<string, string> dic = new Dictionary<string, string>();
+                                    dic.Add("on_off", "off");
+                                    Music.SendMethod.mMethod.SendControlCommand(m.functionMusic, dic);
                                 }
                             }
                         })
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
index 9a7fe8d..8185dc9 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -1,7 +1,6 @@
 锘縰sing System;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
-using HDL_ON.UI.Music;
 using Shared;
 
 namespace HDL_ON.UI
@@ -9,7 +8,7 @@
     public partial class FunctionControlZone : FrameLayout
     {
         #region 鍖哄煙鎺т欢
-        static FrameLayout bodyDiv;
+        FunctionControlZone bodyDiv;
         /// <summary>
         /// 鍔熻兘/鍦烘櫙icon
         /// </summary>
@@ -26,6 +25,11 @@
         /// 鏀惰棌鎸夐挳
         /// </summary>
         Button btnCollectionIcon;
+        /// <summary>
+        /// 绂荤嚎鏂囨湰
+        /// </summary>
+        Button btnOffline;
+
         #endregion
 
         #region 鍖哄煙鍙橀噺
@@ -61,8 +65,9 @@
             }
             LoadDiv();
 
-            btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png";
 
+            btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png";
+            
             if (SPK.CurtainSpkList().Contains(function.spk))
             {//绐楀笜娌℃湁寮�鍏虫寜閽�
                 CurtainFragment();
@@ -90,6 +95,10 @@
                         this.AddChidren(btnTipPowerLow);
                     }
                 }
+            }
+            else if (function.spk == SPK.DoorLock)
+            {
+                btnIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/DoorLock.png";
             }
             else
             {
@@ -160,6 +169,8 @@
 
             LoadEvent_DivSkipEvent();
             LoadEvent_FunctionCollection();
+
+   
         }
 
         /// <summary>
@@ -212,9 +223,27 @@
                 UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                 IsSelected = function.collect
             };
-            if ( !SPK.ArmSensorSpkList().Contains(function.spk) && !SPK.EnvironDeviceSpkList().Contains( function.spk))//!DB_ResidenceData.Instance.CurrentRegion.isOtherShare &&
+            if ( !SPK.ArmSensorSpkList().Contains(function.spk)
+                && function.spk != SPK.DoorLock
+                && !SPK.EnvironDeviceSpkList().Contains( function.spk))//!DB_ResidenceData.Instance.CurrentRegion.isOtherShare &&
             {
                 bodyDiv.AddChidren(btnCollectionIcon);
+            }
+
+            if (!function.online)
+            {
+                bodyDiv.BackgroundColor = CSS_Color.PromptingColor2;
+                btnOffline = new Button()
+                {
+                    X = Application.GetRealWidth(8 + 10 + 32),
+                    Y = Application.GetRealHeight(28 + 24),
+                    Height = Application.GetRealHeight(30),
+                    TextID = StringId.DeviceOffline,
+                    TextColor = CSS_Color.WarningColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    TextAlignment = TextAlignment.CenterLeft
+                };
+                bodyDiv.AddChidren(btnOffline);
             }
         }
 
@@ -332,7 +361,7 @@
                 btnCurtainOpen.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainUpIcon.png";
                 btnCurtainOpen.SelectedImagePath = "FunctionIcon/Curtain/CurtainUpIconOn.png";
             }
-            LoadEvent_ControlCurtain(btnCurtainStop, btnCurtainOpen, btnCurtainClose, function);
+            LoadEvent_ControlCurtain(btnCurtainStop, btnCurtainOpen, btnCurtainClose);
             #endregion
         }
         /// <summary>
@@ -408,7 +437,7 @@
                 SelectedImagePath = "MusicIcon/nextSelected.png",
             };
             bodyDiv.AddChidren(btnNext);
-            LoadEvent_ControlMusic(btnPlay, btnNext, btnPrev, function as A31MusicModel);
+            LoadEvent_ControlMusic(btnPlay, btnNext, btnPrev, function);
             #endregion
         }
 
@@ -437,5 +466,8 @@
             };
             bodyDiv.AddChidren(btnLastStates);
         }
+
+
+
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs b/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
index cdaef53..ac47acd 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using HDL_ON.DriverLayer;
 using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
 using HDL_ON.UI.Music;
 using Shared;
 
@@ -9,54 +10,60 @@
 {
     public partial class FunctionControlZone
     {
-        /// <summary>
-        /// 鏇存柊寮�鍏崇姸鎬�
-        /// </summary>
-        /// <param name="upfunc"></param>
-        public static void UpdataOnOffState(Function upfunc)
-        {
-            if(bodyDiv!= null)
-            {
-                Application.RunOnMainThread(() => {
-                    if(bodyDiv.Tag.ToString() == upfunc.sid)
-                    {
-                        for (var o = 0; o < bodyDiv.ChildrenCount; o++)
-                        {
-                            if (bodyDiv.GetChildren(o).GetType() == typeof(Button))
-                            {
-                                var btn = bodyDiv.GetChildren(o) as Button;
-                                if (btn.Tag != null)
-                                {
-                                    if (btn.Tag.ToString() == upfunc.sid + "_Switch")// + "_DimmerBar")
-                                    {
-                                        btn.IsSelected = upfunc.trait_on_off.curValue.ToString() == "on";
-                                    }
-                                }
-                            }
-                            else if (bodyDiv.GetChildren(o).GetType() == typeof(DiyImageSeekBar))
-                            {
-                                var btn = bodyDiv.GetChildren(o) as DiyImageSeekBar;
-                                if (btn.Tag != null)
-                                {
-                                    if (btn.Tag.ToString() == upfunc.sid + "_DimmerBar")
-                                    {
-                                        btn.Progress = Convert.ToInt32(upfunc.GetAttrState(FunctionAttributeKey.Brightness));
-                                    }
-                                }
-                            }
-                        }
+        //    /// <summary>
+        //    /// 鏇存柊寮�鍏崇姸鎬�
+        //    /// </summary>
+        //    /// <param name="upfunc"></param>
+        //    public static void UpdataOnOffState(Function upfunc)
+        //    {
+        //        if(bodyDiv!= null)
+        //        {
+        //            Application.RunOnMainThread(() => {
+        //                if(bodyDiv.Tag.ToString() == upfunc.sid)
+        //                {
+        //                    for (var o = 0; o < bodyDiv.ChildrenCount; o++)
+        //                    {
+        //                        if (bodyDiv.GetChildren(o).GetType() == typeof(Button))
+        //                        {
+        //                            var btn = bodyDiv.GetChildren(o) as Button;
+        //                            if (btn.Tag != null)
+        //                            {
+        //                                if (btn.Tag.ToString() == upfunc.sid + "_Switch")// + "_DimmerBar")
+        //                                {
+        //                                    btn.IsSelected = upfunc.trait_on_off.curValue.ToString() == "on";
+        //                                }
+        //                            }
+        //                        }
+        //                        else if (bodyDiv.GetChildren(o).GetType() == typeof(DiyImageSeekBar))
+        //                        {
+        //                            var btn = bodyDiv.GetChildren(o) as DiyImageSeekBar;
+        //                            if (btn.Tag != null)
+        //                            {
+        //                                if (btn.Tag.ToString() == upfunc.sid + "_DimmerBar")
+        //                                {
+        //                                    btn.Progress = Convert.ToInt32(upfunc.GetAttrState(FunctionAttributeKey.Brightness));
+        //                                }
+        //                            }
+        //                        }
+        //                    }
 
-                    }
+        //                }
+        //            });
+        //        }
+        //    }
+        /// <summary>
+        /// 鏇存柊鍦ㄧ嚎鐘舵��
+        /// </summary>
+        public void UpdataOnline(bool online)
+        {
+            if (bodyDiv != null)
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    bodyDiv.BackgroundColor = online ? CSS_Color.MainBackgroundColor : CSS_Color.PromptingColor2;
+                    bodyDiv.btnOffline.Visible = !online;
                 });
             }
-        }
-        /// <summary>
-        /// 鏇存柊浜害鐘舵��
-        /// </summary>
-        /// <param name="upfunc"></param>
-        static void UpdataBrightnessState(Function upfunc)
-        {
-
         }
 
         /// <summary>
@@ -79,6 +86,16 @@
 
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
 
                 if(SPK.NotStatusSpkList.Contains( function.spk ))
@@ -109,34 +126,24 @@
         }
         #region 鐏厜鐨勪簨浠跺垪琛�
 
-        /// <summary>
-        /// 鐏厜寮�鍏充簨浠�
-        /// </summary>
-        void LoadEvent_LightSwitch(Button btnSwitch)
-        {
-            btnSwitch.MouseUpEventHandler += (sender, e) =>
-            {
-                btnSwitch.IsSelected = !btnSwitch.IsSelected;
-                new System.Threading.Thread(() =>
-                {
-                    if (SPK.LightSpkList().Contains( function.spk))
-                    {
-                        function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
-                        Dictionary<string, string> d = new Dictionary<string, string>();
-                        d.Add("on_off", function.trait_on_off.curValue.ToString());
-                        Control.Ins.SendWriteCommand(function, d);
-                    }
-                })
-                { IsBackground = true }.Start();
-            };
-        }
+
 
         /// <summary>
         /// 鐏厜浜害璋冭妭浜嬩欢
         /// </summary>
         void LoadEvent_LightDimming(DiyImageSeekBar dimmerControlBar)
         {
-            if(function.spk == SPK.LightDimming || function.spk == SPK.LightRGB)
+            if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+            {
+                //new Tip()
+                //{
+                //    CloseTime = 1,
+                //    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //    Direction = AMPopTipDirection.None,
+                //}.Show(MainPage.BaseView);
+                return;
+            }
+            if (function.spk == SPK.LightDimming || function.spk == SPK.LightRGB)
             {
                 dimmerControlBar.OnStartTrackingTouchEvent = (sender, e) => {
                     onDimmerBar = true;
@@ -192,41 +199,71 @@
         /// <param name="btnStop"></param>
         /// <param name="btnOpen"></param>
         /// <param name="btnClose"></param>
-        void LoadEvent_ControlCurtain(Button btnStop, Button btnOpen, Button btnClose, Function curtain)
+        void LoadEvent_ControlCurtain(Button btnStop, Button btnOpen, Button btnClose)
         {
             btnClose.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnClose.IsSelected = true;
                 btnStop.IsSelected = false;
                 btnOpen.IsSelected = false;
-                curtain.trait_on_off.curValue = "off";
-                curtain.SetAttrState(FunctionAttributeKey.Percent, 0);
+                function.trait_on_off.curValue = "off";
+                function.SetAttrState(FunctionAttributeKey.Percent, 0);
                 Dictionary<string, string> d = new Dictionary<string, string>();
-                d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString());
-                Control.Ins.SendWriteCommand(curtain, d);
+                d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(function, d);
             };
 
             btnStop.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnStop.IsSelected = true;
                 btnClose.IsSelected = false;
                 btnOpen.IsSelected = false;
-                curtain.trait_on_off.curValue = "stop";
+                function.trait_on_off.curValue = "stop";
                 Dictionary<string, string> d = new Dictionary<string, string>();
-                d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString());
-                Control.Ins.SendWriteCommand(curtain, d);
+                d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(function, d);
             };
 
             btnOpen.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnOpen.IsSelected = true;
                 btnClose.IsSelected = false;
                 btnStop.IsSelected = false;
-                curtain.trait_on_off.curValue = "on";
-                curtain.SetAttrState(FunctionAttributeKey.Percent, 100);
+                function.trait_on_off.curValue = "on";
+                function.SetAttrState(FunctionAttributeKey.Percent, 100);
                 Dictionary<string, string> d = new Dictionary<string, string>();
-                d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString());
-                Control.Ins.SendWriteCommand(curtain, d);
+                d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(function, d);
             };
         }
         #endregion
@@ -243,6 +280,16 @@
             };
             btnUp.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -264,6 +311,16 @@
             };
             btnDown.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -291,7 +348,7 @@
         /// <param name="btnOpen"></param>
         /// <param name="btnClose"></param>
         /// <param name="curtain"></param>
-        void LoadEvent_ControlMusic(Button btnPlay,Button btnNext,Button btnPrev, A31MusicModel a31player) 
+        void LoadEvent_ControlMusic(Button btnPlay,Button btnNext,Button btnPrev, Function a31player) 
         {
             if (a31player == null)
                 return;
@@ -299,7 +356,10 @@
             btnPrev.MouseDownEventHandler = (sender, e) =>
             {
                 btnPrev.IsSelected = true;
-                SendMethod.Previous(a31player);
+                a31player.SetAttrState("song_step", "up");
+                Dictionary<string, string> dic = new Dictionary<string, string>();
+                dic.Add("song_step", "up");
+                SendMethod.mMethod.SendControlCommand(a31player, dic);
             };
             btnPrev.MouseUpEventHandler = (sender, e) =>
             {
@@ -308,24 +368,30 @@
             ///鏆傚仠/鎾斁鐐瑰嚮浜嬩欢
             btnPlay.MouseDownEventHandler = (sender, e) =>
             {
+                string status = "off";
                 if (btnPlay.IsSelected)
                 {
                     btnPlay.IsSelected = false;
-                    SendMethod.Pause(a31player);
-                    a31player.A31PlayStatus.status = "pause";
+                    status = "off";
                 }
                 else
                 {
                     btnPlay.IsSelected = true;
-                    SendMethod.Play(a31player);
-                    a31player.A31PlayStatus.status = "play";
+                    status = "on";
                 }
+                a31player.SetAttrState("on_off", status);
+                Dictionary<string, string> dic = new Dictionary<string, string>();
+                dic.Add("on_off", status);
+                SendMethod.mMethod.SendControlCommand(a31player, dic);
             };
             ///涓嬩竴鏇茬偣鍑讳簨浠�
             btnNext.MouseDownEventHandler = (sender, e) =>
             {
                 btnNext.IsSelected = true;
-                SendMethod.Next(a31player);
+                a31player.SetAttrState("song_step", "down");
+                Dictionary<string, string> dic = new Dictionary<string, string>();
+                dic.Add("song_step", "down");
+                SendMethod.mMethod.SendControlCommand(a31player, dic);
             };
             btnNext.MouseUpEventHandler = (sender, e) =>
             {
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
index 3db5ac0..0d410f0 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
@@ -37,6 +37,7 @@
 
         public void LoadPage(int titleId)
         {
+
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
             if (titleId == StringId.Lights)
             {
@@ -65,6 +66,38 @@
             {
                 new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView();
             }
+
+
+
+#if DEBUG
+            Button testBtn = new Button()
+            {
+                X = Application.GetRealWidth(80),
+                Height = Application.GetRealHeight(64),
+                BackgroundColor = 0xFFFF0000
+            };
+            bodyView.AddChidren(testBtn);
+            int ddd = 0;
+            testBtn.MouseUpEventHandler = (sender, e) => {
+                ddd++;
+            
+                    Function function_online = FunctionList.List.GetLightList().Find((obj) => obj.sid == "0001017DB92D2602020100010101");
+                if (ddd % 2 == 0)
+                {
+                    function_online.online = true;
+                }
+                else
+                {
+                    function_online.online = false;
+                }
+                HomePage.LoadEvent_RefreshDevcieOnline(function_online);
+                FunctionPage.UpdataOnline(function_online);
+                RoomPage.UpdataOnline(function_online);
+
+
+            };
+#endif
+
             /// <summary>
             /// 鎴块棿鍐呭鏄剧ず鍖哄煙
             /// </summary>
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionPageBLL.cs b/HDL_ON/UI/UI2/2-Classification/FunctionPageBLL.cs
index d2ee507..8e87e01 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionPageBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionPageBLL.cs
@@ -13,6 +13,10 @@
             new ClassificaitionPublicBLL().UpdataStates(function, bodyView, functionListView);
         }
 
+        public static void UpdataOnline(Function function)
+        {
+            new ClassificaitionPublicBLL().UpdataOnlineStatus(function, bodyView, functionListView);
+        }
 
 
     }
diff --git a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
index b2138df..ab78fd4 100644
--- a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
@@ -12,7 +12,7 @@
         /// <summary>
         /// 褰撳墠绐椾綋
         /// </summary>
-        static FrameLayout bodyView;
+        public static RoomPage bodyView;
         /// <summary>
         /// 鍔熻兘鍒楄〃闆嗗悎鏄剧ず鍖哄煙
         /// </summary>
@@ -56,10 +56,13 @@
         /// <summary>
         /// 閲嶈浇鐣岄潰
         /// </summary>
-        void ReLoadPage()
+        public void ReLoadPage()
         {
-            bodyView.RemoveAll();
-            LoadPage();
+            if (bodyView != null)
+            {
+                bodyView.RemoveAll();
+                LoadPage();
+            }
         }
 
         public void LoadPage()
diff --git a/HDL_ON/UI/UI2/2-Classification/RoomPageBLL.cs b/HDL_ON/UI/UI2/2-Classification/RoomPageBLL.cs
index 6ca0ac5..5323666 100644
--- a/HDL_ON/UI/UI2/2-Classification/RoomPageBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/RoomPageBLL.cs
@@ -14,6 +14,10 @@
         {
             new ClassificaitionPublicBLL().UpdataStates(function, bodyView, functionListView,room);
         }
+        public static void UpdataOnline(Function function)
+        {
+            new ClassificaitionPublicBLL().UpdataOnlineStatus(function, bodyView, functionListView);
+        }
 
         /// <summary>
         /// 鍔犺浇浜嬩欢鍒楄〃
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
index ea0ee18..49990a0 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
@@ -3,328 +3,315 @@
 using Shared;
 namespace HDL_ON.UI.UI2.Intelligence.Automation
 {
-  public class AddInputType : FrameLayout
-  {
-    public AddInputType()
+    public class AddInputType : FrameLayout
     {
-      Tag = "Logic";
-    }
-    public void Show()
-    {
-      LogicView.TopView topView = new LogicView.TopView();
-      this.AddChidren(topView.FLayoutView());
-      topView.clickBackBtn.MouseUpEventHandler += (e, sen) =>
-      {
-        RemoveFromParent();
-      };
-      topView.topNameBtn.TextID = StringId.selectionCondition;
-
-      FrameLayout viewLayout = new FrameLayout
-      {
-        Y = Application.GetRealHeight(64),
-        Width = Application.GetRealWidth(LogicView.TextSize.view375),
-        Height = Application.GetRealHeight(LogicView.TextSize.view667 - 64),
-        BackgroundColor = CSS.CSS_Color.viewMiddle,
-      };
-      this.AddChidren(viewLayout);
-      #region 鏃堕棿  鍔熻兘 瀹ゅ鍙樺寲
-      //鏃堕棿
-      LogicView.SelectTypeView timeView = new LogicView.SelectTypeView();
-      timeView.btnText.TextID = StringId.time;
-      timeView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
-      if (MainView.IsGatewayType)
-      {
-        viewLayout.AddChidren(timeView.FLayoutView());
-      }
-
-      //鍔熻兘
-      LogicView.SelectTypeView functionView = new LogicView.SelectTypeView();
-      functionView.frameLayout.Y = timeView.frameLayout.Bottom;
-      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 sceneView = new LogicView.SelectTypeView();
-      sceneView.frameLayout.Y = functionView.frameLayout.Bottom;
-      sceneView.btnText.TextID = StringId.Scenes;
-      sceneView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
-      viewLayout.AddChidren(sceneView.FLayoutView());
-
-      //瀹ゅ鍙樺寲
-      LogicView.SelectTypeView shiwaiView = new LogicView.SelectTypeView();
-      shiwaiView.frameLayout.Y = sceneView.frameLayout.Bottom;
-      shiwaiView.btnText.TextID = StringId.shiwaibainhua;
-      shiwaiView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
-
-      if (MainView.IsGatewayType)
-      {
-        viewLayout.AddChidren(shiwaiView.FLayoutView());
-      }
-
-      //鍦扮悊鍥存爮
-      LogicView.SelectTypeView likiadaodaView = new LogicView.SelectTypeView();
-      likiadaodaView.frameLayout.Y = shiwaiView.frameLayout.Bottom;
-      likiadaodaView.btnText.TextID = StringId.likiadaoda;
-      likiadaodaView.btnIcon.UnSelectedImagePath = "LogicIcon/location.png";
-
-      if (MainView.IsGatewayType)
-      {
-        viewLayout.AddChidren(likiadaodaView.FLayoutView());
-      }
-
-      #endregion
-
-      #region  鎵�鏈夌偣鍑讳簨浠�
-      //鏃堕棿
-      timeView.btnClick.MouseUpEventHandler += (sen, e) =>
-      {
-        TimeTpye timeTpye = new TimeTpye();
-        MainPage.BasePageView.AddChidren(timeTpye);
-        timeTpye.Show();
-        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-
-      };
-      //鍔熻兘
-      functionView.btnClick.MouseUpEventHandler += (sen, e) =>
-      {
-        FunTpye funTpye = new FunTpye();
-        MainPage.BasePageView.AddChidren(funTpye);
-        funTpye.Show(LogicMethod.condition_if);
-        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-      };
-      //鍦烘櫙鐐瑰嚮浜嬩欢
-      sceneView.btnClick.MouseUpEventHandler += (sen, e) =>
-      {
-        SceneMethod();
-      };
-      //瀹ゅ鍙樺寲
-      shiwaiView.btnClick.MouseUpEventHandler += (sen, e) =>
-      {
-        //if (string.IsNullOrEmpty(Entity.DB_ResidenceData.Instance.CurrentRegion.homeAddress))//.longitude == 0 && Entity.DB_ResidenceData.Instance.CurrentRegion.latitude == 0)
-        //{
-        //    new PublicAssmebly().TipMsg(StringId.tip, StringId.GatewayLocationInformationIsNotConfigured);
-        //    return;
-        //}
-        Weather weather = new Weather();
-        MainPage.BasePageView.AddChidren(weather);
-        weather.Show();
-        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-      };
-
-      //鍦扮悊鍥存爮
-      likiadaodaView.btnClick.MouseUpEventHandler += (sen, e) =>
-      {
-        LocationView(this, false);
-      };
-      #endregion
-
-    }
-
-    /// <summary>
-    /// 娣诲姞鍦烘櫙
-    /// </summary>
-    public void SceneMethod()
-    {
-      var sceneList = LogicMethod.CurrLogicMethod.GetSceneList();
-      List<string> nameList = new List<string>();
-      for (int i = 0; i < sceneList.Count; i++)
-      {
-        var scene = sceneList[i];
-        nameList.Add(scene.name);
-      }
-      PublicInterface publicInterface = new PublicInterface();
-      publicInterface.FrameOrVv(this, nameList, new List<string> { }, StringId.addSceneLogic, (index) =>
-      {
-        var sceneSelecetd = sceneList[index];
-        Input input = new Input();
-        input.sid = sceneSelecetd.sid;
-        input.condition_type = "10";
-        Dictionary<string, string> dic = new Dictionary<string, string>();
-        LogicMethod.CurrLogicMethod.dictionary(dic, "key", "scene");
-        LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "=");
-        LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string");
-        LogicMethod.CurrLogicMethod.dictionary(dic, "value", "on");
-        input.condition.Add(dic);
-        AddCondition(input);
-        LogicMethod.CurrLogicMethod.RemoveAllView();
-        AddLogic addLogic = new AddLogic();
-        MainPage.BasePageView.AddChidren(addLogic);
-        addLogic.Show();
-        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-      });
-    }
-    /// <summary>
-    /// 娣诲姞鍦扮悊鍥存爮
-    /// </summary>
-    /// <param name="flMain">Fl main.</param>
-    /// <param name="edit">If set to <c>true</c> edit.</param>
-    public void LocationView(FrameLayout flMain, bool edit)
-    {
-      string strname = "";
-      ///閫氳繃璋冭瘯瀹濈粰鐨勭粡绾害<鏍囧噯GPS>
-      double latitude = Entity.DB_ResidenceData.Instance.CurrentRegion.latitude;//绾害
-      double longitude = Entity.DB_ResidenceData.Instance.CurrentRegion.longitude;//缁忓害
-      LogicMethod.CurrLogicMethod.WGS84_to_GCJ02(Entity.DB_ResidenceData.Instance.CurrentRegion.longitude, Entity.DB_ResidenceData.Instance.CurrentRegion.latitude, out longitude, out latitude);
-      int r = 500;//榛樿鍗婂緞
-      if (edit)
-      {
-        for (var i = 0; i < Logic.currlogic.input.Count; i++)
+        public AddInputType()
         {
-          var input = Logic.currlogic.input[i];
-          if (input.condition_type != "8")
-          {
-            continue;
-          }
-          if (input.condition[0]["value"] == "arrive")
-          {
-            //鍒拌揪鏌愬湴
-            strname = Language.StringByID(StringId.daoda);
-          }
-          else
-          {
-            //绂诲紑鍦扮偣
-            strname = Language.StringByID(StringId.likai);
-          }
-          //鍐嶄竴娆$紪杈戝湴鐞嗗洿鏍� <鎺т欢鏆傛椂涓嶆敮鎸佹樉绀鸿褰曚笂涓�娆$殑鐘舵��>
-          if (!string.IsNullOrEmpty(input.geo_fence.latitude) && !string.IsNullOrEmpty(input.geo_fence.longitude))
-          {
-            ////绾害
-            //var latitude1 = Convert.ToDouble(input.geo_fence.latitude);
-            ////缁忓害
-            //var longitude1 = Convert.ToDouble(input.geo_fence.longitude);
-            //鍗婂緞
-            r = int.Parse(input.geo_fence.radius);
-            //WGS84鍧愭爣杞珮寰峰潗鏍�
-            //LogicMethod.CurrLogicMethod.WGS84_to_GCJ02(longitude1, latitude1, out longitude, out latitude);
-          }
+            Tag = "Logic";
         }
-      }
-      PublicInterface publicInterface = new PublicInterface();
-      var list = publicInterface.GetViewList("鍦扮悊鍥存爮");
-      publicInterface.SingleSelectionShow(flMain, list, Language.StringByID(StringId.likiadaoda), strname, (str) =>
-       {
+       
+        public void Show()
+        {
+            LogicView.TopView topView = new LogicView.TopView();
+            this.AddChidren(topView.FLayoutView());
+            topView.clickBackBtn.MouseUpEventHandler += (e, sen) =>
+            {
+                RemoveFromParent();
+            };
+            topView.topNameBtn.TextID = StringId.selectionCondition;
 
-         string valueStr = "arrive";
-         if (str == Language.StringByID(StringId.daoda))
-         {
-           //鍒拌揪鏌愬湴
-           valueStr = "arrive";
-         }
-         else
-         {
-           //绂诲紑
-           valueStr = "leave";
-         }
+            FrameLayout viewLayout = new FrameLayout
+            {
+                Y = Application.GetRealHeight(64),
+                Width = Application.GetRealWidth(LogicView.TextSize.view375),
+                Height = Application.GetRealHeight(LogicView.TextSize.view667 - 64),
+                BackgroundColor = CSS.CSS_Color.viewMiddle,
+            };
+            this.AddChidren(viewLayout);
+            #region 鏃堕棿  鍔熻兘 瀹ゅ鍙樺寲
+            //鏃堕棿
+            LogicView.SelectTypeView timeView = new LogicView.SelectTypeView();
+            timeView.btnText.TextID = StringId.time;
+            timeView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
+            if (MainView.IsGatewayType)
+            {
+                viewLayout.AddChidren(timeView.FLayoutView());
+            }
+            //鍦烘櫙
+            LogicView.SelectTypeView sceneView = new LogicView.SelectTypeView();
+            sceneView.frameLayout.Y = timeView.frameLayout.Bottom;
+            sceneView.btnText.TextID = StringId.Scenes;
+            sceneView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
+            if (MainView.IsGatewayType)
+            {
+                viewLayout.AddChidren(sceneView.FLayoutView());
+            }
+            //瀹ゅ鍙樺寲
+            LogicView.SelectTypeView shiwaiView = new LogicView.SelectTypeView();
+            shiwaiView.frameLayout.Y = sceneView.frameLayout.Bottom;
+            shiwaiView.btnText.TextID = StringId.shiwaibainhua;
+            shiwaiView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
+
+            if (MainView.IsGatewayType)
+            {
+                viewLayout.AddChidren(shiwaiView.FLayoutView());
+            }
+
+            //鍦扮悊鍥存爮
+            LogicView.SelectTypeView likiadaodaView = new LogicView.SelectTypeView();
+            likiadaodaView.frameLayout.Y = shiwaiView.frameLayout.Bottom;
+            likiadaodaView.btnText.TextID = StringId.likiadaoda;
+            likiadaodaView.btnIcon.UnSelectedImagePath = "LogicIcon/location.png";
+            int count = 0;//杈撳叆绫诲瀷涓暟
+            if (MainView.IsGatewayType)
+            {
+                count = 4;
+                viewLayout.AddChidren(likiadaodaView.FLayoutView());
+            }
+            ////鍔熻兘
+            ///浜у搧缁忕悊鍚涚剷瑕佹眰锛岃澶囧姛鑳界Щ鍒拌繖閲屻��<2022-3-7>
+            new FunTpye(LogicMethod.condition_if).FunTypeView(viewLayout, likiadaodaView.frameLayout.Bottom, count);
+
+            #endregion
+
+            #region  鎵�鏈夌偣鍑讳簨浠�
+            //鏃堕棿
+            timeView.btnClick.MouseUpEventHandler += (sen, e) =>
+      {
+          TimeTpye timeTpye = new TimeTpye();
+          MainPage.BasePageView.AddChidren(timeTpye);
+          timeTpye.Show();
+          MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+      };
+            
+            //鍦烘櫙鐐瑰嚮浜嬩欢
+            sceneView.btnClick.MouseUpEventHandler += (sen, e) =>
+            {
+                SceneMethod();
+            };
+            //瀹ゅ鍙樺寲
+            shiwaiView.btnClick.MouseUpEventHandler += (sen, e) =>
+            {
+                //if (string.IsNullOrEmpty(Entity.DB_ResidenceData.Instance.CurrentRegion.homeAddress))//.longitude == 0 && Entity.DB_ResidenceData.Instance.CurrentRegion.latitude == 0)
+                //{
+                //    new PublicAssmebly().TipMsg(StringId.tip, StringId.GatewayLocationInformationIsNotConfigured);
+                //    return;
+                //}
+                Weather weather = new Weather();
+                MainPage.BasePageView.AddChidren(weather);
+                weather.Show();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+            //鍦扮悊鍥存爮
+            likiadaodaView.btnClick.MouseUpEventHandler += (sen, e) =>
+            {
+                LocationView(this, false);
+            };
+            #endregion
+
+        }
+        /// <summary>
+        /// 娣诲姞鍦烘櫙
+        /// </summary>
+        public void SceneMethod()
+        {
+            var sceneList = LogicMethod.CurrLogicMethod.GetSceneList();
+            List<string> nameList = new List<string>();
+            for (int i = 0; i < sceneList.Count; i++)
+            {
+                var scene = sceneList[i];
+                nameList.Add(scene.name);
+            }
+            PublicInterface publicInterface = new PublicInterface();
+            publicInterface.FrameOrVv(this, nameList, new List<string> { }, StringId.addSceneLogic, (index) =>
+            {
+                var sceneSelecetd = sceneList[index];
+                Input input = new Input();
+                input.sid = sceneSelecetd.sid;
+                input.condition_type = "10";
+                Dictionary<string, string> dic = new Dictionary<string, string>();
+                LogicMethod.CurrLogicMethod.dictionary(dic, "key", "scene");
+                LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "=");
+                LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string");
+                LogicMethod.CurrLogicMethod.dictionary(dic, "value", "on");
+                input.condition.Add(dic);
+                AddCondition(input);
+                LogicMethod.CurrLogicMethod.RemoveAllView();
+                AddLogic addLogic = new AddLogic();
+                MainPage.BasePageView.AddChidren(addLogic);
+                addLogic.Show();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            });
+        }
+        /// <summary>
+        /// 娣诲姞鍦扮悊鍥存爮
+        /// </summary>
+        /// <param name="flMain">Fl main.</param>
+        /// <param name="edit">If set to <c>true</c> edit.</param>
+        public void LocationView(FrameLayout flMain, bool edit)
+        {
+            string strname = "";
+            ///閫氳繃璋冭瘯瀹濈粰鐨勭粡绾害<鏍囧噯GPS>
+            double latitude = Entity.DB_ResidenceData.Instance.CurrentRegion.latitude;//绾害
+            double longitude = Entity.DB_ResidenceData.Instance.CurrentRegion.longitude;//缁忓害
+            LogicMethod.CurrLogicMethod.WGS84_to_GCJ02(Entity.DB_ResidenceData.Instance.CurrentRegion.longitude, Entity.DB_ResidenceData.Instance.CurrentRegion.latitude, out longitude, out latitude);
+            int r = 500;//榛樿鍗婂緞
+            if (edit)
+            {
+                for (var i = 0; i < Logic.currlogic.input.Count; i++)
+                {
+                    var input = Logic.currlogic.input[i];
+                    if (input.condition_type != "8")
+                    {
+                        continue;
+                    }
+                    if (input.condition[0]["value"] == "arrive")
+                    {
+                        //鍒拌揪鏌愬湴
+                        strname = Language.StringByID(StringId.daoda);
+                    }
+                    else
+                    {
+                        //绂诲紑鍦扮偣
+                        strname = Language.StringByID(StringId.likai);
+                    }
+                    //鍐嶄竴娆$紪杈戝湴鐞嗗洿鏍� <鎺т欢鏆傛椂涓嶆敮鎸佹樉绀鸿褰曚笂涓�娆$殑鐘舵��>
+                    if (!string.IsNullOrEmpty(input.geo_fence.latitude) && !string.IsNullOrEmpty(input.geo_fence.longitude))
+                    {
+                        ////绾害
+                        //var latitude1 = Convert.ToDouble(input.geo_fence.latitude);
+                        ////缁忓害
+                        //var longitude1 = Convert.ToDouble(input.geo_fence.longitude);
+                        //鍗婂緞
+                        r = int.Parse(input.geo_fence.radius);
+                        //WGS84鍧愭爣杞珮寰峰潗鏍�
+                        //LogicMethod.CurrLogicMethod.WGS84_to_GCJ02(longitude1, latitude1, out longitude, out latitude);
+                    }
+                }
+            }
+            PublicInterface publicInterface = new PublicInterface();
+            var list = publicInterface.GetViewList("鍦扮悊鍥存爮");
+            publicInterface.SingleSelectionShow(flMain, list, Language.StringByID(StringId.likiadaoda), strname, (str) =>
+             {
+
+                 string valueStr = "arrive";
+                 if (str == Language.StringByID(StringId.daoda))
+                 {
+                     //鍒拌揪鏌愬湴
+                     valueStr = "arrive";
+                 }
+                 else
+                 {
+                     //绂诲紑
+                     valueStr = "leave";
+                 }
 
 #if __Android__
-                 //鐢宠瀹氫綅鏉冮檺
-                 ((BaseActivity)Application.Activity).SetGPSLocationPermission((result1) =>
-                  {
-                    if (result1 == false) { return; }
+                       //鐢宠瀹氫綅鏉冮檺
+                       ((BaseActivity)Application.Activity).SetGPSLocationPermission((result1) =>
+                        {
+                            if (result1 == false) { return; }
 
-                  //鐢宠鍏佽绋嬪簭鍐欏叆澶栭儴瀛樺偍锛屽SD鍗′笂鍐欐枃浠�
-                  ((BaseActivity)Application.Activity).SetPermission((result2) =>
-                  {
-                    if (result2 == false) { return; }
-                       //璇诲彇鐢佃瘽鐘舵�佹潈闄�
-                       ((BaseActivity)Application.Activity).SetPermission((result3) =>
-                       {
-                         if (result3 == false) { return; }
-                         //璋冪敤鏂规硶锛岃烦杞〉闈�
-                         Location(valueStr, strname, latitude, longitude, r);
-                       }, "android.permission.READ_PHONE_STATE");
+                        //鐢宠鍏佽绋嬪簭鍐欏叆澶栭儴瀛樺偍锛屽SD鍗′笂鍐欐枃浠�
+                        ((BaseActivity)Application.Activity).SetPermission((result2) =>
+                        {
+                            if (result2 == false) { return; }
+                             //璇诲彇鐢佃瘽鐘舵�佹潈闄�
+                             ((BaseActivity)Application.Activity).SetPermission((result3) =>
+                             {
+                                 if (result3 == false) { return; }
+                                 //璋冪敤鏂规硶锛岃烦杞〉闈�
+                                 Location(valueStr, strname, latitude, longitude, r);
+                             }, "android.permission.READ_PHONE_STATE");
 
-                  }, "android.permission.WRITE_EXTERNAL_STORAGE");
-                  });
+                        }, "android.permission.WRITE_EXTERNAL_STORAGE");
+                        });
 #endif
 #if __IOS__
                //璋冪敤鏂规硶锛岃烦杞〉闈�
                   Location(valueStr, strname, latitude, longitude, r);
 #endif
-       });
+             });
 
 
-    }
-    /// <summary>
-    /// 鍦扮悊鍥存爮View
-    /// </summary>
-    /// <param name="valueStr">杩涘叆(arrive)鎴栬�呯寮�(leave)</param>
-    /// <param name="strname"></param>
-    /// <param name="latitude">绾害</param>
-    /// <param name="longitude">缁忓害</param>
-    /// <param name="r">鍗婂緞(榛樿500绫�)</param>
-    private void Location(string valueStr, string strname, double latitude, double longitude, int r)
-    {
-      if (r == 0)
-      {
-        //鎸夐亾鐞嗚涓嶄細鍑虹幇
-        r = 500;
-      }
-      //璋冪敤鏂规硶锛岃烦杞〉闈�
-      GDMapKit.Show((mLatitude, mLongitude, mRadius, name) =>
-      {
-        //楂樺痉鍧愭爣杞琖GS84鍧愭爣(楂樺痉鍦板浘璁剧疆GPS)
-        double out_lng, out_lat;
-        LogicMethod.CurrLogicMethod.GCJ02_to_WGS84(mLongitude, mLatitude, out out_lng, out out_lat);
-        Input input = new Input();
-        input.sid = LogicMethod.CurrLogicMethod.NewSid();
-        input.condition_type = "8";
-        Dictionary<string, string> dic = new Dictionary<string, string>();
-        LogicMethod.CurrLogicMethod.dictionary(dic, "key", "direction");
-        LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "=");
-        LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string");
-        LogicMethod.CurrLogicMethod.dictionary(dic, "value", valueStr);
-        input.condition.Add(dic);
-        //绾害
-        input.geo_fence.latitude = out_lat.ToString();
-        //缁忓害
-        input.geo_fence.longitude = out_lng.ToString();
-        //鍗婂緞<鍗曚綅绫�>
-        input.geo_fence.radius = mRadius.ToString();
-        AddCondition(input);
-        LogicMethod.CurrLogicMethod.RemoveAllView();
-        AddLogic addLogic = new AddLogic();
-        MainPage.BasePageView.AddChidren(addLogic);
-        addLogic.Show();
-        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-
-      }, strname, Language.StringByID(StringId.save), true, latitude, longitude, r);
-    }
-    /// <summary>
-    /// 娣诲姞鏉′欢
-    /// </summary>
-    /// <param name="input"></param>
-    private void AddCondition(Input input)
-    {
-      ///璁板綍绱㈠紩鍊�
-      int index = -1;
-      for (var i = 0; i < Logic.currlogic.input.Count; i++)
-      {
-        var condition_type = Logic.currlogic.input[i].condition_type;
-        if (condition_type == "10" || condition_type == "8")
-        {
-          //鏀寔鍦烘櫙=10锛屽湴鐞嗗洿鏍�=8
-          ///鎵惧埌鏍囪绱㈠紩锛岄��鍑哄惊鐜綋
-          index = i;
-          break;
         }
-      }
-      if (index != -1)
-      {
-        //绉婚櫎鏃ф暟鎹�
-        Logic.currlogic.input.RemoveAt(index);
-        //鏂版暟鎹彃鍏ユ棫鏁版嵁鐨勪綅缃�
-        Logic.currlogic.input.Insert(index, input);
-      }
-      else
-      {
-        Logic.currlogic.input.Add(input);
-      }
+        /// <summary>
+        /// 鍦扮悊鍥存爮View
+        /// </summary>
+        /// <param name="valueStr">杩涘叆(arrive)鎴栬�呯寮�(leave)</param>
+        /// <param name="strname"></param>
+        /// <param name="latitude">绾害</param>
+        /// <param name="longitude">缁忓害</param>
+        /// <param name="r">鍗婂緞(榛樿500绫�)</param>
+        private void Location(string valueStr, string strname, double latitude, double longitude, int r)
+        {
+            if (r == 0)
+            {
+                //鎸夐亾鐞嗚涓嶄細鍑虹幇
+                r = 500;
+            }
+            //璋冪敤鏂规硶锛岃烦杞〉闈�
+            GDMapKit.Show((mLatitude, mLongitude, mRadius, name) =>
+            {
+                //楂樺痉鍧愭爣杞琖GS84鍧愭爣(楂樺痉鍦板浘璁剧疆GPS)
+                double out_lng, out_lat;
+                LogicMethod.CurrLogicMethod.GCJ02_to_WGS84(mLongitude, mLatitude, out out_lng, out out_lat);
+                Input input = new Input();
+                input.sid = LogicMethod.CurrLogicMethod.NewSid();
+                input.condition_type = "8";
+                Dictionary<string, string> dic = new Dictionary<string, string>();
+                LogicMethod.CurrLogicMethod.dictionary(dic, "key", "direction");
+                LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "=");
+                LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string");
+                LogicMethod.CurrLogicMethod.dictionary(dic, "value", valueStr);
+                input.condition.Add(dic);
+                //绾害
+                input.geo_fence.latitude = out_lat.ToString();
+                //缁忓害
+                input.geo_fence.longitude = out_lng.ToString();
+                //鍗婂緞<鍗曚綅绫�>
+                input.geo_fence.radius = mRadius.ToString();
+                AddCondition(input);
+                LogicMethod.CurrLogicMethod.RemoveAllView();
+                AddLogic addLogic = new AddLogic();
+                MainPage.BasePageView.AddChidren(addLogic);
+                addLogic.Show();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+            }, strname, Language.StringByID(StringId.save), true, latitude, longitude, r);
+        }
+        /// <summary>
+        /// 娣诲姞鏉′欢
+        /// </summary>
+        /// <param name="input"></param>
+        private void AddCondition(Input input)
+        {
+            ///璁板綍绱㈠紩鍊�
+            int index = -1;
+            for (var i = 0; i < Logic.currlogic.input.Count; i++)
+            {
+                var condition_type = Logic.currlogic.input[i].condition_type;
+                if (condition_type == "10" || condition_type == "8")
+                {
+                    //鏀寔鍦烘櫙=10锛屽湴鐞嗗洿鏍�=8
+                    ///鎵惧埌鏍囪绱㈠紩锛岄��鍑哄惊鐜綋
+                    index = i;
+                    break;
+                }
+            }
+            if (index != -1)
+            {
+                //绉婚櫎鏃ф暟鎹�
+                Logic.currlogic.input.RemoveAt(index);
+                //鏂版暟鎹彃鍏ユ棫鏁版嵁鐨勪綅缃�
+                Logic.currlogic.input.Insert(index, input);
+            }
+            else
+            {
+                Logic.currlogic.input.Add(input);
+            }
+        }
+        
     }
-  }
 }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
index ba94b4d..839696d 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
@@ -29,15 +29,8 @@
             };
             this.AddChidren(viewLayout);
             #region 鍔熻兘
-            //鍔熻兘
-            LogicView.SelectTypeView functionView = new LogicView.SelectTypeView();
-            functionView.btnText.TextID = StringId.funLogic;
-            functionView.btnIcon.UnSelectedImagePath = "LogicIcon/functionicon.png";
-            viewLayout.AddChidren(functionView.FLayoutView());
-
             //鍦烘櫙
             LogicView.SelectTypeView sceneView= new LogicView.SelectTypeView();
-            sceneView.frameLayout.Y = functionView.frameLayout.Bottom;
             sceneView.btnText.TextID = StringId.Scenes;
             sceneView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
             viewLayout.AddChidren(sceneView.FLayoutView());
@@ -55,18 +48,13 @@
             delayView.btnText.TextID = StringId.delayLogic;
             delayView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
             //viewLayout.AddChidren(delayView.FLayoutView());
+
+            ////鍔熻兘
+            ///浜у搧缁忕悊鍚涚剷瑕佹眰锛岃澶囧姛鑳界Щ鍒拌繖閲屻��<2022-3-7>
+            new FunTpye(LogicMethod.target_if).FunTypeView(viewLayout, securityView.frameLayout.Bottom, 2);
             #endregion
 
             #region  鎵�鏈夌偣鍑讳簨浠�
-            //鍔熻兘鐐瑰嚮浜嬩欢
-            functionView.btnClick.MouseUpEventHandler += (sen, e) =>
-            {
-                FunTpye funTpye = new FunTpye();
-                MainPage.BasePageView.AddChidren(funTpye);
-                funTpye.Show(LogicMethod.target_if);
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-
-            };
             //鍦烘櫙鐐瑰嚮浜嬩欢
             sceneView.btnClick.MouseUpEventHandler += (sen, e) =>
             {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
index 01a0587..f8370df 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -667,6 +667,8 @@
         {
             if (edit)
             {
+                ///
+                this.function = device;
                 Input inputs = Logic.currlogic.input[index];
                 //娓呴櫎涔嬪墠鏃ф暟鎹�
                 dicSateteList.Clear();
@@ -854,6 +856,9 @@
         private bool Is_SpkAttribute(string key) {
             ///淇敼鏂板睘鎬�
             ///璇嗗埆浣跨敤鍔熻兘鏄惁瀛樺湪灞炴��
+            if (this.function==null) {
+                return false;
+            }
             var job = this.function.GetAttribute(key);
             if (job != null)
             {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs
index addf896..4cf6765 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs
@@ -5,44 +5,39 @@
 
 namespace HDL_ON.UI.UI2.Intelligence.Automation
 {
-    public class FunTpye : FrameLayout
+    public class FunTpye
     {
-        public FunTpye()
+        public FunTpye(string str)
         {
-            Tag = "Logic";
+            if_type = str;
         }
-        /// <summary>
-        /// 榛樿閫変腑鏄埧闂存椂锛氬叏閮ㄥ尯鍩�
-        /// </summary>
-        private Entity.Room selectedRoom = new Entity.Room { roomId ="6688" };
         /// <summary>
         /// 琛ㄧず鏄�(鏉′欢/鐩爣)
         /// </summary>
         private string if_type;
-        public void Show(string str)
-        {
-            
-            if_type = str;
-            this.BackgroundColor = CSS.CSS_Color.viewMiddle;
-            LogicView.TopView topView = new LogicView.TopView();
-            this.AddChidren(topView.FLayoutView());
-            topView.clickBackBtn.MouseUpEventHandler += (e, sen) =>
-            {
-                RemoveFromParent();
-            };
-            topView.topNameBtn.TextID = StringId.selectedFunCondition;
 
+        /// <summary>
+        /// 璁惧鍔熻兘ui
+        /// </summary>
+        /// <param name="viewLayout">鐖舵帶浠�</param>
+        /// <param name="bottm"></param>
+        /// <param name="funCount">鏀寔鍔熻兘绫诲瀷涓暟<琛ㄧず涓婇潰鎵�鍗犻珮搴�></param>
+        public void FunTypeView(FrameLayout viewLayout,int bottm,int funCount) {
             LogicView.FunAllAreaView funAllAreaView = new LogicView.FunAllAreaView();
-            funAllAreaView.frameLayout.Y = topView.frameLayout.Bottom;
-            this.AddChidren(funAllAreaView.FLayoutView());
-
+            funAllAreaView.frameLayout.Y = bottm + Application.GetRealHeight(8);
+            viewLayout.AddChidren(funAllAreaView.FLayoutView());
             VerticalScrolViewLayout vv = new VerticalScrolViewLayout
             {
-                Y = Application.GetRealHeight(117),
-                Height = Application.GetRealHeight(667 - 117),
+                Y = funAllAreaView.frameLayout.Bottom,
+                Height = Application.GetRealHeight(667 - 64 - 50 * funCount - 8),
             };
-            this.AddChidren(vv);
-
+            viewLayout.AddChidren(vv);
+            if (!MainView.IsGatewayType)
+            {
+                //濡傛灉鏄痓us缃戝叧閲嶇疆楂樺害;
+                funAllAreaView.frameLayout.Y = Application.GetRealHeight(0);
+                vv.Y = funAllAreaView.frameLayout.Bottom;
+            }
             //鎴块棿鐐瑰嚮浜嬩欢
             EventHandler<MouseEventArgs> roomClick = (sender, e) =>
             {
@@ -51,7 +46,7 @@
                 {
                     BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                 };
-                this.AddChidren(fLayout);
+                viewLayout.AddChidren(fLayout);
                 fLayout.MouseUpEventHandler += (sender1, e1) =>
                 {
                     fLayout.RemoveFromParent();
@@ -60,7 +55,7 @@
                 FrameLayout bghFrameLyout = new FrameLayout
                 {
                     X = Application.GetRealWidth(10),
-                    Y = Application.GetRealHeight(103),
+                    Y = Application.GetRealHeight(103 + 50 * funCount + 8-64),
                     Width = Application.GetRealWidth(160),
                     Height = Application.GetRealHeight(21 + 44),
                     //BackgroundImagePath = "LogicIcon/bjicon.png",
@@ -82,7 +77,7 @@
                     Height = Application.GetRealHeight(44 * 5),
                 };
                 var roomList = LogicMethod.CurrLogicMethod.GetGatewayRoomList(Language.StringByID(StringId.allAreas));
-               
+
                 if (roomList.Count > 5)
                 {
                     bghFrameLyout.Height = Application.GetRealHeight(21 + 44 * 5);
@@ -120,13 +115,17 @@
                         funAllAreaView.btnText1.Text = (areaView.btnClick.Tag as Entity.Room).roomName;
                         ///鍒囨崲鎴块棿榛樿鍔熻兘绫诲瀷鍏ㄩ儴;
                         funAllAreaView.btnText2.Text = Language.StringByID(StringId.allFun);
-                        selectedRoom = (areaView.btnClick.Tag as Entity.Room);
+                        //selectedRoom = (areaView.btnClick.Tag as Entity.Room);
+                        UserInfo.Current.logicselectedRoom = (areaView.btnClick.Tag as Entity.Room);
+                        ///鍒囨崲鎴块棿榛樿:鍏ㄩ儴鍔熻兘
+                        UserInfo.Current.logicselectedFunction = Language.StringByID(StringId.allFun);
                         ///鑾峰彇鏄剧ず璁惧鍒楄〃
-                        var list = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(areaView.btnClick.Tag as Entity.Room,if_type);
+                        var list = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(areaView.btnClick.Tag as Entity.Room, if_type);
 
                         DeviceListView(vv, list);
                     };
-                    if (roomList.Count-1==i) {
+                    if (roomList.Count - 1 == i)
+                    {
                         ///鏀瑰彉鏈�鍚庨偅鏉′竴涓嚎鐨勯鑹�,鐣岄潰鏄剧ず鏁堟灉浣滅敤;
                         areaView.btnLine.BackgroundColor = CSS.CSS_Color.view;
                     }
@@ -134,14 +133,16 @@
             };
             funAllAreaView.btnText1.MouseUpEventHandler += roomClick;
             funAllAreaView.btnIcon1.MouseUpEventHandler += roomClick;
-            //鍔熻兘鐐瑰嚮浜嬩欢
-            EventHandler<MouseEventArgs> funClick = (sender3, e3) =>{
+            //鍔熻兘绫诲瀷鐐瑰嚮浜嬩欢
+            EventHandler<MouseEventArgs> funClick = (sender3, e3) =>
+            {
 
                 //鑾峰彇鏈�缁堟樉绀哄垪琛�
-                var functionList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(selectedRoom, if_type);
+                var functionList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_type);
                 //鑾峰彇璁惧鍒楄〃鐨勭被鍨嬶紙渚嬪锛氱伅鍏夌被锛岀獥甯樼被銆傘�傘�傦級
                 var deviceTypeList = LogicMethod.CurrLogicMethod.GetDeviceTypeList(functionList);
-                if (deviceTypeList.Count==0) {
+                if (deviceTypeList.Count == 0)
+                {
                     //娌℃湁绫诲瀷鐩存帴杩斿洖鍘�;
                     return;
                 }
@@ -150,7 +151,7 @@
                 {
                     BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                 };
-                this.AddChidren(fLayout);
+                viewLayout.AddChidren(fLayout);
                 fLayout.MouseUpEventHandler += (sender1, e1) =>
                 {
                     fLayout.RemoveFromParent();
@@ -159,7 +160,7 @@
                 FrameLayout bghFrameLyout = new FrameLayout
                 {
                     X = Application.GetRealWidth(118),
-                    Y = Application.GetRealHeight(103),
+                    Y = Application.GetRealHeight(103 + 50 * funCount + 8-64),
                     Width = Application.GetRealWidth(160),
                     Height = Application.GetRealHeight(21 + 44),
                     //BackgroundImagePath = "LogicIcon/bjicon5.png",
@@ -181,7 +182,7 @@
                     Height = Application.GetRealHeight(44 * 5),
                 };
 
-           
+
 
 
                 if (deviceTypeList.Count > 5)
@@ -218,11 +219,13 @@
                     {
                         fLayout.RemoveFromParent();
                         funAllAreaView.btnText2.Text = areaView.btnClick.Tag.ToString();
-                        ///鑾峰彇鍗曚釜绫诲瀷锛堜緥濡傦細鐏厜绫汇�傘�傦級璁惧FunctionType鍒楄〃
-                        var typeFunctionList = LogicMethod.CurrLogicMethod.GetDeviceTypeFunctionList(areaView.btnClick.Tag.ToString());
-                        ///鑾峰彇鍗曚釜鐏厜绫诲瀷锛堜緥濡傦細鐏厜1,鐏厜2銆傘�傦級鏄剧ず璁惧鍒楄〃
-                        var lists = LogicMethod.CurrLogicMethod.GetShowDeviceList(typeFunctionList, functionList);
-                        DeviceListView(vv, lists);
+                        UserInfo.Current.logicselectedFunction = areaView.btnClick.Tag.ToString();
+                        ///鑾峰彇鍗曚釜绫诲瀷锛堜緥濡傦細鐏厜绫汇�傘�傦級璁惧FunctionType鍒楄〃<绠�绉�:spk鍒楄〃>
+                        var typeFunctionList2 = LogicMethod.CurrLogicMethod.GetDeviceTypeFunctionList(UserInfo.Current.logicselectedFunction);
+                        ///鑾峰彇鍗曚釜鐏厜绫诲瀷锛堜緥濡傦細鐏厜1,鐏厜2銆傘�傦級璁惧鍒楄〃
+                        var lists2 = LogicMethod.CurrLogicMethod.GetShowDeviceList(typeFunctionList2, functionList);
+                        DeviceListView(vv, lists2);
+
                     };
                     if (deviceTypeList.Count - 1 == i)
                     {
@@ -233,18 +236,28 @@
             };
             funAllAreaView.btnText2.MouseUpEventHandler += funClick;
             funAllAreaView.btnIcon2.MouseUpEventHandler += funClick;
-            ///鑾峰彇鏄剧ず璁惧鍒楄〃
-            var deviceList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(selectedRoom, if_type);
-            DeviceListView(vv, deviceList);
-
+            ///鑾峰彇鎴块棿鏀寔鐨勮澶囧垪琛�
+            var deviceList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_type);
+            ///鑾峰彇鍗曚釜绫诲瀷锛堜緥濡�:鐏厜绫汇�傘�傦級璁惧FunctionType鍒楄〃<绠�绉�:spk鍒楄〃>
+            var typeFunctionList = LogicMethod.CurrLogicMethod.GetDeviceTypeFunctionList(UserInfo.Current.logicselectedFunction);
+            ///鑾峰彇鍗曚釜鐏厜绫诲瀷锛堜緥濡傦細鐏厜1,鐏厜2銆傘�傦級璁惧鍒楄〃
+            var lists = LogicMethod.CurrLogicMethod.GetShowDeviceList(typeFunctionList, deviceList);
+            ///鎴块棿鍚嶇О
+            funAllAreaView.btnText1.Text = UserInfo.Current.logicselectedRoom.roomName;
+            ///鍔熻兘绫诲瀷鍚嶇О<鐏厜绫汇�傘�傘�傘�傘��>
+            funAllAreaView.btnText2.Text = UserInfo.Current.logicselectedFunction;
+            DeviceListView(vv, lists);
         }
+
+
         /// <summary>
         /// 鏄剧ず璁惧鐨刅iew
         /// </summary>
         /// <param name="verticalScrolView">涓婁笅婊戝姩</param>
         /// <param name="deviceList"></param>
-        public void DeviceListView(VerticalScrolViewLayout verticalScrolView, List<HDL_ON.Entity.Function>  deviceList)
+        public void DeviceListView(VerticalScrolViewLayout verticalScrolView, List<HDL_ON.Entity.Function> deviceList)
         {
+
             verticalScrolView.RemoveAll();
             foreach (var dev in deviceList)
             {
@@ -258,19 +271,22 @@
                 funView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(dev.spk);
                 funView.btnDeviceName.Text = dev.name;
                 funView.btnRoomName.Text = dev.GetRoomListName();
-                funView.btnClick.MouseUpEventHandler += (sen,e) => {
-                    if (if_type == LogicMethod.condition_if) {
+                funView.btnClick.MouseUpEventHandler += (sen, e) => {
+                    if (if_type == LogicMethod.condition_if)
+                    {
                         ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList();
                         MainPage.BasePageView.AddChidren(conditionDeviceFunList);
                         conditionDeviceFunList.Show(dev, 0, false);
                         MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                    } else {
+                    }
+                    else
+                    {
                         TargetDeviceFunList targetDeviceFunList = new TargetDeviceFunList();
                         MainPage.BasePageView.AddChidren(targetDeviceFunList);
                         targetDeviceFunList.Show(dev, 0, false);
                         MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                     }
-                   
+
                 };
             }
         }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
index e6fc71d..b9c6f17 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -939,6 +939,7 @@
                             targetView.btnText.Text = device.name;
                             //鏀瑰彉璁惧鍚嶇О鏄剧ず鎺т欢瀹藉害
                             targetView.btnText.Width = Application.GetRealWidth(80);
+                            targetView.btnDelay.Visible = false;
                             //鍖哄埆涓嶅悓璁惧锛屾樉绀轰笉鍚岃澶囩姸鎬�
                             switch (device.spk)
                             {
@@ -1361,7 +1362,7 @@
                 {
 
                     InpOrOutLogicMethod inpOrOutLogicMethod = new InpOrOutLogicMethod();
-                    inpOrOutLogicMethod.Delayed(thisView, outputTarget, (value) =>
+                    inpOrOutLogicMethod.Delayed(thisView, outputTarget.delay, (value) =>
                     {
                         outputTarget.delay = value.ToString();
                         if (outputTarget.target_type == "1")
@@ -2092,10 +2093,10 @@
         /// <summary>
         /// 寤舵椂鏃堕棿鏂规硶
         /// </summary>
-        /// <param name="fLayout">鍦ㄥ摢涓晫闈㈡樉绀�</param>
-        /// <param name="edit">锛坱rue=缂栬緫锛沠alse=鏂板缓锛�</param>
-        /// <param name="index">缂栬緫鏉′欢鐨勭储寮�</param>
-        private void Delayed(FrameLayout thisFLayout, Output output, Action<int> action)
+        /// <param name="thisFLayout">鍦ㄥ摢涓晫闈㈡樉绀�</param>
+        /// <param name="delay">褰撳墠寤舵椂鏃堕棿</param>
+        /// <param name="action">鍥炶皟鍑芥暟</param>
+        public void Delayed(FrameLayout thisFLayout, string delay, Action<int> action)
         {
             FrameLayout fLayout = new FrameLayout
             {
@@ -2119,9 +2120,9 @@
             //瀹氫箟涓�涓眬閮ㄥ彉閲忚褰曢�変腑鏃堕棿
             int timepoint = 5;
 
-            if (output.delay != "0")
+            if (delay != "0")
             {
-                int intValue = int.Parse(output.delay);
+                int intValue = int.Parse(delay);
                 var m = intValue / 60;
                 var s = intValue % 60;
 
@@ -2137,8 +2138,8 @@
             //閫変腑鏃堕棿鍥炶皟鏂规硶,鏃堕棿鍙樺寲涓�娆″洖璋冧竴娆�
             timePointView.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
             {
-                string minuet = timePointView.GethStringList0()[index1].Split(' ')[0];
-                string second = timePointView.GetmStringList()[index2].Split(' ')[0];
+                string minuet = timePointView.GetmStringList()[index1].Split(' ')[0];
+                string second = timePointView.GetsStringList()[index2].Split(' ')[0];
                 int minuetIntValue = int.Parse(minuet);
                 int secondIntValue = int.Parse(second);
                 timepoint = minuetIntValue * 60 + secondIntValue;
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
index bbbea86..6f70600 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
@@ -26,9 +26,13 @@
         /// </summary>
         public string sid = "";
         /// <summary>
+        /// 鏄惁鍏佽鍒犻櫎(false=鍙互鍒犻櫎)
+        /// </summary>
+        public bool tag = false;
+        /// <summary>
         /// 閫昏緫鍚嶇О
         /// </summary>
-        public string name = "鑷姩鍖�";
+        public string name = "";
         /// <summary>
         /// 閫昏緫鏉′欢鍏崇郴锛堜笌and:锛屾垨:or锛�
         /// </summary>
@@ -159,7 +163,7 @@
         /// <summary>
         /// 閫氱煡鍐呭
         /// </summary>
-        public string noticeContent = "鑷姩鍖栧凡缁忔墽琛�";//string.Empty;
+        public string noticeContent = Shared.Language.StringByID(StringId.Automation)+ Shared.Language.StringByID(StringId.yizhixing); //string.Empty;
     }
     /// <summary>
     /// 鎺ㄩ�侀厤缃�
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
index 9b788f2..bd6a462 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -494,74 +494,119 @@
     public List<string> GetDeviceTypeFunctionList(string deviceType)
     {
       List<string> functionTypeList = new List<string>();
-      ///鐏厜绫�
-      if (deviceType == Language.StringByID(StringId.Lights))
-      {
-        functionTypeList.Add(SPK.LightSwitch);
-        functionTypeList.Add(SPK.LightDimming);
-        functionTypeList.Add(SPK.LightRGB);
-        functionTypeList.Add(SPK.LightRGBW);
-        functionTypeList.Add(SPK.LightCCT);
-        functionTypeList.Add(SPK.AirSwitch);
-        functionTypeList.Add(SPK.PanelSocket);
-        functionTypeList.Add(SPK.ElectricSocket);
-      }
-      ///绐楀笜绫�
-      else if (deviceType == Language.StringByID(StringId.Curtain))
-      {
-        functionTypeList.Add(SPK.CurtainSwitch);
-        functionTypeList.Add(SPK.CurtainRoller);
-        functionTypeList.Add(SPK.CurtainTrietex);
-      }
-      ///绌鸿皟绫�
-      else if (deviceType == Language.StringByID(StringId.AC))
-      {
-        functionTypeList.Add(SPK.AcStandard);
-        functionTypeList.Add(SPK.HvacAC);
-      }
-      ///鍦版殩绫�
-      else if (deviceType == Language.StringByID(StringId.FloorHeating))
-      {
-        functionTypeList.Add(SPK.FloorHeatStandard); functionTypeList.Add(SPK.HvacFloorHeat);
-      }
-      ///鏂伴绫�
-      else if (deviceType == Language.StringByID(StringId.AirFresh))
-      {
-        functionTypeList.Add(SPK.AirFreshStandard); functionTypeList.Add(SPK.HvacAirFresh);
-      }
-      ///浼犳劅鍣ㄧ被
-      else if (deviceType == Language.StringByID(StringId.Sensor))
-      {
-        functionTypeList.Add(SPK.SensorSmoke);
-        functionTypeList.Add(SPK.SensorWater);
-        functionTypeList.Add(SPK.SensorGas);
-        functionTypeList.Add(SPK.SensorDryContact); functionTypeList.Add(SPK.SensorDryContact2);
-        functionTypeList.Add(SPK.SensorShanLan);
-        functionTypeList.Add(SPK.SensorDuiShe);
-        functionTypeList.Add(SPK.SensorPir);
-        functionTypeList.Add(SPK.SensorDoorWindow);
-        functionTypeList.Add(SPK.SensorUtrasonic);
-        functionTypeList.Add(SPK.SenesorMegahealth);
-        functionTypeList.Add(SPK.SenesorMegahealth2);
-        functionTypeList.Add(SPK.SensorEnvironment);
-        functionTypeList.Add(SPK.SensorEnvironment2);
-        functionTypeList.Add(SPK.SensorEnvironment3);
-        functionTypeList.Add(SPK.SensorTemperature);
-        functionTypeList.Add(SPK.SensorHumidity);
-        functionTypeList.Add(SPK.SensorCO2);
-        functionTypeList.Add(SPK.SensorPm25);
-        functionTypeList.Add(SPK.SensorTVOC);
-        functionTypeList.Add(SPK.SensorHcho);
+            ///鐏厜绫�
+            if (deviceType == Language.StringByID(StringId.Lights))
+            {
+                functionTypeList.Add(SPK.LightSwitch);
+                functionTypeList.Add(SPK.LightDimming);
+                functionTypeList.Add(SPK.LightRGB);
+                functionTypeList.Add(SPK.LightRGBW);
+                functionTypeList.Add(SPK.LightCCT);
+                functionTypeList.Add(SPK.AirSwitch);
+                functionTypeList.Add(SPK.PanelSocket);
+                functionTypeList.Add(SPK.ElectricSocket);
+            }
+            ///绐楀笜绫�
+            else if (deviceType == Language.StringByID(StringId.Curtain))
+            {
+                functionTypeList.Add(SPK.CurtainSwitch);
+                functionTypeList.Add(SPK.CurtainRoller);
+                functionTypeList.Add(SPK.CurtainTrietex);
+            }
+            ///绌鸿皟绫�
+            else if (deviceType == Language.StringByID(StringId.AC))
+            {
+                functionTypeList.Add(SPK.AcStandard);
+                functionTypeList.Add(SPK.HvacAC);
+            }
+            ///鍦版殩绫�
+            else if (deviceType == Language.StringByID(StringId.FloorHeating))
+            {
+                functionTypeList.Add(SPK.FloorHeatStandard); functionTypeList.Add(SPK.HvacFloorHeat);
+            }
+            ///鏂伴绫�
+            else if (deviceType == Language.StringByID(StringId.AirFresh))
+            {
+                functionTypeList.Add(SPK.AirFreshStandard); functionTypeList.Add(SPK.HvacAirFresh);
+            }
+            ///浼犳劅鍣ㄧ被
+            else if (deviceType == Language.StringByID(StringId.Sensor))
+            {
+                functionTypeList.Add(SPK.SensorSmoke);
+                functionTypeList.Add(SPK.SensorWater);
+                functionTypeList.Add(SPK.SensorGas);
+                functionTypeList.Add(SPK.SensorDryContact); functionTypeList.Add(SPK.SensorDryContact2);
+                functionTypeList.Add(SPK.SensorShanLan);
+                functionTypeList.Add(SPK.SensorDuiShe);
+                functionTypeList.Add(SPK.SensorPir);
+                functionTypeList.Add(SPK.SensorDoorWindow);
+                functionTypeList.Add(SPK.SensorUtrasonic);
+                functionTypeList.Add(SPK.SenesorMegahealth);
+                functionTypeList.Add(SPK.SenesorMegahealth2);
+                functionTypeList.Add(SPK.SensorEnvironment);
+                functionTypeList.Add(SPK.SensorEnvironment2);
+                functionTypeList.Add(SPK.SensorEnvironment3);
+                functionTypeList.Add(SPK.SensorTemperature);
+                functionTypeList.Add(SPK.SensorHumidity);
+                functionTypeList.Add(SPK.SensorCO2);
+                functionTypeList.Add(SPK.SensorPm25);
+                functionTypeList.Add(SPK.SensorTVOC);
+                functionTypeList.Add(SPK.SensorHcho);
 
 
-      }
-      ///瀹剁數绫�
-      else if (deviceType == Language.StringByID(StringId.Electric))
-      {
-        functionTypeList.Add(SPK.AirSwitch);
-        functionTypeList.Add(SPK.PanelSocket);
-        functionTypeList.Add(SPK.ElectricSocket);
-      }
+            }
+            ///瀹剁數绫�
+            else if (deviceType == Language.StringByID(StringId.Electric))
+            {
+                functionTypeList.Add(SPK.AirSwitch);
+                functionTypeList.Add(SPK.PanelSocket);
+                functionTypeList.Add(SPK.ElectricSocket);
+            }
+            else {
+                functionTypeList.Add(SPK.LightSwitch);
+                functionTypeList.Add(SPK.LightDimming);
+                functionTypeList.Add(SPK.LightRGB);
+                functionTypeList.Add(SPK.LightRGBW);
+                functionTypeList.Add(SPK.LightCCT);
+                functionTypeList.Add(SPK.AirSwitch);
+                functionTypeList.Add(SPK.PanelSocket);
+                functionTypeList.Add(SPK.ElectricSocket);
+                functionTypeList.Add(SPK.CurtainSwitch);
+                functionTypeList.Add(SPK.CurtainRoller);
+                functionTypeList.Add(SPK.CurtainTrietex);
+                functionTypeList.Add(SPK.AcStandard);
+                functionTypeList.Add(SPK.HvacAC);
+                functionTypeList.Add(SPK.FloorHeatStandard);
+                functionTypeList.Add(SPK.HvacFloorHeat);
+                functionTypeList.Add(SPK.AirFreshStandard);
+                functionTypeList.Add(SPK.HvacAirFresh);
+                functionTypeList.Add(SPK.SensorSmoke);
+                functionTypeList.Add(SPK.SensorWater);
+                functionTypeList.Add(SPK.SensorGas);
+                functionTypeList.Add(SPK.SensorDryContact);
+                functionTypeList.Add(SPK.SensorDryContact2);
+                functionTypeList.Add(SPK.SensorShanLan);
+                functionTypeList.Add(SPK.SensorDuiShe);
+                functionTypeList.Add(SPK.SensorPir);
+                functionTypeList.Add(SPK.SensorDoorWindow);
+                functionTypeList.Add(SPK.SensorUtrasonic);
+                functionTypeList.Add(SPK.SenesorMegahealth);
+                functionTypeList.Add(SPK.SenesorMegahealth2);
+                functionTypeList.Add(SPK.SensorEnvironment);
+                functionTypeList.Add(SPK.SensorEnvironment2);
+                functionTypeList.Add(SPK.SensorEnvironment3);
+                functionTypeList.Add(SPK.SensorTemperature);
+                functionTypeList.Add(SPK.SensorHumidity);
+                functionTypeList.Add(SPK.SensorCO2);
+                functionTypeList.Add(SPK.SensorPm25);
+                functionTypeList.Add(SPK.SensorTVOC);
+                functionTypeList.Add(SPK.SensorHcho);
+                functionTypeList.Add(SPK.AirSwitch);
+                functionTypeList.Add(SPK.PanelSocket);
+                functionTypeList.Add(SPK.ElectricSocket);
+
+
+            }
 
 
       return functionTypeList;
@@ -885,9 +930,9 @@
                 continue;
               }
               //鑷姩鍖栭厤缃緭鍏ユ潯浠剁含搴�
-              double lat = Convert.ToDouble(logicDate.geo_fence.latitude);
+              double lat = Convert.ToDouble(logicDate.geo_fence.latitude.Replace(",", "."));
               //鑷姩鍖栭厤缃緭鍏ユ潯浠剁粡搴�
-              double lon = Convert.ToDouble(logicDate.geo_fence.longitude);
+              double lon = Convert.ToDouble(logicDate.geo_fence.longitude.Replace(",", "."));
               //鑷姩鍖栭厤缃緭鍏ユ潯浠�<鍦扮悊鍥存爮鍗婂緞><鍗曚綅锛屽叕閲屻�佸崈绫�.绫�>
               int radius = int.Parse(logicDate.geo_fence.radius);
               //璁$畻2涓粡绾害涔嬮棿鐨勮窛绂�
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/AddOutputInputView.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/AddOutputInputView.cs
index 9f8dc40..96dc683 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/AddOutputInputView.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/AddOutputInputView.cs
@@ -55,11 +55,11 @@
         public Button btnState = new Button
         {
             TextSize = TextSize.text12,
-            Width = Application.GetRealWidth(130),
+            Width = Application.GetRealWidth(130+20),
             Height = Application.GetRealHeight(17),
             TextColor = CSS.CSS_Color.textCancelColor,
             Y = Application.GetRealHeight(14),
-            X = Application.GetRealWidth(165),
+            X = Application.GetRealWidth(165-10),
             TextAlignment = TextAlignment.CenterRight,
         };
 
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/FunAllAreaView.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/FunAllAreaView.cs
index 9f803da..cdcd840 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/FunAllAreaView.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/FunAllAreaView.cs
@@ -37,7 +37,6 @@
             X = Application.GetRealWidth(34),
             TextAlignment = TextAlignment.CenterLeft,
             TextID=StringId.allAreas,
-            
         };
 
         /// <summary>
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/SingleLogicView.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/SingleLogicView.cs
index 2a67225..3ee8fd6 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/SingleLogicView.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/SingleLogicView.cs
@@ -81,6 +81,19 @@
 
         };
         /// <summary>
+        /// 鏄剧ず鏄惁鍒犻櫎鏍囧織
+        /// </summary>
+        public Button btnIsDelTag = new Button
+        {
+            Width = Application.GetRealWidth(10),
+            Height = Application.GetRealWidth(10),
+            Y = Application.GetRealHeight(12),
+            X = Application.GetRealWidth(295 + 36 - 10),
+            Radius = (uint)Application.GetRealHeight(5),
+            BackgroundColor = 0xFFFF0000,
+            Visible = false,
+        };
+        /// <summary>
         /// 鐐瑰嚮浜嬩欢
         /// </summary>
         public Button btnclick= new Button
@@ -101,6 +114,7 @@
             frameLayout.AddChidren(btnLienIcon);
             frameLayout.AddChidren(btnclick);
             frameLayout.AddChidren(btnSwitchIcon);
+            frameLayout.AddChidren(btnIsDelTag);
             return frameLayout;
         }
     }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
index f38003b..66fe538 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
@@ -81,6 +81,8 @@
                     })
                     { IsBackground = true }.Start();
                 };
+
+
                 GetSelectIcon(logicView.frameLayout, currLogic);
                 if (i == 0)//闄嶅簭鎺掑垪
                 //if (Logic.LogicList.Count - 1 == i)
@@ -95,6 +97,15 @@
                 else
                 {
                     logicView.btnSwitchIcon.IsSelected = false;
+                }
+                ///鏄剧ず鐗规畩鑷姩鍖栨爣蹇�
+                if (currLogic.tag == true)
+                {
+                    logicView.btnIsDelTag.Visible = true;
+                }
+                else
+                {
+                    logicView.btnIsDelTag.Visible = false;
                 }
             }
 
@@ -288,6 +299,7 @@
                         {
 
                             Logic newlogic = new Logic();
+                            newlogic.tag = logic.tag;
                             newlogic.name = logic.name;
                             newlogic.userLogicId = logic.userLogicId;
                             newlogic.sid = logic.sid;
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/PublicInterface.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/PublicInterface.cs
index 7398574..d23adfd 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/PublicInterface.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/PublicInterface.cs
@@ -682,7 +682,7 @@
                 case "time":
                     {
                         list = new List<string> {
-                   "30 s",
+                   //"30 s",
                    "1 min",
                    "2 min",
                    "3 min",
@@ -966,7 +966,7 @@
                             case "(115,150]": {
                                     text = Language.StringByID(StringId.pmzhongdu);
                                 } break;
-                            case "(151,100000]": {
+                            case "(150,100000]": {
                                     text = Language.StringByID(StringId.pmzhongduwuran);
                                 } break;
                         }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
index e52e8e3..8cae2d3 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
@@ -163,6 +163,7 @@
         var logicIfon = new JObject { };
         logicIfon.Add("sid", logic.sid);
         logicIfon.Add("gatewayId", LogicMethod.CurrLogicMethod.GatewayId);
+        logicIfon.Add("tag", logic.tag);
         logicIfon.Add("name", logic.name);
         logicIfon.Add("relation", logic.relation);
         logicIfon.Add("enable", logic.enable);
@@ -287,6 +288,7 @@
         logicIfon.Add("userLogicId", logic.userLogicId);
         logicIfon.Add("sid", logic.sid);
         logicIfon.Add("gatewayId", LogicMethod.CurrLogicMethod.GatewayId);
+        logicIfon.Add("tag", logic.tag);
         logicIfon.Add("name", logic.name);
         logicIfon.Add("relation", logic.relation);
         logicIfon.Add("enable", logic.enable);
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Set.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Set.cs
index 7113132..06795e1 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Set.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Set.cs
@@ -81,7 +81,11 @@
                 BackgroundColor = CSS.CSS_Color.view,
                 Gravity = Gravity.BottomCenter,//缃簳鐨勫睘鎬�
             };
-            this.AddChidren(frameLayout);
+            ///鍙互鏄剧ず鍒犻櫎鎺т欢
+            if (Logic.currlogic.tag == false)
+            {
+                this.AddChidren(frameLayout);
+            }
             Button btnDel = new Button
             {
                 TextSize = LogicView.TextSize.text16,
@@ -94,6 +98,7 @@
             frameLayout.AddChidren(btnDel);
 
 
+
             EventHandler<MouseEventArgs> delClick = (sender, e) =>
             {
                 Loading loading = new Loading();
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
index 4e8a634..9866147 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
@@ -12,6 +12,14 @@
             Tag = "Logic";
         }
         /// <summary>
+        /// 璁惧寤舵椂鏃堕棿
+        /// </summary>
+        private string strdelay = "0";
+        /// <summary>
+        /// 鏄剧ず璁惧寤舵椂鏃堕棿
+        /// </summary>
+        private Button btnDelay =null;
+        /// <summary>
         /// 瀹氫箟涓�涓褰曢�変腑璁惧鐘舵�佸垪琛紱
         /// </summary>
         private List<Dictionary<string, string>> dicSateteList = new List<Dictionary<string, string>>();
@@ -59,6 +67,9 @@
                         LogicView.FunTypeView lightSwitchView = new LogicView.FunTypeView();
                         lightSwitchView.btnText.TextID = StringId.switchLogic;
                         fLayout.AddChidren(lightSwitchView.FLayoutView());
+
+                        ///璁惧寤舵椂iewv
+                        DelayView(fLayout, lightSwitchView.frameLayout.Bottom);
                         #endregion
                         #region 鐐瑰嚮浜嬩欢
                         ///寮�鍏崇偣鍑讳簨浠�
@@ -91,6 +102,8 @@
                         brightnessView.btnText.TextID = StringId.brightnesLogic;
                         fLayout.AddChidren(brightnessView.FLayoutView());
                         brightnessView.btnState.Text = "5%";//浜у搧缁忕悊鏅撹緣瑕佹眰鏀圭殑 2021-11-06
+                        ///璁惧寤舵椂iewv
+                        DelayView(fLayout, brightnessView.frameLayout.Bottom);
                         #endregion
                         #region 鐐瑰嚮浜嬩欢
                         ///寮�鍏崇偣鍑讳簨浠�
@@ -122,6 +135,8 @@
                         LogicView.FunTypeView curtainSwitchView = new LogicView.FunTypeView();
                         curtainSwitchView.btnText.TextID = StringId.switchLogic;
                         fLayout.AddChidren(curtainSwitchView.FLayoutView());
+                        ///璁惧寤舵椂iewv
+                        DelayView(fLayout, curtainSwitchView.frameLayout.Bottom);
                         #endregion
                         #region 鐐瑰嚮浜嬩欢
                         ///寮�鍏崇偣鍑讳簨浠�
@@ -163,6 +178,8 @@
                         acSpeedView.frameLayout.Y = acModehView.frameLayout.Bottom;
                         acSpeedView.btnText.TextID = StringId.speedLogic;
                         fLayout.AddChidren(acSpeedView.FLayoutView());
+                        ///璁惧寤舵椂iewv
+                        DelayView(fLayout, acModehView.frameLayout.Bottom);
                         #endregion
                         #region 鐐瑰嚮浜嬩欢
                         ///寮�鍏崇偣鍑讳簨浠�
@@ -260,7 +277,8 @@
                         floorHeatingModehView.btnText.TextID = StringId.modeLogic;
                         fLayout.AddChidren(floorHeatingModehView.FLayoutView());
 
-
+                        ///璁惧寤舵椂iewv
+                        DelayView(fLayout, floorHeatingModehView.frameLayout.Bottom);
                         #endregion
                         #region 鐐瑰嚮浜嬩欢
                         ///寮�鍏崇偣鍑讳簨浠�
@@ -333,6 +351,9 @@
                         AirFreshSpeedView.frameLayout.Y = AirFreshSwitchVie.frameLayout.Bottom;
                         AirFreshSpeedView.btnText.TextID = StringId.speedLogic;
                         fLayout.AddChidren(AirFreshSpeedView.FLayoutView());
+
+                        ///璁惧寤舵椂iewv
+                        DelayView(fLayout, AirFreshSpeedView.frameLayout.Bottom);
                         #endregion
                         #region 鐐瑰嚮浜嬩欢
                         ///寮�鍏崇偣鍑讳簨浠�
@@ -413,6 +434,7 @@
                     Output outputDevice = new Output();
                     outputDevice.target_type = "1";
                     outputDevice.sid = device.sid;
+                    outputDevice.delay= strdelay;
                     switch (device.spk)
                     {
                         case SPK.LightDimming:
@@ -477,7 +499,7 @@
                     if (edit)
                     {
                         //鏇存柊寤舵椂鏃堕棿
-                        outputDevice.delay = Logic.currlogic.output[index].delay;
+                        outputDevice.delay = strdelay;//Logic.currlogic.output[index].delay;
                         //绉婚櫎鏃ф暟鎹�
                         Logic.currlogic.output.RemoveAt(index);
                         //鏂版暟鎹彃鍏ユ棫鏁版嵁鐨勪綅缃�;
@@ -508,6 +530,34 @@
             #endregion
 
         }
+        /// <summary>
+        /// 寤舵椂View
+        /// </summary>
+        /// <param name="fLayout">鐖舵帶浠�</param>
+        /// <param name="bottomY">鍦ㄥ摢涓帶浠朵笅闈�</param>
+        private void DelayView(FrameLayout fLayout, int bottomY)
+        {
+            LogicView.FunTypeView delayView = new LogicView.FunTypeView();
+            delayView.frameLayout.Y = bottomY;
+            delayView.btnText.TextID = StringId.Delay;
+            delayView.btnState.Text = strdelay + "s";
+            fLayout.AddChidren(delayView.FLayoutView());
+            ///璧嬪�煎璞�
+            this.btnDelay = delayView.btnState;
+            ///寤舵椂鐐瑰嚮浜嬩欢
+            delayView.btnClick.MouseUpEventHandler += (sender, e) =>
+            {
+                InpOrOutLogicMethod inpOrOutLogicMethod = new InpOrOutLogicMethod();
+                inpOrOutLogicMethod.Delayed(this, strdelay, (value) =>
+                {
+                    selectedState = "delay_" + strdelay;
+                    strdelay = value.ToString();
+                    delayView.btnState.Text = strdelay + "s";
+                });
+            };
+
+        }
+
         /// <summary>
         /// 寮�鍏�=鍔熻兘涓嬩竴绾х晫闈�
         /// </summary>
@@ -613,6 +663,12 @@
                 //鏈夋暟鎹噸鏂拌祴鍊�
                 dicSateteList = dicList;
             }
+            if (this.btnDelay != null)
+            {
+                ///寤舵椂鏄剧ず鏂囨湰
+                this.btnDelay.Text = outputs.delay + "s";
+                this.strdelay = outputs.delay;
+            }
             InpOrOutLogicMethod.EditState(device, dicList, button1, button2, button3, button4);
         }
         /// <summary>
diff --git a/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs b/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
index cc585e6..cab41f5 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
@@ -695,7 +695,7 @@
                     btnAutomationTitle.TextSize = CSS_FontSize.TextFontSize;
                     btnSceneTilte.IsSelected = false;
                     btnSceneTilte.TextSize = CSS_FontSize.TextFontSize;
-                    contentPageView.PageIndex = 2;
+                    contentPageView.PageIndex = contentPageView.ChildrenCount - 1;
                 };
             }
         }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
index c660e9e..f70fc3b 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
@@ -436,7 +436,10 @@
                         var tempScene = sceneList.Find((obj) => obj.userSceneId == scene.userSceneId);
                         if (tempScene != null)
                         {
-                            scene = tempScene;
+                            scene.name = tempScene.name;
+                            scene.delay = tempScene.delay;
+                            scene.roomIds = tempScene.roomIds;
+                            scene.functions = tempScene.functions;
                         }
                         Application.RunOnMainThread(() =>
                         {
@@ -839,6 +842,12 @@
             UploadImage(selectImagePath, addSceneImageView, scene, uploadSuccessAction);
         }
 
+        public override void RemoveFromParent()
+        {
+            backAction();
+            base.RemoveFromParent();
+        }
+
         /// <summary>
         /// 瀹屾垚鎸夐挳鐐瑰嚮浜嬩欢
         /// </summary>
@@ -868,7 +877,7 @@
                     }
                     scene.EditScene();
                     FunctionList.List.scenes.Add(scene);
-                    backAction();
+                    //backAction();
                     this.RemoveFromParent();
                 }
                 if (btnComplete.TextID == StringId.Del)
@@ -876,7 +885,7 @@
                     Action action = () =>
                     {
                         FunctionList.List.DeleteScene(scene,true);
-                        backAction();
+                        //backAction();
                         this.RemoveFromParent();
                     };
                     new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.DeleteSceneTip, action);
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
index 4973f51..97d6306 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
@@ -148,7 +148,15 @@
                 
                 if (temp != null)
                 {
-                    temp = sceneFunction;
+                    temp.delay = sceneFunction.delay;
+                    foreach(var attr in sceneFunction.status)
+                    {
+                        var keva = temp.status.Find((obj) => obj.key == attr.key);
+                        if (keva != null)
+                        {
+                            keva.value = attr.value;
+                        }
+                    }
                 }
                 else
                 {
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/AboutOnPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/AboutOnPage.cs
index a9abca7..710917c 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/AboutOnPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/AboutOnPage.cs
@@ -184,6 +184,43 @@
             #endregion
             privacyPolicyView.GoAction = privacyPolicyAction;
             CheckIfNeedUpdateAsync();
+
+#if __IOS__
+            #region 鍥轰欢鍗囩骇
+            var firUpdateView = new ListCellView()
+            {
+                Y = privacyPolicyView.Bottom,
+            };
+            firUpdateView.BtnTilte.TextID = StringId.FirmwareUpdate;
+            bodyView.AddChidren(firUpdateView);
+            Action firmwareUpdateAction = () =>
+            {
+                var mPage = new HDL_ON.UI.UI2.PersonalCenter.AboutOn.FirmwareUpdateView();
+                MainPage.BasePageView.AddChidren(mPage);
+                mPage.ShowPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+            firUpdateView.GoAction = firmwareUpdateAction;
+            #endregion
+
+
+            #region HomeKit鏀寔璇存槑
+            var homeKitView = new ListCellView()
+            {
+                Y = firUpdateView.Bottom,
+            };
+            bodyView.AddChidren(homeKitView);
+            homeKitView.BtnTilte.TextID = StringId.SupportHomeKitNotes;
+            Action homeKitSupportViewAction = () => {
+                var mPage = new HDL_ON.UI.UI2.PersonalCenter.AboutOn.SupportHomeKitNotesPage();
+                MainPage.BasePageView.AddChidren(mPage);
+                mPage.ShowPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+            homeKitView.GoAction = homeKitSupportViewAction;
+            #endregion
+#endif
+
         }
 
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FirmwareUpdateView.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FirmwareUpdateView.cs
new file mode 100644
index 0000000..da10e26
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FirmwareUpdateView.cs
@@ -0,0 +1,63 @@
+锘縰sing System;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI.UI2.PersonalCenter.AboutOn
+{
+    public class FirmwareUpdateView : FrameLayout
+    {
+        FirmwareUpdateView bodyView;
+        public FirmwareUpdateView()
+        {
+            bodyView = this;
+        }
+
+        public void ShowPage()
+        {
+            new TopViewDiv(bodyView, Language.StringByID(StringId.FirmwareUpdate)).LoadTopView();
+
+            var contentView = new VerticalScrolViewLayout()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealHeight(90),
+                Height = bodyView.Height,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            bodyView.AddChidren(contentView);
+
+            var waitPage = new Loading();
+            bodyView.AddChidren(waitPage);
+            waitPage.Start();
+            new System.Threading.Thread(() =>
+            {
+                System.Threading.Thread.Sleep(2000);
+                Application.RunOnMainThread(() =>
+                {
+                    string msg = "";
+                    if (Language.CurrentLanguage == "Chinese")
+                    {
+                        msg = "褰撳墠鎵�鏈夎澶囧凡缁忔槸鏈�鏂板浐浠剁増鏈��";
+                    }
+                    else
+                    {
+                        msg = "Currently, all devices have the latest firmware version.";
+                    }
+                    var msgTv = new Button()
+                    {
+                        Text = msg,
+                        TextColor = CSS_Color.FirstLevelTitleColor,
+                        TextSize = CSS_FontSize.SubheadingFontSize,
+                        IsMoreLines = true,
+                        TextAlignment = TextAlignment.TopLeft
+                    };
+                    contentView.AddChidren(msgTv);
+                    waitPage.Hide();
+                    waitPage.RemoveFromParent();
+                });
+            }).Start();
+
+
+
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/SupportHomeKitNotesPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/SupportHomeKitNotesPage.cs
new file mode 100644
index 0000000..6c6bb36
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/SupportHomeKitNotesPage.cs
@@ -0,0 +1,69 @@
+锘縰sing System;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI.UI2.PersonalCenter.AboutOn
+{
+    public class SupportHomeKitNotesPage : FrameLayout
+    {
+        SupportHomeKitNotesPage bodyView;
+
+        public SupportHomeKitNotesPage()
+        {
+            bodyView = this;
+        }
+        public void ShowPage()
+        {
+            new TopViewDiv(bodyView, Language.StringByID(StringId.SupportHomeKitNotes)).LoadTopView();
+
+            var contentView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(90),
+                Height = bodyView.Height ,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            bodyView.AddChidren(contentView);
+
+            string msg = "";
+            if (Language.CurrentLanguage == "Chinese")
+            {
+                msg = "鐩墠HDL骞冲彴宸叉敮鎸佸悜鑻规灉搴旂敤鈥滃搴�滱pp 娣诲姞 HomeKit 閰嶄欢銆�" + "\r\n" +
+                        "鐩墠鏀寔娣诲姞鍒扳�滃搴�濈殑閰嶄欢鏈塇DL gateway銆丠DL light绛夈��" + "\r\n" +
+                        "鎮ㄥ彲浠ヤ娇鐢� iPhone銆乮Pad 鎴� iPod touch锛屾寜鐓т互涓嬫楠ゆ搷浣滐紝鍚戔�滃搴�滱pp 娣诲姞閰嶄欢锛�" + "\r\n" +
+                        "1銆佹墦寮�鈥滃搴�滱pp锛岀劧鍚庤交鐐光�滄坊鍔犻厤浠垛�� 鎴栤�滄坊鍔犫�濄��" + "\r\n" +
+                        "2銆佽交鐐光�滄坊鍔犻厤浠垛�濄��" + "\r\n" +
+                        "3銆佷娇鐢� iPhone銆乮Pad 鎴� iPod touch 涓婄殑鎽勫儚澶存壂鎻忛厤浠舵垨閰嶄欢鏂囩涓殑鍏綅 HomeKit 浠g爜鎴栦簩缁寸爜銆傚鏋滄偍浣跨敤鐨勬槸 iPhone 7 鎴栨洿鏂版満鍨嬶紝骞跺湪鎮ㄧ殑閰嶄欢涓婄湅鍒颁簡 NFC 鍏煎绗﹀彿锛岃灏嗘偍鐨� iPhone 闈犺繎杩欎釜閰嶄欢浠ヨ繘琛屾坊鍔犮��" + "\r\n" +
+                        "4銆佸湪閰嶄欢鍑虹幇鏃惰交鐐瑰畠銆傚鏋滅郴缁熻闂偍瑕佷笉瑕佲�滃皢閰嶄欢娣诲姞鍒扮綉缁溾�濓紝璇疯交鐐光�滃厑璁糕�濄��" + "\r\n" +
+                        "5銆佷负閰嶄欢鍛藉悕骞跺皢閰嶄欢鍒嗛厤缁欐煇涓埧闂达紝浠ュ崗鍔╂偍鍦ㄢ�滃搴�滱pp 涓瘑鍒畠鍜屼娇鐢� Siri 瀵瑰畠杩涜鎺у埗銆�" + "\r\n" +
+                        "6銆佽交鐐光�滀笅涓�姝モ�濓紝鐒跺悗杞荤偣鈥滃畬鎴愨�濄��";
+            }
+            else
+            {
+                msg = "At present, the HDL platform has supported adding homekit accessories to Apple's \"home\" app." + "\r\n" +
+                        "At present, HDL gateway, HDL light and other accessories can be added to \"home\"." + "\r\n" +
+                        "You can use iPhone, iPad or iPod touch to add accessories to the home app by following these steps: " + "\r\n" +
+                        "1.Open the home app and tap add accessories or add." + "\r\n" +
+                        "2.Tap add fitting." + "\r\n" +
+                        "3.Use the camera on iPhone, iPad or iPod touch to scan the eight digit homekit code or QR code in the accessory or accessory manuscript.If you are using iPhone 7 or later and see the NFC compatibility symbol on your accessory, please put your iPhone close to this accessory to add it." + "\r\n" +
+                        "4.Tap the accessory when it appears.If the system asks you whether you want to \"add accessories to the network\", tap \"allow\"." + "\r\n" +
+                        "5.Name the accessory and assign it to a room to help you identify it in the home app and use Siri to control it." + "\r\n" +
+                        "6.Tap next, then finish.";
+            }
+            var msgTv = new Button()
+            {
+                X = Application.GetRealWidth(35),
+                Y = Application.GetRealHeight(12),
+                Width = Application.GetRealWidth(300),
+                IsMoreLines = true,
+                Text = msg,
+                TextAlignment = TextAlignment.TopLeft,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.TextFontSize,
+            };
+            contentView.AddChidren(msgTv);
+
+
+        }
+
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddQingpingSensorEnvirTipPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddQingpingSensorEnvirTipPage.cs
index 9d62c19..85e8739 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddQingpingSensorEnvirTipPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddQingpingSensorEnvirTipPage.cs
@@ -29,11 +29,11 @@
             if (Language.CurrentLanguage == "Chinese")
             {
                 //璁剧疆澶撮儴淇℃伅
-                base.SetTitleText(Language.StringByID(StringId.Add) + device.productName);
+                base.SetTitleText(Language.StringByID(StringId.Add) + device.ProductShowName);
             }
             else
             {
-                base.SetTitleText(Language.StringByID(StringId.Add) + " " + device.productName);
+                base.SetTitleText(Language.StringByID(StringId.Add) + " " + device.ProductShowName);
             }
             //杩欎釜鐣岄潰鐨勮儗鏅渶瑕佺櫧鑹�
             bodyFrameLayout.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor;
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddSensorEnvironmentPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddSensorEnvironmentPage.cs
index e5fae96..e4130c3 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddSensorEnvironmentPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddSensorEnvironmentPage.cs
@@ -32,11 +32,11 @@
             if (Language.CurrentLanguage == "Chinese")
             {
                 //璁剧疆澶撮儴淇℃伅
-                base.SetTitleText(Language.StringByID(StringId.Add) + device.productName);
+                base.SetTitleText(Language.StringByID(StringId.Add) + device.ProductShowName);
             }
             else
             {
-                base.SetTitleText(Language.StringByID(StringId.Add) + " " + device.productName);
+                base.SetTitleText(Language.StringByID(StringId.Add) + " " + device.ProductShowName);
             }
             //杩欎釜鐣岄潰鐨勮儗鏅渶瑕佺櫧鑹�
             bodyFrameLayout.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor;
@@ -160,7 +160,7 @@
                         try
                         {
                             var pm = new HttpServerRequest();
-                            var pack = pm.IndependentRegister3TyDevcie(integratedDevice.spk, snCode,integratedDevice.productName,pairString);// Language.StringByID(StringId.SensorEnvironment)
+                            var pack = pm.IndependentRegister3TyDevcie(integratedDevice.spk, snCode,integratedDevice.ProductShowName, pairString);// Language.StringByID(StringId.SensorEnvironment)
                             if (pack.Code == StateCode.SUCCESS)
                             {
                                 //var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IntegratedBrandDevice>>(pack.Data.ToString());
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs
index 0cf3b86..d4501dc 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs
@@ -31,11 +31,11 @@
             if (Language.CurrentLanguage == "Chinese")
             {
                 //璁剧疆澶撮儴淇℃伅
-                base.SetTitleText(Language.StringByID(StringId.Add) + device.productName);
+                base.SetTitleText(Language.StringByID(StringId.Add) + device.ProductShowName);
             }
             else
             {
-                base.SetTitleText(Language.StringByID(StringId.Add) + " " + device.productName);
+                base.SetTitleText(Language.StringByID(StringId.Add) + " " + device.ProductShowName);
             }
             //杩欎釜鐣岄潰鐨勮儗鏅渶瑕佺櫧鑹�
             bodyFrameLayout.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor;
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
index 68ac66b..cc9e0f0 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
@@ -139,7 +139,7 @@
                     TextAlignment = TextAlignment.CenterLeft,
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     TextSize = CSS_FontSize.TextFontSize,
-                    Text = device.productName,
+                    Text = device.ProductShowName,
                 };
                 row.AddChidren(btnName);
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
index ccba2be..b1e3fa5 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
@@ -3,6 +3,7 @@
 using HDL_ON.UI;
 using HDL_ON.UI.CSS;
 using Shared;
+using Foundation;
 
 namespace HDL_ON.UI
 {
@@ -174,6 +175,17 @@
         Button btnFaceManagementText;
         #endregion
 
+        #region 涓汉閫夐」-璁垮绠$悊
+        /// <summary>
+        /// 涓汉閫夐」-璁垮绠$悊
+        ///
+        /// </summary>
+        FrameLayout visitorManagementView;
+        /// <summary>
+        /// 浜鸿劯閫氳绠$悊鏂囨湰isitor
+        /// </summary>
+        Button btnisitorVManagementText;
+        #endregion
 
         #endregion
 
@@ -266,10 +278,21 @@
             };
             bodyScrolView.AddChidren(optionListView);
 
+            //鏍规嵁闇�瑕佹坊鍔犺
+            int addRow = 0;
             if(Entity.DB_ResidenceData.Instance.SupportFacePass)
             {
-                optionListView.Height = Application.GetRealHeight(51 * (6 + 1));
+                addRow += 1;
             }
+
+            if (Entity.DB_ResidenceData.Instance.SupportVisitorManage)
+            {
+                addRow += 1;
+            }
+
+            //鏈夊叏瑙嗛�氱殑鎯呭喌
+            optionListView.Height = Application.GetRealHeight(51 * (6 + addRow));
+
 
             #region 涓汉閫夐」-鍚嶅瓧鍖哄煙
             /// <summary>
@@ -678,6 +701,51 @@
 
             }
 
+            //璁垮绠$悊
+            #region 涓汉閫夐」-璁垮绠$悊
+            if (Entity.DB_ResidenceData.Instance.SupportVisitorManage)//鍒ゆ柇鏄惁鏀寔璁垮绠$悊
+            {
+                optionListView.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
+
+                visitorManagementView = new FrameLayout()
+                {
+                    Height = Application.GetRealHeight(50),
+                };
+                optionListView.AddChidren(visitorManagementView);
+
+
+                var btnVisitorManagementRight = new Button()
+                {
+                    X = Application.GetRealWidth(339),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetMinRealAverage(16),
+                    Height = Application.GetMinRealAverage(16),
+                    UnSelectedImagePath = "Public/Right.png",
+                };
+                visitorManagementView.AddChidren(btnVisitorManagementRight);
+
+                btnisitorVManagementText = new Button()
+                {
+                    X = Application.GetRealWidth(16),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextSize = CSS_FontSize.SubheadingFontSize,
+                    TextID = StringId.VisitorManage,
+                };
+                visitorManagementView.AddChidren(btnisitorVManagementText);
+
+                btnisitorVManagementText.MouseUpEventHandler = (sender, e) =>
+                {
+                    //鍒锋柊鎺ュ彛璇锋眰鎵�闇�瑕佺殑鍙傛暟
+                    NSDictionary info = new NSDictionary("regionUrl", HttpUtil.GlobalRequestHttpsHost, "token", UserInfo.Current.LoginTokenString, "appkey", "HDL-HOME-APP-TEST", "secret", "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss", "refreshToken", UserInfo.Current.RefreshToken);
+                    Shared.IOS.HDLFVSDK.Video.RefreshInfo(info);
+                    //璺宠浆璁垮绠$悊鐣岄潰
+                    Shared.IOS.HDLFVSDK.Video.ShowVisitorManager();
+                };
+            }
+
+
+            #endregion
             #endregion
             var topPaddingView2 = new FrameLayout()
             {
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs
index 15ceafd..9ad21a0 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs
@@ -147,7 +147,9 @@
                             });
                         }
                     }
-                    catch { }
+                    catch (Exception ex) {
+                        MainPage.Log(ex.Message);
+                    }
                     finally
                     {
                         Application.RunOnMainThread(() => {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
index e683de0..cd5aefc 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
@@ -118,7 +118,7 @@
         /// </summary>
         private void InitFrameWhiteContent1()
         {
-            temp = (int)Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp));
+            temp = (int)Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."));
             arcBar = new DiyArcSeekBar()
             {
                 Gravity = Gravity.CenterHorizontal,
@@ -147,7 +147,7 @@
             arcBar.IsOffline = device.GetAttrState(FunctionAttributeKey.OnOff) == "off";
             arcBar.MinValue = device.GetAttribute(FunctionAttributeKey.SetTemp).min;
             arcBar.MaxValue = device.GetAttribute(FunctionAttributeKey.SetTemp).max;
-            arcBar.Progress = (int)Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp));
+            arcBar.Progress = (int)Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."));
 
             btnTemp = new Button()
             {
@@ -158,7 +158,7 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = 50,
                 IsBold = true,
-                Text = Convert.ToDouble( device.GetAttrState(FunctionAttributeKey.SetTemp)).ToString(),
+                Text = Convert.ToDouble( device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")).ToString(),
                 TextAlignment = TextAlignment.Center,
             };
             FrameWhiteCentet1.AddChidren(btnTemp);
@@ -358,6 +358,15 @@
                 };
                 EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
                 {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                    }
                     btnModeIcon.IsSelected = btnModeText.IsSelected = true;
                     device.SetAttrState(FunctionAttributeKey.Mode, m);
                     btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(m);
@@ -485,6 +494,15 @@
                 };
                 EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
                 {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                    }
                     btnModeIcon.IsSelected = btnModeText.IsSelected = true;
                     device.SetAttrState(FunctionAttributeKey.Swing, m);
                     btnSwing.UnSelectedImagePath = acFunction.GetSwingIconPath(m);
@@ -600,6 +618,15 @@
                 };
                 EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
                 {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                    }
                     btnFanIcon.IsSelected = btnFanText.IsSelected = true;
                     device.SetAttrState(FunctionAttributeKey.FanSpeed, m);
                     btnWindSpeed.UnSelectedImagePath = acFunction.GetFanIconPath(m);
@@ -787,6 +814,15 @@
 
                 btn.MouseUpEventHandler = (sender, e) =>
                 {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                    }
                     Dictionary<string, string> d = new Dictionary<string, string>();
                     d.Add(attr.key, "");
                     Control.Ins.SendWriteCommand(device, d);
@@ -841,11 +877,20 @@
         {
             btnMinus.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
                 {
                     return;
                 }
-                
+
                 if (temp <= device.GetAttribute(FunctionAttributeKey.SetTemp).min)
                 {
                     return;
@@ -862,6 +907,15 @@
             };
             btnPlus.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
                 {
                     return;
@@ -879,31 +933,33 @@
                 d.Add(FunctionAttributeKey.SetTemp, temp.ToString());
                 Control.Ins.SendWriteCommand(device, d);
             };
-            arcBar.OnStopTrackingTouchEvent = (sender, e) =>
+            if (!device.online)
             {
-                temp = arcBar.Progress;
-                device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
-                btnTemp.Text = arcBar.Progress.ToString();
-                controlTime = DateTime.Now;
-                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
-                Control.Ins.SendWriteCommand(device, d);
-            };
-            arcBar.OnProgressChangedEvent = (sender, e) =>
-            {
-                device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString());
-                btnTemp.Text = e.ToString();
-            };
-            //arcBar.MouseDownEventHandler = (sender, e) => {
-            //    Console.WriteLine("ddd");
-            //    MainPage.BasePageView.ScrollEnabled =false;
-            //};
-            //arcBar.MouseUpEventHandler = (sender, e) => {
-            //    Console.WriteLine("ddd2");
-            //    MainPage.BasePageView.ScrollEnabled = true;
-            //};
+                arcBar.OnStopTrackingTouchEvent = (sender, e) =>
+                {
+                    temp = arcBar.Progress;
+                    device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
+                    btnTemp.Text = arcBar.Progress.ToString();
+                    controlTime = DateTime.Now;
+                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
+                    Control.Ins.SendWriteCommand(device, d);
+                };
+                arcBar.OnProgressChangedEvent = (sender, e) =>
+                {
+                    device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString());
+                    btnTemp.Text = e.ToString();
+                };
+                //arcBar.MouseDownEventHandler = (sender, e) => {
+                //    Console.WriteLine("ddd");
+                //    MainPage.BasePageView.ScrollEnabled =false;
+                //};
+                //arcBar.MouseUpEventHandler = (sender, e) => {
+                //    Console.WriteLine("ddd2");
+                //    MainPage.BasePageView.ScrollEnabled = true;
+                //};
+            }
         }
-
 
         /// <summary>
         /// 鎺у埗妯″紡浜嬩欢
@@ -938,6 +994,15 @@
 
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 device.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                 if (device.trait_on_off.curValue.ToString() == "on")
@@ -976,14 +1041,14 @@
                 }
                 else
                 {
-                    btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.RoomTemp))) + "掳C";
+                    btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.RoomTemp).Replace(",", "."))) + "掳C";
                     btnMode.SelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode));
                     btnSwing.SelectedImagePath = acFunction.GetSwingIconPath(device.GetAttrState(FunctionAttributeKey.Swing));
                     btnWindSpeed.SelectedImagePath = acFunction.GetFanIconPath(device.GetAttrState(FunctionAttributeKey.FanSpeed));
                     btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode), false);
                     btnSwing.UnSelectedImagePath = acFunction.GetSwingIconPath(device.GetAttrState(FunctionAttributeKey.Swing), false);
                     btnWindSpeed.UnSelectedImagePath = acFunction.GetFanIconPath(device.GetAttrState(FunctionAttributeKey.FanSpeed), false);
-                    temp = Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp)));
+                    temp = Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")));
 
 
                     arcBar.Progress = temp;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshControlPage.cs
index 848c823..7075c77 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshControlPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshControlPage.cs
@@ -759,6 +759,15 @@
         /// <param name="comadValue">鍛戒护</param>
         private void SendOtherComand(IconViewControl btnIcon, string comadKey, string comadValue)
         {
+            if (!device.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+            }
             btnIcon.CanClick = false;
 
             HdlThreadLogic.Current.RunThread(() =>
@@ -779,6 +788,15 @@
         /// </summary>
         private void SendSwitchComand()
         {
+            if (!device.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+            }
             this.btnSwitch.CanClick = false;
 
             string statu = this.btnSwitch.IsSelected == true ? "off" : "on";
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshRelayControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshRelayControlPage.cs
index 3f665d1..7ea9ab3 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshRelayControlPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshRelayControlPage.cs
@@ -89,6 +89,15 @@
             FrameWhiteCentet1.AddChidren(btnSwitch);
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 device.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                 new System.Threading.Thread(() =>
@@ -280,6 +289,15 @@
         /// <param name="comadValue">鍛戒护</param>
         private void SendOtherComand(IconViewControl btnIcon, string comadKey, string comadValue)
         {
+            if (!device.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+            }
             btnIcon.CanClick = false;
 
             HdlThreadLogic.Current.RunThread(() =>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/FhControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/FhControlPage.cs
index 07ee250..f2de9ff 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/FhControlPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/FhControlPage.cs
@@ -305,6 +305,15 @@
                 };
                 EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
                 {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                    }
                     btnModeIcon.IsSelected = btnModeText.IsSelected = true;
                     device.SetAttrState(FunctionAttributeKey.Mode, m);
                     btnMode.UnSelectedImagePath = fhTemp.GetModeIconPath(m);
@@ -362,6 +371,15 @@
         {
             btnMinus.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
                 {
                     return;
@@ -381,6 +399,15 @@
             };
             btnPlus.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
                 {
                     return;
@@ -398,19 +425,23 @@
                 d.Add(FunctionAttributeKey.SetTemp, temp.ToString());
                 Control.Ins.SendWriteCommand(device, d);
             };
-            arcBar.OnStopTrackingTouchEvent = (sender, e) =>
+
+            if (!device.online)
             {
-                device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
-                btnTemp.Text = arcBar.Progress.ToString();
-                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
-                Control.Ins.SendWriteCommand(device, d);
-            };
-            arcBar.OnProgressChangedEvent = (sender, e) =>
-            {
-                device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString());
-                btnTemp.Text = e.ToString();
-            };
+                arcBar.OnStopTrackingTouchEvent = (sender, e) =>
+                {
+                    device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
+                    btnTemp.Text = arcBar.Progress.ToString();
+                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
+                    Control.Ins.SendWriteCommand(device, d);
+                };
+                arcBar.OnProgressChangedEvent = (sender, e) =>
+                {
+                    device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString());
+                    btnTemp.Text = e.ToString();
+                };
+            }
         }
         /// <summary>
         /// 鎺у埗妯″紡浜嬩欢
@@ -460,9 +491,9 @@
             Application.RunOnMainThread(() =>
             {
                 btnTemp.Text = device.GetAttrState(FunctionAttributeKey.SetTemp);
-                btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.RoomTemp))) + "掳C";
+                btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.RoomTemp).Replace(",", "."))) + "掳C";
                 btnMode.UnSelectedImagePath = fhTemp.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode));
-                arcBar.Progress = Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp)));
+                arcBar.Progress = Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")));
                 if (device.trait_on_off.curValue.ToString() == "on")
                 {
                     arcBar.IsOffline = false;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs b/HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs
index 345f80f..cf582a2 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs
@@ -155,7 +155,7 @@
                 MaxValue = function.GetAttribute(FunctionAttributeKey.SetTemp).max,
                 //IsClickable = function.trait_on_off.curValue.ToString() == "on",
                 ArcColor = CSS_Color.BackgroundColor,
-                Progress = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp)),
+                Progress = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",",".")),
 #if __IOS__
                 Y = Application.GetRealHeight(120 + 25),
                 Width = Application.GetRealWidth(260 - 40),
@@ -180,7 +180,7 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = 50,
                 IsBold = true,
-                Text = Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp)).ToString(),
+                Text = Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")).ToString(),
                 TextAlignment = TextAlignment.Center,
             };
             controlView.AddChidren(btnTemp);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs
index 805a2ac..8c9dd0a 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs
@@ -25,11 +25,11 @@
                     }
                     AC temp = new AC();
                     updataTime = DateTime.Now;
-                    bodyView.btnTemp.Text = Convert.ToDouble( updateTemp.GetAttrState(FunctionAttributeKey.SetTemp)).ToString();
-                    bodyView.btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(updateTemp.GetAttrState((string)FunctionAttributeKey.RoomTemp))) + "掳C";
+                    bodyView.btnTemp.Text = Convert.ToDouble( updateTemp.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")).ToString();
+                    bodyView.btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(updateTemp.GetAttrState(FunctionAttributeKey.RoomTemp).Replace(",", "."))) + "掳C";
                     bodyView.btnMode.UnSelectedImagePath = temp.GetModeIconPath(updateTemp.GetAttrState(FunctionAttributeKey.Mode));
                     bodyView.btnWindSpeed.UnSelectedImagePath = temp.GetFanIconPath(updateTemp.GetAttrState(FunctionAttributeKey.FanSpeed));
-                    bodyView.arcBar.Progress = Convert.ToInt32(Convert.ToDouble(updateTemp.GetAttrState(FunctionAttributeKey.SetTemp)));
+                    bodyView.arcBar.Progress = Convert.ToInt32(Convert.ToDouble(updateTemp.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")));
                     if (updateTemp.trait_on_off.curValue.ToString() == "on")
                     {
                         bodyView.arcBar.IsOffline = false;
@@ -96,7 +96,7 @@
                 {
                     return;
                 }
-                var temp = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp));
+                var temp = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."));
                 if (temp <= function.GetAttribute(FunctionAttributeKey.Mode).min)
                 {
                     return;
@@ -116,7 +116,7 @@
                 {
                     return;
                 }
-                var temp = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp));
+                var temp = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."));
                 if (temp >= function.GetAttribute(FunctionAttributeKey.SetTemp).max)
                 {
                     return;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddAlarmDeploymentPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddAlarmDeploymentPage.cs
index 62856f2..9f4b9b4 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddAlarmDeploymentPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddAlarmDeploymentPage.cs
@@ -657,7 +657,7 @@
                                 securityAlarm.output.Remove(delTemp);
                             }
                             outputRow.RemoveFromParent();
-                            outputTargetView.Height = Application.GetRealHeight(65 * securityAlarm.output.Count);
+                            outputTargetView.Height = Application.GetRealHeight(65 * securityAlarm.output.Count + 50 );
                         };
                         outputRow.SetDelClickeEvent(eventHandler);
                     }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs
index 4f7abb9..e1dd248 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs
@@ -157,7 +157,7 @@
                 tempStatus.Add(new SecurityOutputStatus() { key = FunctionAttributeKey.OnOff, value = "on" });
                 allocatedList.Add(new SecurityOutput
                 {
-                    target_type = "0",
+                    target_type = "1",
                     sid = function.sid,
                     status = tempStatus,
                     name = function.name,
@@ -184,7 +184,7 @@
                 tempStatus.Add(new SecurityOutputStatus() { key = "value", value = "0" });
                 allocatedList.Add(new SecurityOutput
                 {
-                    target_type = "1",
+                    target_type = "2",
                     sid = scene.sid,
                     status = tempStatus,
                     name = scene.name,
@@ -204,20 +204,12 @@
             functionListView.RemoveAll();
             foreach (var function in allocatedList)
             {
-                var output = alarm.output.Find((obj) => obj.sid == function.sid);
-                if (output == null)
-                {
-                    output = new SecurityOutput();
-                    //{
-                    //    status = new List<SecurityOutputStatus> { new SecurityOutputStatus {
-                    //             key = FunctionAttributeKey.OnOff,
-                    //             value = "on"
-                    //        }
-                    //    }
-                    //};
-
-                    output.sid = function.sid;
-                }
+                //var output = alarm.output.Find((obj) => obj.sid == function.sid);
+                //if (output == null)
+                //{
+                //    output = new SecurityOutput();
+                //    output.sid = function.sid;
+                //}
 
                 FrameLayout functionRow = new FrameLayout()
                 {
@@ -257,7 +249,7 @@
                     TextAlignment = TextAlignment.CenterRight,
                     TextSize = CSS_FontSize.TextFontSize,
                     TextColor = CSS_Color.PromptingColor1,
-                    Text = output.StateText()
+                    Text = function.StateText()
                 };
                 functionRow.AddChidren(btnState);
 
@@ -275,36 +267,43 @@
                 btnChooseIcon.MouseUpEventHandler = (sender, e) => {
                     btnChooseIcon.IsSelected = !btnChooseIcon.IsSelected;
                     var tempLocal = alarm.output.Find((obj) =>
-                        obj.sid == output.sid
+                        obj.sid == function.sid
                     );
-                    if (tempLocal == null && !string.IsNullOrEmpty(output.spk))
-                    {
-                        ShowStateDialog(output, btnState, btnChooseIcon);
-                    }
+                    //if (tempLocal == null && !string.IsNullOrEmpty(output.spk))
+                    //{
+                    //    ShowStateDialog(output, btnState, btnChooseIcon);
+                    //}
                     if (btnChooseIcon.IsSelected)
                     {
                         if (tempLocal == null)
-                            alarm.output.Add(output);
+                            alarm.output.Add(function);
+                        ShowStateDialog(function, btnState, btnChooseIcon);
                     }
                     else
                     {
                         if (tempLocal != null)
                         {
-                            alarm.output.Remove(output);
+                            alarm.output.Remove(function);
                         }
                     }
                 };
                 btnState.MouseUpEventHandler = (sender, e) =>
                 {
-                    ShowStateDialog(output, btnState, btnChooseIcon);
+                    btnChooseIcon.IsSelected = true;
+                    var tempLocal = alarm.output.Find((obj) =>
+                        obj.sid == function.sid
+                    );
+                    if (tempLocal == null)
+                        alarm.output.Add(function);
+                    ShowStateDialog(function, btnState, btnChooseIcon);
                 };
 
-                var localOutput = alarm.output.Find((obj) => obj.sid == output.sid);
+                var localOutput = alarm.output.Find((obj) => obj.sid == function.sid);
 
                 if (localOutput != null)
                 {
                     btnChooseIcon.IsSelected = true;
-                    btnState.Text = output.StateText();
+                    btnState.Text = function.StateText();
                 }
 
 
@@ -394,6 +393,7 @@
                 TextID = StringId.Cancel,
                 TextColor = CSS_Color.WarningColor,
                 IsBold = true,
+                TextSize = CSS_FontSize.SubheadingFontSize,
             };
             contentView.AddChidren(btnCancel);
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPage.cs
index f588139..a9993b7 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPage.cs
@@ -38,6 +38,12 @@
             backAction = action;
         }
 
+        public override void RemoveFromParent()
+        {
+            backAction?.Invoke();
+            base.RemoveFromParent();
+        }
+
         /// <summary>
         /// 鍔犺浇椤甸潰
         /// </summary>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs
index f571b61..242fb61 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs
@@ -72,6 +72,15 @@
         void LoadEvent_ControlEvent()
         {
             btnCurtainClose.MouseUpEventHandler = (sender, e) => {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 new System.Threading.Thread(() => {
                     System.Threading.Thread.Sleep(2000);
                     Application.RunOnMainThread(() => {
@@ -107,6 +116,15 @@
 
             btnCurtainStop.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 new System.Threading.Thread(() => {
                     System.Threading.Thread.Sleep(2000);
                     Application.RunOnMainThread(() => {
@@ -121,6 +139,15 @@
             };
             btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 new System.Threading.Thread(() => {
                     System.Threading.Thread.Sleep(2000);
                     Application.RunOnMainThread(() => {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs
index 7638d01..87044d5 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs
@@ -137,6 +137,15 @@
         {
             btnCurtainClose.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -156,6 +165,15 @@
 
             btnCurtainStop.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 onCurtainAnimation = false;
                 new System.Threading.Thread(() =>
                 {
@@ -174,6 +192,15 @@
 
             btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -191,107 +218,108 @@
                 CurtainAnimation(100);
             };
 
+            if (!function.online)
+            {
+                btnCurtainStop.MouseDownEventHandler = (sender, e) =>
+                {
+                    btnCurtainStop.IsSelected = true;
+                    btnCurtainClose.IsSelected = false;
+                    btnCurtainOpen.IsSelected = false;
+                };
+                btnCurtainOpen.MouseDownEventHandler = (sender, e) =>
+                {
+                    btnCurtainOpen.IsSelected = true;
+                    btnCurtainClose.IsSelected = false;
+                    btnCurtainStop.IsSelected = false;
+                };
+                btnCurtainClose.MouseDownEventHandler = (sender, e) =>
+                {
+                    btnCurtainClose.IsSelected = true;
+                    btnCurtainOpen.IsSelected = false;
+                    btnCurtainStop.IsSelected = false;
+                };
 
-            btnCurtainStop.MouseDownEventHandler = (sender, e) =>
-            {
-                btnCurtainStop.IsSelected = true;
-                btnCurtainClose.IsSelected = false;
-                btnCurtainOpen.IsSelected = false;
-            };
-            btnCurtainOpen.MouseDownEventHandler = (sender, e) =>
-            {
-                btnCurtainOpen.IsSelected = true;
-                btnCurtainClose.IsSelected = false;
-                btnCurtainStop.IsSelected = false;
-            };
-            btnCurtainClose.MouseDownEventHandler = (sender, e) =>
-            {
-                btnCurtainClose.IsSelected = true;
-                btnCurtainOpen.IsSelected = false;
-                btnCurtainStop.IsSelected = false;
-            };
+                //btnMinusSignIcon.MouseUpEventHandler = (sender, e) =>
+                //{
+                //    function.percent--;
+                //    controlBar.Progress = function.percent;
+                //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                //    d.Add(FunctionAttributeKey.Percent, function.percent.ToString());
+                //    DriverLayer.Control.Ins.SendWriteCommand(function, d);
+                //};
 
-            //btnMinusSignIcon.MouseUpEventHandler = (sender, e) =>
-            //{
-            //    function.percent--;
-            //    controlBar.Progress = function.percent;
-            //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-            //    d.Add(FunctionAttributeKey.Percent, function.percent.ToString());
-            //    DriverLayer.Control.Ins.SendWriteCommand(function, d);
-            //};
+                //btnPlusSgnIcon.MouseUpEventHandler = (sender, e) =>
+                //{
+                //    function.percent++;
+                //    controlBar.Progress = function.percent;
+                //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                //    d.Add(FunctionAttributeKey.Percent, function.percent.ToString());
+                //    DriverLayer.Control.Ins.SendWriteCommand(function, d);
+                //};
 
-            //btnPlusSgnIcon.MouseUpEventHandler = (sender, e) =>
-            //{
-            //    function.percent++;
-            //    controlBar.Progress = function.percent;
-            //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-            //    d.Add(FunctionAttributeKey.Percent, function.percent.ToString());
-            //    DriverLayer.Control.Ins.SendWriteCommand(function, d);
-            //};
-
-            curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
-            {
-                btnProgress.Text = curtainSeekBar.Progress + "%";
-            //    controlBar.Progress = curtainSeekBar.Progress;
-            //    new System.Threading.Thread(() =>
-            //    {
-            //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
-            //        {
-            //            function.percent = e;
-            //            function.refreshTime = DateTime.Now;
-            //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-            //            d.Add("percent", function.percent.ToString());
-            //            Control.SendWriteCommand(function, d);
-            //        }
-            //    })
-            //    { IsBackground = true }.Start();
-            };
-            curtainSeekBar.OnStopTrackingTouchEvent = (sender, e) =>
-            {
-            btnProgress.Text = curtainSeekBar.Progress + "%";
+                curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
+                {
+                    btnProgress.Text = curtainSeekBar.Progress + "%";
+                    //    controlBar.Progress = curtainSeekBar.Progress;
+                    //    new System.Threading.Thread(() =>
+                    //    {
+                    //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
+                    //        {
+                    //            function.percent = e;
+                    //            function.refreshTime = DateTime.Now;
+                    //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    //            d.Add("percent", function.percent.ToString());
+                    //            Control.SendWriteCommand(function, d);
+                    //        }
+                    //    })
+                    //    { IsBackground = true }.Start();
+                };
+                curtainSeekBar.OnStopTrackingTouchEvent = (sender, e) =>
+                {
+                    btnProgress.Text = curtainSeekBar.Progress + "%";
                 //controlBar.Progress = curtainSeekBar.Progress;
                 new System.Threading.Thread(() =>
-                {
-                    function.SetAttrState(FunctionAttributeKey.Percent, e);
-                    function.refreshTime = DateTime.Now;
-                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add(FunctionAttributeKey.Percent, e.ToString());
-                    DriverLayer.Control.Ins.SendWriteCommand(function, d);
-                })
-                { IsBackground = true }.Start();
-            };
+                    {
+                        function.SetAttrState(FunctionAttributeKey.Percent, e);
+                        function.refreshTime = DateTime.Now;
+                        System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                        d.Add(FunctionAttributeKey.Percent, e.ToString());
+                        DriverLayer.Control.Ins.SendWriteCommand(function, d);
+                    })
+                    { IsBackground = true }.Start();
+                };
 
-            //controlBar.OnProgressChangedEvent = (sender, e) =>
-            //{
-            //    curtainSeekBar.Progress = controlBar.Progress;
-            //    new System.Threading.Thread(() =>
-            //    {
-            //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
-            //        {
-            //            function.percent = e;
-            //            function.refreshTime = DateTime.Now;
-            //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-            //            d.Add("percent", function.percent.ToString());
-            //            Control.SendWriteCommand(function, d);
-            //        }
-            //    })
-            //    { IsBackground = true }.Start();
-            //};
+                //controlBar.OnProgressChangedEvent = (sender, e) =>
+                //{
+                //    curtainSeekBar.Progress = controlBar.Progress;
+                //    new System.Threading.Thread(() =>
+                //    {
+                //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
+                //        {
+                //            function.percent = e;
+                //            function.refreshTime = DateTime.Now;
+                //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                //            d.Add("percent", function.percent.ToString());
+                //            Control.SendWriteCommand(function, d);
+                //        }
+                //    })
+                //    { IsBackground = true }.Start();
+                //};
 
-            //controlBar.OnStopTrackingTouchEvent = (sender, e) =>
-            //{
-            //    curtainSeekBar.Progress = controlBar.Progress;
-            //    new System.Threading.Thread(() =>
-            //    {
-            //        function.percent = e;
-            //        function.refreshTime = DateTime.Now;
-            //        System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-            //        d.Add("percent", function.percent.ToString());
-            //        DriverLayer.Control.Ins.SendWriteCommand(function, d);
-            //    })
-            //    { IsBackground = true }.Start();
-            //};
-
+                //controlBar.OnStopTrackingTouchEvent = (sender, e) =>
+                //{
+                //    curtainSeekBar.Progress = controlBar.Progress;
+                //    new System.Threading.Thread(() =>
+                //    {
+                //        function.percent = e;
+                //        function.refreshTime = DateTime.Now;
+                //        System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                //        d.Add("percent", function.percent.ToString());
+                //        DriverLayer.Control.Ins.SendWriteCommand(function, d);
+                //    })
+                //    { IsBackground = true }.Start();
+                //};
+            }
         }
     }
 }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs
index 775b792..94bfddc 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs
@@ -138,6 +138,15 @@
         {
             btnCurtainClose.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -157,6 +166,15 @@
 
             btnCurtainStop.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 new System.Threading.Thread(() => {
                     System.Threading.Thread.Sleep(2000);
                     Application.RunOnMainThread(() => {
@@ -173,6 +191,15 @@
 
             btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                }
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -208,61 +235,63 @@
             //    DriverLayer.Control.Ins.SendWriteCommand(function, d);
             //};
 
+            if (!function.online)
+            {
 
-            btnCurtainStop.MouseDownEventHandler = (sender, e) =>
-            {
-                btnCurtainStop.IsSelected = true;
-                btnCurtainClose.IsSelected = false;
-                btnCurtainOpen.IsSelected = false;
-            };
-            btnCurtainOpen.MouseDownEventHandler = (sender, e) =>
-            {
-                btnCurtainOpen.IsSelected = true;
-                btnCurtainClose.IsSelected = false;
-                btnCurtainStop.IsSelected = false;
-            };
-            btnCurtainClose.MouseDownEventHandler = (sender, e) =>
-            {
-                btnCurtainClose.IsSelected = true;
-                btnCurtainOpen.IsSelected = false;
-                btnCurtainStop.IsSelected = false;
-            };
+                btnCurtainStop.MouseDownEventHandler = (sender, e) =>
+                {
+                    btnCurtainStop.IsSelected = true;
+                    btnCurtainClose.IsSelected = false;
+                    btnCurtainOpen.IsSelected = false;
+                };
+                btnCurtainOpen.MouseDownEventHandler = (sender, e) =>
+                {
+                    btnCurtainOpen.IsSelected = true;
+                    btnCurtainClose.IsSelected = false;
+                    btnCurtainStop.IsSelected = false;
+                };
+                btnCurtainClose.MouseDownEventHandler = (sender, e) =>
+                {
+                    btnCurtainClose.IsSelected = true;
+                    btnCurtainOpen.IsSelected = false;
+                    btnCurtainStop.IsSelected = false;
+                };
 
 
-            //curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
-            //{
-            //    controlBar.Progress = curtainSeekBar.Progress;
-            //    new System.Threading.Thread(() =>
-            //    {
-            //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
-            //        {
-            //            function.percent = e;
-            //            function.refreshTime = DateTime.Now;
-            //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-            //            d.Add("percent", function.percent.ToString());
-            //            Control.SendWriteCommand(function, d);
-            //        }
-            //    })
-            //    { IsBackground = true }.Start();
-            //};
-            curtainSeekBar.OnStopTrackingTouchEvent = (sender, e) =>
-            {
+                //curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
+                //{
+                //    controlBar.Progress = curtainSeekBar.Progress;
+                //    new System.Threading.Thread(() =>
+                //    {
+                //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
+                //        {
+                //            function.percent = e;
+                //            function.refreshTime = DateTime.Now;
+                //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                //            d.Add("percent", function.percent.ToString());
+                //            Control.SendWriteCommand(function, d);
+                //        }
+                //    })
+                //    { IsBackground = true }.Start();
+                //};
+                curtainSeekBar.OnStopTrackingTouchEvent = (sender, e) =>
+                {
                 //controlBar.Progress = curtainSeekBar.Progress;
                 btnProgress.Text = curtainSeekBar.Progress + "%";
-                new System.Threading.Thread(() =>
-                {
-                    function.SetAttrState(FunctionAttributeKey.Percent, e);
-                    function.refreshTime = DateTime.Now;
-                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add(FunctionAttributeKey.Percent, e.ToString());
-                    DriverLayer.Control.Ins.SendWriteCommand(function, d);
-                })
-                { IsBackground = true }.Start();
-            };
+                    new System.Threading.Thread(() =>
+                    {
+                        function.SetAttrState(FunctionAttributeKey.Percent, e);
+                        function.refreshTime = DateTime.Now;
+                        System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                        d.Add(FunctionAttributeKey.Percent, e.ToString());
+                        DriverLayer.Control.Ins.SendWriteCommand(function, d);
+                    })
+                    { IsBackground = true }.Start();
+                };
 
-            curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
-            {
-                btnProgress.Text = curtainSeekBar.Progress + "%";
+                curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
+                {
+                    btnProgress.Text = curtainSeekBar.Progress + "%";
                 //    new System.Threading.Thread(() =>
                 //    {
                 //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
@@ -277,21 +306,21 @@
                 //    { IsBackground = true }.Start();
             };
 
-            //controlBar.OnStopTrackingTouchEvent = (sender, e) =>
-            //{
-            //    curtainSeekBar.Progress = controlBar.Progress;
-            //    btnProgress.Text = curtainSeekBar.Progress + "%";
-            //    new System.Threading.Thread(() =>
-            //    {
-            //        function.SetAttrState(FunctionAttributeKey.Percent, e);
-            //        function.refreshTime = DateTime.Now;
-            //        System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-            //        d.Add("percent", e.ToString());
-            //        DriverLayer.Control.Ins.SendWriteCommand(function, d);
-            //    })
-            //    { IsBackground = true }.Start();
-            //};
-
+                //controlBar.OnStopTrackingTouchEvent = (sender, e) =>
+                //{
+                //    curtainSeekBar.Progress = controlBar.Progress;
+                //    btnProgress.Text = curtainSeekBar.Progress + "%";
+                //    new System.Threading.Thread(() =>
+                //    {
+                //        function.SetAttrState(FunctionAttributeKey.Percent, e);
+                //        function.refreshTime = DateTime.Now;
+                //        System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                //        d.Add("percent", e.ToString());
+                //        DriverLayer.Control.Ins.SendWriteCommand(function, d);
+                //    })
+                //    { IsBackground = true }.Start();
+                //};
+            }
         }
     }
 }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockListPage.cs b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockListPage.cs
index 2a02592..85dcbb1 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockListPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockListPage.cs
@@ -52,7 +52,7 @@
             base.SetTitleText(Language.StringByID(StringId.DoorLock));
 
             //鍒濆鍖栧ご閮ㄥ巻鍙茶褰曟帶浠�
-            this.InitTopHistoryControl();
+            //this.InitTopHistoryControl();
 
             //鍒濆鍖栦腑閮ㄤ俊鎭�
             this.InitMiddleFrame();
@@ -173,7 +173,7 @@
             //鐢垫睜鍥炬爣
             var btnBattery = new BatteryPersentControl();
             btnBattery.Y = Application.GetRealHeight(62);
-            frameBack.AddChidren(btnBattery, ChidrenBindMode.BindEvent);
+            //frameBack.AddChidren(btnBattery, ChidrenBindMode.BindEvent);
             btnBattery.InitControl();
             btnBattery.SetValue(80);
             btnBattery.X = frameBack.Width - btnBattery.Width - Application.GetRealWidth(12);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs
index 5b6d5ca..7d9146c 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs
@@ -5,6 +5,7 @@
 using System.Text;
 using HDL_ON.UI.CSS;
 using HDL_ON.Entity;
+using HDL_ON.DriverLayer;
 
 namespace HDL_ON.UI
 {
@@ -96,24 +97,26 @@
             this.dicText["宸茶繛鎺�"] = Language.StringByID(StringId.Connected);
             this.dicText["鏈繛鎺�"] = Language.StringByID(StringId.UnConnected);
 
-            //宸﹀彸缈婚〉鐨勪簨浠�
-            base.PageChangeEvent += (index) =>
-            {
-                if (index == 1)
-                {
-                    //鍒濆鍖栭棬閿佸巻鍙茶褰曚互鍙婃帶浠�
-                    this.InitDoorHistoryLogAndControl();
-                }
-            };
+            ////宸﹀彸缈婚〉鐨勪簨浠�
+            //base.PageChangeEvent += (index) =>
+            //{
+            //    if (index == 1)
+            //    {
+            //        //鍒濆鍖栭棬閿佸巻鍙茶褰曚互鍙婃帶浠�
+            //        this.InitDoorHistoryLogAndControl();
+            //    }
+            //};
 
             //鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
             this.RefreshNowDeviceStatuMemory(this.device);
             //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
             this.InitFrameWhiteContent1();
-            //鍒濆鍖栫浜屼釜绱㈠紩椤�(鍘嗗彶璁板綍)
-            this.InitFrameWhiteContent2();
+            ////鍒濆鍖栫浜屼釜绱㈠紩椤�(鍘嗗彶璁板綍)
+            //this.InitFrameWhiteContent2();
             //鍒锋柊鐣岄潰鐘舵��
             this.RefreshFormStatu();
+            //璇诲彇璁惧鐘舵��
+            Control.Ins.SendReadCommand(device);
         }
 
         /// <summary>
@@ -126,7 +129,7 @@
             //瀹冩湁涓渶灏忕殑X杞�
             batteryControl.X = Application.GetRealWidth(104) > base.btnRoomName.Right ?
                 Application.GetRealWidth(104) : base.btnRoomName.Right + Application.GetRealWidth(4);
-            FrameWhiteCentet1.AddChidren(batteryControl);
+            //FrameWhiteCentet1.AddChidren(batteryControl);
             if (batteryControl.Height > base.btnRoomName.Height)
             {
                 //涓�涓槸25锛屼竴涓槸21锛屽紕涓嶅噯鍒板簳璋佹洿楂�,鍥犱负璁$畻鏂规硶涓嶄竴鏍�
@@ -144,7 +147,7 @@
             btnOnlineIcon.X = batteryControl.Right + Application.GetRealWidth(12);
             btnOnlineIcon.Y = batteryControl.Y;
             btnOnlineIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/Connect.png";
-            FrameWhiteCentet1.AddChidren(btnOnlineIcon);
+            //FrameWhiteCentet1.AddChidren(btnOnlineIcon);
             //鍦ㄧ嚎鏂囨湰
             this.btnOnlineView = new NormalViewControl(Application.GetRealWidth(100), btnOnlineIcon.Height, false);
             btnOnlineView.X = btnOnlineIcon.Right + Application.GetRealWidth(4);
@@ -152,7 +155,7 @@
             btnOnlineView.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel;
             btnOnlineView.TextColor = CSS_Color.PromptingColor1;
             btnOnlineView.TextID = StringId.Connected;
-            FrameWhiteCentet1.AddChidren(btnOnlineView);
+            //FrameWhiteCentet1.AddChidren(btnOnlineView);
             //鍙充笂瑙掗厤缃粨鏉熺殑浜嬩欢
             base.SettionFinishEvent += () =>
             {
@@ -182,42 +185,42 @@
             frameTempPsw.Visible = false;
             FrameWhiteCentet1.AddChidren(frameTempPsw);
 
-            //澹伴煶
-            this.btnVoice = new IconViewControl(24);
-            btnVoice.UnSelectedImagePath = "FunctionIcon/DoorLock/Voice.png";
-            btnVoice.X = Application.GetRealWidth(23);
-            btnVoice.Y = Application.GetRealHeight(410);
-            FrameWhiteCentet1.AddChidren(btnVoice);
+            ////澹伴煶
+            //this.btnVoice = new IconViewControl(24);
+            //btnVoice.UnSelectedImagePath = "FunctionIcon/DoorLock/Voice.png";
+            //btnVoice.X = Application.GetRealWidth(23);
+            //btnVoice.Y = Application.GetRealHeight(410);
+            //FrameWhiteCentet1.AddChidren(btnVoice);
 
-            //澹伴煶鐨勬粦鍔ㄦ潯
-            this.seekBarVoiceControl = new SeekBarImageControl(215);
-            seekBarVoiceControl.Gravity = Gravity.CenterHorizontal;
-            FrameWhiteCentet1.AddChidren(seekBarVoiceControl);
-            seekBarVoiceControl.Y = btnVoice.Y - (seekBarVoiceControl.Height - btnVoice.Height) / 2;
-            //缁戝畾PageLayout鎺т欢
-            seekBarVoiceControl.BindPageLayout();
+            ////澹伴煶鐨勬粦鍔ㄦ潯
+            //this.seekBarVoiceControl = new SeekBarImageControl(215);
+            //seekBarVoiceControl.Gravity = Gravity.CenterHorizontal;
+            //FrameWhiteCentet1.AddChidren(seekBarVoiceControl);
+            //seekBarVoiceControl.Y = btnVoice.Y - (seekBarVoiceControl.Height - btnVoice.Height) / 2;
+            ////缁戝畾PageLayout鎺т欢
+            //seekBarVoiceControl.BindPageLayout();
 
-            //澹伴煶鐧惧垎姣�
-            this.btnVoicePersent = new NormalViewControl(Application.GetRealWidth(50), btnVoice.Height, false);
-            btnVoicePersent.X = seekBarVoiceControl.Right + Application.GetRealWidth(8) - seekBarVoiceControl.SeekBarPadding;
-            btnVoicePersent.Y = btnVoice.Y;
-            btnVoicePersent.TextColor = CSS_Color.PromptingColor1;
-            btnVoicePersent.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
-            btnVoicePersent.Text = "100%";
-            FrameWhiteCentet1.AddChidren(btnVoicePersent);
+            ////澹伴煶鐧惧垎姣�
+            //this.btnVoicePersent = new NormalViewControl(Application.GetRealWidth(50), btnVoice.Height, false);
+            //btnVoicePersent.X = seekBarVoiceControl.Right + Application.GetRealWidth(8) - seekBarVoiceControl.SeekBarPadding;
+            //btnVoicePersent.Y = btnVoice.Y;
+            //btnVoicePersent.TextColor = CSS_Color.PromptingColor1;
+            //btnVoicePersent.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            //btnVoicePersent.Text = "100%";
+            //FrameWhiteCentet1.AddChidren(btnVoicePersent);
 
-            seekBarVoiceControl.ProgressChangedEvent += (div, value) =>
-            {
-                btnVoicePersent.Text = value + "%";
-                if (div == 1)
-                {
-                }
-            };
+            //seekBarVoiceControl.ProgressChangedEvent += (div, value) =>
+            //{
+            //    btnVoicePersent.Text = value + "%";
+            //    if (div == 1)
+            //    {
+            //    }
+            //};
 
             //鍒濆鍖栧紑閿佽彍鍗�(涓�閿紑閿�,涓存椂瀵嗙爜寮�閿�)
             this.InitUnLockMenuControl();
             //鍒濆鍖栧簳閮ㄨ彍鍗曞浘鏍�
-            this.InitBottomMenuIconControl();
+            //this.InitBottomMenuIconControl();
         }
 
         /// <summary>
@@ -226,7 +229,7 @@
         private void InitUnLockMenuControl()
         {
             //濡傛灉鏄垚鍛�,鍒欏彧鏈変竴閿紑閿�
-            if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == true)
+            if (true)// DB_ResidenceData.Instance.CurrentRegion.isOtherShare == true)
             {
                 //涓�閿紑閿�
                 var btnOneKey = new NormalViewControl(100, 25, true);
@@ -908,6 +911,17 @@
                 HdlMessageLogic.Current.ShowMassage(ShowMsgType.TipRemind, Language.StringByID(StringId.DeviceNotOnline), null, null, null, 2);
                 return;
             }
+            if (UserInfo.Current.VerOpenDoorPw || string.IsNullOrEmpty(UserInfo.Current.doorPasswordString))
+            { 
+                var page = new DoorLockUnlockPage(this.device);
+                MainPage.BasePageView.AddChidren(page);
+                page.LoadView();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            }
+            else
+            {
+                Control.Ins.OneKeyUnlocking(this.device, UserInfo.Current.doorPasswordString);
+            }
             //绗竴娆′娇鐢紝璇峰厛缁戝畾闂ㄩ攣瀵嗙爜
             //HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, Language.StringByID(StringId.PleaseBindTheDoorPswFirst), () =>
             //{
@@ -921,42 +935,40 @@
             //    });
             //});
 
-            if (UserInfo.Current.appUnlockPage.Contains("3") == true)
-            {
-                //璋冭捣瀹夊叏璁よ瘉
-                HdlCheckLogic.Current.CheckUnlockSecurity(true, (div) =>
-                {
-                    //閿佸凡鎵撳紑
-                    if (div == 1)
-                    {
-                        HdlMessageLogic.Current.ShowMassage(ShowMsgType.TipSuccess, Language.StringByID(StringId.LockIsOpened), null, null, null, 2);
-                    }
-                    else
-                    {
-                        //涓轰簡瀹夊叏锛岃璺宠浆鑷充釜浜轰腑蹇儃0}璁剧疆涓汉瀵嗙爜锛屽苟搴旂敤浜庨棬閿佸紑閿�
-                        HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, Language.StringByID(StringId.JumpToPersonalCentetToSetPasswordMsg), () =>
-                        {
-                            var page = new AppUnlockSettingsPage();
-                            MainPage.BasePageView.AddChidren(page);
-                            page.LoadPage();
-                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-
-                        }, Language.StringByID(StringId.Jump));
-                    }
-                });
-            }
-            else
-            {
-                //涓轰簡瀹夊叏锛岃璺宠浆鑷充釜浜轰腑蹇儃0}璁剧疆涓汉瀵嗙爜锛屽苟搴旂敤浜庨棬閿佸紑閿�
-                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, Language.StringByID(StringId.JumpToPersonalCentetToSetPasswordMsg), () =>
-                {
-                    var page = new AppUnlockSettingsPage();
-                    MainPage.BasePageView.AddChidren(page);
-                    page.LoadPage();
-                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-
-                }, Language.StringByID(StringId.Jump));
-            }
+            //if (UserInfo.Current.appUnlockPage.Contains("3") == true)
+            //{
+            //    //璋冭捣瀹夊叏璁よ瘉
+            //    HdlCheckLogic.Current.CheckUnlockSecurity(true, (div) =>
+            //    {
+            //        //閿佸凡鎵撳紑
+            //        if (div == 1)
+            //        {
+            //            HdlMessageLogic.Current.ShowMassage(ShowMsgType.TipSuccess, Language.StringByID(StringId.LockIsOpened), null, null, null, 2);
+            //        }
+            //        else
+            //        {
+            //            //涓轰簡瀹夊叏锛岃璺宠浆鑷充釜浜轰腑蹇儃0}璁剧疆涓汉瀵嗙爜锛屽苟搴旂敤浜庨棬閿佸紑閿�
+            //            HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, Language.StringByID(StringId.JumpToPersonalCentetToSetPasswordMsg), () =>
+            //            {
+            //                var page = new AppUnlockSettingsPage();
+            //                MainPage.BasePageView.AddChidren(page);
+            //                page.LoadPage();
+            //                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            //            }, Language.StringByID(StringId.Jump));
+            //        }
+            //    });
+            //}
+            //else
+            //{
+            //    //涓轰簡瀹夊叏锛岃璺宠浆鑷充釜浜轰腑蹇儃0}璁剧疆涓汉瀵嗙爜锛屽苟搴旂敤浜庨棬閿佸紑閿�
+            //    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, Language.StringByID(StringId.JumpToPersonalCentetToSetPasswordMsg), () =>
+            //    {
+            //        var page = new AppUnlockSettingsPage();
+            //        MainPage.BasePageView.AddChidren(page);
+            //        page.LoadPage();
+            //        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            //    }, Language.StringByID(StringId.Jump));
+            //}
         }
 
         #endregion
diff --git a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockUnlockPage.cs b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockUnlockPage.cs
new file mode 100644
index 0000000..357373a
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockUnlockPage.cs
@@ -0,0 +1,193 @@
+锘縰sing System;
+using HDL_ON.DriverLayer;
+using HDL_ON.Entity;
+using HDL_ON.Stan;
+using HDL_ON.UI.CSS;
+using Shared;
+namespace HDL_ON.UI
+{
+    public class DoorLockUnlockPage : FrameLayout
+    {
+        /// <summary>
+        /// 褰撳墠鐣岄潰
+        /// </summary>
+        FrameLayout bodyView;
+
+        Function device;
+
+        public DoorLockUnlockPage(Function function)
+        {
+            bodyView = this;
+            device = function;
+        }
+
+        /// <summary>
+        /// 鍔犺浇瑙嗗浘
+        /// </summary>
+        public void LoadView()
+        {
+
+            new TopViewDiv(bodyView, Language.StringByID(StringId.PlsEntryPassword)).LoadTopView();
+            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
+
+
+            var btnMsg = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(100),
+                Width = Application.GetRealWidth(300),
+                Height = Application.GetRealHeight(100),
+                TextAlignment = TextAlignment.TopCenter,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextID = StringId.DoorLockEntryPasswordTip,
+                IsMoreLines = true,
+            };
+            bodyView.AddChidren(btnMsg);
+
+            #region 瀵嗙爜濉啓
+            var passwordView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(28),
+                Y = Application.GetRealHeight(200),
+                Width = Application.GetRealWidth(319),
+                Height = Application.GetRealHeight(44),
+            };
+            bodyView.AddChidren(passwordView);
+
+
+            var etPassword = new EditText()
+            {
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                PlaceholderTextColor = CSS_Color.PromptingColor1,
+                PlaceholderText = Language.StringByID(StringId.PlsEntryPassword),
+                SecureTextEntry = true,
+                TextAlignment = TextAlignment.Center,
+                BackgroundColor = CSS_Color.BackgroundColor,
+                IsNumberKeyboardType = true
+            };
+            passwordView.AddChidren(etPassword);
+
+            //var btnVisiblePassword = new Button()
+            //{
+            //    X = Application.GetRealWidth(273),
+            //    Gravity = Gravity.CenterVertical,
+            //    Width = Application.GetMinRealAverage(20),
+            //    Height = Application.GetMinRealAverage(20),
+            //    UnSelectedImagePath = "LoginIcon/HidePasswordIcon.png",
+            //    SelectedImagePath = "LoginIcon/ShowPasswordIcon.png",
+            //};
+            //passwordView.AddChidren(btnVisiblePassword);
+
+            #endregion
+
+
+
+            var frameRow = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(28),
+                Y = Application.GetRealHeight(258),//375 // 667
+            };
+            bodyView.AddChidren(frameRow);
+
+            //鍚屾剰鎸夐挳鑳屾櫙
+            var agreeView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(28),
+                Width = Application.GetRealWidth(28),
+                X = Application.GetRealWidth(22),
+            };
+            frameRow.AddChidren(agreeView);
+   
+            //鍚屾剰鍥炬爣鎸夐挳
+            var agreeBtn = new Button()
+            {
+                Width = Application.GetMinRealAverage(28),
+                Height = Application.GetMinRealAverage(28),
+                UnSelectedImagePath = "Public/ChooseIcon.png",
+                SelectedImagePath = "Public/ChooseOnIcon.png",
+                IsSelected = false,
+                Gravity = Gravity.Center,
+            };
+            agreeView.AddChidren(agreeBtn);
+
+            var agreeTextBtn = new TextButton()
+            {
+                X = agreeView.Right,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealHeight(28),
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                TextID = StringId.DoorLock5minTip
+            };
+            frameRow.AddChidren(agreeTextBtn);
+            agreeTextBtn.Width = Utlis.GetRealWidthByTextButton(agreeTextBtn);
+
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                agreeBtn.IsSelected = !agreeBtn.IsSelected;
+            };
+
+            agreeBtn.MouseUpEventHandler = eventHandler;
+            agreeView.MouseUpEventHandler = eventHandler;
+            agreeTextBtn.MouseUpEventHandler = eventHandler;
+
+
+            Button btnLine = new Button()
+            {
+                Y = Application.GetRealHeight(607),
+                Height = Application.GetRealHeight(1),
+                BackgroundColor = CSS.CSS_Color.DividingLineColor,
+            };
+            bodyView.AddChidren(btnLine);
+
+            Button btnCancel = new Button()
+            {
+                Y = btnLine.Bottom,
+                Width = Application.GetRealWidth(374/2),
+                Height = Application.GetRealHeight(60),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.Cancel,
+            };
+            bodyView.AddChidren(btnCancel);
+            btnCancel.MouseUpEventHandler = (sender, e) => {
+                this.RemoveFromParent();
+            };
+
+            Button btnConfirm = new Button()
+            {
+                X = btnCancel.Right,
+                Y = btnLine.Y,
+                Width = Application.GetRealWidth(376 / 2),
+                Height = Application.GetRealHeight(60),
+                TextAlignment = TextAlignment.Center,
+                //TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextColor = CSS_Color.MainBackgroundColor,
+                BackgroundColor = CSS_Color.MainColor,
+                TextID = StringId.Confirm,
+            };
+            bodyView.AddChidren(btnConfirm);
+            btnConfirm.MouseUpEventHandler = (sender, e) => {
+                var password = etPassword.Text.Trim();
+                if (password.Length == 0)
+                {
+                    //璁惧涓嶅湪绾�
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.TipRemind, Language.StringByID(StringId.PlsEntryPassword), null, null, null, 2);
+                    return;
+                }
+                if (agreeBtn.IsSelected)
+                {
+                    UserInfo.Current.doorPasswordString = password;
+                }
+                Control.Ins.OneKeyUnlocking(this.device, etPassword.Text.Trim());
+                this.RemoveFromParent();
+            };
+
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchPage.cs
index 76d2fb3..7021c55 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchPage.cs
@@ -417,6 +417,16 @@
         {
             btnSwitchIcon.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitchIcon.IsSelected;
                 new System.Threading.Thread(() =>
                 {
@@ -429,6 +439,16 @@
             };
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 new System.Threading.Thread(() =>
                 {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
index 190b378..d93b021 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
@@ -125,10 +125,17 @@
             FrameWhiteCentet1.AddChidren(btnDown);
 
             #region 鎺у埗
-            btnUp.MouseDownEventHandler = (sender, e) => {
-                btnUp.IsSelected = true;
-            };
             btnUp.MouseUpEventHandler = (sender, e) => {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -143,10 +150,17 @@
                 Control.Ins.SendWriteCommand(device, d);
             };
             //----
-            btnStop.MouseDownEventHandler = (sender, e) => {
-                btnStop.IsSelected = true;
-            };
             btnStop.MouseUpEventHandler = (sender, e) => {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -160,11 +174,31 @@
                 d.Add(FunctionAttributeKey.Position, "stop");
                 Control.Ins.SendWriteCommand(device, d);
             };
-            //-----
-            btnDown.MouseDownEventHandler = (sender, e) => {
-                btnDown.IsSelected = true;
-            };
+            if (!device.online)
+            {
+                btnUp.MouseDownEventHandler = (sender, e) => {
+                    btnUp.IsSelected = true;
+                };
+                btnStop.MouseDownEventHandler = (sender, e) => {
+                    btnStop.IsSelected = true;
+                };
+                //-----
+                btnDown.MouseDownEventHandler = (sender, e) =>
+                {
+                    btnDown.IsSelected = true;
+                };
+            }
             btnDown.MouseUpEventHandler = (sender, e) => {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -208,6 +242,16 @@
 
                 EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                 {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                    return;
+                    }
                     string onoff = hotDryView.Lighting ? "false" : "true";
                     device.SetAttrState(FunctionAttributeKey.HotDry, onoff);
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -237,6 +281,16 @@
 
                 EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                 {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                    return;
+                    }
                     string onoff = windDryView.Lighting ? "false" : "true";
                     device.SetAttrState(FunctionAttributeKey.WindDry, onoff);
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -272,6 +326,16 @@
 
                 EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                 {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                    return;
+                    }
                     string onoff = disinfectView.Lighting ? "false" : "true";
                     device.SetAttrState(FunctionAttributeKey.Disinfect, onoff);
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -312,6 +376,16 @@
 
                 EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                 {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                    return;
+                    }
                     string onoff = lightingView.Lighting ? "off" : "on";
                     device.SetAttrState(FunctionAttributeKey.OnOff, onoff);
                     Dictionary<string, string> d = new Dictionary<string, string>();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs
index 3d4e0fb..e9ec37c 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs
@@ -74,6 +74,16 @@
                 functionListView.AddChidren(hotDryTimeCell);
                 hotDryTimeCell.GoAction = () =>
                 {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                        return;
+                    }
                     BottomTimeSelectControl timeControl = new BottomTimeSelectControl(hRange, mRange,3, Language.StringByID(StringId.HotDryTime));
                     timeControl.RowHeight = Application.GetRealHeight(50);
                     timeControl.InitControl(0, 1, 162);
@@ -120,6 +130,16 @@
                 functionListView.AddChidren(windDryCell);
                 windDryCell.GoAction = () =>
                 {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                        return;
+                    }
                     BottomTimeSelectControl timeControl = new BottomTimeSelectControl(hRange, mRange,3,Language.StringByID(StringId.WindDryTime));
                     timeControl.RowHeight = Application.GetRealHeight(50);
                     timeControl.InitControl(0, 1, 162);
@@ -167,6 +187,16 @@
 
                 functionListView.AddChidren(disinfectTimeCell);
                 disinfectTimeCell.GoAction = () => {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                        return;
+                    }
                     BottomTimeSelectControl timeControl = new BottomTimeSelectControl(hRange, mRange,3, Language.StringByID(StringId.DisinfectTime));
                     timeControl.RowHeight = Application.GetRealHeight(50);
                     timeControl.InitControl(0, 1, 162);
@@ -215,6 +245,16 @@
                 anionTimeCell.LineView.RemoveFromParent();
 
                 anionTimeCell.GoAction = () => {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                        return;
+                    }
                     BottomTimeSelectControl timeControl = new BottomTimeSelectControl(hRange, mRange,3,Language.StringByID(StringId.AnionTime));
 
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs
index 86a0e73..7dab158 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs
@@ -62,6 +62,16 @@
         {
             btnSwitchIcon.MouseUpEventHandler += (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitchIcon.IsSelected;
 
                 new System.Threading.Thread(() =>
@@ -76,6 +86,16 @@
             };
             btnSwitch.MouseUpEventHandler += (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitch.IsSelected;
 
                 new System.Threading.Thread(() =>
@@ -88,18 +108,21 @@
                 { IsBackground = true }.Start();
             };
 
-            barGradualChange.OnProgressChangedEvent = (sender, e) => {
-                function.SetAttrState(FunctionAttributeKey.OpenLevel, e.ToString());
-                new System.Threading.Thread(() =>
+            if (!function.online)
+            {
+                barGradualChange.OnProgressChangedEvent = (sender, e) =>
                 {
-                    function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
-                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
-                    Control.Ins.SendWriteCommand(function, d);
-                })
-                { IsBackground = true }.Start();
-            };
-
+                    function.SetAttrState(FunctionAttributeKey.OpenLevel, e.ToString());
+                    new System.Threading.Thread(() =>
+                    {
+                        function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
+                        System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                        d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
+                        Control.Ins.SendWriteCommand(function, d);
+                    })
+                    { IsBackground = true }.Start();
+                };
+            }
         }
 
     }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs
index c576ebf..c8041d3 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs
@@ -89,6 +89,17 @@
                 row.AddChidren(btn);
 
                 btn.MouseUpEventHandler = (sender, e) => {
+
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                        return;
+                    }
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                     d.Add(attr.key, "");
                     Control.Ins.SendWriteCommand(device, d);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
index 5873fdd..df0f1d1 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
@@ -480,6 +480,16 @@
 
                     btn.MouseUpEventHandler = (sender, e) =>
                     {
+                        if (!device.online)
+                        {
+                            new Tip()
+                            {
+                                CloseTime = 1,
+                                Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                                Direction = AMPopTipDirection.None,
+                            }.Show(MainPage.BaseView);
+                            return;
+                        }
                         Dictionary<string, string> d = new Dictionary<string, string>();
                         d.Add(attr.key, "");
                         Control.Ins.SendWriteCommand(device, d);
@@ -538,6 +548,16 @@
 
             btnChlPlus.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -547,6 +567,16 @@
             };
             btnChlReduce.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -556,6 +586,16 @@
             };
             btnVolPlus.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -565,6 +605,16 @@
             };
             btnVolReduce.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -574,6 +624,16 @@
             };
             btnBack.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -583,6 +643,16 @@
             };
             btnPower.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -609,6 +679,16 @@
             };
             btnMenu.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -618,6 +698,17 @@
                 }
             };
             btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
+
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -627,6 +718,17 @@
                 }
             };
             btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
+
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -636,6 +738,17 @@
                 }
             };
             btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
+
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -645,6 +758,17 @@
                 }
             };
             btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
+
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -654,6 +778,17 @@
                 }
             };
             btnOk.MouseUpEventHandler = (sender, e) => {
+
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs
index 96945a4..c5c93da 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs
@@ -180,7 +180,7 @@
                     Text = function.GetAttrState("total_electricity"),
                     TextAlignment = TextAlignment.BottomLeft,
                 };
-                btnTotalElectricity.Width = btnTotalElectricity.GetTextWidth();
+                btnTotalElectricity.Width = btnTotalElectricity.GetTextWidth()+ Application.GetRealWidth(5);
                 controlView.AddChidren(btnTotalElectricity);
                 var btnTotalElectricityUnit = new Button()
                 {
@@ -290,6 +290,16 @@
         {
             btnSwitchIcon.MouseUpEventHandler += (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitchIcon.IsSelected;
 
                 new System.Threading.Thread(() =>
@@ -306,6 +316,16 @@
             };
             btnSwitch.MouseUpEventHandler += (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitch.IsSelected;
 
                 new System.Threading.Thread(() =>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage_InstantaneousValue.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage_InstantaneousValue.cs
index 4abdef4..46c8fa3 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage_InstantaneousValue.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage_InstantaneousValue.cs
@@ -97,45 +97,47 @@
 
         public static void UpdataView(Function updata)
         {
-            if(bodyView!=null)
+            if (bodyView != null)
             {
-                for (int i = 0; i < bodyView.instantaneousValueView.ChildrenCount; i++)
+                Application.RunOnMainThread(() =>
                 {
-                    var view = bodyView.instantaneousValueView.GetChildren(i);
-                    if(null != view.Tag )
+                    for (int i = 0; i < bodyView.instantaneousValueView.ChildrenCount; i++)
                     {
-                        if (view.GetType() == typeof(InstantaneousValueView))
+                        var view = bodyView.instantaneousValueView.GetChildren(i);
+                        if (null != view.Tag)
                         {
-                           var view2 = view as InstantaneousValueView;
-                            switch (view.Tag.ToString())
+                            if (view.GetType() == typeof(InstantaneousValueView))
                             {
-                                case "active_power":
-                                    var attr = updata.GetAttribute("active_power");
-                                    if (attr != null)
-                                    {
-                                        view2.btnValue.Text = attr.curValue.ToString();
-                                    }
-                                    break;
-                                case "voltage":
-                                    var attr1 = updata.GetAttribute("voltage");
-                                    if (attr1 != null)
-                                    {
-                                        view2.btnValue.Text = attr1.curValue.ToString();
-                                    }
-                                    break;
-                                case "current":
-                                    var attr2 = updata.GetAttribute("current");
-                                    if (attr2 != null)
-                                    {
-                                        view2.btnValue.Text = attr2.curValue.ToString();
-                                    }
-                                    break;
+                                var view2 = view as InstantaneousValueView;
+                                switch (view.Tag.ToString())
+                                {
+                                    case "active_power":
+                                        var attr = updata.GetAttribute("active_power");
+                                        if (attr != null)
+                                        {
+                                            view2.btnValue.Text = attr.curValue.ToString();
+                                        }
+                                        break;
+                                    case "voltage":
+                                        var attr1 = updata.GetAttribute("voltage");
+                                        if (attr1 != null)
+                                        {
+                                            view2.btnValue.Text = attr1.curValue.ToString();
+                                        }
+                                        break;
+                                    case "current":
+                                        var attr2 = updata.GetAttribute("current");
+                                        if (attr2 != null)
+                                        {
+                                            view2.btnValue.Text = attr2.curValue.ToString();
+                                        }
+                                        break;
+                                }
                             }
                         }
                     }
-                }
+                });
             }
-
         }
     }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
index 8d323c4..cf97d88 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
@@ -421,6 +421,16 @@
                 }
                 numberView.AddChidren(btn);
                 btn.MouseUpEventHandler = (sender, e) => {
+                    if (!device.online)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(MainPage.BaseView);
+                        return;
+                    }
                     string index = (sender as Button).Text;
                     btn.IsSelected = false;
                     if (DB_ResidenceData.Instance.GatewayType == 1)
@@ -474,6 +484,16 @@
         {
             btnMenu.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -483,6 +503,16 @@
             };
             btnChlPlus.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -492,6 +522,16 @@
             };
             btnChlReduce.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -501,6 +541,16 @@
             };
             btnVolPlus.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -510,6 +560,16 @@
             };
             btnVolReduce.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -519,6 +579,16 @@
             };
             btnBack.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -529,6 +599,16 @@
 
             btnMenu.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -538,10 +618,30 @@
             };
             btn123.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 ShowNumberView();
             };
             btnMute.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -551,6 +651,16 @@
             };
             btnPower.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -560,23 +670,41 @@
             };
 
 
-            btnTopMenuUp.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconUp.png";
-            };
-            btnTopMenuDown.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconDown.png";
-            };
-            btnTopMenuLeft.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconLeft.png";
-            };
-            btnTopMenuRight.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconRight.png";
-            };
-            btnOk.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconOk.png";
-            };
+            if (!device.online)
+            {
+                btnTopMenuUp.MouseDownEventHandler = (sender, e) =>
+                {
+                    topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconUp.png";
+                };
+                btnTopMenuDown.MouseDownEventHandler = (sender, e) =>
+                {
+                    topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconDown.png";
+                };
+                btnTopMenuLeft.MouseDownEventHandler = (sender, e) =>
+                {
+                    topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconLeft.png";
+                };
+                btnTopMenuRight.MouseDownEventHandler = (sender, e) =>
+                {
+                    topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconRight.png";
+                };
+                btnOk.MouseDownEventHandler = (sender, e) =>
+                {
+                    topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconOk.png";
+                };
+            }
             btnMenu.MouseUpEventHandler = (sender, e) =>
             {
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -586,6 +714,17 @@
                 }
             };
             btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
+
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -595,6 +734,17 @@
                 }
             };
             btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
+
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -604,6 +754,17 @@
                 }
             };
             btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
+
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -613,6 +774,17 @@
                 }
             };
             btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
+
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -622,6 +794,17 @@
                 }
             };
             btnOk.MouseUpEventHandler = (sender, e) => {
+
+                if (!device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -788,6 +971,16 @@
 
                     btn.MouseUpEventHandler = (sender, e) =>
                     {
+                        if (!device.online)
+                        {
+                            new Tip()
+                            {
+                                CloseTime = 1,
+                                Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                                Direction = AMPopTipDirection.None,
+                            }.Show(MainPage.BaseView);
+                            return;
+                        }
                         Dictionary<string, string> d = new Dictionary<string, string>();
                         d.Add(attr.key, "");
                         Control.Ins.SendWriteCommand(device, d);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
index 5fbf109..ff71d51 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
@@ -40,6 +40,16 @@
         /// </summary>
         void LoadControlEvent()
         {
+            if (!function.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+                return;
+            }
             btnChangeTVAV.MouseUpEventHandler = (sender, e) =>
             {
                 if (DB_ResidenceData.Instance.GatewayType == 1)
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs
index 2074184..0bc953c 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs
@@ -539,7 +539,17 @@
         /// </summary>
         /// <param name="value">auto:鑷姩  sleep:鐫$湢  manual:鎵嬪姩  strong:寮虹儓</param>
         private void SendModeComand(string value)
-        {
+        {
+            if (!device.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+                return;
+            }
             this.btnMode.CanClick = false;
             HdlThreadLogic.Current.RunThread(() =>
             {
@@ -558,7 +568,17 @@
         /// </summary>
         /// <param name="value">canel:鍙栨秷 1:1灏忔椂 2:2灏忔椂 3:4灏忔椂 4:8灏忔椂</param>
         private void SendTimingComand(string value)
-        {
+        {
+            if (!device.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+                return;
+            }
             this.btnTime.CanClick = false;
             HdlThreadLogic.Current.RunThread(() =>
             {
@@ -577,7 +597,17 @@
         /// </summary>
         /// <param name="value">1:浣庢。 2:涓。 3:楂樻。</param>
         private void SendFanSpeedComand(string value)
-        {
+        {
+            if (!device.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+                return;
+            }
             this.btnFan.CanClick = false;
             HdlThreadLogic.Current.RunThread(() =>
             {
@@ -595,7 +625,17 @@
         /// 鍙戦�佸紑鍏冲懡浠�
         /// </summary>
         private void SendSwitchComand()
-        {
+        {
+            if (!device.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+                return;
+            }
             this.btnPictrue.CanClick = false;
             this.btnSwitch.CanClick = false;
 
@@ -622,7 +662,17 @@
         /// 鍙戦�佷娇鑳藉懡浠�
         /// </summary>
         private void SendEnableComand(MostRightIconControl btnSwitch, string sendKey, string value)
-        {
+        {
+            if (!device.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+                return;
+            }
             if (btnSwitch != null)
             {
                 btnSwitch.CanClick = false;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaFanPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaFanPage.cs
index c280a90..df3ecc3 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaFanPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaFanPage.cs
@@ -97,21 +97,25 @@
             //鍒锋柊鐣岄潰鐘舵��
             this.RefreshFormStatu(false);
             //妗�
-            var strView = Language.StringByID(StringId.Gear);
-            seekBarContr.ProgressChangedEvent += (div, value) =>
-            {
-                this.btnNowGear.Text = value + strView;
-                //婊戝姩涓�
-                if (div == 0) { this.fanData.IsProgressing = true; }
-                //婊戝姩缁撴潫
-                else
-                {
-                    this.fanData.IsProgressing = false;
-                    this.fanData.ProgressEndTime = DateTime.Now;
-                    //鍙戦�侀閫熷懡浠�
-                    this.SendSpeedComand(value);
-                }
-            };
+            var strView = Language.StringByID(StringId.Gear);
+
+            if (device.online)
+            {
+                seekBarContr.ProgressChangedEvent += (div, value) =>
+                {
+                    this.btnNowGear.Text = value + strView;
+                    //婊戝姩涓�
+                    if (div == 0) { this.fanData.IsProgressing = true; }
+                    //婊戝姩缁撴潫
+                    else
+                    {
+                        this.fanData.IsProgressing = false;
+                        this.fanData.ProgressEndTime = DateTime.Now;
+                        //鍙戦�侀閫熷懡浠�
+                        this.SendSpeedComand(value);
+                    }
+                };
+            }
         }
 
         #endregion
@@ -174,7 +178,17 @@
         /// 鍙戦�佸紑鍏冲懡浠�
         /// </summary>
         private void SendSwitchComand()
-        {
+        {
+            if (!device.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+                return;
+            }
             this.btnSwitch.CanClick = false;
 
             string statu = this.btnSwitch.IsSelected == true ? "off" : "on";
@@ -194,7 +208,8 @@
         /// 鍙戦�侀閫熷懡浠�
         /// </summary>
         private void SendSpeedComand(int value)
-        {
+        {
+         
             var dic = new Dictionary<string, string>();
             dic.Add("fan_speed_percent", value.ToString());
             Control.Ins.SendWriteCommand(this.device, dic, true);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs
index 73e6c7a..3d08b88 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs
@@ -167,6 +167,16 @@
         /// </summary>
         private void SendSwitchComand()
         {
+            if (!device.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+                return;
+            }
             this.btnPictrue.CanClick = false;
             this.btnSwitch.CanClick = false;
 
@@ -272,6 +282,16 @@
 
         private void SetControlTime()
         {
+            if (!device.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+                return;
+            }
             var timeControl = new BottomTimeSelectControl();
             timeControl.RowCount = 5;
             timeControl.InitControl(0,0);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs
index 8532e4a..0b3bf1b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs
@@ -86,6 +86,16 @@
             btnSwitch.IsSelected = i_brushStatu;
             btnSwitch.ButtonClickEvent += (sender, e) =>
             {
+                if (!i_device.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 if (btnSwitch.IsSelected == true)
                 {
                     //鍙栨秷鐨勮瘽鐩存帴鍙栨秷
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs
index 2368509..1fa0b85 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs
@@ -454,7 +454,17 @@
         /// 鍙戦�佸懡浠�
         /// </summary>
         private void SendComand(string key, string i_value)
-        {
+        {
+            if (!device.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+                return;
+            }
             HdlThreadLogic.Current.RunThread(() =>
             {
                 var dic = new Dictionary<string, string>();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/A_EnvironmentalDataCenter.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/A_EnvironmentalDataCenter.cs
index 967b540..cf7936f 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/A_EnvironmentalDataCenter.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/A_EnvironmentalDataCenter.cs
@@ -713,7 +713,7 @@
             sensorSPK = showList[0].spk;
             foreach (var s in showList)
             {
-                assembleValues += Convert.ToDouble(s.GetAttrState("value"));
+                assembleValues += Convert.ToDouble(s.GetAttrState("value").Replace(",", "."));
             }
 
 
@@ -1011,7 +1011,7 @@
             assembleValues = 0;
             foreach (var s in sensorList)
             {
-                assembleValues += Convert.ToDouble(s.GetAttrState("value"));
+                assembleValues += Convert.ToDouble(s.GetAttrState("value").Replace(",", "."));
             }
         }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
index aeb5a12..ea27379 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
@@ -243,7 +243,7 @@
             {
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(50),
-                Height = Application.GetRealHeight(400),
+                Height = Application.GetRealHeight(390),
                 Radius = (uint)Application.GetRealWidth(12),
                 BorderColor = 0x00000000,
                 BorderWidth = 0,
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
index 7eacd06..5608ce8 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
@@ -150,7 +150,10 @@
 
             var minValue = function.GetAttribute(FunctionAttributeKey.SetTemp).min;
             var maxValue = function.GetAttribute(FunctionAttributeKey.SetTemp).max;
-            var progress = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp));
+            double progressDouble = 0;
+            var ddd = function.GetAttrState(FunctionAttributeKey.SetTemp);
+            double.TryParse(ddd,out progressDouble);
+            int progress = (int)progressDouble;
 
             arcBar = new DiyArcSeekBar()
             {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
index 5a8281e..5782d56 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
@@ -19,9 +19,9 @@
                     {
                         return;
                     }
-                    var outinTemp = Convert.ToInt32(Convert.ToDouble(updateTemp.GetAttrState(FunctionAttributeKey.SetTemp)));
+                    var outinTemp = Convert.ToInt32(Convert.ToDouble(updateTemp.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")));
                     bodyView.btnTemp.Text = outinTemp.ToString();
-                    bodyView.btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(updateTemp.GetAttrState(FunctionAttributeKey.RoomTemp))) + "掳C";
+                    bodyView.btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(updateTemp.GetAttrState(FunctionAttributeKey.RoomTemp).Replace(",", "."))) + "掳C";
                     bodyView.btnMode.SelectedImagePath = bodyView.fhTemp.GetModeIconPath(updateTemp.GetAttrState(FunctionAttributeKey.Mode));
                     bodyView.btnMode.UnSelectedImagePath = bodyView.fhTemp.GetModeIconPath(updateTemp.GetAttrState(FunctionAttributeKey.Mode),false);
                     bodyView.arcBar.Progress = outinTemp;
@@ -129,6 +129,16 @@
         /// </summary>
         void LoadEvent_TempChange()
         {
+            if (!function.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+                return;
+            }
             btnMinus.MouseUpEventHandler = (sender, e) =>
             {
                 if(function.trait_on_off.curValue.ToString() == "off")
@@ -136,7 +146,7 @@
                     return;
                 }
 
-                var temp = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp));
+                var temp = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."));
                 if (temp <= Convert.ToInt32(function.GetAttribute(FunctionAttributeKey.SetTemp).min))
                 {
                     return;
@@ -156,7 +166,7 @@
                 {
                     return;
                 }
-                var temp =(int) Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp));
+                var temp =(int) Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."));
                 if (temp >= Convert.ToDouble(function.GetAttribute(FunctionAttributeKey.SetTemp).max))
                 {
                     return;
@@ -181,7 +191,7 @@
             arcBar.OnProgressChangedEvent = (sender, e) =>
             {
                 function.SetAttrState(FunctionAttributeKey.SetTemp, e);
-                btnTemp.Text = Convert.ToDouble( function.GetAttrState(FunctionAttributeKey.SetTemp)).ToString();
+                btnTemp.Text = Convert.ToDouble( function.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")).ToString();
             };
         }
         /// <summary>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs b/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
index 704093f..feb241d 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
@@ -44,6 +44,13 @@
             function = func;
             actionRefresh = action;
         }
+
+        public override void RemoveFromParent()
+        {
+            actionRefresh?.Invoke();
+            base.RemoveFromParent();
+        }
+
         /// <summary>
         /// 鍔犺浇鐣岄潰
         /// </summary>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs
index c5349dd..8ab3dc2 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs
@@ -85,7 +85,17 @@
         /// 淇敼鑹叉俯
         /// </summary>
         void LoadEvet_ChangeColorTemplatrue()
-        {
+        {
+            if (!function.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+                return;
+            }
             barColorTemplatrue.OnProgressChangedEvent += (sender, value) =>
             {
                 new System.Threading.Thread(() =>
@@ -129,11 +139,18 @@
         /// </summary>
         void LoadEvent_DimmerBar()
         {
-            dimmerBar.OnStartTrackingTouchEvent = (sender, e) => {
-                onDimmerBar = true;
-            };
             dimmerBar.OnStopTrackingTouchEvent = (sender, e) =>
-            {
+            {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 onDimmerBar = false;
                 function.SetAttrState(FunctionAttributeKey.Brightness, dimmerBar.Progress);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
@@ -143,48 +160,54 @@
                 btnBrightnessText.Text = dimmerBar.Progress + "%";
 
                 dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
-            };
-            dimmerBar.OnProgressChangedEvent = (sender, e) =>
-            {
-                dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
-                //function.fadeTime = 0;
-                //if (!btnSwitch.IsSelected)
-                //{
-                //    dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
-                //}
-                //btnSwitch.IsSelected = e > 0 ? true : false;
-                //function.brightness = e;
-                //function.trait_on_off.curValue = e > 0 ? "on" : "off";
-
-                //if (e == 0 || e == 100)
-                //{
-                //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                //    d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString());
-                //    Control.Ins.SendWriteCommand(function, d);
-                //}
-                //else
-                //{
-                //    if (200 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
-                //    {
-                //        function.refreshTime = DateTime.Now;
-                //        new System.Threading.Thread(() =>
-                //        {
-                //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                //            d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString());
-                //            Control.Ins.SendWriteCommand(function, d);
-                //        })
-                //        { IsBackground = true }.Start();
-                //    }
-                //}
-
-                //btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16 - 16) / 100) + Application.GetRealWidth(40);
-                //btnBrightnessText.Text = function.brightness + "%";
-
+            };
+            if (function.online)
+            {
+                dimmerBar.OnStartTrackingTouchEvent = (sender, e) =>
+                {
+                    onDimmerBar = true;
+                };
+                dimmerBar.OnProgressChangedEvent = (sender, e) =>
+                {
+                    dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
+                //function.fadeTime = 0;
+                //if (!btnSwitch.IsSelected)
+                //{
+                //    dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
+                //}
+                //btnSwitch.IsSelected = e > 0 ? true : false;
+                //function.brightness = e;
+                //function.trait_on_off.curValue = e > 0 ? "on" : "off";
+
+                //if (e == 0 || e == 100)
+                //{
+                //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                //    d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString());
+                //    Control.Ins.SendWriteCommand(function, d);
+                //}
+                //else
+                //{
+                //    if (200 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
+                //    {
+                //        function.refreshTime = DateTime.Now;
+                //        new System.Threading.Thread(() =>
+                //        {
+                //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                //            d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString());
+                //            Control.Ins.SendWriteCommand(function, d);
+                //        })
+                //        { IsBackground = true }.Start();
+                //    }
+                //}
+
+                //btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16 - 16) / 100) + Application.GetRealWidth(40);
+                //btnBrightnessText.Text = function.brightness + "%";
+
                 btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16) / 100) + Application.GetRealWidth(80);
-                btnBrightnessText.Text = dimmerBar.Progress + "%";
-            };
-
-
+                    btnBrightnessText.Text = dimmerBar.Progress + "%";
+                };
+
+            }
         }
 
         /// <summary>
@@ -193,7 +216,17 @@
         void LoadSwitchEvent()
         {
             btnSwitch.MouseUpEventHandler += (sender, e) =>
-            {
+            {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 //function.fadeTime = barFadeTime.Progress;
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 if (btnSwitch.IsSelected)
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs
index bc1193d..a8d34a9 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs
@@ -88,21 +88,25 @@
         /// </summary>
         void LoadEvent_DimmerBar()
         {
-            dimmerBar.OnStartTrackingTouchEvent = (sender, e) => {
-                onDimmerBar = true;
-            };
-            dimmerBar.OnStopTrackingTouchEvent = (sender, e) => {
-                onDimmerBar = false;
-                function.SetAttrState(FunctionAttributeKey.Brightness, dimmerBar.Progress);
-                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add(FunctionAttributeKey.Brightness, dimmerBar.Progress.ToString());
-                Control.Ins.SendWriteCommand(function, d);
-                btnBrightnessText.Text = dimmerBar.Progress + "%";
-            };
-            //20201223 鍒犻櫎婊戝姩鍙戦�佸懡浠わ紝闃叉鎺т欢璺冲姩
-            dimmerBar.OnProgressChangedEvent = (sender, e) =>
+            if (function.online)
             {
-                dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
+                dimmerBar.OnStartTrackingTouchEvent = (sender, e) =>
+                {
+                    onDimmerBar = true;
+                };
+                dimmerBar.OnStopTrackingTouchEvent = (sender, e) =>
+                {
+                    onDimmerBar = false;
+                    function.SetAttrState(FunctionAttributeKey.Brightness, dimmerBar.Progress);
+                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.Brightness, dimmerBar.Progress.ToString());
+                    Control.Ins.SendWriteCommand(function, d);
+                    btnBrightnessText.Text = dimmerBar.Progress + "%";
+                };
+                //20201223 鍒犻櫎婊戝姩鍙戦�佸懡浠わ紝闃叉鎺т欢璺冲姩
+                dimmerBar.OnProgressChangedEvent = (sender, e) =>
+                {
+                    dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
                 //function.fadeTime = 0;
                 //if (!btnSwitch.IsSelected)
                 //{
@@ -133,10 +137,10 @@
                 //    }
                 //}
                 btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(288 - 16 - 16) / 100) + Application.GetRealWidth(40);
-                btnBrightnessText.Text = dimmerBar.Progress + "%";
-            };
+                    btnBrightnessText.Text = dimmerBar.Progress + "%";
+                };
+            }
         }
-
         /// <summary>
         /// 鍔犺浇寮�鍏充簨浠�
         /// </summary>
@@ -144,6 +148,16 @@
         {
             btnSwitch.MouseUpEventHandler += (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 if (btnSwitch.IsSelected)
                 {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
index 8281d85..ef4bf1b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
@@ -88,6 +88,16 @@
         /// </summary>
         void LoadColorChangeEvent()
         {
+            if (!function.online)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    Direction = AMPopTipDirection.None,
+                }.Show(MainPage.BaseView);
+                return;
+            }
             DateTime colorChangeTime = DateTime.MinValue;
             //bool send = false;
 
@@ -202,11 +212,21 @@
         /// </summary>
         void LoadEvent_DimmerBar()
         {
-            dimmerBar.OnStartTrackingTouchEvent = (sender, e)=>{
-                onDimmerBar = true;
-            };
-            dimmerBar.OnStopTrackingTouchEvent = (sender, e) => {
-                new System.Threading.Thread(() => {
+
+            dimmerBar.OnStopTrackingTouchEvent = (sender, e) =>
+            {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
+                new System.Threading.Thread(() =>
+                {
                     System.Threading.Thread.Sleep(200);
                     onDimmerBar = false;
                 })
@@ -214,47 +234,54 @@
                 function.SetAttrState(FunctionAttributeKey.Brightness, dimmerBar.Progress);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add(FunctionAttributeKey.Brightness, dimmerBar.Progress.ToString());
-               
+
                 Control.Ins.SendWriteCommand(function, d);
             };
-            dimmerBar.OnProgressChangedEvent = (sender, e) => {
-                //function.fadeTime = 0;
-                //if (!btnSwitch.IsSelected)
-                //{
-                //    dimmerBar.ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1;
-                //}
-                //btnSwitch.IsSelected = e > 0 ? true : false;
-                //function.brightness = e;
-                //function.trait_on_off.curValue = e > 0 ? "on" : "off";
+            if (function.online)
+            {
+                dimmerBar.OnStartTrackingTouchEvent = (sender, e) =>
+                {
+                    onDimmerBar = true;
+                };
+                dimmerBar.OnProgressChangedEvent = (sender, e) =>
+                {
+                    //function.fadeTime = 0;
+                    //if (!btnSwitch.IsSelected)
+                    //{
+                    //    dimmerBar.ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1;
+                    //}
+                    //btnSwitch.IsSelected = e > 0 ? true : false;
+                    //function.brightness = e;
+                    //function.trait_on_off.curValue = e > 0 ? "on" : "off";
 
-                //if (e == 0 || e == 100)
-                //{
-                //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                //    d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString());
-                //    Control.Ins.SendWriteCommand(function, d);
-                //}
-                //else
-                //{
-                //    if (200 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
-                //    {
-                //        function.refreshTime = DateTime.Now;
-                //        new System.Threading.Thread(() =>
-                //        {
-                //            //Control.Send(CommandType_A.write, function);
-                //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                //            d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString());
-                //            Control.Ins.SendWriteCommand(function, d);
-                //        })
-                //        { IsBackground = true }.Start();
-                //    }
-                //    else
-                //    {
-                //        MainPage.Log("skip dimmer control!!");
-                //    }
-                //}
-            };
+                    //if (e == 0 || e == 100)
+                    //{
+                    //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    //    d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString());
+                    //    Control.Ins.SendWriteCommand(function, d);
+                    //}
+                    //else
+                    //{
+                    //    if (200 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
+                    //    {
+                    //        function.refreshTime = DateTime.Now;
+                    //        new System.Threading.Thread(() =>
+                    //        {
+                    //            //Control.Send(CommandType_A.write, function);
+                    //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    //            d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString());
+                    //            Control.Ins.SendWriteCommand(function, d);
+                    //        })
+                    //        { IsBackground = true }.Start();
+                    //    }
+                    //    else
+                    //    {
+                    //        MainPage.Log("skip dimmer control!!");
+                    //    }
+                    //}
+                };
+            }
         }
-
         /// <summary>
         /// 淇敼鐏厜娓愬彉鏃堕棿
         /// </summary>
@@ -309,6 +336,10 @@
         {
             btnRestoredPoint.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)
+                {
+                    return;
+                }
                 if(function.trait_on_off.curValue.ToString() == "off")
                 {
                     return;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs
index 6fc5a4a..d71f38a 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs
@@ -62,6 +62,16 @@
         {
             btnSwitchIcon.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitchIcon.IsSelected;
                 new System.Threading.Thread(() =>
                 {
@@ -74,6 +84,16 @@
             };
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
                 btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 new System.Threading.Thread(() =>
                 {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31LocalMusicList.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31LocalMusicList.cs
deleted file mode 100644
index 89c9543..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31LocalMusicList.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Text;
-using Shared;
-namespace HDL_ON.UI.Music
-{
-    public class A31LocalMusicList : FrameLayout
-    {
-        public A31LocalMusicList()
-        {
-            Tag = "Music";
-        }
-        VerticalRefreshLayout middViewLayout;
-        /// <summary>
-        /// 鍏堝姞杞界晫闈㈠嚭鏉�
-        /// </summary>
-        public void Show()
-        {
-            #region   鐣岄潰甯冨眬------
-            this.BackgroundColor = MusicColor.ViewColor;
-            var topView = new TopView();
-            this.AddChidren(topView.TopFLayoutView());
-            topView.topNameBtn.TextID = StringId.localMusic;
-            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                this.RemoveFromParent();
-            };
-             middViewLayout = new VerticalRefreshLayout
-            {
-                BackgroundColor = MusicColor.WhiteColor,
-                Y = topView.fLayout.Bottom,
-                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
-            };
-            this.AddChidren(middViewLayout);
-            middViewLayout.BeginHeaderRefreshingAction += () =>
-            {
-                MusicView();
-                middViewLayout.EndHeaderRefreshing();
-            };
-            #endregion
-            MusicView();
-        }
-        /// <summary> 
-        /// 鍔犺浇鏁版嵁鐨勬柟娉�
-        /// </summary>
-        public void MusicView()
-        {
-            middViewLayout.RemoveAll();
-            UI2.FuntionControlView.Music.UpdateThread.playMusuc(middViewLayout, "鏈湴闊充箰", Language.StringByID(StringId.localMusic), MusicInfo.MusicInfoList, A31MusicModel.Current);
-        }
-        /// <summary>
-        /// 瀹氭椂鏇存柊褰撳墠鎾斁闊充箰
-        /// </summary>
-        public void UpdateSelectedMusic()
-        {
-            UI2.FuntionControlView.Music.UpdateThread.updateThread(this, middViewLayout,A31MusicModel.Current);
-        }
-    
-    }
-}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveList.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveList.cs
deleted file mode 100644
index 17e903c..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveList.cs
+++ /dev/null
@@ -1,410 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Text;
-using Shared;
-namespace HDL_ON.UI.Music
-{
-    public class A31LoveList : FrameLayout
-    {
-        public A31LoveList()
-        {
-            Tag = "Music";
-        }
-
-        VerticalScrolViewLayout middViewLayout;
-        public void Show()
-        {
-            #region   鐣岄潰甯冨眬------
-            this.BackgroundColor = MusicColor.ViewColor;
-            var topView = new TopView();
-            this.AddChidren(topView.TopFLayoutView());
-            topView.topNameBtn.TextID = StringId.myLove;
-            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
-            {
-               
-                if (updateSelectedMusicThread != null)
-                {
-                    try
-                    {
-                        if (updateSelectedMusicThread.IsAlive)
-                        {
-                            updateSelectedMusicThread.Abort();
-                            ///鍏抽棴绾跨▼
-                        }
-                    }
-                    catch { }
-                }
-                this.RemoveFromParent();
-            };
-
-
-            middViewLayout = new VerticalScrolViewLayout
-            {
-                BackgroundColor = MusicColor.WhiteColor,
-                Y = topView.fLayout.Bottom,
-                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
-            };
-            this.AddChidren(middViewLayout);
-            FileView();
-            #endregion
-        }
-        /// <summary>
-        /// 鍔犺浇鏂囦欢澶筕iew鐨勬柟娉�
-        /// </summary>
-        void FileView()
-        {
-            for (int i = 0; i < 2; i++)
-            {
-                RowLayout addFlieRow = new RowLayout
-                {
-                    Height = Application.GetRealHeight(104),
-                    LineColor = MusicColor.WhiteColor,
-                    SubViewWidth = Application.GetRealWidth(90),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
-                };
-                middViewLayout.AddChidren(addFlieRow);
-                //鏂囦欢鍥炬爣
-                Button fileIconBtn = new Button
-                {
-                    X = Application.GetRealWidth(16),
-                    Y = Application.GetRealHeight(8),
-                    Width = Application.GetRealWidth(88),
-                    Height = Application.GetRealWidth(88),
-
-                };
-                addFlieRow.AddChidren(fileIconBtn);
-                //鎾斁/鏆傚仠鍥炬爣
-                Button playIconBtn = new Button
-                {
-                    X = Application.GetRealWidth(78),
-                    Y = Application.GetRealHeight(70),
-                    Width = Application.GetRealWidth(24),
-                    Height = Application.GetRealWidth(24),
-                    UnSelectedImagePath = "MusicIcon/filePause.png",
-                    SelectedImagePath = "MusicIcon/filePlay.png",
-                };
-                addFlieRow.AddChidren(playIconBtn);
-
-
-                //鏂囦欢鍚嶆帶浠�
-                Button fileNameBtn = new Button
-                {
-                    X = fileIconBtn.Right + Application.GetRealWidth(16),
-                    Y = Application.GetRealHeight(42),
-                    Width = Application.GetRealWidth(217),
-                    Height = Application.GetRealHeight(20),
-                    TextColor = MusicColor.TextColor,
-                    TextSize = TextSize.Text14,
-                    TextAlignment = TextAlignment.CenterLeft,
-                };
-                addFlieRow.AddChidren(fileNameBtn);
-                if (i == 0)
-                {
-                    fileIconBtn.UnSelectedImagePath = "MusicIcon/loveMusic.png";
-                    fileNameBtn.TextID = StringId.a31Music;
-                    playIconBtn.Tag = Language.StringByID(StringId.a31Music);//璁板綍鍒楄〃鍚�
-                }
-                else
-                {
-                    fileIconBtn.UnSelectedImagePath = "MusicIcon/loveRadio.png";
-                    fileNameBtn.TextID = StringId.radioLove;
-                    playIconBtn.Tag = Language.StringByID(StringId.radioLove);//璁板綍鍒楄〃鍚�
-                }
-                //鐐瑰嚮鎸夐挳闅忔満鎾斁闊充箰
-                playIconBtn.MouseUpEventHandler += (sender, e) =>
-                {
-                    //鐐瑰嚮鎸夐挳闅忔満鎾斁闊充箰
-                    if (fileNameBtn.Text == Language.StringByID(StringId.a31Music))
-                    {
-                        ///鍠滅埍闊充箰鍒楄〃
-                        SelectedPaly(fileNameBtn.Text, A31MusicModel.Current.LoveMusicInfoList, playIconBtn);
-                    }
-                    else
-                    {
-                        ///鍠滅埍鐢靛彴鍒楄〃
-                        SelectedPaly(fileNameBtn.Text, A31MusicModel.Current.LoveRadioInfoList, playIconBtn);
-                    }
-
-                };
-                Button clickBtn = new Button
-                {
-                    X = fileIconBtn.Right + Application.GetRealWidth(16),
-                    Width = Application.GetRealWidth(375 - 138),
-                    Height = Application.GetRealHeight(104),
-                };
-                addFlieRow.AddChidren(clickBtn);
-                clickBtn.MouseUpEventHandler += (sender, e) =>
-                {
-                    if (fileNameBtn.Text == Language.StringByID(StringId.a31Music))
-                    {
-                        ///鍠滅埍闊充箰鍒楄〃
-                        A31LoveMusicList a31LoveMusicList = new A31LoveMusicList();
-                        MainPage.BasePageView.AddChidren(a31LoveMusicList);
-                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                        a31LoveMusicList.Show();
-                        a31LoveMusicList.UpdateSelectedMusic();
-                    }
-                    else
-                    {
-                        ///鍠滅埍鐢靛彴鍒楄〃
-                        A31LoveRadioList a31LoveRadioList = new A31LoveRadioList();
-                        MainPage.BasePageView.AddChidren(a31LoveRadioList);
-                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                        a31LoveRadioList.Show();
-                        a31LoveRadioList.UpdateSelectedMusic();
-                    }
-
-                };
-
-            }
-        }
-        /// <summary>
-        /// 鏆傚仠/鎾斁鍥炬爣鐐瑰嚮鎾斁
-        /// </summary>
-        /// <param name="listName"></param>
-        /// <param name="listMusic"></param>
-        /// <param name="playIconBtn"></param>
-        void SelectedPaly(string listName, List<MusicInfo> listMusic, Button playIconBtn)
-        {
-
-            ///鏌ユ壘褰撳墠鎾斁闊充箰鏄惁杩欎釜鍒楄〃
-            if (playIconBtn.IsSelected)
-            {
-                if (listName == A31MusicModel.Current.A31PlayStatus.Artist && A31MusicModel.Current.A31PlayStatus.status == "play")
-                {
-
-                    SendMethod.Pause(A31MusicModel.Current);
-                    A31MusicModel.Current.A31PlayStatus.status = "pause";
-                }
-
-            }
-            else
-            {
-                if (listMusic.Count == 0)
-                {
-                    return;
-                }
-                if (listName == A31MusicModel.Current.A31PlayStatus.Artist && A31MusicModel.Current.A31PlayStatus.status != "play")
-                {
-                    SendMethod.Play(A31MusicModel.Current);
-                    A31MusicModel.Current.A31PlayStatus.status = "play";
-                }
-                else
-                {
-                    ///鍙栭殢鏈烘暟;
-                    var ra = new Random { }.Next(0, listMusic.Count);
-                    ///鏌ユ壘褰撳墠鐨勯煶涔�;
-                    var songs = listMusic[ra];
-                    //鐐瑰嚮鎸夐挳闅忔満鎾斁闊充箰
-                    System.Threading.Tasks.Task.Run(() =>
-                    {
-                        System.Threading.Thread.Sleep(50);
-                        Application.RunOnMainThread(() =>
-                        {
-                            //绉婚櫎鐣岄潰
-                            System.Threading.Tasks.Task.Run(() =>
-                            {
-                                PushList(songs, listName, listMusic);
-                            });
-                        });
-                    });
-                }
-
-            }
-        }
-        System.Threading.Thread updateSelectedMusicThread;
-        /// <summary>
-        /// 瀹氭椂鏇存柊鏂囦欢澶规挱鏀剧姸鎬�
-        /// </summary>
-        public void UpdateSelectedFile()
-        {
-            updateSelectedMusicThread = new System.Threading.Thread(() =>
-            {
-                while (this.Parent != null)
-                {
-                    System.Threading.Thread.Sleep(1000);
-                    Application.RunOnMainThread(() =>
-                    {
-                        try
-                        {
-                            for (int i = 0; i < middViewLayout.ChildrenCount; i++)
-                            {
-                                RowLayout view = (RowLayout)middViewLayout.GetChildren(i);
-                                var playBtn = (Button)view.GetChildren(1);//鐩存帴FrameLayout鐖舵帶浠舵壘鍒拌鎺т欢Button
-                                ///鏌ユ壘褰撳墠鎾斁闊充箰鏄惁杩欎釜鍒楄〃
-                                if (A31MusicModel.Current.A31PlayStatus.Artist == playBtn.Tag.ToString() && A31MusicModel.Current.A31PlayStatus.status == "play")
-                                {
-                                    playBtn.IsSelected = true;
-                                }
-                                else
-                                {
-                                    playBtn.IsSelected = false;
-                                }
-                            }
-                        }
-                        catch { }
-
-                    });
-                }
-            })
-            { IsBackground = true };
-            updateSelectedMusicThread.Start();
-        }
-        /// <summary>
-        /// 鎺ㄩ�佹挱鏀惧懡浠�
-        /// </summary>
-        /// <param name="musicInfo">鎾斁闊充箰</param>
-        /// <param name="listName">鍒楄〃鍚嶇О</param>
-        /// <param name="musicList">鎺ㄩ�佸垪琛�(榛樿鎺�50棣�)</param>
-        public void PushList(MusicInfo musicInfo, string listName, List<MusicInfo> musicList)
-        {
-
-            //鏈�澶у彂閫佺殑鏉℃暟
-            int maxCount = 50;
-            //鎵惧嚭褰撳墠鐐瑰嚮闊充箰鐨勭储寮�
-            int statIndex = musicList.FindIndex((obj) => { return obj == musicInfo; });
-            //鐐瑰嚮鍚庨潰杩樻湁澶氬皯鏉¢煶涔�
-            int count = musicList.Count - statIndex;
-            int endIndex = 0;
-            if (maxCount < count)
-            {
-                //濡傛灉鍚庨潰鐨勯煶涔愬ぇ浜庢渶澶ф暟锛岃缃悗闈㈡暟鎹殑鏈�澶х储寮� 
-                endIndex = statIndex + maxCount - 1;
-            }
-            else
-            {
-                //濡傛灉鍚庨潰鏁版嵁涓嶅锛屽氨鐢ㄦ�绘暟鍑忓幓鏈�澶ф潯鏁帮紝寰楀埌寮�濮嬬储寮�
-                statIndex = musicList.Count - maxCount - 1;
-                endIndex = musicList.Count - 1;
-            }
-            //濡傛灉寮�濮嬬储寮曞皬浜�0锛岄偅灏辫缃负绗竴鏉¢煶涔�
-            if (statIndex < 0)
-            {
-                statIndex = 0;
-            }
-
-            StringBuilder sb = new StringBuilder();
-            sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
-            sb.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-            sb.AppendLine("<s:Body>");
-            sb.AppendLine("<u:CreateQueue xmlns:u=\"urn:schemas-wiimu-com:service:PlayQueue:1\">");
-            sb.AppendLine("<QueueContext>&lt;?xml version=\"1.0\"?&gt;");
-            sb.AppendLine("&lt;PlayList&gt;");
-            sb.AppendLine("&lt;ListName&gt;DLNA" + listName + "&lt;/ListName&gt;");
-            sb.AppendLine("&lt;ListInfo&gt;");
-            sb.AppendLine("&lt;Radio&gt;0&lt;/Radio&gt;");//
-            sb.AppendLine("&lt;SourceName&gt;UPnPServer&lt;/SourceName&gt;");//          
-            sb.AppendLine("&lt;MarkSearch&gt;0&lt;/MarkSearch&gt;");
-            sb.AppendLine("&lt;TrackNumber&gt;" + (endIndex - statIndex + 1) + "&lt;/TrackNumber&gt;");
-            sb.AppendLine("&lt;Quality&gt;0&lt;/Quality&gt;");
-            sb.AppendLine("&lt;UpdateTime&gt;5367&lt;/UpdateTime&gt;");
-            sb.AppendLine("&lt;LastPlayIndex&gt;2&lt;/LastPlayIndex&gt;");
-            sb.AppendLine("&lt;SwitchPageMode&gt;0&lt;/SwitchPageMode&gt;");
-            sb.AppendLine("&lt;CurrentPage&gt;0&lt;/CurrentPage&gt;");
-            sb.AppendLine("&lt;TotalPages&gt;0&lt;/TotalPages&gt;");
-            sb.AppendLine("&lt;/ListInfo&gt;");
-            sb.AppendLine("&lt;Tracks&gt;");
-
-            int number = 1;
-
-            for (int i = statIndex, Tracknumber = 1; i <= endIndex; i++, Tracknumber++)
-            {
-                var tempMusicInfo = musicList[i];
-
-                if (musicInfo == tempMusicInfo)
-                {
-                    number = Tracknumber;
-                }
-
-                if (tempMusicInfo.SourceType == "Local")
-                {
-                    tempMusicInfo.URL = "http://" + new Shared.Net.NetWiFi().IpAddress + ":" + com.hdl.on.Server.Port + "/" + tempMusicInfo.ID;
-                }
-
-
-                sb.AppendLine("&lt;Track" + Tracknumber + "&gt;");
-                sb.AppendLine("&lt;URL&gt;" + tempMusicInfo.URL + "&lt;/URL&gt;");
-                sb.AppendLine("&lt;Metadata&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;");
-                sb.AppendLine("&amp;lt;DIDL-Lite xmlns:dc=&amp;quot;http://purl.org/dc/elements/1.1/&amp;quot; xmlns:upnp=&amp;quot;urn:schemas-upnp-org:metadata-1-0/upnp/&amp;quot; xmlns:song=&amp;quot;www.wiimu.com/song/&amp;quot; xmlns=&amp;quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/&amp;quot;&amp;gt;");
-                sb.AppendLine("&amp;lt;upnp:class&amp;gt;object.item.audioItem.musicTrack&amp;lt;/upnp:class&amp;gt;");
-                sb.AppendLine("&amp;lt;item id=&amp;quot;0&amp;quot;&amp;gt;");
-                sb.AppendLine("&amp;lt;song:subid&amp;gt;&amp;lt;/song:subid&amp;gt;");
-                sb.AppendLine("&amp;lt;song:description&amp;gt;unknown&amp;lt;/song:description&amp;gt;");
-                sb.AppendLine("&amp;lt;song:skiplimit&amp;gt;6&amp;lt;/song:skiplimit&amp;gt;");
-                sb.AppendLine("&amp;lt;song:id&amp;gt;" + tempMusicInfo.ID + "&amp;lt;/song:id&amp;gt;");
-                sb.AppendLine("&amp;lt;song:like&amp;gt;0&amp;lt;/song:like&amp;gt;");
-                sb.AppendLine("&amp;lt;song:singerid&amp;gt;0&amp;lt;/song:singerid&amp;gt;");
-                sb.AppendLine("&amp;lt;song:albumid&amp;gt;" + tempMusicInfo.AlbumId + "&amp;lt;/song:albumid&amp;gt;");
-
-                sb.AppendLine("&amp;lt;res protocolInfo=&amp;quot;http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;&amp;quot; duration=&amp;quot;" + "0:0:0.0" + "&amp;quot;&amp;gt;" + tempMusicInfo.URL + "&amp;lt;/res&amp;gt;");
-
-                sb.AppendLine("&amp;lt;dc:title&amp;gt;" + tempMusicInfo.Title + "&amp;lt;/dc:title&amp;gt;");
-                sb.AppendLine("&amp;lt;dc:creator&amp;gt;DJ Sanny J&amp;lt;/dc:creator&amp;gt;");
-                sb.AppendLine("&amp;lt;upnp:artist&amp;gt;" + listName + "&amp;lt;/upnp:artist&amp;gt;");
-                sb.AppendLine("&amp;lt;upnp:album&amp;gt;" + tempMusicInfo.Album + "&amp;lt;/upnp:album&amp;gt;");
-                sb.AppendLine("&amp;lt;upnp:albumArtURI&amp;gt;unknown&amp;lt;/upnp:albumArtURI&amp;gt;");
-                sb.AppendLine("&amp;lt;/item&amp;gt;");
-                sb.AppendLine("&amp;lt;/DIDL-Lite&amp;gt;");
-                sb.AppendLine("&lt;/Metadata&gt;");
-                sb.AppendLine("&lt;Id&gt;" + tempMusicInfo.ID + "&lt;/Id&gt;");
-                sb.AppendLine("&lt;Source&gt;STATION-NETWORK&lt;/Source&gt;");//UPnPServer
-                sb.AppendLine("&lt;Key&gt;" + tempMusicInfo.URL + "&lt;/Key&gt;");
-                sb.AppendLine("&lt;/Track" + Tracknumber + "&gt;");
-            }
-            sb.AppendLine("&lt;/Tracks&gt;");
-            sb.AppendLine("&lt;/PlayList&gt;");
-            sb.AppendLine("</QueueContext>");
-            sb.AppendLine("</u:CreateQueue>");
-            sb.AppendLine("</s:Body>");
-            sb.AppendLine("</s:Envelope>");
-
-            SendMusicLists(A31MusicModel.Current.IPAddress, A31MusicModel.Current.Port, "CreateQueue", sb.ToString());
-
-            StringBuilder playString = new StringBuilder();
-            playString.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
-            playString.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-            playString.AppendLine("<s:Body>");
-            playString.AppendLine("<u:PlayQueueWithIndex xmlns:u=\"urn:schemas-wiimu-com:service:PlayQueue:1\">");
-            playString.AppendLine("<QueueName>DLNA" + listName + "</QueueName>");
-            playString.AppendLine("<Index>" + number + "</Index>");
-            playString.AppendLine("</u:PlayQueueWithIndex>");
-            playString.AppendLine("</s:Body>");
-            playString.AppendLine("</s:Envelope>");
-
-            Play(A31MusicModel.Current.IPAddress, A31MusicModel.Current.Port, playString.ToString());
-        }
-
-        void SendMusicLists(string ip, int port, string soapAction, string listInfo)
-        {
-            System.Net.WebClient webClient = new System.Net.WebClient();
-            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#" + soapAction + "\"");
-            webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-            try
-            {
-                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + ip + ":" + port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes(listInfo));
-                var s = System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
-            }
-            catch
-            {
-
-            }
-        }
-
-        void Play(string ip, int port, string info)
-        {
-            System.Net.WebClient webClient = new System.Net.WebClient();
-            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#PlayQueueWithIndex\"");
-            webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-            try
-            {
-                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + ip + ":" + port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes(info));
-                var s = System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
-            }
-            catch
-            {
-
-            }
-        }
-
-       
-    }
-}  
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveMusicList.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveMusicList.cs
index e0a95e1..751d459 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveMusicList.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveMusicList.cs
@@ -49,14 +49,14 @@
         public void MusicView(string listName)
         {
             middViewLayout.RemoveAll();
-            UI2.FuntionControlView.Music.UpdateThread.playMusuc(middViewLayout, "鎴戠殑鏈�鐖�", listName, A31MusicModel.Current.LoveMusicInfoList, A31MusicModel.Current);
+           //UpdateThread.PlayMusicClick(middViewLayout, "鎴戠殑鏈�鐖�", listName, A31MusicModel.Current.LoveMusicInfoList);
         }
         /// <summary>
         /// 瀹氭椂鏇存柊褰撳墠鎾斁闊充箰
         /// </summary>
         public void UpdateSelectedMusic()
         {
-           UI2.FuntionControlView.Music.UpdateThread.updateThread(this, middViewLayout,A31MusicModel.Current);
+           UpdateThread.updateCurrMusicThread(this, middViewLayout,A31MusicModel.Current);
         }
 
     
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveRadioList.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveRadioList.cs
deleted file mode 100644
index 4369486..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveRadioList.cs
+++ /dev/null
@@ -1,309 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Net;
-using System.Text;
-using Shared;
-namespace HDL_ON.UI.Music
-{
-    public class A31LoveRadioList : FrameLayout
-    {
-        public A31LoveRadioList()
-        {
-            Tag = "Music";
-        }
-
-        VerticalRefreshLayout middViewLayout;
-        /// <summary>
-        /// 鍏堝姞杞界晫闈㈠嚭鏉�
-        /// </summary>
-        public void Show()
-        {
-            #region   鐣岄潰甯冨眬------
-
-            this.BackgroundColor = MusicColor.ViewColor;
-            var topView = new TopView();
-            this.AddChidren(topView.TopFLayoutView());
-            topView.topNameBtn.TextID = StringId.radioLove;
-            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
-            {
-
-                if (updateSelectedMusicThread != null)
-                {
-                    try
-                    {
-                        if (updateSelectedMusicThread.IsAlive)
-                        {
-                            updateSelectedMusicThread.Abort();
-                            ///鍏抽棴绾跨▼
-                        }
-                    }
-                    catch { }
-                }
-                this.RemoveFromParent();
-            };
-            middViewLayout = new VerticalRefreshLayout
-            {
-                BackgroundColor = MusicColor.WhiteColor,
-                Y = topView.fLayout.Bottom,
-                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
-            };
-            this.AddChidren(middViewLayout);
-            middViewLayout.BeginHeaderRefreshingAction += () =>
-            {
-                middViewLayout.EndHeaderRefreshing();
-            };
-            #endregion
-            MusicView(Language.StringByID(StringId.radioLove));
-        }
-        /// <summary> 
-        /// 鍔犺浇鏁版嵁鐨勬柟娉�
-        /// </summary>
-        public void MusicView(string listName)
-        {
-            middViewLayout.RemoveAll();
-            for (int i = 0; i < A31MusicModel.Current.LoveRadioInfoList.Count; i++)
-            {
-                var radioInfo = A31MusicModel.Current.LoveRadioInfoList[i];
-                if (string.IsNullOrEmpty(radioInfo.Title))
-                {
-                    //闃叉姝屾洸鍚嶅瓧涓虹┖鎶涘紓甯�
-                    radioInfo.Title = " ";
-                }
-                FrameLayout radioViewFl = new FrameLayout
-                {
-                    Width = Application.GetRealWidth(375),
-                    Height = Application.GetRealHeight(67),
-                };
-                middViewLayout.AddChidren(radioViewFl);
-                //榛樿鐢靛彴鍥炬爣
-                Button radioIconBtn = new Button
-                {
-                    X = Application.GetRealWidth(16),
-                    Y = Application.GetRealHeight(18),
-                    Width = Application.GetRealWidth(32),
-                    Height = Application.GetRealWidth(32),
-                    UnSelectedImagePath = "MusicIcon/radioIcon.png",
-                };
-                radioViewFl.AddChidren(radioIconBtn);
-                //鐢靛彴鍚嶇О
-                Button radioNameBtn = new Button
-                {
-                    X = Application.GetRealWidth(60),
-                    Y = Application.GetRealHeight(23),
-                    Width = Application.GetRealWidth(250),
-                    Height = Application.GetRealHeight(22),
-                    TextColor = MusicColor.MusicTxet14Color,
-                    TextSize = TextSize.Text16,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    Tag = radioInfo.URL,
-                    Text = radioInfo.Title.Trim()
-                };
-                radioViewFl.AddChidren(radioNameBtn);
-                //娣诲姞鍠滅埍鐢靛彴
-                Button loveIcon = new Button
-                {
-                    X = Application.GetRealWidth(335),
-                    Y = Application.GetRealHeight(20),
-                    Width = Application.GetRealWidth(28),
-                    Height = Application.GetRealWidth(28),
-                    UnSelectedImagePath = "MusicIcon/loveSelected.png",
-                };
-                radioViewFl.AddChidren(loveIcon);
-                loveIcon.MouseUpEventHandler += (sender, e) =>
-                {
-                    var radioselected = A31MusicModel.Current.LoveRadioInfoList.Find((m) => m.URL == radioInfo.URL);
-                    if (radioselected != null)
-                    {
-                        ///瀛樺湪灏卞垹闄�
-                        A31MusicModel.Current.LoveRadioInfoList.Remove(radioInfo);
-                    }
-                    A31MusicModel.Save();
-                    radioViewFl.RemoveFromParent();
-                };
-
-                //鐐瑰嚮鎺т欢
-                Button clickBtn = new Button
-                {
-                    Width = Application.GetRealWidth(280),
-                    Height = Application.GetRealHeight(44),
-                    Tag = radioInfo,//鏍囪鎾斁鍝竴棣栨瓕鏇�
-                };
-                radioViewFl.AddChidren(clickBtn);
-                ///鐐瑰嚮鎾斁浜嬩欢
-                clickBtn.MouseUpEventHandler += (sender, e) =>
-                {
-
-                    System.Threading.Tasks.Task.Run(() =>
-                    {
-                        System.Threading.Thread.Sleep(50);
-                        Application.RunOnMainThread(() =>
-                        {
-                            //绉婚櫎鐣岄潰
-                            A31MusicModel.Current.A31PlayStatus.Title = radioNameBtn.Text;
-                            MainPage.BasePageView.RemoveViewByTag("Music");
-                            System.Threading.Tasks.Task.Run(() =>
-                            {
-                                CnpushList(clickBtn.Tag as MusicInfo, listName);
-                            });
-                        });
-                    });
-
-                };
-
-            }
-        }
-        /// <summary>
-        /// 瀹氭椂鏇存柊褰撳墠鎾斁闊充箰
-        /// </summary>
-        System.Threading.Thread updateSelectedMusicThread;
-        public void UpdateSelectedMusic()
-        {
-            updateSelectedMusicThread = new System.Threading.Thread(() =>
-            {
-                while (this.Parent != null)
-                {
-                    System.Threading.Thread.Sleep(1000);
-                    Application.RunOnMainThread(() =>
-                    {
-                        try
-                        {
-                            for (int i = 0; i < middViewLayout.ChildrenCount; i++)
-                            {
-                                FrameLayout view = (FrameLayout)middViewLayout.GetChildren(i);
-                                var songNameBtn = (Button)view.GetChildren(1);//鐩存帴FrameLayout鐖舵帶浠舵壘鍒拌鎺т欢Button
-                                if (A31MusicModel.Current.A31PlayStatus.Title == songNameBtn.Text.ToString())
-                                {
-                                    songNameBtn.TextColor = MusicColor.SelectedColor;
-                                }
-                                else
-                                {
-                                    songNameBtn.TextColor = MusicColor.MusicTxet14Color;
-                                }
-
-
-                            }
-                        }
-                        catch { }
-
-                    });
-                }
-            });
-            updateSelectedMusicThread.Start();
-        }
-
-        /// <summary>
-        ///鏀惰棌鍒楄〃鐢靛彴鎾斁
-        /// </summary>
-        /// <param name="listName"></param>
-        public void CnpushList(MusicInfo musicInfo, string listName)
-        {
-
-            StringBuilder sb = new StringBuilder();
-            sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>");
-            sb.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-            sb.AppendLine("<s:Body>");
-            sb.AppendLine("<u:CreateQueue xmlns:u=\"urn:schemas-wiimu-com:service:PlayQueue:1\">");
-            sb.AppendLine("<QueueContext>");
-            sb.AppendLine("&lt;?xml version=&quot;1.0&quot; ?&gt;");
-            sb.AppendLine("&lt;PlayList&gt;");
-            sb.AppendLine("&lt;ListName&gt;" + listName + "&lt;/ListName&gt;");
-            sb.AppendLine("&lt;ListInfo&gt;");
-            sb.AppendLine("&lt;Radio&gt;1&lt;/Radio&gt;");
-            sb.AppendLine("&lt;SourceName&gt;TuneIn&lt;/SourceName&gt;");
-            sb.AppendLine("&lt;TrackNumber&gt;1&lt;/TrackNumber&gt;");
-            sb.AppendLine("&lt;SearchUrl&gt;http://opml.radiotime.com/Tune.ashx?id=s112201&amp;amp;partnerId=yvcOjvJP&lt;/SearchUrl&gt;");
-            sb.AppendLine("&lt;Quality&gt;3&lt;/Quality&gt;");
-            sb.AppendLine("&lt;RealIndex&gt;0&lt;/RealIndex&gt;");
-            sb.AppendLine("&lt;SrcParent&gt;&lt;/SrcParent&gt;");
-            sb.AppendLine("&lt;PicUrl&gt;&lt;/PicUrl&gt;");
-            sb.AppendLine("&lt;/ListInfo&gt;");
-            sb.AppendLine("&lt;Tracks&gt;");
-
-            var url = musicInfo.URL;
-
-            if (url != null)
-            {
-                url = url.TrimEnd('\n').Replace("&", "&amp;amp;");
-            }
-            else
-            {
-                return;
-            }
-            sb.AppendLine("&lt;Track" + 1 + "&gt;");
-            sb.AppendLine("&lt;Source&gt;TuneIn&lt;/Source&gt;");
-            sb.AppendLine("&lt;URL&gt;" + url + "&lt;/URL&gt;");
-            sb.AppendLine("&lt;Source&gt;TuneIn&lt;/Source&gt;");
-            sb.AppendLine("&lt;Id&gt;0&lt;/Id&gt;");
-            sb.AppendLine("&lt;Key&gt;http://so.ard.iyyin.com/s/song_with_out?q=%E8%8A%B1%E9%83%BD%E7%94%B5%E5%8F%B0+100.5+%28%E6%B5%81%E8%A1%8C%E9%9F%B3%E4%B9%90%E5%89%8D40%29%20TuneIn&amp;amp;size=50&amp;amp;page=1&lt;/Key&gt;");
-            sb.AppendLine("&lt;Metadata&gt;");
-            sb.AppendLine("&amp;lt;DIDL-Lite xmlns:dc=&amp;quot;http://purl.org/dc/elements/1.1/&amp;quot; xmlns:upnp=&amp;quot;urn:schemas-upnp-org:metadata-1-0/upnp/&amp;quot; xmlns:song=&amp;quot;www.wiimu.com/song/&amp;quot; xmlns=&amp;quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/&amp;quot;&amp;gt;");
-            sb.AppendLine("&amp;lt;upnp:class&amp;gt;object.item.audioItem.musicTrack&amp;lt;/upnp:class&amp;gt;");
-            sb.AppendLine("&amp;lt;item&amp;gt;");
-            sb.AppendLine("&amp;lt;song:bitrate&amp;gt;0&amp;lt;/song:bitrate&amp;gt;");
-            sb.AppendLine("&amp;lt;song:id&amp;gt;0&amp;lt;/song:id&amp;gt;");
-            sb.AppendLine("&amp;lt;song:singerid&amp;gt;0&amp;lt;/song:singerid&amp;gt;");
-            sb.AppendLine("&amp;lt;song:albumid&amp;gt;0&amp;lt;/song:albumid&amp;gt;");
-            sb.AppendLine("&amp;lt;res protocolInfo=&amp;quot;http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;&amp;quot; duration=&amp;quot;1000&amp;quot;&amp;gt;" + url + "&amp;lt;/res&amp;gt;");
-            sb.AppendLine("&amp;lt;dc:title&amp;gt;" + musicInfo.Title + "&amp;lt;/dc:title&amp;gt;");
-            sb.AppendLine("&amp;lt;upnp:artist&amp;gt;TuneIn&amp;lt;/upnp:artist&amp;gt;");
-            sb.AppendLine("&amp;lt;upnp:album&amp;gt;&amp;lt;/upnp:album&amp;gt;");
-            sb.AppendLine("&amp;lt;upnp:albumArtURI&amp;gt;" + musicInfo.Image + "&amp;lt;/upnp:albumArtURI&amp;gt;");
-            sb.AppendLine("&amp;lt;/item&amp;gt;");
-            sb.AppendLine("&amp;lt;/DIDL-Lite&amp;gt;");
-            sb.AppendLine("&lt;/Metadata&gt;");
-            sb.AppendLine("&lt;/Track" + 1 + "&gt;");
-
-            sb.AppendLine("&lt;/Tracks&gt;");
-            sb.AppendLine("&lt;/PlayList&gt;");
-            sb.AppendLine("</QueueContext>");
-            sb.AppendLine("</u:CreateQueue>");
-            sb.AppendLine("</s:Body>");
-            sb.AppendLine("</s:Envelope>");
-            //sendMusicLists(a31.IPAddress, a31.Port, "CreateQueue", sb.ToString());
-            sendMusicLists(A31MusicModel.Current.IPAddress, A31MusicModel.Current.Port, "CreateQueue", sb.ToString());
-
-            StringBuilder playString = new StringBuilder();
-            playString.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>");
-            playString.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-            playString.AppendLine("<s:Body>");
-            playString.AppendLine("<u:PlayQueueWithIndex xmlns:u=\"urn:schemas-wiimu-com:service:PlayQueue:1\">");
-            playString.AppendLine("<QueueName>" + listName + "</QueueName>");
-            playString.AppendLine("<Index>" + 1 + "</Index>");
-            playString.AppendLine("</u:PlayQueueWithIndex>");
-            playString.AppendLine("</s:Body>");
-            playString.AppendLine("</s:Envelope>");
-
-            play(A31MusicModel.Current.IPAddress, A31MusicModel.Current.Port, playString.ToString());
-
-        }
-
-        void sendMusicLists(string ip, int port, string soapAction, string listInfo)
-        {
-            WebClient webClient = new WebClient();
-            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#" + soapAction + "\"");
-            webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-            try
-            {
-                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + ip + ":" + port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes(listInfo));
-                var s = System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
-            }
-            catch { }
-        }
-
-        void play(string ip, int port, string info)
-        {
-            WebClient webClient = new WebClient();
-            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#PlayQueueWithIndex\"");
-            webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-            try
-            {
-                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + ip + ":" + port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes(info));
-                var s = System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
-            }
-            catch
-            {
-
-            }
-        }
-    }
-}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicFileList.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicFileList.cs
new file mode 100644
index 0000000..2982d04
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicFileList.cs
@@ -0,0 +1,115 @@
+锘縰sing System;
+using System.Collections.Generic;
+using Shared;
+namespace HDL_ON.UI.Music
+{
+    public class A31MusicFileList : FrameLayout
+    {
+        public A31MusicFileList()
+        {
+            Tag = "Music";
+        }
+        VerticalRefreshLayout middViewLayout;
+        public void Show()
+        {
+            #region   鐣岄潰甯冨眬------
+
+            this.BackgroundColor = MusicColor.ViewColor;
+            var topView = new TopView();
+            this.AddChidren(topView.TopFLayoutView());
+            topView.topNameBtn.TextID = StringId.localMusic;
+            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                this.RemoveFromParent();
+            };
+            middViewLayout = new VerticalRefreshLayout
+            {
+                BackgroundColor = MusicColor.WhiteColor,
+                Y = topView.fLayout.Bottom,
+                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
+            };
+            this.AddChidren(middViewLayout);
+            #endregion
+
+            middViewLayout.BeginHeaderRefreshingAction += () =>
+            {
+                System.Threading.Tasks.Task.Run(() =>
+                {
+                    try
+                    {
+                        SendMethod.mMethod.GetPalyList(A31MusicModel.Current.functionMusic);
+                    }
+                    catch { }
+                    finally
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            this.FileView();
+                            middViewLayout.EndHeaderRefreshing();
+                        });
+                    }
+                });
+
+            };
+
+        }
+        /// <summary>
+        /// 鍔犺浇鏂囦欢澶筕iew鐨勬柟娉�
+        /// </summary>
+        public void FileView()
+        {
+            middViewLayout.RemoveAll();
+            for (int i = 0; i < A31MusicModel.Current.palyLists.Count; i++)
+            {
+                var list = A31MusicModel.Current.palyLists[i];
+                RowLayout addFlieRow = new RowLayout
+                {
+                    Height = Application.GetRealHeight(104),
+                    LineColor = MusicColor.WhiteColor,
+                    SubViewWidth = Application.GetRealWidth(90),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
+                };
+                middViewLayout.AddChidren(addFlieRow);
+                //鏂囦欢鍥炬爣
+                Button fileIconBtn = new Button
+                {
+                    X = Application.GetRealWidth(16),
+                    Y = Application.GetRealHeight(8),
+                    Width = Application.GetRealWidth(88),
+                    Height = Application.GetRealWidth(88),
+                    UnSelectedImagePath = "MusicIcon/fileList.png",
+                };
+                addFlieRow.AddChidren(fileIconBtn);
+
+                //鏂囦欢鍚嶆帶浠�
+                Button fileNameBtn = new Button
+                {
+                    X = fileIconBtn.Right + Application.GetRealWidth(16),
+                    Y = Application.GetRealHeight(42),
+                    Width = Application.GetRealWidth(217),
+                    Height = Application.GetRealHeight(20),
+                    TextColor = MusicColor.TextColor,
+                    TextSize = TextSize.Text14,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    Text = list.group,
+                };
+                addFlieRow.AddChidren(fileNameBtn);
+
+                Button clickBtn = new Button
+                {
+                    X = fileIconBtn.Right + Application.GetRealWidth(16),
+                    Width = Application.GetRealWidth(375 - 138),
+                    Height = Application.GetRealHeight(104),
+                };
+                addFlieRow.AddChidren(clickBtn);
+                clickBtn.MouseUpEventHandler += (sender, e) =>
+                {
+                    A31SongPlay a31Song = new A31SongPlay();
+                    MainPage.BasePageView.AddChidren(a31Song);
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                    a31Song.Show(list.songs, list.group);
+                };
+
+            }
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs
index 13991b2..92009db 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs
@@ -7,88 +7,22 @@
 {
 
     [System.Serializable]
-    public class A31MusicModel : Function
+    public class A31MusicModel
     {
         public static List<A31MusicModel> A31MusicModelList = new List<A31MusicModel> { };
         static readonly string a31MusiceModeListFilePath = "A31MusiceModeListFilePath";
         static A31MusicModel()
         {
-            Refresh();
+            //Refresh();
         }
 
-        static List<System.Threading.Thread> updataMusicStatesListThread = new List<System.Threading.Thread>();
+     
         /// <summary>
-        /// 璇诲彇闊充箰鐘舵��
+        /// 闊充箰鍔熻兘
         /// </summary>
-        public static void ReadMusicStates()
-        {
-            RemoveListThread();
-            if (GetCollection)
-            {
-                for (int i = 0; i < A31MusicModelList.Count; i++)
-                {
-                    var a31player = A31MusicModelList[i];
-                    var musicThread = new System.Threading.Thread(() =>
-                    {
-                        while (true)
-                        {
-                            System.Threading.Thread.Sleep(1000);
-                            if (!a31player.IsOnLine)
-                            {
-                                continue;
-                            }
-                            SendMethod.ReadStatus(a31player);
-                        }
-                    })
-                    { IsBackground = true, Name = "A31" };
-                    musicThread.Start();
-                    updataMusicStatesListThread.Add(musicThread);
-                }
-            }
-        }
-        
-        /// <summary>
-        /// 绉婚櫎涔嬪墠鐨勭嚎绋�
-        /// </summary>
-        public static void RemoveListThread() {
-            for (int i = 0; i < updataMusicStatesListThread.Count;)
-            {
-                try
-                {                    
-                    var thread = updataMusicStatesListThread[i];
-                    if (thread.IsAlive)
-                    {
-                        thread.Abort();
-                    }
-                    updataMusicStatesListThread.Remove(thread);
-                }
-                catch (Exception e)
-                {
-                    MainPage.Log("clearA31Threads error : " + e.Message);
-                }
-                finally
-                {
-                    MainPage.Log("clearA31Threads over");
-                }
-            }
-        }
-        /// <summary>
-        /// 闊充箰鍒楄〃閲屾槸鍚︽湁闊充箰琚敹钘忚繃
-        /// </summary>
-        static bool GetCollection
-        {
-            get
-            {
-                for (int i = 0; i < A31MusicModelList.Count; i++)
-                {
-                    if (A31MusicModelList[i].collect)
-                    {
-                        return true; //鏌ヨ鏄惁鏈夐煶涔愯鏀惰棌杩�
-                    }
-                }
-                return false;
-            }
-        }
+        public Function functionMusic = new Function();
+       
+      
         /// <summary>
         ///淇濆瓨褰撳墠闊充箰鍒楄〃
         /// </summary>
@@ -116,51 +50,27 @@
             A31MusicModelList.RemoveAll((obj) => obj == null);
         }
 
-        /// <summary>
-        /// 闊充箰鎾斁鍣ㄥ悕绉�
-        /// </summary>
-        public string Name = string.Empty;
+     
         /// <summary>
         /// 涓婁竴娆℃洿鏂扮殑鏃堕棿
         /// 璁板綍鏁版嵁鍙嶉鐨勬椂闂�(鍥犱负鏈夋椂闂寸綉缁滃樊鏁版嵁涓嶅洖澶嶏紝瀵艰嚧鍒锋柊褰撳墠鎾斁闊充箰鏃堕棿涓嶆纭�)
         /// ((褰撳墠鏃堕棿)DateTime.Now - (璁板綍鏃堕棿)LastDateTimeLastDateTime).TotalSeconds=璇樊鏃堕棿(绉�)
         /// </summary>
         public DateTime LastDateTime;
-        /// <summary>
-        /// IP鍦板潃
-        /// </summary>
-        public string IPAddress = "192.168.1.100";
-
-        /// <summary>
-        /// 绔彛
-        /// </summary>
-        public int Port = 49153;
-
-        /// <summary>
-        /// 鏄惁鏄挱鏀惧櫒鍒楄〃鏈�鍚庝竴涓�(true)
-        /// </summary>
-        public bool IsEnd = false;
-
-        public int A31DeviceType;
-
-        //public string a31Source = "wifi";
-        //public string a31Source = string.Empty;
+      
         /// <summary>
         /// 闊充箰鎾斁鍣↖D
         /// </summary>
         public string UniqueDeviceName = string.Empty;
 
-        /// <summary>
-        /// 褰撳墠鎾斁鐘舵��
-        /// </summary>
-        public A31PlayStatus A31PlayStatus = new A31PlayStatus();
+       
 
         public MusicInfo CurrentMusic = new MusicInfo();
 
         /// <summary>
         ///褰撳墠鎾斁鐨勫垪琛ㄤ俊鎭�
         /// </summary>
-        public List<MusicInfo> CurrentPlayMusicInfoList = new List<MusicInfo>();
+        public List<Songs> CurrentPlayMusicInfoList = new List<Songs>();
 
         /// <summary>
         /// 鏄惁鍏佽鏄剧ず
@@ -168,47 +78,15 @@
         public bool IsCanShow = true;
 
         /// <summary>
-        /// 鏄惁鍦ㄧ嚎锛屽鏋滃湪绾垮氨鍏佽璇诲彇淇℃伅
+        /// 鍒楄〃
         /// </summary>
-        public bool IsOnLine = true;
+        public List<PalyList> palyLists = new List<PalyList>(); 
 
         /// <summary>
         ///  鍠滅埍闊充箰鍒楄〃
         /// </summary>
-        public List<MusicInfo> LoveMusicInfoList = new List<MusicInfo>();
+        public List<Songs> LoveMusicInfoList = new List<Songs>();
 
-        /// <summary>
-        /// DLNA鎵�鏈夊垪琛�
-        /// </summary>
-        public List<MusicInfo> dlnaMusicInfoLists = new List<MusicInfo>();
-
-        /// <summary>
-        ///  鐢靛彴鎵�鏈夊垪琛�
-        /// </summary>
-        public List<MusicInfo> CnRadioInfoList = new List<MusicInfo>();
-
-        /// <summary>
-        ///  vTuner鐢靛彴鎵�鏈夊垪琛�
-        /// </summary>
-        public List<MusicInfo> vTunerList = new List<MusicInfo>();
-
-        /// <summary>
-        ///  鍠滅埍鐢靛彴鍒楄〃
-        /// </summary>
-        public List<MusicInfo> LoveRadioInfoList = new List<MusicInfo>();
-
-        /// <summary>
-        /// Pandora鐢靛彴鎵�鏈夊垪琛�
-        /// </summary>
-        public List<MusicInfo> PanRadioInfoList = new List<MusicInfo>();
-        /// <summary>
-        /// usb鍒楄〃
-        /// </summary>
-        public List<MusicInfo> USBList = new List<MusicInfo>();
-        /// <summary>
-        /// Tidal鍠滅埍鍒楄〃
-        /// </summary>
-        public List<MusicInfo> TidalLikelist = new List<MusicInfo>();
         /// <summary>
         ///鍒涘缓闊充箰鏂囦欢鍒楄〃
         /// </summary>
@@ -218,53 +96,22 @@
         /// </summary>
         public static A31MusicModel Current;
 
-        public int _ServerClientType;
-        /// <summary>
-        /// -1琛ㄧず浠庣殑0琛ㄧず榛樿1琛ㄧず涓荤殑
-        /// </summary>
-        public int ServerClientType
-        {
-            get
-            {
-                return _ServerClientType;
-            }
-            set
-            {
-                _ServerClientType = value;
-                if(value == 0)
-                {
-                    name = Name;
-                }
-            }
-        }
-        /// <summary>
-        /// 璁板綍涓绘挱鏀惧櫒IP
-        /// </summary>
-        public string MainPlayIP = string.Empty;
+       
+   
 
-        public string _MainPlayName = string.Empty;
         /// <summary>
-        /// 璁板綍涓绘挱鏀惧櫒鍚嶇О
+        /// 鎸囧畾鍒楄〃鍚嶈幏鍙栭煶涔愬垪琛�
         /// </summary>
-        public string MainPlayName
+        /// <returns></returns>
+        public List<Songs> GetSongList(string listName)
         {
-            get
-            {
-                return _MainPlayName;
+            var list = palyLists.Find((o)=>o.group==listName);
+            if (list==null) {
+                return new List<Songs>();
             }
-            set
-            {
-                _MainPlayName = value;
-                if(ServerClientType == 1)
-                {
-                    name = value;
-                }
-            }
+            return list.songs;
         }
-        /// <summary>
-        /// 璁板綍涓绘挱鏀惧櫒鏄惁琚敹钘�(绉�妗″畾涔夌殑)
-        /// </summary>
-        public bool MainPlayCollection = false;
+       
 
         public Slaves Slave = new Slaves();
         /// <summary>
@@ -272,6 +119,11 @@
         /// </summary>
         public static DateTime ProgressDateTime = DateTime.Now;
 
+        /// <summary>
+        /// 鍒ゆ柇鏄惁鏄痡son鏁版嵁
+        /// </summary>
+        /// <param name="json"></param>
+        /// <returns></returns>
         public static bool IsJson(string json)
         {
             try
@@ -310,7 +162,7 @@
         /// <summary>
         ///  鍒楄〃姝屾洸淇℃伅
         /// </summary>
-        public List<MusicInfo> MusicInfoList = new List<MusicInfo>();
+        public List<Songs> MusicInfoList = new List<Songs>();
     }
     [System.Serializable]
     public class TidalMusicInfo : MusicInfo
@@ -340,4 +192,61 @@
         public string uuid = string.Empty;
     }
 
+    [System.Serializable]
+    /// <summary>
+    /// 鏀寔澶氫釜闊充箰
+    /// </summary>
+    public class PalyListInfo
+    {
+        /// <summary>
+        /// 闊充箰sid
+        /// </summary>
+        public string sid = string.Empty;
+        /// <summary>
+        ///  瑙i噴澶氫釜闊充箰
+        /// </summary>
+        public List<PalyList> playlist = new List<PalyList>();
+    }
+
+    [System.Serializable]
+    /// <summary>
+    /// 鍒楄〃淇℃伅
+    /// </summary>
+    public class PalyList
+    {
+        /// <summary>
+        /// 鍒楄〃鍚�
+        /// </summary>
+        public string group = string.Empty;
+        /// <summary>
+        ///  鍒楄〃姝屾洸淇℃伅
+        /// </summary>
+        public List<Songs> songs = new List<Songs>();
+    }
+    [System.Serializable]
+    public class Songs:MusicInfo
+    {
+        /// <summary>
+        /// 姝屾洸鍚嶇О
+        /// </summary>
+        public string name = string.Empty;
+        /// <summary>
+        /// 澶у皬
+        /// </summary>
+        public string size = string.Empty;
+        /// <summary>
+        /// 鏃堕暱
+        /// </summary>
+        public string time = string.Empty;
+        /// <summary>
+        /// 绫诲瀷<鑷繁鐢�>
+        /// </summary>
+        public string type = string.Empty;
+
+
+
+
+    }
+
+
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs
index 3db0642..8dba2e9 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs
@@ -33,7 +33,7 @@
             #region 鍩虹淇℃伅锛� 鎾斁鍣� 钃濈墮 鍖哄煙锛�
             FrameLayout fL1 = new FrameLayout
             {
-                Height = Application.GetRealHeight(202),
+                Height = Application.GetRealHeight(202-50),
                 Width = Application.GetRealWidth(375),
             };
             middViewLayout.AddChidren(fL1);
@@ -50,17 +50,11 @@
             View.MusicSourceView playNameView = new View.MusicSourceView();
             playNameView.fLayout.Y = musicIfonView.fLayout.Bottom;
             playNameView.textBtn.TextID = StringId.playerName;
-            playNameView.inputTextBtn.Text = A31MusicModel.Current.Name;
+            playNameView.inputTextBtn.Text = A31MusicModel.Current.functionMusic.name;
             playNameView.FrameLayoutView(fL1, false);
 
-            View.MusicSourceView bluetoothNameView = new View.MusicSourceView();
-            bluetoothNameView.fLayout.Y = playNameView.fLayout.Bottom;
-            bluetoothNameView.textBtn.TextID = StringId.bluetoothName;
-            bluetoothNameView.inputTextBtn.Text = A31MusicModel.Current.Name;
-            bluetoothNameView.FrameLayoutView(fL1, false);
-
             View.MusicSourceView areaText = new View.MusicSourceView();
-            areaText.fLayout.Y = bluetoothNameView.fLayout.Bottom;
+            areaText.fLayout.Y = playNameView.fLayout.Bottom;
             areaText.FrameLayoutView(fL1, false);
             areaText.nextLevelBtn.X = Application.GetRealWidth(339);
             areaText.nextLevelBtn.Y = Application.GetRealHeight(17);
@@ -70,7 +64,7 @@
             areaText.lineBtn.BackgroundColor = MusicColor.WhiteColor;
             areaText.textBtn.X = Application.GetRealWidth(16);
             areaText.textBtn.TextID = StringId.region;
-            areaText.inputTextBtn.Text = A31MusicModel.Current.GetRoomListName();
+            areaText.inputTextBtn.Text = A31MusicModel.Current.functionMusic.GetRoomListName();
 
             #endregion
 
@@ -80,7 +74,7 @@
                 Height = Application.GetRealHeight(152),
                 Width = Application.GetRealWidth(375),
             };
-            middViewLayout.AddChidren(fL2);
+            //middViewLayout.AddChidren(fL2);
 
             View.MusicSourceView playListView = new View.MusicSourceView();
             playListView.fLayout.Height = Application.GetRealHeight(44);
@@ -111,7 +105,7 @@
                 Height = Application.GetRealHeight(352),
                 Width = Application.GetRealWidth(375),
             };
-            middViewLayout.AddChidren(fL3);
+            //middViewLayout.AddChidren(fL3);
 
             View.MusicSourceView selectedSourceView = new View.MusicSourceView();
             selectedSourceView.fLayout.Height = Application.GetRealHeight(44);
@@ -120,43 +114,27 @@
             selectedSourceView.textBtn.TextSize = TextSize.Text16;
             selectedSourceView.inputTextBtn.Visible = false;
             selectedSourceView.nextLevelBtn.Visible = false;
-            selectedSourceView.FrameLayoutView(fL3, false);
+            //selectedSourceView.FrameLayoutView(fL3, false);
 
-            View.MusicSourceView localMusicSourceView = new View.MusicSourceView();
-            localMusicSourceView.fLayout.Y = selectedSourceView.fLayout.Bottom;
-            localMusicSourceView.iconBtn.UnSelectedImagePath = "MusicIcon/localMusic.png";
-            localMusicSourceView.textBtn.TextID = StringId.localMusic;
-            localMusicSourceView.FrameLayoutView(fL3);
+            View.MusicSourceView musicSourceView = new View.MusicSourceView();
+            musicSourceView.fLayout.Y = selectedSourceView.fLayout.Bottom;
+            musicSourceView.iconBtn.UnSelectedImagePath = "MusicIcon/localMusic.png";
+            musicSourceView.textBtn.TextID = StringId.localMusic;
+            //musicSourceView.FrameLayoutView(fL3);
 
-            View.MusicSourceView usbSourceView = new View.MusicSourceView();
-            usbSourceView.fLayout.Y = localMusicSourceView.fLayout.Bottom;
-            usbSourceView.iconBtn.UnSelectedImagePath = "MusicIcon/usb.png";
-            usbSourceView.textBtn.TextID = StringId.usb;
-            usbSourceView.FrameLayoutView(fL3);
-
-            View.MusicSourceView radioSourceView = new View.MusicSourceView();
-            radioSourceView.fLayout.Y = usbSourceView.fLayout.Bottom;
-            radioSourceView.iconBtn.UnSelectedImagePath = "MusicIcon/radio.png";
-            radioSourceView.textBtn.TextID = StringId.radio;
-            //radioSourceView.FrameLayoutView(fL3);鏆傛椂闅愯棌鍦ㄧ嚎鐢靛彴
-
-            View.MusicSourceView qqMusicSourceView = new View.MusicSourceView();
-            qqMusicSourceView.fLayout.Y = usbSourceView.fLayout.Bottom;
-            qqMusicSourceView.iconBtn.UnSelectedImagePath = "MusicIcon/qqMusic.png";
-            qqMusicSourceView.textBtn.TextID = StringId.qqMusic;
-            qqMusicSourceView.FrameLayoutView(fL3);
+       
 
             View.MusicSourceView bluetoothSourceView = new View.MusicSourceView();
-            bluetoothSourceView.fLayout.Y = qqMusicSourceView.fLayout.Bottom;
+            bluetoothSourceView.fLayout.Y = musicSourceView.fLayout.Bottom;
             bluetoothSourceView.iconBtn.UnSelectedImagePath = "MusicIcon/bluetooth.png";
             bluetoothSourceView.textBtn.TextID = StringId.bluetooth;
-            bluetoothSourceView.FrameLayoutView(fL3);
+            //bluetoothSourceView.FrameLayoutView(fL3);
 
             View.MusicSourceView lineSourceView = new View.MusicSourceView();
             lineSourceView.fLayout.Y = bluetoothSourceView.fLayout.Bottom;
             lineSourceView.iconBtn.UnSelectedImagePath = "MusicIcon/line.png";
             lineSourceView.textBtn.TextID = StringId.line;
-            lineSourceView.FrameLayoutView(fL3);
+            //lineSourceView.FrameLayoutView(fL3);
 
 
             #endregion
@@ -164,34 +142,69 @@
             #endregion
 
             #region  鎵�鏈夌偣鍑讳簨浠�
+            ///浜嬩欢
+            musicSourceView.clickBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                A31MusicFileList a31MusicFileList = new A31MusicFileList();
+                MainPage.BasePageView.AddChidren(a31MusicFileList);
+                a31MusicFileList.Show();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                Loading loading = new Loading();
+                a31MusicFileList.AddChidren(loading);
+                loading.Start();
+                System.Threading.Tasks.Task.Run(() =>
+                {
+                    try
+                    {
+                        if (A31MusicModel.Current.palyLists.Count == 0)
+                        {
+                           SendMethod.mMethod.GetPalyList(A31MusicModel.Current.functionMusic);
+                           
+                        }
+                    }
+                    catch
+                    {
+                    }
+                    finally
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            loading.Hide();
+                            a31MusicFileList.FileView();
+                        });
+                    }
+                });
+            };
+
+
             ///鎾斁鍣ㄤ慨鏀瑰悕绉颁簨浠�
             playNameView.clickBtn.MouseUpEventHandler += (sender, e) =>
             {
-                new View.TipView().InputBox(StringId.modifyName, A31MusicModel.Current.Name, StringId.nameNull, (playerName) =>
+                new View.TipView().InputBox(StringId.modifyName, A31MusicModel.Current.functionMusic.name, StringId.nameNull, (playerName) =>
                 {
                     playNameView.inputTextBtn.Text = playerName;
-                    A31MusicModel.Current.Name = playerName;
-                    string url = "http://" + A31MusicModel.Current.IPAddress + "/httpapi.asp?command=setDeviceName:" + A31MusicModel.Current.Name;
-                    SendMethod.SendCommand(url);
+                    A31MusicModel.Current.functionMusic.name = playerName;
+                    //鍙戦�佸懡浠�
+                    System.Threading.Tasks.Task.Run(() =>
+                    {
+                        try
+                        {
+                            SendMethod.mMethod.EditDeviceName(A31MusicModel.Current.functionMusic.deviceId,playerName);
+                        }
+                        catch { }
+
+                    });
+
                 });
 
             };
-            ///钃濈墮淇敼鍚嶇О浜嬩欢
-            bluetoothNameView.clickBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                new View.TipView().InputBox(StringId.modifyName, A31MusicModel.Current.Name, StringId.nameNull, (bluetoothName) =>
-                {
-                    bluetoothNameView.inputTextBtn.Text = bluetoothName;
-                    SendMethod.ModifyBluetoothName("MCU+PAS+BT" + bluetoothName.Trim() + "*&");
-                });
-
-            };
+           
             ///鍖哄煙淇敼鐨勪簨浠�
             areaText.clickBtn.MouseUpEventHandler += (sender, e) =>
             {
-                ChooseRoomPage chooseRoomPage = new ChooseRoomPage(A31MusicModel.Current, () =>
+                ChooseRoomPage chooseRoomPage = new ChooseRoomPage(A31MusicModel.Current.functionMusic, () =>
                 {
-                    areaText.inputTextBtn.Text = A31MusicModel.Current.GetRoomListName();
+                    areaText.inputTextBtn.Text = A31MusicModel.Current.functionMusic.GetRoomListName();
                     A31MusicModel.Save();
                 });
                 MainPage.BasePageView.AddChidren(chooseRoomPage);
@@ -223,117 +236,19 @@
                 a31MyList.UpdateSelectedFile();
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
             };
-            ///鏈湴闊充箰浜嬩欢
-            localMusicSourceView.clickBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                A31LocalMusicList a31LocalMusicList = new A31LocalMusicList();
-                MainPage.BasePageView.AddChidren(a31LocalMusicList);
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                a31LocalMusicList.Show();
-                a31LocalMusicList.UpdateSelectedMusic();
-            };
-            ///USB浜嬩欢
-            usbSourceView.clickBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                A31USBMusicList usbMusic = new A31USBMusicList();
-                MainPage.BasePageView.AddChidren(usbMusic);
-                usbMusic.UIView();
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                Loading loading = new Loading();
-                usbMusic.AddChidren(loading);
-                loading.Start();
-                System.Threading.Tasks.Task.Run(() =>
-                {
-                    try
-                    {
-                        if (A31MusicModel.Current.USBList.Count == 0)
-                        {
-                            //杩涙潵璇讳竴娆�(娉ㄦ剰:鎾斁鍦板潃鍙兘浼氭敼鍙橈紝瀵艰嚧鎾斁涓嶄簡闊充箰;瑙e喅:杩涙潵閮藉幓鍘昏鍙栨渶鏂版暟鎹�)
-                            var list = SendMethod.GetUsbList(A31MusicModel.Current);
-                            A31MusicModel.Current.USBList.AddRange(list);
-                        }
-                    }
-                    catch
-                    {
-                    }
-                    finally
-                    {
-                        Application.RunOnMainThread(() =>
-                        {
-                            loading.Hide();
-                            usbMusic.Show();
-                            usbMusic.UpdateSelectedMusic();
-                        });
-                    }
-                });
-            };
-            ///鍦ㄧ嚎鐢靛彴浜嬩欢
-            radioSourceView.clickBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                Loading loading = new Loading();
-                this.AddChidren(loading);
-                loading.Start();
-                System.Threading.Tasks.Task.Run(() =>
-                {
-                    var radioList = SendMethod.ReadRadioList("http://opml.radiotime.com/Browse.ashx?partnerId=yvcOjvJP");
-                    Application.RunOnMainThread(() =>
-                    {
-                        loading.Hide();
-                        A31Radio a31Radio = new A31Radio();
-                        MainPage.BasePageView.AddChidren(a31Radio);
-                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                        a31Radio.Show(radioList);
-                    });
-                });
-            };
-
-            ///QQ闊充箰浜嬩欢
-            qqMusicSourceView.clickBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                //string str = "com.tencent.qqmusic";
-                //if (Application.DeviceType == Device.Ios)
-                //{
-                //    str = "qqmusic:";
-                //}
-                //CommonClass.OpenApp(str);
-
-                bool bol = false;
-                string url = "";
-                try
-                {
-#if __IOS__
-                    bol = HDLUtils.OpenApp("qqmusic://");
-                    url = "https://apps.apple.com/cn/app/qq%E9%9F%B3%E4%B9%90-%E8%AE%A9%E7%94%9F%E6%B4%BB%E5%85%85%E6%BB%A1%E9%9F%B3%E4%B9%90/id414603431";
-
-#else
-                    bol = HDLUtils.OpenAppWithPackageName("com.tencent.qqmusic");
-                    //url = "http://music.qq.com/";
-                    url = "market://details?id=com.tencent.qqmusic";
-#endif
-                    if (!bol)
-                    {
-                        new View.TipView().TipBox1(StringId.tip, StringId.qqMsuicTip, () =>
-                        {
-                            HDLUtils.OpenUrl(url);
-                        });
-                    }
-                }
-                catch { }
-            };
+          
+     
+          
 
             ///钃濈墮浜嬩欢
             bluetoothSourceView.clickBtn.MouseUpEventHandler += (sender, e) =>
             {
                 this.RemoveFromParent();
-                string url = "http://" + A31MusicModel.Current.IPAddress + "/httpapi.asp?command=setPlayerCmd:switchmode:bluetooth";
-                SendMethod.SendCommand(url);
             };
             ///绾胯矾杈撳叆浜嬩欢
             lineSourceView.clickBtn.MouseUpEventHandler += (sender, e) =>
             {
                 this.RemoveFromParent();
-                string url = "http://" + A31MusicModel.Current.IPAddress + "/httpapi.asp?command=setPlayerCmd:switchmode:line-in";
-                SendMethod.SendCommand(url);
             };
 
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyList.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyList.cs
index 2e8ac86..fa2a7c6 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyList.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyList.cs
@@ -101,71 +101,7 @@
                     UnSelectedImagePath = "MusicIcon/fileList.png",
                 };
                 addFlieRow.AddChidren(fileIconBtn);
-                //鎾斁/鏆傚仠鍥炬爣
-                Button playIconBtn = new Button
-                {
-                    X = Application.GetRealWidth(78),
-                    Y = Application.GetRealHeight(70),
-                    Width = Application.GetRealWidth(24),
-                    Height = Application.GetRealWidth(24),
-                    UnSelectedImagePath = "MusicIcon/filePause.png",
-                    SelectedImagePath = "MusicIcon/filePlay.png",
-                    Tag= list,
-                };
-                addFlieRow.AddChidren(playIconBtn);
-
-                playIconBtn.MouseUpEventHandler = (sender, e) =>
-                {
-
-                   
-
-                    ///鏌ユ壘褰撳墠鎾斁闊充箰鏄惁杩欎釜鍒楄〃
-                    if (playIconBtn.IsSelected)
-                    {
-                        if (list.ListName == A31MusicModel.Current.A31PlayStatus.Artist && A31MusicModel.Current.A31PlayStatus.status == "play")
-                        {
-
-                            SendMethod.Pause(A31MusicModel.Current);
-                            A31MusicModel.Current.A31PlayStatus.status = "pause";
-                        }
-
-                    }
-                    else
-                    {
-                        if (list.MusicInfoList.Count == 0)
-                        {
-                            return;
-                        }
-
-                        if (list.ListName == A31MusicModel.Current.A31PlayStatus.Artist && A31MusicModel.Current.A31PlayStatus.status != "play")
-                        {
-                            SendMethod.Play(A31MusicModel.Current);
-                            A31MusicModel.Current.A31PlayStatus.status = "play";
-                        }
-                        else
-                        {
-                            ///鍙栭殢鏈烘暟;
-                            var ra = new Random { }.Next(0, list.MusicInfoList.Count);
-                            ///鏌ユ壘褰撳墠鐨勯煶涔�;
-                            var songs = list.MusicInfoList[ra];
-                            //鐐瑰嚮鎸夐挳闅忔満鎾斁闊充箰
-                            System.Threading.Tasks.Task.Run(() =>
-                            {
-                                System.Threading.Thread.Sleep(50);
-                                Application.RunOnMainThread(() =>
-                                {
-                                    //绉婚櫎鐣岄潰
-                                    System.Threading.Tasks.Task.Run(() =>
-                                    {
-                                       SendMethod.PushList(songs, list.ListName, list.MusicInfoList,A31MusicModel.Current, "鎴戠殑鍒楄〃");
-                                    });
-                                });
-                            });
-                        }
-
-                    }
-
-                };
+              
                 //鏂囦欢鍚嶆帶浠�
                 Button fileNameBtn = new Button
                 {
@@ -268,14 +204,14 @@
                                 var playBtn = (Button)view.GetChildren(1);//鐩存帴FrameLayout鐖舵帶浠舵壘鍒拌鎺т欢Button
                                 var listIfon = playBtn.Tag as FileListInfo;//寮哄埗杞崲涓篎ileListInfo绫诲瀷;
                                 ///鏌ユ壘褰撳墠鎾斁闊充箰鏄惁杩欎釜鍒楄〃
-                                if (A31MusicModel.Current.A31PlayStatus.Artist == listIfon.ListName && A31MusicModel.Current.A31PlayStatus.status == "play")
-                                {
-                                    playBtn.IsSelected = true;
-                                }
-                                else
-                                {
-                                    playBtn.IsSelected = false;
-                                }
+                                //if (A31MusicModel.Current.A31PlayStatus.Artist == listIfon.ListName && A31MusicModel.Current.A31PlayStatus.status == "play")
+                                //{
+                                //    playBtn.IsSelected = true;
+                                //}
+                                //else
+                                //{
+                                //    playBtn.IsSelected = false;
+                                //}
                             }
                         }
                         catch { }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyListMusic.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyListMusic.cs
index f55fa85..0a12ab0 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyListMusic.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyListMusic.cs
@@ -47,14 +47,14 @@
         public void MusicView(FileListInfo fileListInfo)
         {
             middViewLayout.RemoveAll();
-            UI2.FuntionControlView.Music.UpdateThread.playMusuc(middViewLayout,"鎴戠殑鍒楄〃", fileListInfo.ListName, fileListInfo.MusicInfoList, A31MusicModel.Current);
+           // A31SongPlay.SongListView(middViewLayout,fileListInfo.ListName, fileListInfo.MusicInfoList);
         }
         /// <summary>
         /// 瀹氭椂鏇存柊褰撳墠鎾斁闊充箰
         /// </summary>
         public void UpdateSelectedMusic()
         {
-            UI2.FuntionControlView.Music.UpdateThread.updateThread(this, middViewLayout, A31MusicModel.Current);
+           UpdateThread.updateCurrMusicThread(this, middViewLayout, A31MusicModel.Current);
         }
 
        
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
index d651ae9..244082b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
@@ -3,6 +3,7 @@
 using com.hdl.on;
 using System.Collections.Generic;
 using System.Security;
+using HDL_ON.UI.UI2.FuntionControlView.Music;
 
 namespace HDL_ON.UI.Music
 {
@@ -36,17 +37,19 @@
         /// new甯冨眬鐣岄潰
         /// </summary>
         View.PlayView playView = new View.PlayView();
-       
+        TopView topView;
+
+
         public void Show()
         {
+
             ///1绉掑畾鏃舵洿鏂扮姸鎬�
             timerUpdateStatus();
             #region   ---鐣岄潰甯冨眬---
             this.BackgroundColor = MusicColor.ViewColor;
-            var topView = new TopView();
+            topView = new TopView();
             topView.setBtn.Visible = true;
             this.AddChidren(topView.TopFLayoutView());
-            topView.topNameBtn.Text = A31MusicModel.Current.Name;
             topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
             {
                 RemoveFromParent();
@@ -67,112 +70,77 @@
             ///鍔犺浇鎾斁闊充箰鐣岄潰鐨勬帶浠舵柟娉�
             playView.viewFrameLayout(middLayout);
             #endregion
-            #region   ---鎺т欢鐨勭偣鍑讳簨浠�---
+
+            #region   ---鐣岄潰鐐瑰嚮浜嬩欢---
+            playView.collectIconBtn.Visible = false;//鍏堟殏鏃堕殣钘忔敹钘忓姛鑳�
             //鏀惰棌鍥炬爣浜嬩欢
             playView.collectIconBtn.MouseUpEventHandler += (sender, e) =>
             {
                 playView.collectIconBtn.IsSelected = !playView.collectIconBtn.IsSelected;
                 if (playView.collectIconBtn.IsSelected)
                 {
-                    A31MusicModel.Current.collect = true;
+                    A31MusicModel.Current.functionMusic.collect = true;
                 }
                 else
                 {
-                    A31MusicModel.Current.collect = false;
+                    A31MusicModel.Current.functionMusic.collect = false;
                 }
 
-            };
-            //蹇繘婊戝姩寮硅捣浜嬩欢;
-            playView.diyArcSeekBar.OnStopTrackingTouchEvent+= (sender, e) =>
-            {
-                int totalSecond = (int)(playView.diyArcSeekBar.Progress * 1.0f / 100 * int.Parse(A31MusicModel.Current.A31PlayStatus.totlen) / 1000);
-                //鍒嗛挓
-                int Minute = totalSecond / 60;
-                //绉掗挓
-                int Second = totalSecond % 60;
-                string time = "00" + ":" + (Minute.ToString().Length < 2 ? "0" + Minute.ToString() : Minute.ToString()) + ":" + (Second.ToString().Length < 2 ? "0" + Second.ToString() : Second.ToString());
-                SendMethod.Seek(time, A31MusicModel.Current);
-                A31MusicModel.Current.A31PlayStatus.curpos = (DateTime.Parse(time) - DateTime.Parse("00:00:00")).TotalMilliseconds.ToString();
             };
             ///鍒囨崲鎾斁妯″紡鐐瑰嚮浜嬩欢;
             playView.playOrderBtn.MouseUpEventHandler += (sender, e) =>
              {
+                 string modeValueString = string.Empty; 
                  string msg = Language.StringByID(StringId.switchTo);
-                 switch (A31MusicModel.Current.A31PlayStatus.loop)
+                 switch (A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.mode))
                  {
-                     //0鍒楄〃寰幆锛�1鍗曟洸寰幆锛�2闅忔満鎾斁;
-                     case "0":
-                         A31MusicModel.Current.A31PlayStatus.loop = "1";
+                     //list_cycle鍒楄〃寰幆锛宻ingle_cycle鍗曟洸寰幆锛宺andom闅忔満鎾斁;
+                     case ValueProperty.list_cycle:
+                         modeValueString=ValueProperty.single_cycle;
                          playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/single.png";
                          msg += Language.StringByID(StringId.singleMode);
                          break;
-
-                     case "1":
-                         A31MusicModel.Current.A31PlayStatus.loop = "2";
+                     case ValueProperty.single_cycle:
+                         modeValueString =ValueProperty.random;
                          playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/random.png";
                          msg += Language.StringByID(StringId.randomMode);
                          break;
-                     case "2":
-                         A31MusicModel.Current.A31PlayStatus.loop = "0";
+                     case ValueProperty.random:
+                         modeValueString = ValueProperty.list_cycle;
                          playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/list.png";
                          msg += Language.StringByID(StringId.listMode);
                          break;
                  }
+                 A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.mode, modeValueString);
                  new PublicAssmebly().TipMsgAutoClose(msg, false,1000);
-                 string url = "http://" + A31MusicModel.Current.IPAddress + "/httpapi.asp?command=setPlayerCmd:" + "loopmode:" + A31MusicModel.Current.A31PlayStatus.loop;
-                 SendMethod.SendCommand(url);
+                 Dictionary<string, string> dic = new Dictionary<string, string>();
+                 dic.Add(KeyProperty.mode,modeValueString);
+                 SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic,dic);
              };
             ///娣诲姞鍠滅埍鐐瑰嚮浜嬩欢;
             playView.loveBtn.MouseUpEventHandler += (sender, e) =>
             {
 
-                var url = A31MusicModel.Current.A31PlayStatus.TrackURL;
-                var album = A31MusicModel.Current.A31PlayStatus.Album;
-                var artist = A31MusicModel.Current.A31PlayStatus.Artist;
-                var song = A31MusicModel.Current.A31PlayStatus.Title;
-                if (A31MusicModel.Current.A31PlayStatus.Source == "RADIO-NETWORK")
+                var name = A31MusicModel.Current.functionMusic.GetAttribute("song_name").ToString();
+                var songTime = A31MusicModel.Current.functionMusic.GetAttribute("song_time").ToString();
+                playView.loveBtn.IsSelected = !playView.loveBtn.IsSelected;
+                if (playView.loveBtn.IsSelected)
                 {
-                    playView.loveBtn.IsSelected = !playView.loveBtn.IsSelected;
-                    if (playView.loveBtn.IsSelected)
+                    if (null == A31MusicModel.Current.LoveMusicInfoList.Find((musicInfo) =>
                     {
-                        if (null == A31MusicModel.Current.LoveRadioInfoList.Find((musicInfo) =>
-                        {
-                            return url == musicInfo.URL;
-                        }))
-                        {
-                            A31MusicModel.Current.LoveRadioInfoList.Add(new MusicInfo { Title = song, URL = url, });
-                        }
-                    }
-                    else
+                        return name == musicInfo.name;
+                    }))
                     {
-                        A31MusicModel.Current.LoveRadioInfoList.RemoveAll((musicInfo) =>
-                        {
-                            return url == musicInfo.URL;
-                        });
+                        A31MusicModel.Current.LoveMusicInfoList.Add(new Songs { name = name, time = songTime });
                     }
                 }
                 else
                 {
-                    playView.loveBtn.IsSelected = !playView.loveBtn.IsSelected;
-                    if (playView.loveBtn.IsSelected)
+                    A31MusicModel.Current.LoveMusicInfoList.RemoveAll((musicInfo) =>
                     {
-                        if (null == A31MusicModel.Current.LoveMusicInfoList.Find((musicInfo) =>
-                        {
-                            return url == musicInfo.URL;
-                        }))
-                        {
-                            A31MusicModel.Current.LoveMusicInfoList.Add(new MusicInfo { Title = song, URL = url, Artist = artist, Album = album });
-                        }
-                    }
-                    else
-                    {
-                        A31MusicModel.Current.LoveMusicInfoList.RemoveAll((musicInfo) =>
-                        {
-                            //涔熻鍔犳瓕鎵嬪悕鍒ゆ柇
-                            return musicInfo.URL == url;
-                        });
-                    }
-
+                        //涔熻鍔犳瓕鎵嬪悕鍒ゆ柇
+                        return musicInfo.name == name;
+                    });
                 }
                 A31MusicModel.Save();
             };
@@ -187,8 +155,34 @@
                 ///涓嬫媺鍒锋柊
                 myListView.verticalScrolViewLayout.BeginHeaderRefreshingAction += () =>
                 {
+                    System.Threading.Tasks.Task.Run(() =>
+                    {
+                        try
+                        {
+                            A31MusicModel.Current.palyLists.Clear();
+                            if (A31MusicModel.Current.palyLists.Count == 0)
+                            {
+                                SendMethod.mMethod.GetPalyList(A31MusicModel.Current.functionMusic);
+
+                            }
+                        }
+                        catch
+                        {
+                        }
+                        finally
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                myListView.verticalScrolViewLayout.EndHeaderRefreshing();
+                                myListView.verticalScrolViewLayout.RemoveAll();
+                                var listName = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.playlist_name);
+                                var musicList = A31MusicModel.Current.GetSongList(listName);
+                                A31SongPlay.SongListView(myListView.verticalScrolViewLayout, musicList, listName, myListView.popFra);
+                            });
+                        }
+                    });
                     //缁撴潫鍒锋柊
-                    myListView.verticalScrolViewLayout.EndHeaderRefreshing();
+                   
                 };
                 ///绉婚櫎鐣岄潰
                 EventHandler<MouseEventArgs> removeFromParentView = (sen, e1) =>
@@ -198,25 +192,18 @@
                 myListView.backIextBtn.MouseUpEventHandler += removeFromParentView;
                 myListView.popFra.MouseUpEventHandler += removeFromParentView;
                 #endregion
-                loading.Start();
-                GetMusicList((listName) =>
-                {
-                    loading.Hide();
-                    PlayListView(myListView.popFra, myListView.verticalScrolViewLayout, listName);
-                    UpdateSelectedMusic(myListView.popFra, myListView.verticalScrolViewLayout);
-                });
-               
+                //var listName = A31MusicModel.Current.functionMusic.GetAttribute("playlist_name").ToString();
+                //var musicList = A31MusicModel.Current.GetSongList(listName);
+                //new A31SongPlay { }.SongListView(myListView.verticalScrolViewLayout, musicList, listName);
+
+                PlayListView(myListView.popFra, myListView.verticalScrolViewLayout);
+                UpdateSelectedMusic(myListView.popFra, myListView.verticalScrolViewLayout);
+
             };
             ///闊抽噺鍥炬爣鐐瑰嚮浜嬩欢
             playView.volIconBtn.MouseUpEventHandler += (sender, e) =>
             {
-                if (A31MusicModel.Current.ServerClientType == 1 && A31MusicModel.Current.Slave.slave_list.Count != 0)
-                { ///涓绘挱鏀惧櫒
-                    var volumeView = new View.DialogView { };
-                    volumeView.PlayerVolumeView(A31MusicModel.Current);
-                    volumeView.UpdateVolume();
-
-                }
+               
             };
             ///闊抽噺杩涘害鏉$偣鍑讳簨浠�
             int startVolume =0;//涔嬪墠鐨勯煶閲�
@@ -227,8 +214,11 @@
                 if (startVolume != e)
                 {
                     startVolume = e;
-                    SendMethod.ControlVolume(e, A31MusicModel.Current);
-                    A31MusicModel.Current.A31PlayStatus.vol = e.ToString();
+                    A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.volume, startVolume);
+                    Dictionary<string, string> dic = new Dictionary<string, string>();
+                    dic.Add(KeyProperty.volume, startVolume.ToString());
+                    SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
+
                 }
             };
             playView.volSeekBar.OnProgressChangedEvent += progressClick;
@@ -237,7 +227,12 @@
             playView.prevBtn.MouseDownEventHandler += (sender, e) =>
             {
                 playView.prevBtn.IsSelected = true;
-                SendMethod.Previous(A31MusicModel.Current);
+
+                A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.song_step,ValueProperty.down);
+                Dictionary<string, string> dic = new Dictionary<string, string>();
+                dic.Add(KeyProperty.song_step, ValueProperty.up);
+                SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
+
             };
             playView.prevBtn.MouseUpEventHandler += (sender, e) =>
             {
@@ -246,46 +241,52 @@
             ///鏆傚仠/鎾斁鐐瑰嚮浜嬩欢
             playView.playBtn.MouseDownEventHandler += (sender, e) =>
             {
+                string status = string.Empty;
                 if (playView.playBtn.IsSelected)
                 {
                     playView.playBtn.IsSelected = false;
-                    SendMethod.Pause(A31MusicModel.Current);
-                    A31MusicModel.Current.A31PlayStatus.status = "pause";
+                    status = ValueProperty.off; 
                 }
                 else
                 {
                     playView.playBtn.IsSelected = true;
-                    SendMethod.Play(A31MusicModel.Current);
-                    A31MusicModel.Current.A31PlayStatus.status = "play";
+                    status = ValueProperty.on;
                 }
+                A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.on_off, status);
+                Dictionary<string, string> dic = new Dictionary<string, string>();
+                dic.Add(KeyProperty.on_off, status);
+                SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
             };
             ///涓嬩竴鏇茬偣鍑讳簨浠�
             playView.nextBtn.MouseDownEventHandler += (sender, e) =>
             {
                 playView.nextBtn.IsSelected = true;
-                SendMethod.Next(A31MusicModel.Current);
+                A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.song_step,ValueProperty.down);
+                Dictionary<string, string> dic = new Dictionary<string, string>();
+                dic.Add(KeyProperty.song_step, ValueProperty.down);
+                SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
             };
             playView.nextBtn.MouseUpEventHandler += (sender, e) =>
             {
                 playView.nextBtn.IsSelected = false;
             };
-            ///鐗╃悊鎸夐敭鐨勭偣鍑讳簨浠�
-            Volume.VolumeChange = (volume) =>
-            {
-                if (Application.DeviceType == Device.Ios && A31MusicModel.Current.A31PlayStatus.Source == "BLUETOOTH")
-                {
-                    return;
-                }
-                playView.volSeekBar.Progress = volume;
-
-                if (startVolume != volume)
-                {
-                    startVolume = volume;
-                    SendMethod.ControlVolume(volume, A31MusicModel.Current);
-                    A31MusicModel.Current.A31PlayStatus.vol = volume.ToString();
-                }
-
-            };
+            /////鐗╃悊鎸夐敭鐨勭偣鍑讳簨浠�
+            //Volume.VolumeChange = (volume) =>
+            //{
+            //    if (Application.DeviceType == Device.Ios && A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.source) == "bluetooth")
+            //    {
+            //        return;
+            //    }
+            //    playView.volSeekBar.Progress = volume;
+            //    if (startVolume != volume)
+            //    {
+            //        startVolume = volume;
+            //        A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.volume, startVolume);
+            //        Dictionary<string, string> dic = new Dictionary<string, string>();
+            //        dic.Add(KeyProperty.volume, startVolume.ToString());
+            //        SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
+            //    }
+            //};
             #endregion
         }
         /// <summary>
@@ -305,10 +306,9 @@
                     {
                         try
                         {
-
                             //鏇存柊鎬绘椂闂�                            
                             //鎬诲叡鏈夊灏戠
-                            int totalSecond = int.Parse(A31MusicModel.Current.A31PlayStatus.totlen) / 1000;
+                            int totalSecond = int.Parse(A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.song_time));
                             //鍒嗛挓
                             int totalMusicMinute = totalSecond / 60;
                             //绉掗挓
@@ -317,54 +317,54 @@
                             string totalTime = (totalMusicMinute.ToString().Length < 2 ? "0" + totalMusicMinute.ToString() : totalMusicMinute.ToString()) + ":" + (totalMusicSecond.ToString().Length < 2 ? "0" + totalMusicSecond.ToString() : totalMusicSecond.ToString());
                             playView.endTimeBtn.Text = totalTime;
 
-                            //topView.topNameBtn.Text = A31MusicModel.Current.Name;
-
-                            switch (A31MusicModel.Current.A31PlayStatus.loop)
+                            topView.topNameBtn.Text = A31MusicModel.Current.functionMusic.name;
+                            string s = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.mode);
+                            switch (A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.mode))
                             {
-                                case "0"://鍒楄〃寰幆
+                                case ValueProperty.list_cycle://鍒楄〃寰幆
                                     playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/list.png";
                                     break;
-                                case "1"://鍗曟洸椤虹幆
+                                case ValueProperty.single_cycle://鍗曟洸寰幆
                                     playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/single.png";
                                     break;
-                                case "2"://闅忔満鎾斁
+                                case ValueProperty.random://闅忔満鎾斁
                                     playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/random.png";
                                     break;
                             }
 
 
-                            if (A31MusicModel.Current.A31PlayStatus.Source == "RADIO-NETWORK")
-                            {
-                                var v = A31MusicModel.Current.LoveRadioInfoList.Find((like) =>
-                                {
-                                    return like.URL == A31MusicModel.Current.A31PlayStatus.TrackURL;
-                                });
-                                if (v != null)
-                                {
-                                    playView.loveBtn.IsSelected = true;
-                                }
-                                else
-                                {
-                                    playView.loveBtn.IsSelected = false;
-                                }
-                            }
-                            else
-                            {
-                                var v = A31MusicModel.Current.LoveMusicInfoList.Find((like) =>
-                                {
-                                    return like.URL == A31MusicModel.Current.A31PlayStatus.TrackURL;
-                                });
-                                if (v != null)
-                                {
-                                    playView.loveBtn.IsSelected = true;
-                                }
-                                else
-                                {
-                                    playView.loveBtn.IsSelected = false;
-                                }
-                            }
-                            playView.regionBtn.Text = A31MusicModel.Current.GetRoomListName();
-                            if (A31MusicModel.Current.collect)
+                            //if (A31MusicModel.Current.A31PlayStatus.Source == "RADIO-NETWORK")
+                            //{
+                            //    var v = A31MusicModel.Current.LoveRadioInfoList.Find((like) =>
+                            //    {
+                            //        return like.URL == A31MusicModel.Current.A31PlayStatus.TrackURL;
+                            //    });
+                            //    if (v != null)
+                            //    {
+                            //        playView.loveBtn.IsSelected = true;
+                            //    }
+                            //    else
+                            //    {
+                            //        playView.loveBtn.IsSelected = false;
+                            //    }
+                            //}
+                            //else
+                            //{
+                            //    var v = A31MusicModel.Current.LoveMusicInfoList.Find((like) =>
+                            //    {
+                            //        return like.URL == A31MusicModel.Current.A31PlayStatus.TrackURL;
+                            //    });
+                            //    if (v != null)
+                            //    {
+                            //        playView.loveBtn.IsSelected = true;
+                            //    }
+                            //    else
+                            //    {
+                            //        playView.loveBtn.IsSelected = false;
+                            //    }
+                            //}
+                            playView.regionBtn.Text = A31MusicModel.Current.functionMusic.GetRoomListName();
+                            if (A31MusicModel.Current.functionMusic.collect)
                             {
                                 playView.collectIconBtn.IsSelected = true;
                             }
@@ -392,14 +392,15 @@
                             if (1000 < (DateTime.Now - A31MusicModel.ProgressDateTime).TotalMilliseconds)
                             {
                                 //闊抽噺杩涘害鏉�;
-                                playView.volSeekBar.Progress = int.Parse(A31MusicModel.Current.A31PlayStatus.vol);
+                                playView.volSeekBar.Progress = int.Parse(A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.volume));
                                 //鏄剧ず褰撳墠闊抽噺鍊�;
-                                playView.volValueBtn.Text = A31MusicModel.Current.A31PlayStatus.vol + "%";
+                                playView.volValueBtn.Text = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.volume) + "%";
                             }
                             //鏇存柊鎾斁鍣ㄩ煶閲忕粰绯荤粺闊抽噺
                             Volume.MusicVolume = playView.volSeekBar.Progress;
-                            //褰撳墠鎾斁闊充箰鏃堕棿        
-                            int playSecond = int.Parse(A31MusicModel.Current.A31PlayStatus.curpos) / 1000 + (int)(DateTime.Now - A31MusicModel.Current.LastDateTime).TotalSeconds;
+                            //褰撳墠鎾斁闊充箰鏃堕棿
+                            //鎸夐亾鐞嗕笉浼氫负绌猴紝GetAttrState("playing_time")鍊煎彲鑳戒负绌猴紝寮哄埗杞崲int.Parse(锛変細鍑虹幇寮傚父锛屼笉杩囦篃鍋氫簡寮傚父澶勭悊浜�
+                            int playSecond = int.Parse(A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.playing_time))+ (int)(DateTime.Now - A31MusicModel.Current.LastDateTime).TotalSeconds;
 
                             int playMusicMinute = playSecond / 60;
                             //绉掗挓
@@ -407,7 +408,7 @@
 
                             string playTime = (playMusicMinute.ToString().Length < 2 ? "0" + playMusicMinute.ToString() : playMusicMinute.ToString()) + ":" + (playMusicSecond.ToString().Length < 2 ? "0" + playMusicSecond.ToString() : playMusicSecond.ToString());
 
-                            if (A31MusicModel.Current.A31PlayStatus.status == "play")
+                            if (A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.on_off) == ValueProperty.on)
                             {
                                 playView.playBtn.IsSelected = true;
                                 //濡傛灉鍦ㄦ挱鏀撅紝鏃堕棿灏变笉鏂彉鍖�                    
@@ -423,6 +424,7 @@
                                     playView.diyArcSeekBar.Progress = (int)(playSecond * 100.0 / totalSecond);//+1
                                 }
 
+
                             }
                             else
                             {
@@ -430,10 +432,10 @@
                                 //鍋滄鎾斁
                                 playView.startTimeBtn.Text =playTime;
                             }
-                            playView.songNameTextView.Text = (A31MusicModel.Current.A31PlayStatus.Title == null ? "Unkown" : A31MusicModel.Current.A31PlayStatus.Title);
-                            playView.singerBtn.Text = (A31MusicModel.Current.A31PlayStatus.Artist == null ? "Unkown" : A31MusicModel.Current.A31PlayStatus.Artist.Trim());
+                            playView.songNameTextView.Text = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.song_name) == null ? "Unkown" : A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.song_name);
+                            playView.singerBtn.Text = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.song_name) == null ? "Unkown" : A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.song_name);
                             //鏇存柊婧愮殑鐣岄潰
-                            showSourcePage();
+                           // showSourcePage();
                         }
                         catch (Exception e)
                         {
@@ -469,18 +471,9 @@
 
             playView.diyArcSeekBar.IsClickable = true;
 
-            switch (A31MusicModel.Current.A31PlayStatus.Source)
+            switch (A31MusicModel.Current.functionMusic.GetAttrState("source"))
             {
-
-                case "QPLAY"://QQ闊充箰
-                    playView.loveBtn.Alpha = 0.5f;
-                    playView.loveBtn.Enable = false;
-                    break;
-                case "AIRPLAY"://閰风嫍闊充箰
-                    playView.loveBtn.Alpha = 0.5f;
-                    playView.loveBtn.Enable = false;
-                    playView.diyArcSeekBar.IsClickable = false;
-                    break;
+                //sdcard/audio_in/ftp/radio/bluetooth
                 case "SONGLIST-NETWORK"://鏈湴闊充箰
                     break;
                 case "SONGLIST-LOCAL"://USB
@@ -539,91 +532,51 @@
         /// 鍔犺浇鎾斁闊充箰鍒楄〃View
         /// </summary>
         /// <param name="verticalScrolViewLayout"></param>
-        void PlayListView(FrameLayout frameLayout, VerticalRefreshLayout verticalScrolViewLayout, string playListName)
+        void PlayListView(FrameLayout frameLayout, VerticalRefreshLayout verticalScrolViewLayout)
         {
             verticalScrolViewLayout.RemoveAll();
-            UI2.FuntionControlView.Music.UpdateThread.playMusuc(verticalScrolViewLayout,"鎾斁鍒楄〃", playListName, A31MusicModel.Current.CurrentPlayMusicInfoList,A31MusicModel.Current,frameLayout);
+            var listName = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.playlist_name);
+            var musicList = A31MusicModel.Current.GetSongList(listName);
+            if (musicList.Count == 0)
+            {
+                System.Threading.Tasks.Task.Run(() =>
+                {
+                    try
+                    {
+                        A31MusicModel.Current.palyLists.Clear();
+                        if (A31MusicModel.Current.palyLists.Count == 0)
+                        {
+                            SendMethod.mMethod.GetPalyList(A31MusicModel.Current.functionMusic);
+
+                        }
+                    }
+                    catch
+                    {
+                    }
+                    finally
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            musicList = A31MusicModel.Current.GetSongList(listName);
+                            A31SongPlay.SongListView(verticalScrolViewLayout, musicList, listName, frameLayout);
+                        });
+                    }
+                });
+            }
+            else
+            {
+                A31SongPlay.SongListView(verticalScrolViewLayout, musicList, listName, frameLayout);
+            }
         }
         /// <summary>
         /// 瀹氭椂鏇存柊褰撳墠鎾斁闊充箰
         /// </summary>
         void UpdateSelectedMusic(FrameLayout frameLayout, VerticalRefreshLayout middViewLayout)
         {
-            UI2.FuntionControlView.Music.UpdateThread.updateThread(frameLayout, middViewLayout, A31MusicModel.Current);
+            UpdateThread.updateCurrMusicThread(frameLayout, middViewLayout, A31MusicModel.Current);
         }
-        /// <summary>
-        /// 璇诲彇鎾斁闊充箰鍒楄〃
-        /// </summary>
-        /// <param name="action"></param>
-        void GetMusicList(Action<string> action) {
-            System.Threading.Tasks.Task.Run(() =>
-            {
-                string playListName = "List";
-                string sourceName = "SourceName";
-                try
-                {
-                    if (A31MusicModel.Current.A31PlayStatus.Source == "STATION-NETWORK")
-                    {
-                        A31MusicModel.Current.CurrentPlayMusicInfoList = new List<MusicInfo>();
-                        return;
-                    }
-                    if (A31MusicModel.Current.A31PlayStatus.Source == "AIRPLAY")
-                    {
-                        A31MusicModel.Current.CurrentPlayMusicInfoList = new List<MusicInfo>();
-                        return;
-                    }
-                    var playString = SendMethod.GetCurrentPlayList(A31MusicModel.Current);
-                    A31MusicModel.Current.CurrentPlayMusicInfoList = new List<MusicInfo>();
-                    var se = System.Security.SecurityElement.FromString(playString);
-                    while (se.Children != null)
-                    {
-                        se = se.Children[0] as System.Security.SecurityElement;
-                    }
-                    playListName = SecurityElement.FromString(se.Text).SearchForChildByTag("ListName").Text;
-                    sourceName = SecurityElement.FromString(se.Text).SearchForChildByTag("ListInfo").SearchForTextOfTag("SourceName");
-                    foreach (SecurityElement track in SecurityElement.FromString(se.Text).SearchForChildByTag("Tracks").Children)
-                    {
-                        MusicInfo musicInfo = new MusicInfo();
-                        musicInfo.URL = track.SearchForTextOfTag("URL").Replace("&", "&amp;amp;");
-                        var metadata = track.SearchForTextOfTag("Metadata");
-                        musicInfo.SourceName = track.SearchForTextOfTag("Source");
-                        if (string.IsNullOrEmpty(metadata))
-                        {
-                            continue;
-                        }
-                        if (A31MusicModel.IsJson(metadata))
-                        {
-                            var qqSong = Newtonsoft.Json.JsonConvert.DeserializeObject<SendMethod.A31QQSong>(metadata);
-                            musicInfo.Album = qqSong.album;
-                            musicInfo.Title = qqSong.title;
-                            musicInfo.Artist = qqSong.creator;
-                        }
-                        else
-                        {
-                            metadata = metadata.Replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "").Replace("&", "&amp;amp;");
-                            var item = SecurityElement.FromString(metadata).SearchForChildByTag("item");
-                            musicInfo.Title = item.SearchForTextOfTag("dc:title");
-                            musicInfo.Artist = item.SearchForTextOfTag("upnp:artist");
-                            musicInfo.Album = item.SearchForTextOfTag("upnp:album");
-                            musicInfo.Duration = item.SearchForTextOfTag("res");
-                            musicInfo.AlbumId = item.SearchForTextOfTag("song:albumid");
-                        }
-                        A31MusicModel.Current.CurrentPlayMusicInfoList.Add(musicInfo);
-                    }
-                }
-                catch { }
-                finally
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        action(playListName);
-                        //loading.Hide();
-                        //PlayListView(myListView.popFra, myListView.verticalScrolViewLayout, playListName);
-                        //UpdateSelectedMusic(myListView.popFra, myListView.verticalScrolViewLayout);
-                    });
-                }
-            });
 
-        }
+     
+
     }
 }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayStatus.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayStatus.cs
deleted file mode 100644
index c3dc326..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayStatus.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-锘縰sing System;
-namespace HDL_ON.UI.Music
-{
-    /// <summary>
-    /// A3闊充箰鎾斁鐘舵��
-    /// </summary>
-    [System.Serializable]
-    public class A31PlayStatus
-    {
-        public string type = "0";
-        public string ch = "0";
-        public string mode = "0";
-        public string loop = "0";
-        public string status = "stop";
-        public string curpos = "0";
-        public string totlen = "0";
-        public string Title = "Unkonw";
-        public string Artist = "Unkonw";
-        public string Album = "Unkonw";
-        public string plicount = "0";
-        public string plicurr = "0";
-        public string vol = "0";
-        public string Source = "0";
-        public string TrackURL = "";
-        public string playSource = "";
-        public bool IsMute
-        {
-            get
-            {
-                return vol == "0";
-            }
-        }
-    }
-}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31Radio.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31Radio.cs
deleted file mode 100644
index bd119b9..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31Radio.cs
+++ /dev/null
@@ -1,240 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Xml;
-using Shared;
-namespace HDL_ON.UI.Music
-{
-    public class A31Radio : FrameLayout
-    {
-        public A31Radio()
-        {
-            Tag = "Music";
-
-        }
-
-        VerticalRefreshLayout middViewLayout;
-        /// <summary>
-        /// 鍏堝姞杞界晫闈㈠嚭鏉�
-        /// </summary>
-        public void Show(string date)
-        {
-            InitList(date);
-            #region   鐣岄潰甯冨眬------
-            this.BackgroundColor = MusicColor.ViewColor;
-            var topView = new TopView();
-            this.AddChidren(topView.TopFLayoutView());
-            topView.topNameBtn.TextID = StringId.radio;
-            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                this.RemoveFromParent();
-            };
-            middViewLayout = new VerticalRefreshLayout
-            {
-                BackgroundColor = MusicColor.WhiteColor,
-                Y = topView.fLayout.Bottom,
-                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
-            };
-            this.AddChidren(middViewLayout);
-            middViewLayout.BeginHeaderRefreshingAction += () =>
-            {
-                middViewLayout.EndHeaderRefreshing();
-            };
-            #endregion
-            RadioListView();
-        }
-        /// <summary> 
-        /// 鍔犺浇鏁版嵁鐨勬柟娉�
-        /// </summary>
-        public void RadioListView()
-        {
-           
-            middViewLayout.RemoveAll();
-            for (int i = 0; i < A31MusicModel.Current.CnRadioInfoList.Count; i++)
-            {
-                var radioInfo = A31MusicModel.Current.CnRadioInfoList[i];
-                RowLayout addFlieRow = new RowLayout
-                {
-                    Height = Application.GetRealHeight(78),
-                    LineColor = MusicColor.WhiteColor,
-                    SubViewWidth = Application.GetRealWidth(90),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
-                };
-                middViewLayout.AddChidren(addFlieRow);
-                //鏂囦欢鍥炬爣
-                Button fileIconBtn = new Button
-                {
-                    X = Application.GetRealWidth(16),
-                    Y = Application.GetRealHeight(8),
-                    Width = Application.GetRealWidth(62),
-                    Height = Application.GetRealWidth(62),
-                    UnSelectedImagePath = "MusicIcon/file.png",
-                };
-                addFlieRow.AddChidren(fileIconBtn);
-                //鏂囦欢鍚嶆帶浠�
-                Button fileNameBtn = new Button
-                {
-                    X = fileIconBtn.Right + Application.GetRealWidth(16),
-                    Y = Application.GetRealHeight(29),
-                    Width = Application.GetRealWidth(220),
-                    Height = Application.GetRealHeight(20),
-                    TextColor = MusicColor.TextColor,
-                    TextSize = TextSize.Text14,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    Text = radioInfo.Title,
-                };
-                addFlieRow.AddChidren(fileNameBtn);
-
-
-                Button clickBtn = new Button
-                {
-                    X = fileIconBtn.Right + Application.GetRealWidth(16),
-                    Width = Application.GetRealWidth(375 - 94),
-                    Height = Application.GetRealHeight(78),
-                    Tag = radioInfo.URL,
-                };
-                addFlieRow.AddChidren(clickBtn);
-                clickBtn.MouseUpEventHandler += (sender, e) =>
-                {
-
-                    Loading loading = new Loading();
-                    this.AddChidren(loading);
-                    loading.Start();
-                    System.Threading.Tasks.Task.Run(() =>
-                    {
-                        try
-                        {
-                            var dataString = SendMethod.ReadRadioList(clickBtn.Tag.ToString());
-                            if (dataString == null)
-                            {
-                                return;
-                            }
-                            int startIndex1=dataString.IndexOf("<body>");
-                            int endIndex1 = dataString.IndexOf("</body>") + "</body>".Length;
-                            if (endIndex1 <= startIndex1)
-                            {
-                                return;
-                            }
-
-                            XmlDocument xml1 = new XmlDocument();
-                            xml1.LoadXml(dataString.Substring(startIndex1, endIndex1 - startIndex1));
-                            var dataList = xml1.SelectSingleNode("body");
-                            if (dataList == null)
-                            {
-                                return;
-                            }
-                            A31MusicModel.Current.CnRadioInfoList.Clear();
-                            foreach (XmlNode childNodes in dataList.ChildNodes)
-                            {
-                                if (childNodes.Name == "outline" && childNodes.Attributes["URL"] != null)
-                                {
-                                    MusicInfo musicInfoCN = new MusicInfo();
-                                    musicInfoCN.URL = childNodes.Attributes["URL"] == null ? "" : childNodes.Attributes["URL"].Value;
-                                    musicInfoCN.Title = childNodes.Attributes["text"] == null ? "" : childNodes.Attributes["text"].Value;
-                                    musicInfoCN.Image = childNodes.Attributes["image"] == null ? "" : childNodes.Attributes["image"].Value;
-                                    if (childNodes.Attributes["image"] != null)
-                                    {
-                                        string path = "";
-                                        if (Shared.Application.IsPad)
-                                        {
-                                            path = "";
-                                        }
-                                        else
-                                        {
-                                            path = "Phone/" + "MusicImage/";
-                                        }
-                                    }
-                                    musicInfoCN.Cntype = childNodes.Attributes["type"] == null ? "" : childNodes.Attributes["type"].Value;
-                                    A31MusicModel.Current.CnRadioInfoList.Add(musicInfoCN);
-                                }
-                                foreach (XmlNode a in childNodes.ChildNodes)
-                                {
-                                    if (a.Name == "outline")
-                                    {
-                                        MusicInfo musicInfoCN = new MusicInfo();
-                                        musicInfoCN.URL = a.Attributes["URL"] == null ? "" : a.Attributes["URL"].Value;
-                                        musicInfoCN.Title = a.Attributes["text"] == null ? "" : a.Attributes["text"].Value;
-
-                                        if (a.Attributes["image"] != null)
-                                        {
-                                            #region 鍒濆鍖栫綉缁滃浘鐗囪矾寰�
-                                            string path = "";
-                                            if (Shared.Application.IsPad)
-                                            {
-                                                path = "Pad/" + "MusicImage/";
-                                            }
-                                            else
-                                            {
-                                                path = "Phone/" + "MusicImage/";
-                                            }
-                                            path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, path + a.Attributes["image"].Value.Replace('/', '_').Replace('\\', '_').Replace(':', '_').Replace('*', '_').Replace('?', '_').Replace('"', '_').Replace('<', '_').Replace('>', '_').Replace('|', '_'));
-                                            musicInfoCN.Image = path;
-                                            #endregion
-                                            //Shared.IO.FileUtils.DownLoadImage(musicInfoCN.Image, a.Attributes["image"].Value);
-                                        }
-                                        musicInfoCN.Cntype = a.Attributes["type"] == null ? "" : a.Attributes["type"].Value;
-                                        A31MusicModel.Current.CnRadioInfoList.Add(musicInfoCN);
-
-                                    }
-                                }
-                            }
-                        }
-                        catch { }
-                        finally
-                        {
-                            Application.RunOnMainThread(() =>
-                            {
-                                loading.Hide();
-                                A31RadioList a31RadioList = new A31RadioList();
-                                MainPage.BasePageView.AddChidren(a31RadioList);
-                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                                a31RadioList.Show(fileNameBtn.Text);
-                            });
-                        }
-                    });
-                };
-
-            }
-        }
-
-        void InitList(string data)
-        {
-            try
-            {
-                var readString = data;
-                if (readString == null)
-                {
-                    return;
-                }
-                int startIndex1 = readString.IndexOf("<body>");
-                int endIndex = readString.IndexOf("</body>") + "</body>".Length;
-                if (endIndex <= startIndex1)
-                {
-                    return;
-                }
-                var aa = readString.Substring(startIndex1, endIndex - startIndex1);
-                XmlDocument xml = new XmlDocument();
-                xml.LoadXml(aa);
-                var CNList = xml.SelectSingleNode("body");
-                if (CNList == null)
-                {
-                    return;
-                }
-                A31MusicModel.Current.CnRadioInfoList.Clear();
-                foreach (XmlNode v in CNList.ChildNodes)
-                {
-                    switch (v.Name)
-                    {
-                        case "outline":
-                            MusicInfo musicInfo = new MusicInfo();
-                            musicInfo.Title = v.Attributes["text"].Value;
-                            musicInfo.URL = v.Attributes["URL"].Value;
-                            musicInfo.Cnkey = v.Attributes["key"].Value;
-
-                            A31MusicModel.Current.CnRadioInfoList.Add(musicInfo);
-                            break;
-                    }
-                }
-            }
-            catch { }
-        }
-    }
-}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31RadioList.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31RadioList.cs
deleted file mode 100644
index 9ad5b09..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31RadioList.cs
+++ /dev/null
@@ -1,433 +0,0 @@
-锘縰sing System;
-using System.Net;
-using System.Text;
-using System.Xml;
-using Shared;
-namespace HDL_ON.UI.Music
-{
-    public class A31RadioList : FrameLayout
-    {
-        public A31RadioList()
-        {
-            Tag = "Music";
-        }
-
-        VerticalRefreshLayout middViewLayout;
-        /// <summary>
-        /// 鍏堝姞杞界晫闈㈠嚭鏉�
-        /// </summary>
-        public void Show(string listName)
-        {
-           
-            #region   鐣岄潰甯冨眬------
-            this.BackgroundColor = MusicColor.ViewColor;
-            var topView = new TopView();
-            this.AddChidren(topView.TopFLayoutView());
-            topView.topNameBtn.Text= listName;
-            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                this.RemoveFromParent();
-            };
-            middViewLayout = new VerticalRefreshLayout
-            {
-                BackgroundColor = MusicColor.WhiteColor,
-                Y = topView.fLayout.Bottom,
-                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
-            };
-            this.AddChidren(middViewLayout);
-            middViewLayout.BeginHeaderRefreshingAction += () =>
-            {
-                middViewLayout.EndHeaderRefreshing();
-            };
-            #endregion
-            MusicView(listName);
-        }
-        /// <summary> 
-        /// 鍔犺浇鏁版嵁鐨勬柟娉�
-        /// </summary>
-        public void MusicView(string listName)
-        {
-            middViewLayout.RemoveAll();
-            for (int i = 0; i < A31MusicModel.Current.CnRadioInfoList.Count; i++)
-            {
-                var radioInfo = A31MusicModel.Current.CnRadioInfoList[i];
-                #region   Audio  (鎾斁鍒楄〃) 
-                if (radioInfo.Cntype == "audio")
-                {
-
-                    if (string.IsNullOrEmpty(radioInfo.Title))
-                    {
-                        //闃叉姝屾洸鍚嶅瓧涓虹┖鎶涘紓甯�
-                        radioInfo.Title = " ";
-                    }
-                    FrameLayout radioViewFl = new FrameLayout
-                    {
-                        Width = Application.GetRealWidth(375),
-                        Height = Application.GetRealHeight(67),
-                    };
-                    middViewLayout.AddChidren(radioViewFl);
-                    //榛樿鐢靛彴鍥炬爣
-                    Button radioIconBtn = new Button
-                    {
-                        X = Application.GetRealWidth(16),
-                        Y = Application.GetRealHeight(18),
-                        Width = Application.GetRealWidth(32),
-                        Height = Application.GetRealWidth(32),
-                        UnSelectedImagePath = "MusicIcon/radioIcon.png",
-                    };
-                    radioViewFl.AddChidren(radioIconBtn);
-                    //鐢靛彴鍚嶇О
-                    Button radioNameBtn = new Button
-                    {
-                        X = Application.GetRealWidth(60),
-                        Y = Application.GetRealHeight(23),
-                        Width = Application.GetRealWidth(250),
-                        Height = Application.GetRealHeight(22),
-                        TextColor = MusicColor.MusicTxet14Color,
-                        TextSize = TextSize.Text16,
-                        TextAlignment = TextAlignment.CenterLeft,
-                        Tag = radioInfo.URL,
-                        Text = radioInfo.Title.Trim()
-                    };
-                    radioViewFl.AddChidren(radioNameBtn);
-
-                    //娣诲姞鍠滅埍鐢靛彴
-                    Button loveIcon = new Button
-                    {
-                        X = Application.GetRealWidth(335),
-                        Y = Application.GetRealHeight(20),
-                        Width = Application.GetRealWidth(28),
-                        Height = Application.GetRealWidth(28),
-                        UnSelectedImagePath = "MusicIcon/love.png",
-                        SelectedImagePath = "MusicIcon/loveSelected.png",
-                    };
-                    radioViewFl.AddChidren(loveIcon);
-                    loveIcon.MouseUpEventHandler += (sender, e) =>
-                    {
-                        loveIcon.IsSelected = !loveIcon.IsSelected;
-                        if (loveIcon.IsSelected)
-                        {
-                            ///鏌ユ壘鐢靛彴鏄惁瀛樺湪鍦ㄥ垪琛�
-                            var radioselected= A31MusicModel.Current.LoveRadioInfoList.Find((m) => m.URL == radioInfo.URL);
-                            if (radioselected == null)
-                            {
-                                ///娌℃湁瀛樺湪灏辨坊鍔�
-                                A31MusicModel.Current.LoveRadioInfoList.Add(radioInfo);
-                            }
-                        }
-                        else
-                        {
-                            ///鏌ユ壘闊崇數鍙版槸鍚﹀瓨鍦ㄥ湪鍒楄〃
-                            var radioselected = A31MusicModel.Current.LoveRadioInfoList.Find((m) => m.URL == radioInfo.URL);
-                            if (radioselected != null)
-                            {
-                                ///瀛樺湪灏卞垹闄�
-                                A31MusicModel.Current.LoveRadioInfoList.Remove(radioInfo);
-                            }
-
-                        }
-                        A31MusicModel.Save();
-                    };
-                    var v = A31MusicModel.Current.LoveRadioInfoList.Find((m) => m.URL == radioInfo.URL);
-                    if (v != null)
-                    {
-                        loveIcon.IsSelected = true;
-                    }
-                    else
-                    {
-                        loveIcon.IsSelected = false;
-                    }
-
-                    //鐐瑰嚮鎺т欢
-                    Button clickBtn = new Button
-                    {
-                        Width = Application.GetRealWidth(280),
-                        Height = Application.GetRealHeight(44),
-                        Tag = radioInfo,//鏍囪鎾斁鍝竴棣栨瓕鏇�
-                    };
-                    radioViewFl.AddChidren(clickBtn);
-                    ///鐐瑰嚮鎾斁浜嬩欢
-                    clickBtn.MouseUpEventHandler += (sender, e) =>
-                    {
-
-                        System.Threading.Tasks.Task.Run(() =>
-                        {
-                            System.Threading.Thread.Sleep(50);
-                            Application.RunOnMainThread(() =>
-                            {
-                                //绉婚櫎鐣岄潰
-                                A31MusicModel.Current.A31PlayStatus.Title = radioNameBtn.Text;
-                                MainPage.BasePageView.RemoveViewByTag("Music");
-                                System.Threading.Tasks.Task.Run(() =>
-                                {
-                                    PushList(clickBtn.Tag as MusicInfo, listName);
-                                });
-                            });
-                        });
-
-                    };
-
-                }
-                #endregion
-
-                #region  Link(鍒楄〃)
-                if (radioInfo.Cntype == "link")
-                {
-                    RowLayout addFlieRow = new RowLayout
-                    {
-                        Height = Application.GetRealHeight(78),
-                        LineColor = MusicColor.WhiteColor,
-                        SubViewWidth = Application.GetRealWidth(90),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
-                    };
-                    middViewLayout.AddChidren(addFlieRow);
-                    //鏂囦欢鍥炬爣
-                    Button fileIconBtn = new Button
-                    {
-                        X = Application.GetRealWidth(16),
-                        Y = Application.GetRealHeight(8),
-                        Width = Application.GetRealWidth(62),
-                        Height = Application.GetRealWidth(62),
-                        UnSelectedImagePath = "MusicIcon/file.png",
-                    };
-                    addFlieRow.AddChidren(fileIconBtn);
-                    //鏂囦欢鍚嶆帶浠�
-                    Button fileNameBtn = new Button
-                    {
-                        X = fileIconBtn.Right + Application.GetRealWidth(16),
-                        Y = Application.GetRealHeight(29),
-                        Width = Application.GetRealWidth(220),
-                        Height = Application.GetRealHeight(20),
-                        TextColor = MusicColor.TextColor,
-                        TextSize = TextSize.Text14,
-                        TextAlignment = TextAlignment.CenterLeft,
-                        Text = radioInfo.Title,
-                    };
-                    addFlieRow.AddChidren(fileNameBtn);
-
-                    Button clickBtn = new Button
-                    {
-                        X = fileIconBtn.Right + Application.GetRealWidth(16),
-                        Width = Application.GetRealWidth(375 - 94),
-                        Height = Application.GetRealHeight(78),
-                        Tag = radioInfo.URL,
-                    };
-                    addFlieRow.AddChidren(clickBtn);
-                    clickBtn.MouseUpEventHandler += (sender, e) =>
-                    {
-                        Loading loading = new Loading();
-                        this.AddChidren(loading);
-                        loading.Start();
-                        System.Threading.Tasks.Task.Run(() =>
-                        {
-                            try
-                            {
-                                var redString = SendMethod.ReadRadioList(clickBtn.Tag.ToString());
-                                if (redString == null)
-                                {
-                                    return;
-                                }
-                                int startIndex2 = redString.IndexOf("<body>");
-                                int endIndex = redString.IndexOf("</body>") + "</body>".Length;
-                                if (endIndex <= startIndex2)
-                                {
-                                    return;
-                                }
-                                var ss = redString.Substring(startIndex2, endIndex - startIndex2);
-                                XmlDocument xml = new XmlDocument();
-                                xml.LoadXml(ss);
-                                var listString = xml.SelectSingleNode("body");
-                                if (listString == null)
-                                {
-                                    return;
-                                }
-                                A31MusicModel.Current.CnRadioInfoList.Clear();
-                                foreach (XmlNode childNodes in listString.ChildNodes)
-                                {
-                                    if (childNodes.Name == "outline" && childNodes.Attributes["URL"] != null)
-                                    {
-                                        MusicInfo musicInfoCN = new MusicInfo();
-                                        musicInfoCN.URL = childNodes.Attributes["URL"] == null ? "" : childNodes.Attributes["URL"].Value;
-                                        musicInfoCN.Title = childNodes.Attributes["text"] == null ? "" : childNodes.Attributes["text"].Value;
-                                        //musicInfoCN.Image = childNodes.Attributes["image"] == null ? "" : childNodes.Attributes["image"].Value;
-
-                                        if (childNodes.Attributes["image"] != null)
-                                        {
-                                            #region 鍒濆鍖栫綉缁滃浘鐗囪矾寰�
-                                            string path = "";
-                                            if (Shared.Application.IsPad)
-                                            {
-                                                path = "Pad/" + "MusicImage/";
-                                            }
-                                            else
-                                            {
-                                                path = "Phone/" + "MusicImage/";
-                                            }
-                                            path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, path + childNodes.Attributes["image"].Value.Replace('/', '_').Replace('\\', '_').Replace(':', '_').Replace('*', '_').Replace('?', '_').Replace('"', '_').Replace('<', '_').Replace('>', '_').Replace('|', '_'));
-                                            musicInfoCN.Image = path;
-                                            #endregion
-                                            //Shared.IO.FileUtils.DownLoadImage(musicInfoCN.Image, childNodes.Attributes["image"].Value);
-                                        }
-
-                                        musicInfoCN.Cntype = childNodes.Attributes["type"] == null ? "" : childNodes.Attributes["type"].Value;
-                                        A31MusicModel.Current.CnRadioInfoList.Add(musicInfoCN);
-                                    }
-                                    foreach (XmlNode a in childNodes.ChildNodes)
-                                    {
-                                        if (a.Name == "outline")
-                                        {
-                                            MusicInfo musicInfoCN = new MusicInfo();
-                                            musicInfoCN.URL = a.Attributes["URL"] == null ? "" : a.Attributes["URL"].Value;
-                                            musicInfoCN.Title = a.Attributes["text"] == null ? "" : a.Attributes["text"].Value;
-                                            if (a.Attributes["image"] != null)
-                                            {
-                                                #region 鍒濆鍖栫綉缁滃浘鐗囪矾寰�
-                                                string path = "";
-                                                if (Shared.Application.IsPad)
-                                                {
-                                                    path = "Pad/" + "MusicImage/";
-                                                }
-                                                else
-                                                {
-                                                    path = "Phone/" + "MusicImage/";
-                                                }
-                                                path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, path + a.Attributes["image"].Value.Replace('/', '_').Replace('\\', '_').Replace(':', '_').Replace('*', '_').Replace('?', '_').Replace('"', '_').Replace('<', '_').Replace('>', '_').Replace('|', '_'));
-                                                musicInfoCN.Image = path;
-                                                #endregion
-                                                // Shared.IO.FileUtils.DownLoadImage(musicInfoCN.Image, a.Attributes["image"].Value);
-                                            }
-                                            musicInfoCN.Cntype = a.Attributes["type"] == null ? "" : a.Attributes["type"].Value;
-                                            A31MusicModel.Current.CnRadioInfoList.Add(musicInfoCN);
-                                        }
-                                    }
-                                }
-                            }
-                            catch { }
-                            finally
-                            {
-                                Application.RunOnMainThread(() =>
-                                {
-                                    loading.Hide();
-                                    A31RadioList a31RadioList = new A31RadioList();
-                                    MainPage.BasePageView.AddChidren(a31RadioList);
-                                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                                    a31RadioList.Show(fileNameBtn.Text);
-                                });
-                            }
-                        });
-                    };
-                }
-                #endregion
-
-            }
-        }
-
-        public void PushList(MusicInfo musicInfo, string listName)
-        {
-            StringBuilder sb = new StringBuilder();
-            sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>");
-            sb.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-            sb.AppendLine("<s:Body>");
-            sb.AppendLine("<u:CreateQueue xmlns:u=\"urn:schemas-wiimu-com:service:PlayQueue:1\">");
-            sb.AppendLine("<QueueContext>");
-            sb.AppendLine("&lt;?xml version=&quot;1.0&quot; ?&gt;");
-            sb.AppendLine("&lt;PlayList&gt;");
-            sb.AppendLine("&lt;ListName&gt;" + listName + "&lt;/ListName&gt;");
-            sb.AppendLine("&lt;ListInfo&gt;");
-            sb.AppendLine("&lt;Radio&gt;1&lt;/Radio&gt;");
-            sb.AppendLine("&lt;SourceName&gt;TuneIn&lt;/SourceName&gt;");
-            sb.AppendLine("&lt;TrackNumber&gt;1&lt;/TrackNumber&gt;");
-            sb.AppendLine("&lt;SearchUrl&gt;http://opml.radiotime.com/Tune.ashx?id=s112201&amp;amp;partnerId=yvcOjvJP&lt;/SearchUrl&gt;");
-            sb.AppendLine("&lt;Quality&gt;3&lt;/Quality&gt;");
-            sb.AppendLine("&lt;RealIndex&gt;0&lt;/RealIndex&gt;");
-            sb.AppendLine("&lt;SrcParent&gt;&lt;/SrcParent&gt;");
-            sb.AppendLine("&lt;PicUrl&gt;&lt;/PicUrl&gt;");
-            sb.AppendLine("&lt;/ListInfo&gt;");
-            sb.AppendLine("&lt;Tracks&gt;");
-
-
-            var url =SendMethod.ReadRadioList(musicInfo.URL);
-
-            if (url != null)
-            {
-                url = url.TrimEnd('\n').Replace("&", "&amp;amp;");
-            }
-            else
-            {
-                return;
-            }
-
-            sb.AppendLine("&lt;Track" + 1 + "&gt;");
-            sb.AppendLine("&lt;Source&gt;TuneIn&lt;/Source&gt;");
-            sb.AppendLine("&lt;URL&gt;" + url + "&lt;/URL&gt;");
-            sb.AppendLine("&lt;Source&gt;TuneIn&lt;/Source&gt;");
-            sb.AppendLine("&lt;Id&gt;0&lt;/Id&gt;");
-            sb.AppendLine("&lt;Key&gt;http://so.ard.iyyin.com/s/song_with_out?q=%E8%8A%B1%E9%83%BD%E7%94%B5%E5%8F%B0+100.5+%28%E6%B5%81%E8%A1%8C%E9%9F%B3%E4%B9%90%E5%89%8D40%29%20TuneIn&amp;amp;size=50&amp;amp;page=1&lt;/Key&gt;");
-            sb.AppendLine("&lt;Metadata&gt;");
-            sb.AppendLine("&amp;lt;DIDL-Lite xmlns:dc=&amp;quot;http://purl.org/dc/elements/1.1/&amp;quot; xmlns:upnp=&amp;quot;urn:schemas-upnp-org:metadata-1-0/upnp/&amp;quot; xmlns:song=&amp;quot;www.wiimu.com/song/&amp;quot; xmlns=&amp;quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/&amp;quot;&amp;gt;");
-            sb.AppendLine("&amp;lt;upnp:class&amp;gt;object.item.audioItem.musicTrack&amp;lt;/upnp:class&amp;gt;");
-            sb.AppendLine("&amp;lt;item&amp;gt;");
-            sb.AppendLine("&amp;lt;song:bitrate&amp;gt;0&amp;lt;/song:bitrate&amp;gt;");
-            sb.AppendLine("&amp;lt;song:id&amp;gt;0&amp;lt;/song:id&amp;gt;");
-            sb.AppendLine("&amp;lt;song:singerid&amp;gt;0&amp;lt;/song:singerid&amp;gt;");
-            sb.AppendLine("&amp;lt;song:albumid&amp;gt;0&amp;lt;/song:albumid&amp;gt;");
-            sb.AppendLine("&amp;lt;res protocolInfo=&amp;quot;http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;&amp;quot; duration=&amp;quot;1000&amp;quot;&amp;gt;" + url + "&amp;lt;/res&amp;gt;");
-            sb.AppendLine("&amp;lt;dc:title&amp;gt;" + musicInfo.Title + "&amp;lt;/dc:title&amp;gt;");
-            sb.AppendLine("&amp;lt;upnp:artist&amp;gt;TuneIn&amp;lt;/upnp:artist&amp;gt;");
-            sb.AppendLine("&amp;lt;upnp:album&amp;gt;&amp;lt;/upnp:album&amp;gt;");
-            sb.AppendLine("&amp;lt;upnp:albumArtURI&amp;gt;" + musicInfo.Image + "&amp;lt;/upnp:albumArtURI&amp;gt;");
-            sb.AppendLine("&amp;lt;/item&amp;gt;");
-            sb.AppendLine("&amp;lt;/DIDL-Lite&amp;gt;");
-            sb.AppendLine("&lt;/Metadata&gt;");
-            sb.AppendLine("&lt;/Track" + 1 + "&gt;");
-
-
-            sb.AppendLine("&lt;/Tracks&gt;");
-            sb.AppendLine("&lt;/PlayList&gt;");
-            sb.AppendLine("</QueueContext>");
-            sb.AppendLine("</u:CreateQueue>");
-            sb.AppendLine("</s:Body>");
-            sb.AppendLine("</s:Envelope>");
-            //sendMusicLists(a31.IPAddress, a31.Port, "CreateQueue", sb.ToString());
-            SendMusicLists(A31MusicModel.Current.IPAddress, A31MusicModel.Current.Port, "CreateQueue", sb.ToString());
-
-            StringBuilder playString = new StringBuilder();
-            playString.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>");
-            playString.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-            playString.AppendLine("<s:Body>");
-            playString.AppendLine("<u:PlayQueueWithIndex xmlns:u=\"urn:schemas-wiimu-com:service:PlayQueue:1\">");
-            playString.AppendLine("<QueueName>" + listName + "</QueueName>");
-            playString.AppendLine("<Index>" + 1 + "</Index>");
-            playString.AppendLine("</u:PlayQueueWithIndex>");
-            playString.AppendLine("</s:Body>");
-            playString.AppendLine("</s:Envelope>");
-            Play(A31MusicModel.Current.IPAddress, A31MusicModel.Current.Port, playString.ToString());
-
-        }
-
-        void SendMusicLists(string ip, int port, string soapAction, string listInfo)
-        {
-            WebClient webClient = new WebClient();
-            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#" + soapAction + "\"");
-            webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-            try
-            {
-                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + ip + ":" + port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes(listInfo));
-                var s = System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
-            }
-            catch { }
-        }
-
-        void Play(string ip, int port, string info)
-        {
-            WebClient webClient = new WebClient();
-            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#PlayQueueWithIndex\"");
-            webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-            try
-            {
-                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + ip + ":" + port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes(info));
-                var s = System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
-            }
-            catch { }
-        }
-    }
-}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs
new file mode 100644
index 0000000..1ec1ba3
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs
@@ -0,0 +1,149 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.Music;
+using System.Collections.Generic;
+
+namespace HDL_ON.UI.Music
+{
+
+    public class A31SongPlay : FrameLayout
+    {
+        public A31SongPlay()
+        {
+            Tag = "Music";
+        }
+
+        public void Show(List<Songs> musicList,string listName)
+        {
+
+            this.BackgroundColor = MusicColor.ViewColor;
+            var topView = new TopView();
+            this.AddChidren(topView.TopFLayoutView());
+            topView.topNameBtn.TextID = StringId.localMusic;
+            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                this.RemoveFromParent();
+            };
+            var vv = new VerticalRefreshLayout
+            {
+                BackgroundColor = MusicColor.WhiteColor,
+                Y = topView.fLayout.Bottom,
+                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
+            };
+            this.AddChidren(vv);
+            vv.BeginHeaderRefreshingAction += () =>
+            {
+                vv.EndHeaderRefreshing();
+            };
+            ///鍔犺浇闊充箰鍒楄〃
+            SongListView(vv, musicList, listName);
+
+
+        }
+        /// <summary>
+        /// 鍔犺浇闊充箰鍒楄〃
+        /// </summary>
+        /// <param name="vv">鐖舵帶浠�</param>
+        /// <param name="musicList">闊充箰鍒楄〃</param>
+        /// <param name="listName">鍒楄〃鍚�</param>
+        public static void SongListView(VerticalRefreshLayout vv,List<Songs> musicList,string listName, FrameLayout frame = null) {
+
+            for (int i = 0; i < musicList.Count; i++)
+            {
+                var songs = musicList[i];
+                if (songs == null)
+                {
+                    continue;
+                }
+                UI.Music.View.SongView songView = new UI.Music.View.SongView();
+                songView.SongFrameLayout(vv, songs);
+                songView.songBtn.Text = songs.name;
+                ///鐐瑰嚮鎾斁浜嬩欢
+                songView.clickBtn.MouseUpEventHandler += (sender, e) =>
+                {
+                    System.Threading.Tasks.Task.Run(() =>
+                    {
+                        System.Threading.Thread.Sleep(50);
+                        Application.RunOnMainThread(() =>
+                        {
+                            //绉婚櫎鐣岄潰
+                            A31MusicModel.Current.functionMusic.SetAttrState("song_name", songView.songBtn.Text);
+                            A31MusicModel.Current.functionMusic.SetAttrState("playlist_name", listName);
+                            //绉婚櫎鐣岄潰
+                            if (frame != null)
+                            {
+                                frame.RemoveFromParent();
+                            }
+                            MainPage.BasePageView.RemoveViewByTag("Music");
+                            Dictionary<string, string> dic = new Dictionary<string, string>();
+                            dic.Add("song_name", songView.songBtn.Text);
+                            dic.Add("playlist_name", listName);
+                            SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
+                        });
+                    });
+                };
+
+            }
+
+        }
+    }
+
+    public class UpdateThread
+    {
+        public UpdateThread()
+        {
+        }
+        /// <summary>
+        /// 瀹氭椂鏇存柊褰撳墠鎾斁闊充箰
+        /// </summary>
+        /// <param name="frame">褰撳墠鐣岄潰</param>
+        /// <param name="middViewLayout">姣忎竴鏉¢煶涔愮殑涓绘帶浠�</param>
+        /// <param name="a31MusicModel">鐐瑰墠鎾斁鍣�</param>
+        public static void updateCurrMusicThread(FrameLayout frame, VerticalRefreshLayout middViewLayout, A31MusicModel a31MusicModel)
+        {
+            System.Threading.Thread updateSelectedMusicThread = new System.Threading.Thread(() =>
+            {
+                while (frame.Parent != null)
+                {
+                    //A31MusicModel.LogMusic("宸插惎鍔ㄦ洿鏂伴煶涔愬垪琛ㄦ煇涓�鏉¢煶涔愮姸鎬佺殑绾跨▼");
+                    System.Threading.Thread.Sleep(1000);
+                    Application.RunOnMainThread(() =>
+                    {
+                        try
+                        {
+                            for (int i = 0; i < middViewLayout.ChildrenCount; i++)
+                            {
+                                RowLayout view = (RowLayout)middViewLayout.GetChildren(i);
+                                var volIconBtn = (Button)view.GetChildren(0);//鐩存帴FrameLayout鐖舵帶浠舵壘鍒拌鎺т欢Button
+                                var songNameBtn = (Button)view.GetChildren(1);//鐩存帴FrameLayout鐖舵帶浠舵壘鍒拌鎺т欢Button
+                                var artistNameBtn = (Button)view.GetChildren(2);//鐩存帴FrameLayout鐖舵帶浠舵壘鍒拌鎺т欢Button
+                                //if (a31MusicModel.A31PlayStatus.TrackURL == songNameBtn.Tag.ToString())
+                                //{
+                                //    volIconBtn.Visible = true;
+                                //    songNameBtn.TextColor = UI.Music.MusicColor.SelectedColor;
+                                //    songNameBtn.X = Application.GetRealWidth(48);
+                                //    artistNameBtn.X = songNameBtn.Right;
+                                //    artistNameBtn.TextColor = UI.Music.MusicColor.SelectedColor;
+                                //}
+                                //else
+                                //{
+                                //    volIconBtn.Visible = false;
+                                //    songNameBtn.TextColor = UI.Music.MusicColor.MusicTxet14Color;
+                                //    songNameBtn.X = Application.GetRealWidth(16);
+                                //    artistNameBtn.X = songNameBtn.Right;
+                                //    artistNameBtn.TextColor = UI.Music.MusicColor.MusicNoTxetColor;
+                                //}
+
+
+                            }
+                        }
+                        catch { }
+
+                    });
+                }
+            });
+            updateSelectedMusicThread.Start();
+        }
+      
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31USBMusicList.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31USBMusicList.cs
deleted file mode 100644
index 3faba9c..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31USBMusicList.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using Shared;
-namespace HDL_ON.UI.Music
-{
-    public class A31USBMusicList : FrameLayout
-    {
-        public A31USBMusicList()
-        {
-            Tag = "Music";
-        }
-
-        VerticalRefreshLayout middViewLayout;
-        /// <summary>
-        /// 鍏堝姞杞界晫闈㈠嚭鏉�
-        /// </summary>
-        public void UIView()
-        {
-            #region   鐣岄潰甯冨眬------
-
-            this.BackgroundColor = MusicColor.ViewColor;
-            var topView = new TopView();
-            this.AddChidren(topView.TopFLayoutView());
-            topView.topNameBtn.TextID = StringId.usb;
-            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                this.RemoveFromParent();
-            };
-            middViewLayout = new VerticalRefreshLayout
-            {
-                BackgroundColor = MusicColor.WhiteColor,
-                Y = topView.fLayout.Bottom,
-                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
-            };
-            this.AddChidren(middViewLayout);
-
-            middViewLayout.BeginHeaderRefreshingAction += () =>
-            {
-                //System.Threading.Tasks.Task.Run(() =>
-                //{
-                //    try
-                //    {
-                //        var list = SendMethod.GetUsbList();
-                //        A31MusicModel.Current.USBList.Clear();
-                //        A31MusicModel.Current.USBList.AddRange(list);
-                //    }
-                //    catch { }
-                //    finally
-                //    {
-                //        Application.RunOnMainThread(() =>
-                //        {
-                //            Show();
-                //            middViewLayout.EndHeaderRefreshing();
-                //        });
-                //    }
-                //});
-                var list = SendMethod.GetUsbList(A31MusicModel.Current);
-                A31MusicModel.Current.USBList.Clear();
-                A31MusicModel.Current.USBList.AddRange(list);
-                Show();
-                middViewLayout.EndHeaderRefreshing();
-            };
-            #endregion
-        }
-        /// <summary> 
-        /// 鍔犺浇鏁版嵁鐨勬柟娉�
-        /// </summary>
-        public void Show()
-        {
-            middViewLayout.RemoveAll();
-            UI2.FuntionControlView.Music.UpdateThread.playMusuc(middViewLayout, "USB", "USBDiskQueue",A31MusicModel.Current.USBList, A31MusicModel.Current);
-        }
-        /// <summary>
-        /// 瀹氭椂鏇存柊褰撳墠鎾斁闊充箰
-        /// </summary>
-        public void UpdateSelectedMusic()
-        {
-            UI2.FuntionControlView.Music.UpdateThread.updateThread(this, middViewLayout, A31MusicModel.Current);
-        }
-
-    }
-}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
index 01c7106..0556fea 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
@@ -3,19 +3,32 @@
 using Shared;
 using Shared.IO;
 using System.Net;
+using HDL_ON.Entity;
+using HDL_ON.UI.UI2.FuntionControlView.Music;
+
 namespace HDL_ON.UI.Music
 {
     public class MusicMain : FrameLayout
     {
+        private static MusicMain m_MusicMain = null;
+        public static MusicMain mMusicMain
+        {
+            get
+            {
+                if (m_MusicMain == null)
+                {
+                    m_MusicMain = new MusicMain();
+                }
+                return m_MusicMain;
+            }
 
+        }
         /// <summary>
         /// MusicMain瀵硅薄鏋勯�犲嚱鏁�
         /// </summary>
         public MusicMain()
         {
             Tag = "MusicMain";
-            //杩涙潵闊充箰鍒楄〃鐣岄潰鍏堢Щ闄や箣鍓嶇嚎绋�;
-            A31MusicModel.RemoveListThread();
         }
         /// <summary>
         /// 閲嶅啓RemoveFromParent鏂规硶
@@ -24,7 +37,8 @@
         {
             base.RemoveFromParent();
             clearA31Threads();
-            A31MusicModel.ReadMusicStates();//杩涙潵娌℃湁闊充箰琚敹钘忚繃锛岄��鍑烘湁闊充箰琚敹钘忚繃
+            //杩涙潵娌℃湁闊充箰琚敹钘忚繃锛岄��鍑烘湁闊充箰琚敹钘忚繃
+            //A31MusicModel.ReadMusicStates();
         }
         /// <summary>
         /// 鍒涘缓绾跨▼鍒楄〃
@@ -35,6 +49,7 @@
         /// </summary>
         static void clearA31Threads()
         {
+
             var threads = threadLists.FindAll((obj) => { return obj.Name == "A31"; });
             foreach (var thread in threads)
             {
@@ -56,19 +71,19 @@
         /// <summary>
         ///  鏄剧ず鍔犺浇鐣岄潰
         /// </summary>
-        public  static Loading loading = new Loading();
+        public static Loading loading = new Loading();
         /// <summary>
         /// 瀹氫箟鍏ㄥ眬瀵硅薄
         /// </summary>
         VerticalRefreshLayout verticalRefresh;
+       
         public void Show()
         {
-
             #region 鐣岄潰甯冨眬
             this.BackgroundColor = MusicColor.ViewColor;
             var topView = new TopView();
             this.AddChidren(topView.TopFLayoutView());
-            topView.topNameBtn.TextID =StringId.a31Music;
+            topView.topNameBtn.TextID = StringId.a31Music;
             topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
             {
                 RemoveFromParent();
@@ -78,214 +93,126 @@
             {
                 Y = topView.fLayout.Bottom,
                 Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
+                Name = "verticalRefresh",
             };
             this.AddChidren(verticalRefresh);
             #endregion
 
             verticalRefresh.BeginHeaderRefreshingAction += () =>
             {
-                SeachMusic(false);
-
+               
+                ////鍙戦�佽鍙栭煶涔愭挱鏀惧櫒鐘舵�佺嚎绋�
+                SeachMusic();
+                verticalRefresh.EndHeaderRefreshing();
             };
             this.AddChidren(loading);
+            SeachMusic();
 
-            if (A31MusicModel.A31MusicModelList.Count == 0)
-            {
-                SeachMusic(true);
-            }
-            else
-            {
-                clearA31Threads();
-               //verticalRefresh.RemoveAll();
-                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
-                {
-                    var a31player = A31MusicModel.A31MusicModelList[i];
-                    ///杩欎釜鐘舵�佹槸涔嬪墠淇濆瓨鐨勶紝鍔犺浇瀹屾垚鍚庤鏍囪涓轰笉鍦ㄧ嚎锛屽悗闈㈠啀璇诲彇姝g‘鐨勭姸鎬�
-                    if (!a31player.IsCanShow)
-                    {
-                        continue;
-                    }
-                    if (A31MusicModel.A31MusicModelList.Count - 1 == i)
-                    {
-                        a31player.IsEnd = true;
-                    }
-                    else
-                    {
-                        a31player.IsEnd = false;
-                    }
-                    ///鍔犺浇鐣岄潰鏃堕粯璁や笉鍦ㄧ嚎
-                    ///杩欓噷鏍囪鏄负浜嗕笉璇诲彇涓嶅湪绾挎挱鏀惧櫒鐘舵��
-                    a31player.IsOnLine = false;
-                    MusicListView(a31player);
-                }
-                ///璇诲彇姝g‘鐨勪俊鎭紝鍖呮嫭IP鍜岀鍙e強鍚嶇О
-                SendMethod.Seach((obj) =>
-                {
-                    try
-                    {
-                        if (obj == null)
-                        {
-                            ///杩欓噷瑕佽鍙栦富浠庡叧绯�
-                            readServerOrClientMode();
-                            A31MusicModel.Save();
-                            return;
-                        }
-                        var a31MusicModel = A31MusicModel.A31MusicModelList.Find((music) => music.UniqueDeviceName == obj.UniqueDeviceName);
-                        if (a31MusicModel != null)
-                        {
-                            a31MusicModel.IPAddress = obj.IPAddress;
-                            a31MusicModel.Port = obj.Port;
-                            a31MusicModel.Name = obj.Name;
-                            a31MusicModel.IsCanShow = true;
-                            a31MusicModel.IsOnLine = true;
-                        }
-                    }
-                    catch (Exception e) { MainPage.Log(e.Message); }
-                });
-            }
         }
         /// <summary>
         /// 鍒锋柊鎾斁鍣ㄥ垪琛�
         /// </summary>
-        /// <param name="Yes">鏄惁鏄剧ず鍒锋柊鍥炬爣</param>
-        void SeachMusic(bool Yes = false)
+        void SeachMusic()
         {
-            for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
+
+            Application.RunOnMainThread(() =>
             {
-                var a31player = A31MusicModel.A31MusicModelList[i];
-                a31player.IsCanShow = false;
-                a31player.IsOnLine = false;
-            }
-            if (Yes)
-            {
-                //涓轰簡绗竴娆¤繘鏉og涓�涓�;
-                loading.Start();
-            }
-            SendMethod.Seach((obj) =>
-            {
-                if (obj == null)
+                verticalRefresh.RemoveAll();
+                A31MusicModel.A31MusicModelList.Clear();
+                var musicListFunction = FunctionList.List.GetMusicList();
+                for (int i = 0; i < musicListFunction.Count; i++)
                 {
-                    readServerOrClientMode();
-                    A31MusicModel.Save();
-                    if (!Yes)
+                    var function = musicListFunction[i];
+                    var music = A31MusicModel.A31MusicModelList.Find((obj) =>
+                   (obj.functionMusic.deviceId == function.deviceId && function.spk == "music.standard") || (
+                     obj.functionMusic.deviceId == function.deviceId && function.spk == "av.music")
+                    );
+                    if (music == null)
                     {
-                        ///绛夊緟璺戝畬鍦ㄥ叧闂�
-                        verticalRefresh.EndHeaderRefreshing();
+                        A31MusicModel.A31MusicModelList.Add(new A31MusicModel { functionMusic = function });
                     }
+                    else
+                    {
+                        music.functionMusic = function;
+                    }
+                }
+
+                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
+                {
+
+                    var a31player = A31MusicModel.A31MusicModelList[i];
+                    //if (a31player.functionMusic.online == false)
+                    //{
+                    //    //涓嶅湪绾夸笉鏄剧ず
+                    //    continue;
+                    //}
+
                     Application.RunOnMainThread(() =>
                     {
-                        if (Yes)
+                        MusicListView(a31player);
+                    });
+                }
+                ///杩涙潵璇讳竴娆¢煶涔愭挱鏀惧櫒鐘舵��
+                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
+                {
+
+                    var a31player = A31MusicModel.A31MusicModelList[i];
+                    if (a31player.functionMusic.online == false)
+                    {
+                        //涓嶅湪绾夸笉璇诲彇
+                        continue;
+                    }
+                    //鍙戦�佽鍙栭煶涔愭挱鏀惧櫒鐘舵�佺嚎绋�
+                    System.Threading.Tasks.Task.Run(() =>
+                    {
+                        try
                         {
-                            //涓轰簡绗竴娆¤繘鏉og涓�涓�;
-                            loading.Hide();
+                            SendMethod.mMethod.RefreshDeviceStatus(new List<string> { a31player.functionMusic.deviceId });
+                            System.Threading.Thread.Sleep(500);
                         }
-                        verticalRefresh.RemoveAll();
-                        for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
-                        {
-                            var a31player = A31MusicModel.A31MusicModelList[i];
-                            //杩欎釜鐘舵�佹槸涔嬪墠淇濆瓨鐨勶紝鍔犺浇瀹屾垚鍚庤鏍囪涓轰笉鍦ㄧ嚎锛屽悗闈㈠啀璇诲彇姝g‘鐨勭姸鎬�
-                            if (!a31player.IsCanShow)
-                            {
-                                continue;
-                            }
-                            if (A31MusicModel.A31MusicModelList.Count - 1 == i)
-                            {
-                                a31player.IsEnd = true;
-                            }
-                            else
-                            {
-                                a31player.IsEnd = false;
-                            }
-                            MusicListView(a31player);
-                        }
-                       //A31MusicModel.ReadMusicStates();
+                        catch { }
 
                     });
-                    return;
                 }
-                var a31MusicModel = A31MusicModel.A31MusicModelList.Find((music) => { return music.UniqueDeviceName == obj.UniqueDeviceName; });
-                if (a31MusicModel == null)
-                {
-                    //涓嶆槸鎴戜滑鏀寔鐨勫搧鐗屼笉鏀寔
-                    if (obj.Name != null)
-                    {
-                        obj.sid = "030101123456780909020123AABB" + obj.UniqueDeviceName;
-                        A31MusicModel.A31MusicModelList.Add(obj);
-                    }
-                }
-                else
-                {
-                    a31MusicModel.IPAddress = obj.IPAddress;
-                    a31MusicModel.Port = obj.Port;
-                    a31MusicModel.Name = obj.Name;
-                    a31MusicModel.IsCanShow = true;
-                    a31MusicModel.IsOnLine = true;
-                }
+
             });
 
         }
         /// <summary>
         /// 鏄剧ず闊充箰鍒楄〃鐨勬柟娉�
         /// </summary>
-        void MusicListView(A31MusicModel a31player)
+        void MusicListView(A31MusicModel player)
         {
+            /// <summary>
+            /// 涓轰簡闊充箰鍒锋柊鐘舵�佸畾涔夊叏灞�瀵硅薄
+            /// </summary>
             MusicView musicView = new MusicView();
-            musicView.View(verticalRefresh);
-            musicView.singerBtn.Text = a31player.A31PlayStatus.Artist;
-            musicView.songNameBtn.Text = a31player.A31PlayStatus.Title;
-            musicView.musicNameBtn.Text = new View.DialogView { }.NamePlayer(a31player);
-            if (a31player.IsEnd)
-            {
-                musicView.muiscFl.Height = Application.GetRealHeight(12 + 139 + 12);
-            }
-
+            musicView.ViewAddChidren(verticalRefresh);
+            musicView.muiscFl.Tag = player.functionMusic;//澶氫釜闊充箰鎾斁鍣ㄦ洿鏂扮姸鎬佽鐢ㄥ埌
+            musicView.singerBtn.Text = player.functionMusic.GetAttrState(KeyProperty.song_name);
+            musicView.songNameBtn.Text = player.functionMusic.GetAttrState(KeyProperty.song_name);
+            musicView.musicNameBtn.Text = player.functionMusic.name;
+            musicView.collectIconBtn.Visible = false;//鍏堟殏鏃堕殣钘忔敹钘忓姛鑳�
+            ///鏀惰棌浜嬩欢
             musicView.collectIconBtn.MouseUpEventHandler += (sender, e) =>
             {
                 musicView.collectIconBtn.IsSelected = !musicView.collectIconBtn.IsSelected;
-                if (a31player.ServerClientType == 1)
+                if (musicView.collectIconBtn.IsSelected)
                 {
-                    if (musicView.collectIconBtn.IsSelected)
-                    {
-                        a31player.MainPlayCollection = true;
-                    }
-                    else
-                    {
-                        a31player.MainPlayCollection = false;
-                    }
+                    player.functionMusic.collect = true;
                 }
                 else
                 {
-                    if (musicView.collectIconBtn.IsSelected)
-                    {
-                        a31player.collect = true;
-                    }
-                    else
-                    {
-                        a31player.collect = false;
-                    }
-                }
-                A31MusicModel.Save();
-            };
-
-            EventHandler<MouseEventArgs> clickMergence = (sender, e) =>
-            {
-                if (a31player.ServerClientType == 0)
-                {
-                    new View.DialogView { }.PlayMergence(a31player);
-                }
-                else if (a31player.ServerClientType == 1)
-                {
-                    new View.DialogView { }.DetachPlayMergence(a31player);
-
+                    player.functionMusic.collect = false;
                 }
             };
-            musicView.mergeBjBtn.MouseUpEventHandler += clickMergence;
-            musicView.mergeBtn.MouseUpEventHandler += clickMergence;
-            musicView.mergeIconBtn.MouseUpEventHandler += clickMergence;
 
+
+            ///杩涘叆闊充箰涓婚〉浜嬩欢
             EventHandler<MouseEventArgs> clickPlayView = (sender, e) =>
             {
-                A31MusicModel.Current = a31player;//褰撳墠鎾斁鍣�
+
+                A31MusicModel.Current = player;
                 var a31PlayMusicPage = new A31PlayMusicPage();
                 MainPage.BasePageView.AddChidren(a31PlayMusicPage);
                 a31PlayMusicPage.Show();
@@ -302,7 +229,10 @@
             musicView.prevBtn.MouseDownEventHandler += (sender, e) =>
             {
                 musicView.prevBtn.IsSelected = true;
-                SendMethod.Previous(a31player);
+                player.functionMusic.SetAttrState(KeyProperty.song_step, ValueProperty.up);
+                Dictionary<string, string> dic = new Dictionary<string, string>();
+                dic.Add(KeyProperty.song_step, ValueProperty.up);
+                SendMethod.mMethod.SendControlCommand(player.functionMusic, dic);
             };
             musicView.prevBtn.MouseUpEventHandler += (sender, e) =>
             {
@@ -311,46 +241,54 @@
             ///鏆傚仠/鎾斁鐐瑰嚮浜嬩欢
             musicView.playBtn.MouseDownEventHandler += (sender, e) =>
             {
+                string status = ValueProperty.off;
                 if (musicView.playBtn.IsSelected)
                 {
                     musicView.playBtn.IsSelected = false;
-                    SendMethod.Pause(a31player);
-                    a31player.A31PlayStatus.status = "pause";
+                    status = ValueProperty.off;
                 }
                 else
                 {
                     musicView.playBtn.IsSelected = true;
-                    SendMethod.Play(a31player);
-                    a31player.A31PlayStatus.status = "play";
+                    status = ValueProperty.on;
                 }
+                player.functionMusic.SetAttrState(KeyProperty.on_off, status);
+                Dictionary<string, string> dic = new Dictionary<string, string>();
+                dic.Add(KeyProperty.on_off, status);
+                SendMethod.mMethod.SendControlCommand(player.functionMusic, dic);
             };
             ///涓嬩竴鏇茬偣鍑讳簨浠�
             musicView.nextBtn.MouseDownEventHandler += (sender, e) =>
             {
                 musicView.nextBtn.IsSelected = true;
-                SendMethod.Next(a31player);
+                player.functionMusic.SetAttrState(KeyProperty.song_step, ValueProperty.down);
+                Dictionary<string, string> dic = new Dictionary<string, string>();
+                dic.Add(KeyProperty.song_step, ValueProperty.down);
+                SendMethod.mMethod.SendControlCommand(player.functionMusic, dic);
             };
             musicView.nextBtn.MouseUpEventHandler += (sender, e) =>
             {
                 musicView.nextBtn.IsSelected = false;
             };
-
+            //鏇存柊鐘舵�佺嚎绋�
             var musicThread = new System.Threading.Thread(() =>
             {
                 while (true)
                 {
-                    System.Threading.Thread.Sleep(1000);
-                    if (!a31player.IsOnLine)
+                    if (!player.functionMusic.online)
                     {
+                        ///涓嶅湪绾夸笉璇荤姸鎬�
                         continue;
                     }
-                    SendMethod.ReadStatus(a31player);
+                    //SendMethod.ReadStatus(player);
+                    SendMethod.mMethod.GetDeviceStatus(ref player, new List<string> { player.functionMusic.deviceId }, player.functionMusic.sid);
+                    System.Threading.Thread.Sleep(1000);
                     Application.RunOnMainThread(() =>
                     {
-                        musicView.singerBtn.Text = a31player.A31PlayStatus.Artist;
-                        musicView.songNameBtn.Text = a31player.A31PlayStatus.Title;
-                        musicView.musicNameBtn.Text = new View.DialogView { }.NamePlayer(a31player);
-                        if (a31player.A31PlayStatus.status == "play")
+                        musicView.singerBtn.Text = player.functionMusic.GetAttrState(KeyProperty.song_name);
+                        musicView.songNameBtn.Text = player.functionMusic.GetAttrState(KeyProperty.song_name);
+                        musicView.musicNameBtn.Text = player.functionMusic.name;
+                        if (player.functionMusic.GetAttrState(KeyProperty.on_off) == ValueProperty.on)
                         {
                             musicView.playBtn.IsSelected = true;
                         }
@@ -358,28 +296,15 @@
                         {
                             musicView.playBtn.IsSelected = false;
                         }
-                        musicView.regionBtn.Text = a31player.GetRoomListName();
-                        if (a31player.ServerClientType == 1)
+                        musicView.regionBtn.Text = player.functionMusic.GetRoomListName();
+
+                        if (player.functionMusic.collect)
                         {
-                            if (a31player.MainPlayCollection)
-                            {
-                                musicView.collectIconBtn.IsSelected = true;
-                            }
-                            else
-                            {
-                                musicView.collectIconBtn.IsSelected = false;
-                            }
+                            musicView.collectIconBtn.IsSelected = true;
                         }
                         else
                         {
-                            if (a31player.collect)
-                            {
-                                musicView.collectIconBtn.IsSelected = true;
-                            }
-                            else
-                            {
-                                musicView.collectIconBtn.IsSelected = false;
-                            }
+                            musicView.collectIconBtn.IsSelected = false;
                         }
                     });
                 }
@@ -388,99 +313,121 @@
             musicThread.Start();
             threadLists.Add(musicThread);
         }
+
         /// <summary>
-        /// 璇诲彇涓讳粠鍏崇郴
+        ///鎸囧畾鍒锋柊鐣岄潰
         /// </summary>
-        void readServerOrClientMode()
+        /// <param name="strView">鍒ゆ柇瀛楃</param>
+        public void RefreshView(AlinkStatusData alinkStatusData)
         {
-            try
+            if (alinkStatusData == null || alinkStatusData.status.Count == 0)
             {
-                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
+                return;
+            }
+            Application.RunOnMainThread(() =>
+            {
+                try
                 {
-                    var a31player = A31MusicModel.A31MusicModelList[i];
-                    if (!a31player.IsOnLine)
+                    for (int a =0; a < MainPage.BasePageView.ChildrenCount; a++)
                     {
-                        continue;
-                    }
-                    try
-                    {
-                        a31player.ServerClientType = 0;
-                        var result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
-                        if (result == null && result == "Failed")
+                        var view = MainPage.BasePageView.GetChildren(a);
+                        if (view.GetType() == typeof(MusicMain))
                         {
-                            result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
-                        }
-                        if (result != null && result != "Failed")
-                        {
-                            a31player.Slave = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
-                        }
-                    }
-                    catch (Exception e)
-                    {
-                        var d = e.Message;
-                    }
-                }
-
-                //鍒嗘瀽涓讳粠鍏崇郴
-                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
-                {
-                    var a31player = A31MusicModel.A31MusicModelList[i];
-                    if (!a31player.IsOnLine)
-                    {
-                        continue;
-                    }
-                    try
-                    {
-                        if (a31player.Slave != null && "0" != a31player.Slave.slaves)
-                        {
-                            a31player.ServerClientType = 1;//涓荤殑
-                            string str = a31player.Name;
-                            for (int j = 0; j < a31player.Slave.slave_list.Count; j++)
+                            var musicMain = view as MusicMain;
+                            if (musicMain != null)
                             {
-
-                                var slave = a31player.Slave.slave_list[j];
-                                str = str + "+" + slave.name;
-                                var tempA31Player = A31MusicModel.A31MusicModelList.Find((obj) => slave.uuid.Replace("uuid:", "") == obj.UniqueDeviceName);
-                                if (tempA31Player == null)
+                                for (int b = 0; b < musicMain.ChildrenCount; b++)
                                 {
-                                    A31MusicModel.A31MusicModelList.Add(new A31MusicModel
+                                    var view1 = musicMain.GetChildren(b);
+                                    if (view1.GetType() == typeof(VerticalRefreshLayout))
                                     {
-                                        sid = "030101123456780909020123AABB" + slave.uuid.Replace("uuid:", ""),
-                                        ServerClientType = -1,//浠庣殑
-                                        IPAddress = slave.ip,
-                                        MainPlayIP = a31player.IPAddress,
-                                        UniqueDeviceName = slave.uuid.Replace("uuid:", ""),
-                                        Name = slave.name,
-                                        IsCanShow = false,
-                                        IsOnLine = false,//true浣滅敤涓轰簡璇诲彇浠庢挱鏀惧櫒鐨勯煶閲�
-                                    });
-                                }
-                                //濡傛灉鎵惧埌灏辨洿鏂颁负浠庣殑
-                                else
-                                {
-                                    tempA31Player.ServerClientType = -1;//浠庣殑
-                                    tempA31Player.IPAddress = slave.ip;
-                                    tempA31Player.MainPlayIP = a31player.IPAddress;
-                                    tempA31Player.Name = slave.name;
-                                    tempA31Player.UniqueDeviceName = slave.uuid.Replace("uuid:", "");
-                                    tempA31Player.IsCanShow = false;
-                                    tempA31Player.IsOnLine = false;//true浣滅敤涓轰簡璇诲彇浠庢挱鏀惧櫒鐨勯煶閲�
+                                        var vv = view1 as VerticalRefreshLayout;
+                                        if (vv != null && vv.Name == "verticalRefresh")
+                                        {
+                                            for (int c = 0; c < vv.ChildrenCount; c++)
+                                            {
+                                                var viewfl = vv.GetChildren(c); 
+                                                if (viewfl.GetType() == typeof(FrameLayout))
+                                                {
+                                                    var fl = viewfl as FrameLayout;
+                                                    if ((fl.Tag as Function).sid!= alinkStatusData.sid) {
+                                                        //涓嶆槸褰撳墠闊充箰涓嶄細鏇存柊鐘舵��
+                                                        continue;
+                                                    }
+                                                    if (fl != null && fl.Name == "parentfl")
+                                                    {
+                                                        for (int i = 0; i < fl.ChildrenCount; i++)
+                                                        {
+                                                            var viewfl1 = fl.GetChildren(i); 
+                                                            if (viewfl1.GetType() == typeof(FrameLayout))
+                                                            {
+                                                                var fl1 = viewfl1 as FrameLayout;
+                                                                if (fl1 != null && fl1.Name == "musicparentfl")
+                                                                {
+                                                                    for (int j = 0; j < fl1.ChildrenCount; j++)
+                                                                    {
+
+                                                                        if (fl1.GetChildren(j).GetType() == typeof(Button))
+                                                                        {
+                                                                            var btn = fl1.GetChildren(j) as Button;
+                                                                            if (btn == null ||btn.Name==null)
+                                                                            {
+                                                                                continue;
+                                                                            }
+                                                                            switch (btn.Name)
+                                                                            {
+                                                                                case "song":
+                                                                                    {
+                                                                                        var s = alinkStatusData.status.Find((o) => o.key == KeyProperty.song_name);
+                                                                                        if (s != null)
+                                                                                        {
+                                                                                            btn.Text = s.value;
+                                                                                        }
+                                                                                    }
+                                                                                    break;
+                                                                                case "playstatus":
+                                                                                    {
+
+                                                                                        var s = alinkStatusData.status.Find((o) => o.key == KeyProperty.on_off);
+                                                                                        if (s != null)
+                                                                                        {
+                                                                                            if (s.value == ValueProperty.on)
+                                                                                            {
+                                                                                                btn.IsSelected = true;
+                                                                                            }
+                                                                                            else
+                                                                                            {
+                                                                                                btn.IsSelected = false;
+                                                                                            }
+                                                                                        }
+                                                                                    }
+                                                                                    break;
+                                                                            }
+
+                                                                        }
+                                                                    }
+                                                                }
+                                                            }
+
+                                                        }
+                                                    }
+                                                }
+
+                                            }
+                                        }
+
+                                    }
 
                                 }
                             }
-                            a31player.MainPlayName = str;
+
                         }
                     }
-                    catch (Exception e)
-                    {
-                        var ss = e.Message;
-                    }
+
                 }
-
-            }
-            catch { }
+                catch { }
+            });
         }
-
     }
 
 }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs
new file mode 100644
index 0000000..22bd45a
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs
@@ -0,0 +1,141 @@
+锘縰sing System;
+using HDL_ON.Entity;
+
+namespace HDL_ON.UI.UI2.FuntionControlView.Music
+{
+    public class KeyProperty
+    {
+        private static KeyProperty sMusicPropertyKey = null;
+
+        public static KeyProperty sMusicProperty
+        {
+            get
+            {
+                if (sMusicPropertyKey == null)
+                {
+                    sMusicPropertyKey = new KeyProperty();
+                }
+                return sMusicPropertyKey;
+            }
+        }
+
+        #region    ---灞炴��----
+
+        /// <summary>
+        /// 寮�鍏�<on/off>
+        /// </summary>
+        public const string on_off = "on_off";
+        /// <summary>
+        /// 闊抽噺<0-100>
+        /// </summary>
+        public const string volume = "volume";
+        /// <summary>
+        /// 妯″紡<single/single_cycle/order/list_cycle/random>
+        /// </summary>
+        public const string mode = "mode";
+        /// <summary>
+        /// 闊虫簮<sdcard/audio_in/ftp/radio/bluetooth>
+        /// </summary>
+        public const string source = "source";
+        /// <summary>
+        /// 鍒楄〃鍚�
+        /// </summary>
+        public const string playlist_name = "playlist_name";
+        /// <summary>
+        /// 姝屾洸鍚�
+        /// </summary>
+        public const string song_name = "song_name";
+        /// <summary>
+        /// 鍒囨瓕<up/down>
+        /// </summary>
+        public const string song_step = "song_step";
+        /// <summary>
+        /// 褰撳墠姝屾洸鎬绘椂闂�<0-9999(s)>
+        /// </summary>
+        public const string song_time = "song_time";
+        /// <summary>
+        /// 褰撳墠姝屾洸鎾斁鏃堕棿<0-9999(s)>
+        /// </summary>
+        public const string playing_time = "playing_time";
+
+
+        #endregion
+
+
+
+        /// <summary>
+        /// 鑾峰彇on_off鍊�
+        /// </summary>
+        /// <param name="function">褰撳墠闊充箰</param>
+        /// <returns></returns>
+        public string GetOnOffKeyValue(Function function)
+        {
+            if (function == null)
+            {
+                return "";
+            }
+            return function.GetAttrState(on_off);
+
+        }
+        /// <summary>
+        /// 璁剧疆on_off鍊�
+        /// </summary>
+        /// <param name="function">褰撳墠闊充箰</param>
+        /// <returns></returns>
+        public void SetOnOffKeyValue(Function function, string stateValue)
+        {
+            if (function == null)
+            {
+                return;
+            }
+            function.SetAttrState(on_off, stateValue);
+
+        }
+
+    }
+    public class ValueProperty
+    {
+        #region    ---灞炴�у��----
+        /// <summary>
+        /// <up>
+        /// </summary>
+        public const string up = "up";
+        /// <summary>
+        /// <down>
+        /// </summary>
+        public const string down = "down";
+        /// <summary>
+        /// 寮�<on>
+        /// </summary>
+        public const string on = "on";
+        /// <summary>
+        /// 鍏�<off>
+        /// </summary>
+        public const string off = "off";
+        /// <summary>
+        /// 鍗曟洸<single>
+        /// </summary>
+        public const string single = "single";
+        /// <summary>
+        /// 鍗曟洸寰幆
+        /// </summary>
+        public const string single_cycle = "single_cycle";
+        /// <summary>
+        /// 寰簭寰幆
+        /// </summary>
+        public const string order = "order";
+        /// <summary>
+        /// 鍒楄〃寰幆
+        /// </summary>
+        public const string list_cycle = "list_cycle";
+        /// <summary>
+        /// 闅忔満鎾斁
+        /// </summary>
+        public const string random = "random";
+
+        #endregion
+
+
+
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
index dd36144..fda2963 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
@@ -4,883 +4,155 @@
 using System.Net.Sockets;
 using System.Security;
 using System.Text;
+using HDL_ON.DAL.Server;
+using HDL_ON.Entity;
 using Shared;
 
 namespace HDL_ON.UI.Music
 {
     public class SendMethod
     {
-        /// <summary>
-        ///鎼滅储A31闊充箰鎾斁鍣�
-        /// </summary>
-        /// <param name="action"></param>
-        /// <param name="time"></param>
-        /// <param name="uid"></param>
-        public static void Seach(Action<A31MusicModel> action, int time = 5 * 1000, string uid = "AllUniqueDeviceName")
+        private static SendMethod sMethod=null;    
+        public static SendMethod mMethod
         {
-            System.Threading.Tasks.Task.Run(() =>
+            get
             {
-                System.Net.Sockets.UdpClient udpClient = null;
-                int localPort = 65535;
-                for (; 1024 < localPort; localPort--)
+                if (sMethod == null)
                 {
-                    try
-                    {
-                        udpClient = new System.Net.Sockets.UdpClient(localPort);
-                        break;
-                    }
-                    catch (Exception e) { System.Console.WriteLine(e.Message); }
+                    sMethod = new SendMethod();
                 }
+                return sMethod;
+            }
 
-                System.Threading.Tasks.Task.Run(() =>
-                {
-                    var tempDateTime = DateTime.Now;
-                    while (udpClient != null)
-                    {
-                        try
-                        {
-                            if (time < (DateTime.Now - tempDateTime).TotalMilliseconds)
-                            {
-                                var tempBytes = System.Text.Encoding.UTF8.GetBytes("瀹屾垚");
-                                udpClient.Send(tempBytes, tempBytes.Length, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("127.0.0.1"), localPort));
-                            }
-                            else
-                            {
-                                var stringBuilder = new StringBuilder();
-                                stringBuilder.AppendLine("M-SEARCH * HTTP/1.1");
-                                stringBuilder.AppendLine("St: ssdp:wiimudevice");
-                                stringBuilder.AppendLine("Mx: 3");
-                                stringBuilder.AppendLine("Host: 239.255.255.250:1900");
-                                stringBuilder.AppendLine("Man: \"ssdp:discover\"");
-                                stringBuilder.AppendLine();
-                                var tempBytes = System.Text.Encoding.ASCII.GetBytes(stringBuilder.ToString());
-                                //璇锋眰鑾峰彇A31鏈嶅姟鍣ㄤ俊鎭�
-                                udpClient.Send(tempBytes, tempBytes.Length, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("239.255.255.250"), 1900));
-                                udpClient.Send(tempBytes, tempBytes.Length, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("239.255.255.250"), 1900));
-                                //濡傛灉1000姣娌℃湁鏁版嵁鍥炲锛屽氨鍏抽棴褰撳墠Socket锛屼笉鍐嶇瓑寰呮帴鏀舵暟鎹�
-                            }
-                            System.Threading.Thread.Sleep(500);
-                        }
-                        catch (Exception e) { System.Console.WriteLine(e.Message); }
-                    }
-                });
-                while (true)
-                {
-                    try
-                    {
-                        //鎺ユ敹鍥炴潵鐨勬暟鎹�
-                        var remoteIpEndPoint = new System.Net.IPEndPoint(0, 0);
-                        //寮�濮嬪湪杩欓噷绛夊緟鎺ユ敹鏁版嵁锛�
-                        var receviceBytes = udpClient.Receive(ref remoteIpEndPoint);
-                        if (receviceBytes == null)
-                        {
-                            break;
-                        }
-                        if ("瀹屾垚" == System.Text.Encoding.UTF8.GetString(receviceBytes))
-                        {
-                            if (action != null)
-                            {
-                                //琛ㄧず瀹屾垚浜�
-                                action(null);
-                            }
-                            try
-                            {
-                                udpClient.Close();
-                                udpClient = null;
-                            }
-                            catch (Exception e) { System.Console.WriteLine(e.Message); }
-                            break;
-                        }
-
-                        var sr = new System.IO.StreamReader(new System.IO.MemoryStream(receviceBytes, 0, receviceBytes.Length));
-                        string tempLine = null;
-                        string ipAddress = null;
-                        int port = 0;
-                        string uniqueDeviceName = null;
-                        //涓�琛屼竴琛屾暟鎹垽鏂紝鎵惧嚭闇�瑕佺殑淇℃伅
-                        while ((tempLine = sr.ReadLine()) != null)
-                        {
-                            //鎵惧嚭Ip鍦板潃鐩稿叧鐨勪俊鎭�
-                            //System.Console.WriteLine (tempLine);
-                            if (tempLine.StartsWith("LOCATION: http://"))
-                            {
-                                tempLine = tempLine.Replace("LOCATION: http://", "").Split('/')[0];
-                                string[] ipAndPort = tempLine.Split(':');
-                                ipAddress = ipAndPort[0];
-                                port = int.Parse(ipAndPort[1]);
-                            }
-                            else if (tempLine.StartsWith("USN: uuid:"))
-                            {
-                                uniqueDeviceName = tempLine.Replace("USN: uuid:", "").Split(':')[0];
-                            }
-                        }
-                        //鍏抽棴娴�
-                        sr.Close();
-
-                        if (action != null)
-                        {
-                            if ("AllUniqueDeviceName" == uid)
-                            {
-                                action(new A31MusicModel { IPAddress = ipAddress, Port = port, Name = GetDeviceName(ipAddress, port), UniqueDeviceName = uniqueDeviceName });
-                            }
-                            else if (uid == uniqueDeviceName)
-                            {
-                                if (action != null)
-                                {
-                                    //琛ㄧず瀹屾垚浜�
-                                    action(null);
-                                }
-                                try
-                                {
-                                    udpClient.Close();
-                                    udpClient = null;
-                                }
-                                catch (Exception e) { System.Console.WriteLine(e.Message); }
-                                break;
-                            }
-                        }
-                    }
-                    catch (Exception e) { System.Console.WriteLine(e.Message); }
-                }
-            });
         }
         /// <summary>
-        /// 鏇存柊A31鎾斁鍣ㄧ殑鐘舵��
+        /// 鑾峰彇闊充箰鍒楄〃
         /// </summary>
-        /// <param name="a31MusicModel"></param>
-        public static void ReadStatus(A31MusicModel a31MusicModel)
+        public List<Function> GetMusicList
+        {
+            get
+            {
+                return FunctionList.List.GetMusicList();
+            }
+        }
+        /// <summary>
+        /// 鍙戦�佹帶鍒跺懡浠�
+        /// </summary>
+        /// <param name="function">褰撳墠璁惧</param>
+        /// <param name="dic">鍙戦�佹帶鍒舵暟鎹�</param>
+        public void SendControlCommand(Function function, Dictionary<string, string> dic)
+        {
+            new System.Threading.Thread(() =>
+            {
+                DriverLayer.Control.Ins.SendWriteCommand(function, dic);
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// 鑾峰彇璁惧鏈�鏂扮殑鐘舵��
+        /// </summary>
+        /// <returns></returns>
+        public void GetDeviceStatus(ref A31MusicModel a31Music, List<string> functionIds, string sid)
         {
             try
             {
-                if (a31MusicModel.ServerClientType == 1)
-                {
-                    var result = OpenWeb("http://" + a31MusicModel.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
-                    if (result != null && result != "Failed")
-                    {
-                        var slaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
-                        if (slaves != null && slaves.slave_list != null && slaves.slave_list.Count != 0)
-                        {
-                            a31MusicModel.Slave = slaves;
-                        }
-                    }
-                }
-
-                WebClient webClient = new WebClient();
-                webClient.Headers.Add("Soapaction", "\"urn:schemas-upnp-org:service:AVTransport:1#GetInfoEx\"");
-                webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-
-                var recevieBytes = webClient.UploadData(new Uri("http://" + a31MusicModel.IPAddress + ":" + a31MusicModel.Port + "/upnp/control/rendertransport1"), "POST", System.Text.Encoding.UTF8.GetBytes("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:GetInfoEx xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID></u:GetInfoEx></s:Body></s:Envelope>"));
-                a31MusicModel.LastDateTime = DateTime.Now;//璁板綍鏁版嵁鍙嶉鐨勬椂闂�(鍥犱负鏈夋椂闂寸綉缁滃樊鏁版嵁涓嶅洖澶嶏紝瀵艰嚧褰撳墠鎾斁闊充箰鏃堕棿鏄剧ず涓嶆纭�)
-
-                var se = System.Security.SecurityElement.FromString(System.Text.Encoding.UTF8.GetString(recevieBytes)).SearchForChildByTag("s:Body").SearchForChildByTag("u:GetInfoExResponse");
-
-                if ("PLAYING" == se.SearchForTextOfTag("CurrentTransportState"))
-                {
-                    a31MusicModel.A31PlayStatus.status = "play";
-                }
-                else
-                {
-                    a31MusicModel.A31PlayStatus.status = "stop";
-                }
-                a31MusicModel.A31PlayStatus.totlen = (DateTime.Parse(se.SearchForTextOfTag("TrackDuration")) - DateTime.Parse("00:00:00")).TotalMilliseconds.ToString();
-
-                var trackMetaData = se.SearchForTextOfTag("TrackMetaData");
-                if (string.IsNullOrEmpty(trackMetaData))
+                //RefreshDeviceStatus(functionIds);
+                a31Music.LastDateTime = DateTime.Now;
+                ///浠庣紦瀛橀噷闈㈡煡鎵鹃煶涔愭挱鏀惧櫒瀵硅薄<缂撳瓨鏁版嵁鏀跺埌鎺ㄩ�佽繃鏉ョ殑鐘舵�佷細鏇存柊缂撳瓨鏁版嵁>
+                var allLocalFuntion = FunctionList.List.GetDeviceFunctionList();
+                var localFunction = allLocalFuntion.Find((obj) => obj.sid == sid);
+                if (localFunction == null)
                 {
                     return;
                 }
-                if (A31MusicModel.IsJson(trackMetaData))
-                {
-                    var a31QQSong = Newtonsoft.Json.JsonConvert.DeserializeObject<A31QQSong>(trackMetaData);
-                    a31MusicModel.A31PlayStatus.Title = a31QQSong.title;
-                    a31MusicModel.A31PlayStatus.Album = a31QQSong.album;
-                    a31MusicModel.A31PlayStatus.Artist = a31QQSong.creator;
-                }
-                else
-                {
-                    var metadata = trackMetaData.Replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "").Replace("&", "&amp;amp;");
-                    var item = SecurityElement.FromString(metadata).SearchForChildByTag("item");
-                    a31MusicModel.A31PlayStatus.Title = item.SearchForTextOfTag("dc:title");
-                    a31MusicModel.A31PlayStatus.Artist = item.SearchForTextOfTag("upnp:artist");
-                    a31MusicModel.A31PlayStatus.Album = item.SearchForTextOfTag("upnp:album");
-                }
-                a31MusicModel.A31PlayStatus.curpos = (DateTime.Parse(se.SearchForTextOfTag("RelTime")) - DateTime.Parse("00:00:00")).TotalMilliseconds.ToString();
-                a31MusicModel.A31PlayStatus.vol = se.SearchForTextOfTag("CurrentVolume");
-                a31MusicModel.A31PlayStatus.loop = se.SearchForTextOfTag("LoopMode");
-                a31MusicModel.A31PlayStatus.Source = se.SearchForTextOfTag("PlayMedium");
-                a31MusicModel.A31PlayStatus.playSource = se.SearchForTextOfTag("TrackSource");
-                a31MusicModel.A31PlayStatus.TrackURL = se.SearchForTextOfTag("TrackURI").Replace("&", "&amp;amp;"); 
+                ///鏇存柊鐨勬暟鎹�
+                a31Music.functionMusic = localFunction;
 
             }
-            catch (Exception ex)
-            {
-                Console.WriteLine(ex.Message);
-            }
-            finally
-            {
-                #region 鏇存柊鍏朵粬鐣岄潰闊充箰鐘舵��
-                Application.RunOnMainThread(() =>
-                {
-                    a31MusicModel.trait_on_off.curValue = a31MusicModel.A31PlayStatus.status == "play" ? "on" : "off";
-                    //Console.WriteLine($"music : {a31MusicModel.sid} : {a31MusicModel.on_off}");
-                    HomePage.UpdataFunctionStates(a31MusicModel);
-                    foreach (var e in A31MusicModel.A31MusicModelList)
-                    {
-                        RoomPage.UpdataStates(a31MusicModel);
-                    }
-                });
-                #endregion
-            }
+            catch { }
         }
 
-        public static string OpenWeb(string url)
-        {
-            try
-            {
-                var webClient = new WebClient();
-                return webClient.DownloadString(url);
-            }
-            catch (Exception e)
-            {
-                System.Console.WriteLine(e.Message);
-                return null;
-            }
-        }
         /// <summary>
-        /// 鑾峰彇A31鐨勫悕绉�
+        /// 鍒锋柊璁惧鐘舵��
         /// </summary>
-        /// <param name="ip"></param>
-        /// <param name="port"></param>
         /// <returns></returns>
-        static string GetDeviceName(string ip, int port)
+        public void RefreshDeviceStatus(List<string> functionIds)
         {
-            string deviceName = null;
-            System.IO.StreamReader sr = null;
-            WebClient webClient = new WebClient();
             try
             {
-                var receviceBytes = webClient.DownloadData(new Uri("http://" + ip + ":" + port + "/description.xml"));
-                sr = new System.IO.StreamReader(new System.IO.MemoryStream(receviceBytes), Encoding.UTF8);
-                string line = null;
-                string deviceType = null;
-
-                while ((line = sr.ReadLine()) != null)
+                Dictionary<string, object> d = new Dictionary<string, object>();
+                d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+                d.Add("deviceIds", functionIds);
+                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_RefreshDeviceStatus);
+                if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
                 {
-                    //System.Console.WriteLine (line);
-                    if (line.StartsWith("<friendlyName>"))
-                    {
-                        deviceName = line.Replace("<friendlyName>", "").Replace("</friendlyName>", "");
-                    }
-                    else if (line.StartsWith("<manufacturer>"))
-                    {
-                        deviceType = line.Replace("<manufacturer>", "").Replace("</manufacturer>", "");
-                    }
+                    return;
                 }
-                switch (deviceType)
-                {
-                    case "iEAST":
-                    case "Linkplay Technology Inc.":
-                        break;
-                    //涓嶆槸A31鐨勯煶涔愭暟鎹�
-                    default:
-                        deviceName = null;
-                        break;
-                }
-
-            }
-            catch (Exception e)
-            {
-                System.Console.WriteLine(e.Message);
-            }
-            finally
-            {
-                if (sr != null)
-                {
-                    sr.Close();
-                }
-            }
-            return deviceName;
-        }
-
-        /// <summary>
-        /// 鍒囨崲鎾斁鍣ㄦā寮�,淇敼闊充箰鍚嶇О,鍒囨崲钃濈墮,绾胯矾杈撳叆
-        /// </summary>
-        /// <param name="coutn"></param>
-        public static void SendCommand(string url)
-        {
-            System.Threading.Tasks.Task.Run(() =>
-            {
-                WebClient webClient = new WebClient();
-                try
-                {
-                    byte[] recevieBytes1 = webClient.DownloadData(new Uri(url));
-                }
-                catch (Exception ex)
-                {
-                    //this.IPAddress = ex.Message;
-                }
-            });
-        }
-        /// <summary>
-        /// 鎾斁
-        /// </summary>
-        public static void Play(A31MusicModel a31player)
-        {
-            System.Threading.Tasks.Task.Run(() =>
-            {
-                StringBuilder sb = new StringBuilder();
-                sb.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-                sb.AppendLine("<s:Body>");
-                sb.AppendLine("<u:Play xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\">");
-                sb.AppendLine("<InstanceID>0</InstanceID>");
-                sb.AppendLine("<Speed>1</Speed>");
-                sb.AppendLine("</u:Play>");
-                sb.AppendLine("</s:Body>");
-                sb.AppendLine("</s:Envelope>");
-
-                System.Net.WebClient webClient = new System.Net.WebClient();
-                webClient.Headers.Add("SOAPACTION", "\"urn:schemas-upnp-org:service:AVTransport:1#Play\"");
-                webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-                try
-                {
-                    webClient.UploadData(new Uri("http://" + a31player.IPAddress + ":" + a31player.Port + "/upnp/control/rendertransport1"), "POST", Encoding.UTF8.GetBytes(sb.ToString()));
-                }
-                catch { }
-            });
-        }
-        /// <summary>
-        /// 鏆傚仠
-        /// </summary>
-        public static void Pause(A31MusicModel a31player)
-        {
-            System.Threading.Tasks.Task.Run(() =>
-            {
-                StringBuilder sb = new StringBuilder();
-                sb.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-                sb.AppendLine("<s:Body>");
-                sb.AppendLine("<u:Pause xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\">");
-                sb.AppendLine("<InstanceID>0</InstanceID>");
-                sb.AppendLine("</u:Pause>");
-                sb.AppendLine("</s:Body>");
-                sb.AppendLine("</s:Envelope>");
-
-                System.Net.WebClient webClient = new System.Net.WebClient();
-                webClient.Headers.Add("SOAPACTION", "\"urn:schemas-upnp-org:service:AVTransport:1#Pause\"");
-                webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-                try
-                {
-                    webClient.UploadData(new Uri("http://" + a31player.IPAddress + ":" + a31player.Port + "/upnp/control/rendertransport1"), "POST", Encoding.UTF8.GetBytes(sb.ToString()));
-                }
-                catch { }
-            });
-
-        }
-        /// <summary>
-        /// 涓嬩竴鏇�
-        /// </summary>
-        public static void Next(A31MusicModel a31player)
-        {
-            System.Threading.Tasks.Task.Run(() =>
-            {
-                StringBuilder sb = new StringBuilder();
-                sb.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-                sb.AppendLine("<s:Body>");
-                sb.AppendLine("<u:Next xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\">");
-                sb.AppendLine("<InstanceID>0</InstanceID>");
-                sb.AppendLine("</u:Next>");
-                sb.AppendLine("</s:Body>");
-                sb.AppendLine("</s:Envelope>");
-
-                System.Net.WebClient webClient = new System.Net.WebClient();
-                webClient.Headers.Add("SOAPACTION", "\"urn:schemas-upnp-org:service:AVTransport:1#Next\"");
-                webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-                try
-                {
-                    webClient.UploadData(new Uri("http://" + a31player.IPAddress + ":" + a31player.Port + "/upnp/control/rendertransport1"), "POST", Encoding.UTF8.GetBytes(sb.ToString()));
-                }
-                catch { }
-            });
-
-        }
-        /// <summary>
-        /// 涓婁竴鏇�
-        /// </summary>
-        public static void Previous(A31MusicModel a31player)
-        {
-            System.Threading.Tasks.Task.Run(() =>
-            {
-                StringBuilder sb = new StringBuilder();
-                sb.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-                sb.AppendLine("<s:Body>");
-                sb.AppendLine(" <u:Previous xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\">");
-                sb.AppendLine("<InstanceID>0</InstanceID>");
-                sb.AppendLine("</u:Previous>");
-                sb.AppendLine("</s:Body>");
-                sb.AppendLine("</s:Envelope>");
-
-                System.Net.WebClient webClient = new System.Net.WebClient();
-                webClient.Headers.Add("SOAPACTION", "\"urn:schemas-upnp-org:service:AVTransport:1#Previous\"");
-                webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-                try
-                {
-                    webClient.UploadData(new Uri("http://" + a31player.IPAddress + ":" + a31player.Port + "/upnp/control/rendertransport1"), "POST", Encoding.UTF8.GetBytes(sb.ToString()));
-                }
-                catch { }
-            });
-
-        }
-        /// <summary>
-        /// 蹇繘
-        /// </summary>
-        public static void Seek(string seekvolume, A31MusicModel a31player)
-        {
-            System.Threading.Tasks.Task.Run(() =>
-            {
-                StringBuilder sb = new StringBuilder();
-                sb.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-                sb.AppendLine("<s:Body>");
-                sb.AppendLine(" <u:Seek xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\">");
-                sb.AppendLine("<InstanceID>0</InstanceID>");
-                sb.AppendLine("<Unit>REL_TIME</Unit>");
-                sb.AppendLine("<Target>" + seekvolume + "</Target>");
-                sb.AppendLine("</u:Seek>");
-                sb.AppendLine("</s:Body>");
-                sb.AppendLine("</s:Envelope>");
-
-                System.Net.WebClient webClient = new System.Net.WebClient();
-                webClient.Headers.Add("SOAPACTION", "\"urn:schemas-upnp-org:service:AVTransport:1#Seek\"");
-                webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-                try
-                {
-                    webClient.UploadData(new Uri("http://" + a31player.IPAddress + ":" + a31player.Port + "/upnp/control/rendertransport1"), "POST", Encoding.UTF8.GetBytes(sb.ToString()));
-                }
-                catch { }
-            });
-        }
-        /// <summary>
-        /// 璋冭妭闊抽噺
-        /// </summary>
-        /// <param name="volume">Volume.</param>
-        public static void ControlVolume(int volume, A31MusicModel a31player)
-        {
-            System.Threading.Tasks.Task.Run(() => {
-                A31MusicModel.ProgressDateTime = DateTime.Now;
-                try
-                {
-                    if (a31player.ServerClientType == -1)
-                    {
-                        new System.Net.WebClient().DownloadData(new Uri("http://" + a31player.MainPlayIP + "/httpapi.asp?command=multiroom:SlaveVolume:" + a31player.IPAddress + ":" + volume));
-                    }
-                    else if (a31player.ServerClientType == 1)
-                    {
-                        new System.Net.WebClient().DownloadData(new Uri("http://" + a31player.IPAddress + "/httpapi.asp?command=setPlayerCmd:slave_vol:" + volume));
-                    }
-                    else
-                    {
-                        var sb = new StringBuilder();
-                        sb.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-                        sb.AppendLine("<s:Body>");
-                        sb.AppendLine("<u:SetVolume xmlns:u=\"urn:schemas-upnp-org:service:RenderingControl:1\">");
-                        sb.AppendLine("<InstanceID>0</InstanceID>");
-                        sb.AppendLine("<Channel>Master</Channel>");
-                        sb.AppendLine("<DesiredVolume>" + volume + "</DesiredVolume>");
-                        sb.AppendLine("</u:SetVolume>");
-                        sb.AppendLine("</s:Body>");
-                        sb.AppendLine("</s:Envelope>");
-
-                        var webClient = new System.Net.WebClient();
-                        webClient.Headers.Add("SOAPACTION", "\"urn:schemas-upnp-org:service:RenderingControl:1#SetVolume\"");
-                        webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-                        webClient.UploadData(new Uri("http://" + a31player.IPAddress + ":" + a31player.Port + "/upnp/control/rendercontrol1"), "POST", Encoding.UTF8.GetBytes(sb.ToString()));
-                    }
-                }
-                catch { }
-            });
-
-        }
-        /// <summary>
-        /// 鑾峰彇USb鐨勫垪琛�
-        /// </summary>
-        public static List<MusicInfo> GetUsbList(A31MusicModel a31player)
-        {
-            var musicInfoList = new List<MusicInfo>();
-            musicInfoList.Clear();
-            var usbString = GetUSBPlayList(a31player);
-            if (usbString == null)
-            {
-                return musicInfoList;
-            }
-            var se = System.Security.SecurityElement.FromString(usbString);
-            if (se == null)
-            {
-                return musicInfoList;
-            }
-            while (se.Children != null)
-            {
-                se = se.Children[0] as System.Security.SecurityElement;
-            }
-
-            foreach (SecurityElement track in SecurityElement.FromString(se.Text).SearchForChildByTag("Tracks").Children)
-            {
-                MusicInfo musicInfo = new MusicInfo();
-                musicInfo.URL = track.SearchForTextOfTag("URL").Replace("&", "&amp;amp;");
-                var metadata = track.SearchForTextOfTag("Metadata").Replace("&", "&amp;");
-                var item = SecurityElement.FromString(metadata).SearchForChildByTag("item");
-                musicInfo.Title = item.SearchForTextOfTag("dc:title").Replace("&", "&amp;amp;"); 
-                musicInfo.Artist = item.SearchForTextOfTag("upnp:artist").Replace("&", "&amp;amp;");
-                musicInfo.Album = item.SearchForTextOfTag("upnp:album").Replace("&", "&amp;amp;");
-                musicInfo.Duration = item.SearchForTextOfTag("res");
-                musicInfo.AlbumId = item.SearchForTextOfTag("song:albumid").Replace("&", "&amp;amp;");
-                musicInfoList.Add(musicInfo);
-            }
-            return musicInfoList;
-        }
-        /// <summary>
-        ///璇锋眰USB鍒楄〃鍛戒护
-        /// </summary>
-        public static string GetUSBPlayList(A31MusicModel a31player)
-        {
-
-            StringBuilder getPlayList = new StringBuilder();
-            getPlayList.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-            getPlayList.AppendLine("<s:Body>");
-            getPlayList.AppendLine("<u:BrowseQueue xmlns:u=\"urn:schemas-wiimu-com:service:PlayQueue:1\">");
-            getPlayList.AppendLine("<QueueName>USBDiskQueue</QueueName>");
-            getPlayList.AppendLine("</u:BrowseQueue>");
-            getPlayList.AppendLine("</s:Body>");
-            getPlayList.AppendLine("</s:Envelope>");
-
-            WebClient webClient = new WebClient();
-            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#BrowseQueue\"");
-            webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-
-            try
-            {
-                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + a31player.IPAddress + ":" + a31player.Port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes(getPlayList.ToString()));
-                return System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
-            }
-            catch { }
-
-            return null;
-        }
-
-        /// <summary>
-        /// 璇诲彇鐢靛彴缁勫垪琛�
-        /// </summary>
-        /// <returns>璇诲彇鍒扮殑鐢靛彴缁勫垪琛ㄤ俊鎭紝璇诲彇涓嶅埌鍙嶉涓簄ull</returns>
-        public static string ReadRadioList(string url)
-        {
-            WebClient webClient = new WebClient();
-            webClient.Proxy = null;
-            webClient.Headers.Add("Content-type", "plain/text; charset=UTF-8");
-            if (Language.CurrentLanguage == "Chinese")
-            {
-                webClient.Headers.Add("Accept-Language", "zh-cn");
-            }
-            else
-            {
-                webClient.Headers.Add("Accept-Language", "en-us");
-            }
-            try
-            {
-                byte[] recevieBytes = webClient.DownloadData(new Uri(url));
-                return System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
-
-            }
-            catch (Exception e)
-            {
-                return null;
-            }
-
-        }
-
-        /// <summary>
-        /// 鑾峰彇褰撳墠鎾斁鐨勫垪琛�
-        /// </summary>
-        public static  string GetCurrentPlayList(A31MusicModel a31player)
-        {
-            System.Text.StringBuilder getPlayList = new System.Text.StringBuilder();
-            getPlayList.AppendLine("<?xml version=\"1.0\"encoding=\"utf-8\"?>");
-            getPlayList.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-            getPlayList.AppendLine("<s:Body>");
-            getPlayList.AppendLine("<u:BrowseQueue xmlns:u=\"urn:schemas-wiimu-com:service:PlayQueue:1\">");
-            getPlayList.AppendLine("<QueueName>CurrentQueue</QueueName>");
-            getPlayList.AppendLine("</u:BrowseQueue>");
-            getPlayList.AppendLine("</s:Body>");
-            getPlayList.AppendLine("</s:Envelope>");
-
-            System.Net.WebClient webClient = new System.Net.WebClient();
-            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#BrowseQueue\"");
-            webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-            try
-            {
-                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + a31player.IPAddress + ":" + a31player.Port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes(getPlayList.ToString()));
-                return System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
-            }
-            catch { }
-            return null;
-        }
-        /// <summary>
-        /// 鎾斁USB闊充箰鍛戒护
-        /// </summary>
-        /// <param name="listName">鍒楄〃鍚嶇О</param>
-        /// <param name="number">鎾斁绱㈠紩</param>
-        public static void ListMusicPlay(string listName, object number, A31MusicModel a31player)
-        {
-            System.Text.StringBuilder playstrings = new System.Text.StringBuilder();
-            playstrings.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>");
-            playstrings.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-            playstrings.AppendLine("<s:Body>");
-            playstrings.AppendLine("<u:PlayQueueWithIndex xmlns:u=\"urn:schemas-wiimu-com:service:PlayQueue:1\">");
-            playstrings.AppendLine("<QueueName>" + listName + "</QueueName>");
-            playstrings.AppendLine("<Index>" + number + "</Index>");
-            playstrings.AppendLine("</u:PlayQueueWithIndex>");
-            playstrings.AppendLine("</s:Body>");
-            playstrings.AppendLine("</s:Envelope>");
-            System.Net.WebClient webClient = new System.Net.WebClient();
-            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#PlayQueueWithIndex\"");
-            webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-            try
-            {
-                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + a31player.IPAddress + ":" + a31player.Port + "/upnp/control/PlayQueue1"), "POST", Encoding.UTF8.GetBytes(playstrings.ToString()));
-                var s = System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
             }
             catch { }
         }
 
 
+        /// <summary>
+        /// 璁惧鍚嶇О淇敼
+        /// </summary>
+        public string EditDeviceName(string deviceId, string deviceName)
+        {
+            Dictionary<string, object> d = new Dictionary<string, object>();
+            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+            d.Add("deviceId", deviceId);
+            d.Add("name", deviceName);
+
+            var requestJson = HttpUtil.GetSignRequestJson(d);
+            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_EditDeviceName, requestJson).Code;
+        }
 
         /// <summary>
-        /// 鎺ㄩ�佹挱鏀惧懡浠�
+        /// 鑾峰彇闊充箰鍒楄〃
         /// </summary>
-        /// <param name="musicInfo">鎾斁闊充箰</param>
-        /// <param name="listName">鍒楄〃鍚嶇О</param>
-        /// <param name="musicList">鎺ㄩ�佸垪琛�(榛樿鎺�50棣�)</param>
-        public  static void PushList(MusicInfo musicInfo, string listName, List<MusicInfo> musicList, A31MusicModel a31player,string musicSource)
+        /// <param name="music"></param>
+        /// <returns></returns>
+        public void GetPalyList(Function music)
         {
-
-            //鏈�澶у彂閫佺殑鏉℃暟
-            int maxCount = 50;
-            //鎵惧嚭褰撳墠鐐瑰嚮闊充箰鐨勭储寮�
-            int statIndex = musicList.FindIndex((obj) => { return obj == musicInfo; });
-            //鐐瑰嚮鍚庨潰杩樻湁澶氬皯鏉¢煶涔�
-            int count = musicList.Count - statIndex;
-            int endIndex = 0;
-            if (maxCount < count)
-            {
-                //濡傛灉鍚庨潰鐨勯煶涔愬ぇ浜庢渶澶ф暟锛岃缃悗闈㈡暟鎹殑鏈�澶х储寮� 
-                endIndex = statIndex + maxCount - 1;
-            }
-            else
-            {
-                //濡傛灉鍚庨潰鏁版嵁涓嶅锛屽氨鐢ㄦ�绘暟鍑忓幓鏈�澶ф潯鏁帮紝寰楀埌寮�濮嬬储寮�
-                statIndex = musicList.Count - maxCount - 1;
-                endIndex = musicList.Count - 1;
-            }
-            //濡傛灉寮�濮嬬储寮曞皬浜�0锛岄偅灏辫缃负绗竴鏉¢煶涔�
-            if (statIndex < 0)
-            {
-                statIndex = 0;
-            }
-
-            StringBuilder sb = new StringBuilder();
-            sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
-            sb.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-            sb.AppendLine("<s:Body>");
-            sb.AppendLine("<u:CreateQueue xmlns:u=\"urn:schemas-wiimu-com:service:PlayQueue:1\">");
-            sb.AppendLine("<QueueContext>&lt;?xml version=\"1.0\"?&gt;");
-            sb.AppendLine("&lt;PlayList&gt;");
-            sb.AppendLine("&lt;ListName&gt;DLNA" + listName + "&lt;/ListName&gt;");
-            sb.AppendLine("&lt;ListInfo&gt;");
-            sb.AppendLine("&lt;Radio&gt;0&lt;/Radio&gt;");//
-            sb.AppendLine("&lt;SourceName&gt;UPnPServer&lt;/SourceName&gt;");//          
-            sb.AppendLine("&lt;MarkSearch&gt;0&lt;/MarkSearch&gt;");
-            sb.AppendLine("&lt;TrackNumber&gt;" + (endIndex - statIndex + 1) + "&lt;/TrackNumber&gt;");
-            sb.AppendLine("&lt;Quality&gt;0&lt;/Quality&gt;");
-            sb.AppendLine("&lt;UpdateTime&gt;5367&lt;/UpdateTime&gt;");
-            sb.AppendLine("&lt;LastPlayIndex&gt;2&lt;/LastPlayIndex&gt;");
-            sb.AppendLine("&lt;SwitchPageMode&gt;0&lt;/SwitchPageMode&gt;");
-            sb.AppendLine("&lt;CurrentPage&gt;0&lt;/CurrentPage&gt;");
-            sb.AppendLine("&lt;TotalPages&gt;0&lt;/TotalPages&gt;");
-            sb.AppendLine("&lt;/ListInfo&gt;");
-            sb.AppendLine("&lt;Tracks&gt;");
-
-            int number = 1;
-
-            for (int i = statIndex, Tracknumber = 1; i <= endIndex; i++, Tracknumber++)
-            {
-                var tempMusicInfo = musicList[i];
-
-                if (musicInfo == tempMusicInfo)
-                {
-                    number = Tracknumber;
-                }
-
-                if (tempMusicInfo.SourceType == "Local")
-                {
-                    tempMusicInfo.URL = "http://" + new Shared.Net.NetWiFi().IpAddress + ":" + com.hdl.on.Server.Port + "/" + tempMusicInfo.ID;
-                }
-
-                sb.AppendLine("&lt;Track" + Tracknumber + "&gt;");
-                sb.AppendLine("&lt;URL&gt;" + tempMusicInfo.URL + "&lt;/URL&gt;");
-                sb.AppendLine("&lt;Metadata&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;");
-                sb.AppendLine("&amp;lt;DIDL-Lite xmlns:dc=&amp;quot;http://purl.org/dc/elements/1.1/&amp;quot; xmlns:upnp=&amp;quot;urn:schemas-upnp-org:metadata-1-0/upnp/&amp;quot; xmlns:song=&amp;quot;www.wiimu.com/song/&amp;quot; xmlns=&amp;quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/&amp;quot;&amp;gt;");
-                sb.AppendLine("&amp;lt;upnp:class&amp;gt;object.item.audioItem.musicTrack&amp;lt;/upnp:class&amp;gt;");
-                sb.AppendLine("&amp;lt;item id=&amp;quot;0&amp;quot;&amp;gt;");
-                sb.AppendLine("&amp;lt;song:subid&amp;gt;&amp;lt;/song:subid&amp;gt;");
-                sb.AppendLine("&amp;lt;song:description&amp;gt;unknown&amp;lt;/song:description&amp;gt;");
-                sb.AppendLine("&amp;lt;song:skiplimit&amp;gt;6&amp;lt;/song:skiplimit&amp;gt;");
-                sb.AppendLine("&amp;lt;song:id&amp;gt;" + tempMusicInfo.ID + "&amp;lt;/song:id&amp;gt;");
-                sb.AppendLine("&amp;lt;song:like&amp;gt;0&amp;lt;/song:like&amp;gt;");
-                sb.AppendLine("&amp;lt;song:singerid&amp;gt;0&amp;lt;/song:singerid&amp;gt;");
-                sb.AppendLine("&amp;lt;song:albumid&amp;gt;" + tempMusicInfo.AlbumId + "&amp;lt;/song:albumid&amp;gt;");
-
-                sb.AppendLine("&amp;lt;res protocolInfo=&amp;quot;http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;&amp;quot; duration=&amp;quot;" + "0:0:0.0" + "&amp;quot;&amp;gt;" + tempMusicInfo.URL + "&amp;lt;/res&amp;gt;");
-
-                sb.AppendLine("&amp;lt;dc:title&amp;gt;" + tempMusicInfo.Title + "&amp;lt;/dc:title&amp;gt;");
-                sb.AppendLine("&amp;lt;dc:creator&amp;gt;DJ Sanny J&amp;lt;/dc:creator&amp;gt;");
-                if (musicSource== "鎴戠殑鍒楄〃") {
-                    sb.AppendLine("&amp;lt;upnp:artist&amp;gt;" + listName + "&amp;lt;/upnp:artist&amp;gt;");
-                }
-                else {
-                    sb.AppendLine("&amp;lt;upnp:artist&amp;gt;" + tempMusicInfo.Artist + "&amp;lt;/upnp:artist&amp;gt;");
-                }
-                sb.AppendLine("&amp;lt;upnp:album&amp;gt;" + tempMusicInfo.Album + "&amp;lt;/upnp:album&amp;gt;");
-                sb.AppendLine("&amp;lt;upnp:albumArtURI&amp;gt;unknown&amp;lt;/upnp:albumArtURI&amp;gt;");
-                sb.AppendLine("&amp;lt;/item&amp;gt;");
-                sb.AppendLine("&amp;lt;/DIDL-Lite&amp;gt;");
-                sb.AppendLine("&lt;/Metadata&gt;");
-                sb.AppendLine("&lt;Id&gt;" + tempMusicInfo.ID + "&lt;/Id&gt;");
-                sb.AppendLine("&lt;Source&gt;STATION-NETWORK&lt;/Source&gt;");//UPnPServer
-                sb.AppendLine("&lt;Key&gt;" + tempMusicInfo.URL + "&lt;/Key&gt;");
-                sb.AppendLine("&lt;/Track" + Tracknumber + "&gt;");
-            }
-            sb.AppendLine("&lt;/Tracks&gt;");
-            sb.AppendLine("&lt;/PlayList&gt;");
-            sb.AppendLine("</QueueContext>");
-            sb.AppendLine("</u:CreateQueue>");
-            sb.AppendLine("</s:Body>");
-            sb.AppendLine("</s:Envelope>");
-
-            SendMusicLists(a31player.IPAddress, a31player.Port, "CreateQueue", sb.ToString());
-
-            StringBuilder playString = new StringBuilder();
-            playString.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
-            playString.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-            playString.AppendLine("<s:Body>");
-            playString.AppendLine("<u:PlayQueueWithIndex xmlns:u=\"urn:schemas-wiimu-com:service:PlayQueue:1\">");
-            playString.AppendLine("<QueueName>DLNA" + listName + "</QueueName>");
-            playString.AppendLine("<Index>" + number + "</Index>");
-            playString.AppendLine("</u:PlayQueueWithIndex>");
-            playString.AppendLine("</s:Body>");
-            playString.AppendLine("</s:Envelope>");
-
-            Play(a31player.IPAddress, a31player.Port, playString.ToString());
-        }
-
-       static void SendMusicLists(string ip, int port, string soapAction, string listInfo)
-        {
-            System.Net.WebClient webClient = new System.Net.WebClient();
-            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#" + soapAction + "\"");
-            webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
             try
             {
-                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + ip + ":" + port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes(listInfo));
-                var s = System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
-            }
-            catch(Exception e)
-            {
-                var d = e.Message;
-            }
-        }
-
-       static void Play(string ip, int port, string info)
-        {
-            System.Net.WebClient webClient = new System.Net.WebClient();
-            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#PlayQueueWithIndex\"");
-            webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-            try
-            {
-                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + ip + ":" + port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes(info));
-                var s = System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
+                Dictionary<string, object> d = new Dictionary<string, object>();
+                d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+                d.Add("deviceIds", new List<string> { music.deviceId });
+                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_PlayerList);
+                if (responsePackNew.Code != "0"||responsePackNew.Data == null ||responsePackNew.Data.ToString() == "")
+                {
+                    return;
+                }
+                //鏁版嵁杩斿簭鍒楀寲涓篎unction瀵硅薄
+                var str = Newtonsoft.Json.JsonConvert.SerializeObject(responsePackNew.Data);
+                var palyLists = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PalyListInfo>>(str);
+                if (palyLists == null)
+                {
+                    palyLists =new List<PalyListInfo>();
+                }
+                if (palyLists.Count > 0)
+                {
+                    ///榛樿鎷跨涓�涓垪琛�
+                    A31MusicModel.Current.palyLists = palyLists[0].playlist;
+                }
             }
             catch
             {
-
             }
+
         }
-
-
-
-        static System.Threading.Thread thread;
+       
         /// <summary>
-        /// 淇敼钃濈墮鍚嶇О
+        ///璇锋眰鏈嶅姟鍣紙涓庝綇瀹呮湁鍏�:渚嬪锛沨omeId锛� 
         /// </summary>
-        /// <param name="message"></param>
-        public static void ModifyBluetoothName(string message)
+        /// <returns></returns>
+        public  ResponsePackNew RequestServerhomeId(object o, string api_Url, int mTimeout = 5)
         {
-            if (thread != null)
-            {
-                thread.Abort();
-            }
-            thread = new System.Threading.Thread(() =>
-            {
-                var tcpClient = new TcpClient() { ReceiveTimeout = 1000 };
-                try
-                {
-                    //杩涜杩炴帴
-                    tcpClient.Connect(new IPEndPoint(IPAddress.Parse(A31MusicModel.Current.IPAddress), 8899));
-                    var buffter = Encoding.UTF8.GetBytes(message);
-                    var sendByes = new byte[20 + buffter.Length];
-                    sendByes[0] = 0x18;
-                    sendByes[1] = 0x96;
-                    sendByes[2] = 0x18;
-                    sendByes[3] = 0x20;
+            var requestJson = HttpUtil.GetSignRequestJson(o);
+            return HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout);
 
-                    sendByes[4] = (byte)((buffter.Length & 0x000000FF) >> 0);
-                    sendByes[5] = (byte)((buffter.Length & 0x0000FF00) >> 8);
-                    sendByes[6] = (byte)((buffter.Length & 0x00FF0000) >> 16);
-                    sendByes[7] = (byte)((buffter.Length & 0xFF000000) >> 24);
-
-                    var checkSum = getCheckSum(buffter);
-                    sendByes[8] = (byte)((checkSum & 0x000000FF) >> 0);
-                    sendByes[9] = (byte)((checkSum & 0x0000FF00) >> 8);
-                    sendByes[10] = (byte)((checkSum & 0x00FF0000) >> 16);
-                    sendByes[11] = (byte)((checkSum & 0xFF000000) >> 24);
-
-                    sendByes[16] = 0x08;
-
-                    Array.Copy(buffter, 0, sendByes, 20, buffter.Length);
-                    tcpClient.GetStream().Write(sendByes, 0, sendByes.Length);
-                    tcpClient.GetStream().Flush();
-
-                    thread = null;
-                }
-                catch { }
-                finally
-                {
-                    tcpClient.Close();
-                }
-            });
-            thread.Start();
         }
-        static uint getCheckSum(byte[] buffer)
-        {
-            uint check_sum = 0;
-
-            for (int i = 0; i < buffer.Length; i++)
-            {
-                check_sum += buffer[i];
-            }
-
-            return check_sum;
-        }
-        public class A31QQSong
-        {
-            public string title = string.Empty;
-            public string album = string.Empty;
-            public string creator = string.Empty;
-        }
-
     }
 }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/UpdateThread.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/UpdateThread.cs
deleted file mode 100644
index 664c342..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/UpdateThread.cs
+++ /dev/null
@@ -1,202 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using Shared;
-using HDL_ON.UI.Music;
-namespace HDL_ON.UI.UI2.FuntionControlView.Music
-{
-    public class UpdateThread
-    {
-        public UpdateThread()
-        {
-        }
-        /// <summary>
-        /// 瀹氭椂鏇存柊褰撳墠鎾斁闊充箰
-        /// </summary>
-        /// <param name="frame">褰撳墠鐣岄潰</param>
-        /// <param name="middViewLayout">姣忎竴鏉¢煶涔愮殑涓绘帶浠�</param>
-        /// <param name="a31MusicModel">鐐瑰墠鎾斁鍣�</param>
-        public static void updateThread(FrameLayout frame, VerticalRefreshLayout middViewLayout, A31MusicModel a31MusicModel)
-        {
-            System.Threading.Thread updateSelectedMusicThread = new System.Threading.Thread(() =>
-            {
-                while (frame.Parent != null)
-                {
-                    //A31MusicModel.LogMusic("宸插惎鍔ㄦ洿鏂伴煶涔愬垪琛ㄦ煇涓�鏉¢煶涔愮姸鎬佺殑绾跨▼");
-                    System.Threading.Thread.Sleep(1000);
-                    Application.RunOnMainThread(() =>
-                    {
-                        try
-                        {
-                            for (int i = 0; i < middViewLayout.ChildrenCount; i++)
-                            {
-                                RowLayout view = (RowLayout)middViewLayout.GetChildren(i);
-                                var volIconBtn = (Button)view.GetChildren(0);//鐩存帴FrameLayout鐖舵帶浠舵壘鍒拌鎺т欢Button
-                                var songNameBtn = (Button)view.GetChildren(1);//鐩存帴FrameLayout鐖舵帶浠舵壘鍒拌鎺т欢Button
-                                var artistNameBtn = (Button)view.GetChildren(2);//鐩存帴FrameLayout鐖舵帶浠舵壘鍒拌鎺т欢Button
-                                if (a31MusicModel.A31PlayStatus.TrackURL == songNameBtn.Tag.ToString())
-                                {
-                                    volIconBtn.Visible = true;
-                                    songNameBtn.TextColor = UI.Music.MusicColor.SelectedColor;
-                                    songNameBtn.X = Application.GetRealWidth(48);
-                                    artistNameBtn.X = songNameBtn.Right;
-                                    artistNameBtn.TextColor = UI.Music.MusicColor.SelectedColor;
-                                }
-                                else
-                                {
-                                    volIconBtn.Visible = false;
-                                    songNameBtn.TextColor = UI.Music.MusicColor.MusicTxet14Color;
-                                    songNameBtn.X = Application.GetRealWidth(16);
-                                    artistNameBtn.X = songNameBtn.Right;
-                                    artistNameBtn.TextColor = UI.Music.MusicColor.MusicNoTxetColor;
-                                }
-
-
-                            }
-                        }
-                        catch { }
-
-                    });
-                }
-            });
-            updateSelectedMusicThread.Start();
-        }
-        /// <summary>
-        /// 鎾斁闊充箰
-        /// </summary>
-        /// <param name="middViewLayout">涓婁笅鎷夊姩鐖舵帶浠�</param>
-        /// <param name="musicSource">闊充箰婧�</param>
-        /// <param name="listName">鎾斁鍒楄〃鍚�</param>
-        /// <param name="musicList">鎾斁闊充箰鍒楄〃</param>
-        /// <param name="a31MusicModel">闊充箰鎾斁鍣�</param>
-        public static void playMusuc(VerticalRefreshLayout middViewLayout, string musicSource, string listName,List<MusicInfo> musicList, A31MusicModel a31MusicModel, FrameLayout frame=null)
-        {
-            for (int i = 0; i < musicList.Count; i++)
-            {
-                var songs = musicList[i];
-                if (songs == null)
-                {
-                    continue;
-                }
-                UI.Music.View.SongView songView = new UI.Music.View.SongView();
-                songView.SongFrameLayout(middViewLayout, songs);
-                switch (musicSource)
-                {
-                    case "鏈湴闊充箰":
-                        {
-                            songs.URL = "http://" + new Shared.Net.NetWiFi().IpAddress + ":" + com.hdl.on.Server.Port + "/" + songs.ID;
-                        }
-                        break;
-                    case "USB":
-                        {
-                            songView.clickBtn.Tag = i + 1;
-                        }
-                        break;
-                    case "鎴戠殑鍒楄〃":
-                        {
-                            ///鍒犻櫎鎺т欢
-                            var delBtn = new Button
-                            {
-                                BackgroundColor = MusicColor.MusicDelColor,
-                                Text = Language.StringByID(StringId.delMusic),
-                                TextColor = MusicColor.WhiteColor,
-                                TextSize = TextSize.Text16,
-                            };
-                            songView.musicViewFl.AddRightView(delBtn);
-                            delBtn.MouseUpEventHandler += (sender, e) =>
-                            {
-                                musicList.Remove(songs);
-                                A31MusicModel.Save();
-                                songView.musicViewFl.RemoveFromParent();
-                            };
-                        }
-                        break;
-                    case "鎾斁鍒楄〃":
-                        {
-                            songView.loveIcon.Visible = false;
-                            songView.addIcon.Visible = false;
-                            var wText = songView.songBtn.GetTextWidth() + Application.GetRealWidth(15);
-                            if (wText > Application.GetRealWidth(280))
-                            {
-                                wText = Application.GetRealWidth(280);//(姝屾洸+姝屾墜)瀹藉害鏈�澶у�兼椂220
-                            }
-                            songView.songBtn.Width = wText;
-                            songView.singerBtn.X = songView.songBtn.Right;
-                            songView.singerBtn.Width = Application.GetRealWidth(280) - wText;//姝屽悕闀垮害灏忎簬220鎵嶅彲浠ユ樉绀烘瓕鎵嬪嚭鏉�
-                            songView.singerBtn.Text = string.IsNullOrEmpty(songs.Artist) ? "-Unkonw" : "-" + songs.Artist.Trim();
-                            songView.clickBtn.Width = Application.GetRealWidth(344);
-                            songView.clickBtn.Tag = i + 1;//鏍囪鎾斁鍝竴棣栨瓕鏇�
-                        }
-                        break;
-                }
-
-                //娣诲姞鍠滅埍闊充箰鎺т欢
-                songView.loveIcon.MouseUpEventHandler += (sender, e) =>
-                {
-                    songView.loveIcon.IsSelected = !songView.loveIcon.IsSelected;
-                    if (songView.loveIcon.IsSelected)
-                    {
-                        ///鏌ユ壘闊充箰鏄惁瀛樺湪鍦ㄥ垪琛�
-                        var music1 = A31MusicModel.Current.LoveMusicInfoList.Find((m) => m.URL == songs.URL);
-                        if (music1 == null)
-                        {
-                            ///娌℃湁瀛樺湪灏辨坊鍔�
-                            A31MusicModel.Current.LoveMusicInfoList.Add(songs);
-                        }
-                    }
-                    else
-                    {
-                        ///鏌ユ壘闊充箰鏄惁瀛樺湪鍦ㄥ垪琛�
-                        var music1 = A31MusicModel.Current.LoveMusicInfoList.Find((m) => m.URL == songs.URL);
-                        if (music1 != null)
-                        {
-                            ///瀛樺湪灏卞垹闄�
-                            A31MusicModel.Current.LoveMusicInfoList.Remove(songs);
-                        }
-
-                        if (musicSource == "鎴戠殑鏈�鐖�")
-                        {
-                            songView.musicViewFl.RemoveFromParent();
-                        }
-
-                    }
-                    A31MusicModel.Save();
-                };
-                //娣诲姞鍒版垜鐨勫垪琛�
-                songView.addIcon.MouseUpEventHandler = (sender, e) =>
-                {
-                    new HDL_ON.UI.Music.View.DialogView { }.FieListView(songs);
-                };
-                ///鐐瑰嚮鎾斁浜嬩欢
-                songView.clickBtn.MouseUpEventHandler += (sender, e) =>
-                {
-                    System.Threading.Tasks.Task.Run(() =>
-                    {
-                        System.Threading.Thread.Sleep(50);
-                        Application.RunOnMainThread(() =>
-                        {
-                            //绉婚櫎鐣岄潰
-                            A31MusicModel.Current.A31PlayStatus.Title = songView.songBtn.Text;
-                            if (frame != null)
-                            {
-                                frame.RemoveFromParent();
-                            }
-                            MainPage.BasePageView.RemoveViewByTag("Music");
-                            System.Threading.Tasks.Task.Run(() =>
-                            {
-                                if (musicSource == "鏈湴闊充箰"|| musicSource == "鎴戠殑鏈�鐖�"|| musicSource == "鎴戠殑鍒楄〃")
-                                {
-                                    SendMethod.PushList(songs, listName, musicList, a31MusicModel,musicSource);
-                                }
-                                else if (musicSource == "USB"|| musicSource == "鎾斁鍒楄〃")
-                                {
-                                    SendMethod.ListMusicPlay(listName, songView.clickBtn.Tag, A31MusicModel.Current);
-                                }
-                            });
-                        });
-                    });
-                };
-
-            }
-        }
-    }
-}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/View/DialogView.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/View/DialogView.cs
index 1c15666..0da47b3 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/View/DialogView.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/View/DialogView.cs
@@ -9,7 +9,7 @@
         ///寮圭獥鏂囦欢澶瑰垪琛ㄧ晫闈�
         /// </summary>
         /// <param name="musicInfo"></param>
-        public void FieListView(MusicInfo musicInfo)
+        public void FieListView(Songs musicInfo)
         {
             #region
             //涓绘帶浠�
@@ -114,7 +114,7 @@
             FileView(dialog, verticalScrolViewLayout, musicInfo);
 
         }
-        void FileView(Dialog dialog, VerticalScrolViewLayout verticalScrolViewLayout, MusicInfo musicInfo)
+        void FileView(Dialog dialog, VerticalScrolViewLayout verticalScrolViewLayout, Songs musicInfo)
         {
             verticalScrolViewLayout.RemoveAll();
             for (int i = 0; i < A31MusicModel.Current.FileLists.Count; i++)
@@ -207,7 +207,7 @@
                 EventHandler<MouseEventArgs> click = (sender, e) =>
                 {
 
-                    if (null == list.MusicInfoList.Find((music) => music.URL == musicInfo.URL))
+                    if (null == list.MusicInfoList.Find((music) => music.name == musicInfo.name))
                     {
                         list.MusicInfoList.Add(musicInfo);
                         A31MusicModel.Save();
@@ -222,1241 +222,6 @@
             }
 
 
-        }
-        /// <summary>
-        /// 閫変腑缁勫悎鐨勬挱鏀惧櫒鐨勭晫闈�
-        /// </summary>
-        public void PlayMergence(A31MusicModel a31MusicModel)
-        {
-
-            #region
-
-            //涓绘帶浠�
-            Dialog dialog = new Dialog()
-            {
-                BackgroundColor = MusicColor.PopupBackgroundColor,
-            };
-            dialog.Show();
-            //鐖舵帶浠�
-            FrameLayout frame = new FrameLayout { };
-            dialog.AddChidren(frame);
-            frame.MouseUpEventHandler += (sen, e) =>
-            {
-                dialog.Close();
-            };
-            //鐧借壊蹇埗鎺т欢
-            FrameLayout dialogFra = new FrameLayout()
-            {
-                X = Application.GetRealWidth(16),
-                Y = Application.GetRealHeight(397),
-                Width = Application.GetRealWidth(344),
-                Height = Application.GetRealHeight(250),
-                BackgroundColor = MusicColor.WhiteColor,
-                Radius = (uint)Application.GetRealHeight(12),
-            };
-            frame.AddChidren(dialogFra);
-            //鏄剧ず澶撮儴淇℃伅鐖舵帶浠�
-            FrameLayout topFra = new FrameLayout()
-            {
-                Width = Application.GetRealWidth(344),
-                Height = Application.GetRealHeight(50),
-            };
-            dialogFra.AddChidren(topFra);
-            //鍙栨秷鎺т欢
-            Button cancelnBtn = new Button
-            {
-                X = Application.GetRealWidth(20),
-                Y = Application.GetRealHeight(15),
-                Width = Application.GetRealWidth(60),
-                Height = Application.GetRealHeight(20),
-                TextID = StringId.cancelMusic,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = MusicColor.MusicNoTxetColor,
-                TextSize = TextSize.Text14,
-            };
-            topFra.AddChidren(cancelnBtn);
-            cancelnBtn.MouseUpEventHandler += (sen, e) =>
-            {
-                dialog.Close();
-            };
-            //鏍囬鎺т欢
-            Button txetBtn = new Button
-            {
-                X = cancelnBtn.Right + Application.GetRealWidth(20),
-                Y = Application.GetRealHeight(14),
-                Width = Application.GetRealWidth(152),
-                Height = Application.GetRealHeight(22),
-                TextColor = MusicColor.TextColor,
-                TextSize = TextSize.Text16,
-                TextAlignment = TextAlignment.Center,
-                TextID = StringId.selectedMergence,
-                IsBold = true,
-            };
-            topFra.AddChidren(txetBtn);
-
-            //纭鎺т欢
-            Button confirmBtn = new Button
-            {
-                X = Application.GetRealWidth(344 - 60 - 20),
-                Y = Application.GetRealHeight(15),
-                Width = Application.GetRealWidth(60),
-                Height = Application.GetRealHeight(20),
-                TextID = StringId.confirmMusic,
-                TextAlignment = TextAlignment.CenterRight,
-                TextColor = MusicColor.SelectedColor,
-                TextSize = TextSize.Text14,
-            };
-            topFra.AddChidren(confirmBtn);
-
-            VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
-            {
-                Y = Application.GetRealHeight(50),
-                Height = dialogFra.Height - Application.GetRealHeight(50),
-                Width = Application.GetRealWidth(344),
-            };
-            dialogFra.AddChidren(verticalScrolViewLayout);
-            var playList1 = new List<A31MusicModel>();
-            for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
-            {
-                var player = A31MusicModel.A31MusicModelList[i];
-                if (!player.IsOnLine)
-                {
-                    //涓嶅湪绾夸笉鏄剧ず;
-                    continue;
-                }
-                RowLayout PlayRow = new RowLayout
-                {
-                    Height = Application.GetRealHeight(50),
-                    LineColor = MusicColor.WhiteColor,
-                    SubViewWidth = Application.GetRealWidth(80),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
-                };
-                verticalScrolViewLayout.AddChidren(PlayRow);
-
-
-                //鎾斁鍣ㄥ悕绉版帶浠�
-                Button PlayNameBtn = new Button
-                {
-                    X = Application.GetRealWidth(20),
-                    Y = Application.GetRealHeight(15),
-                    Width = Application.GetRealWidth(150),
-                    Height = Application.GetRealHeight(20),
-                    TextColor = MusicColor.TextColor,
-                    TextSize = TextSize.Text14,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    Text = NamePlayer(player),
-                };
-                PlayRow.AddChidren(PlayNameBtn);
-
-                //閫変腑鍥炬爣鎺т欢
-                Button selectedIconBtn = new Button
-                {
-                    X = Application.GetRealWidth(303),
-                    Y = Application.GetRealHeight(11),
-                    Width = Application.GetRealWidth(28),
-                    Height = Application.GetRealWidth(28),
-                    UnSelectedImagePath = "MusicIcon/noSelectedIcon.png",
-                    SelectedImagePath = "MusicIcon/selectedIcon.png",
-                };
-                PlayRow.AddChidren(selectedIconBtn);
-               
-
-                ///鍔犲ぇ鍑犵偣鑼冨洿
-                Button clickBtn = new Button
-                {
-                    Height = Application.GetRealHeight(50),
-                };
-                PlayRow.AddChidren(clickBtn);
-                if (a31MusicModel.UniqueDeviceName == player.UniqueDeviceName)
-                {
-                    clickBtn.IsSelected = selectedIconBtn.IsSelected = true;
-                    playList1.Add(a31MusicModel);
-                }
-                clickBtn.MouseUpEventHandler += (sender, e) =>
-                {
-                    clickBtn.IsSelected = !clickBtn.IsSelected;
-                    selectedIconBtn.IsSelected = clickBtn.IsSelected;
-                    var musicPlayer = playList1.Find((c) => c.UniqueDeviceName == player.UniqueDeviceName);
-                    if (selectedIconBtn.IsSelected)
-                    {
-                        if (musicPlayer == null)
-                        {
-                            playList1.Add(player);
-                        }
-                    }
-                    else
-                    {
-                        if (musicPlayer != null)
-                        {
-                            playList1.Remove(player);
-                        }
-                    }
-                };
-                //绾�
-                Button lineBtn = new Button
-                {
-                    Y = PlayRow.Height - 1,
-                    X = Application.GetRealWidth(20),
-                    Width = Application.GetRealWidth(304),
-                    Height = 1,
-                    BackgroundColor = MusicColor.LineColor,
-                };
-                PlayRow.AddChidren(lineBtn);
-            }
-            #endregion
-            confirmBtn.MouseUpEventHandler += (sender, e) =>
-            {
-
-                if (playList1.Count <= 1)
-                {
-                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.selectAtLeastTwoPlayers), false);
-                    return;
-                }
-                int number = 0;
-                foreach (var musin in playList1)
-                {
-                    if (musin.ServerClientType == 1)
-                    {
-                        number++;
-                    }
-                }
-                if (number >= 2)
-                {
-                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.cannotSelectTwoOrMoreMainPlayersToCombine), false);
-                    //濡傛灉閮芥槸涓绘挱鏀炬垜灏变笉鑳界粍鍚�;
-                    return;
-                }
-                ///鏌ヨ鏄惁宸茬粡瀛樺湪涓绘挱鏀�;
-                var host_Music_If = playList1.Find((c) => c.ServerClientType == 1);
-                if (host_Music_If == null)
-                {
-                    var playList2 = new List<A31MusicModel>();
-                    for (int i = 0; i < playList1.Count; i++)
-                    {
-                        var musics = playList1[i];
-                        if (musics.A31PlayStatus.status == "play")
-                        {
-                            playList2.Add(musics);
-                        }
-                    }
-
-                    if (playList2.Count == 0)
-                    {
-                        SelectedPlayerView(dialog, playList1, playList1);
-                    }
-                    else if (playList2.Count == 1)
-                    {
-                        //鍙湁涓�涓挱鏀惧櫒鍦ㄦ挱鏀�,榛樿涓轰富鎾彂鍣�;
-                        dialog.Close();
-                        var player = playList2[0];
-                        MergeThreading(player, playList1);
-                    }
-                    else
-                    {
-                        SelectedPlayerView(dialog, playList1, playList2);
-                    }
-                }
-                else
-                {
-                    dialog.Close();
-                    MergeThreading(host_Music_If, playList1);
-                }
-            };
-        }
-        /// <summary>
-        /// 閫変腑鏌愪釜闊充箰涓轰富鎾斁鍣ㄧ殑鐣岄潰
-        /// </summary>
-        /// <param name="musicList1">鏄剧ず灏嗚缁勫悎鐨勬挱鏀惧櫒鍒楄〃</param>
-        ///  /// <param name="musicList2">鏄剧ず鍦ㄦ挱鏀鹃煶涔愭挱鏀惧櫒鍒楄〃</param>
-        void SelectedPlayerView(Dialog dialogF, List<A31MusicModel> musicList1, List<A31MusicModel> musicList2)
-        {
-            #region
-            //涓绘帶浠�
-            Dialog dialog = new Dialog()
-            {
-                //BackgroundColor = Color.PopupBackgroundColor,
-            };
-            dialog.Show();
-            //鐖舵帶浠�
-            FrameLayout frame = new FrameLayout { };
-            dialog.AddChidren(frame);
-            frame.MouseUpEventHandler += (sen, e) =>
-            {
-                dialog.Close();
-            };
-            //鐧借壊蹇埗鎺т欢
-            FrameLayout dialogFra = new FrameLayout()
-            {
-                X = Application.GetRealWidth(16),
-                Y = Application.GetRealHeight(397),
-                Width = Application.GetRealWidth(344),
-                Height = Application.GetRealHeight(250),
-                BackgroundColor = MusicColor.WhiteColor,
-                Radius = (uint)Application.GetRealHeight(12),
-            };
-            frame.AddChidren(dialogFra);
-            //鏄剧ず澶撮儴淇℃伅鐖舵帶浠�
-            FrameLayout topFra = new FrameLayout()
-            {
-                Width = Application.GetRealWidth(344),
-                Height = Application.GetRealHeight(50),
-            };
-            dialogFra.AddChidren(topFra);
-            //鍙栨秷鎺т欢
-            Button cancelnBtn = new Button
-            {
-                X = Application.GetRealWidth(20),
-                Y = Application.GetRealHeight(15),
-                Width = Application.GetRealWidth(60),
-                Height = Application.GetRealHeight(20),
-                TextID = StringId.cancelMusic,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = MusicColor.MusicNoTxetColor,
-                TextSize = TextSize.Text14,
-            };
-            topFra.AddChidren(cancelnBtn);
-            cancelnBtn.MouseUpEventHandler += (sen, e) =>
-            {
-                dialog.Close();
-            };
-            //鏍囬鎺т欢
-            Button txetBtn = new Button
-            {
-                X = cancelnBtn.Right + Application.GetRealWidth(20),
-                Y = Application.GetRealHeight(14),
-                Width = Application.GetRealWidth(152),
-                Height = Application.GetRealHeight(22),
-                TextColor = MusicColor.TextColor,
-                TextSize = TextSize.Text16,
-                TextAlignment = TextAlignment.Center,
-                TextID = StringId.readyPlay,
-                IsBold = true,
-            };
-            topFra.AddChidren(txetBtn);
-            //纭鎺т欢
-            Button confirmBtn = new Button
-            {
-                X = Application.GetRealWidth(344 - 60 - 20),
-                Y = Application.GetRealHeight(15),
-                Width = Application.GetRealWidth(60),
-                Height = Application.GetRealHeight(20),
-                TextID = StringId.confirmMusic,
-                TextAlignment = TextAlignment.CenterRight,
-                TextColor = MusicColor.SelectedColor,
-                TextSize = TextSize.Text14,
-            };
-            topFra.AddChidren(confirmBtn);
-
-            VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
-            {
-                Y = Application.GetRealHeight(50),
-                Height = dialogFra.Height - Application.GetRealHeight(50),
-                Width = Application.GetRealWidth(344),
-            };
-            dialogFra.AddChidren(verticalScrolViewLayout);
-            //璁板綍閫変腑鐘舵��
-            Button selectedBtn = new Button() { Name = "No" };
-            for (int i = 0; i < musicList2.Count; i++)
-            {
-                var player = musicList2[i];
-                RowLayout addFlieRow = new RowLayout
-                {
-                    Height = Application.GetRealHeight(50),
-                    LineColor = MusicColor.WhiteColor,
-                };
-                verticalScrolViewLayout.AddChidren(addFlieRow);
-
-                if (player.A31PlayStatus.status == "play")
-                {
-                    Button songNameBtn = new Button
-                    {
-                        X = Application.GetRealWidth(20),
-                        Y = Application.GetRealHeight(15),
-                        Width = Application.GetRealWidth(150),
-                        Height = Application.GetRealHeight(20),
-                        TextColor = MusicColor.TextColor,
-                        TextSize = TextSize.Text14,
-                        TextAlignment = TextAlignment.CenterLeft,
-                        Text = player.A31PlayStatus.Title,
-                    };
-                    addFlieRow.AddChidren(songNameBtn);
-
-                    var wText = songNameBtn.GetTextWidth();//鑾峰彇鏂囨湰瀹藉害
-                    if (wText >Application.GetRealWidth(220))
-                    {
-                        songNameBtn.Width = Application.GetRealWidth(220);
-                    }
-                    else
-                    {
-                        songNameBtn.Width = wText + Application.GetRealWidth(15);
-                    }
-                    //姝屾墜鎺т欢
-                    Button singerBtn = new Button
-                    {
-                        X = songNameBtn.Right,
-                        Y = Application.GetRealHeight(15),
-                        Width = Application.GetRealWidth(220)- wText,
-                        Height = Application.GetRealHeight(20),
-                        TextColor = MusicColor.MusicNoTxetColor,
-                        TextSize = TextSize.Text12,
-                        TextAlignment = TextAlignment.CenterLeft,
-                        Text = "-" + player.A31PlayStatus.Artist.Trim(),
-                    };
-                    addFlieRow.AddChidren(singerBtn);
-                }
-                else
-                {
-                    //鎾斁鍣ㄥ悕绉版帶浠�
-                    Button PlayNameBtn = new Button
-                    {
-                        X = Application.GetRealWidth(20),
-                        Y = Application.GetRealHeight(15),
-                        Width = Application.GetRealWidth(150),
-                        Height = Application.GetRealHeight(20),
-                        TextColor = MusicColor.TextColor,
-                        TextSize = TextSize.Text14,
-                        TextAlignment = TextAlignment.CenterLeft,
-                        Text = NamePlayer(player),
-                    };
-                    addFlieRow.AddChidren(PlayNameBtn);
-
-                }
-
-                //閫変腑鍥炬爣鎺т欢
-                Button selectedIconBtn = new Button
-                {
-                    X = Application.GetRealWidth(303),
-                    Y = Application.GetRealHeight(11),
-                    Width = Application.GetRealWidth(28),
-                    Height = Application.GetRealWidth(28),
-                    UnSelectedImagePath = "MusicIcon/noSelectedIcon.png",
-                    SelectedImagePath = "MusicIcon/selectedIcon.png",
-                    Tag = player,
-                };
-                addFlieRow.AddChidren(selectedIconBtn);
-                ///鍔犲ぇ鍑犵偣鑼冨洿
-                Button clickBtn = new Button
-                {
-                    Height = Application.GetRealHeight(50),
-                };
-                addFlieRow.AddChidren(clickBtn);
-                clickBtn.MouseUpEventHandler += (sender, e) =>
-                {
-                    selectedBtn.IsSelected = false;
-                    selectedBtn = selectedIconBtn;
-                    selectedBtn.Name = "Yes";
-                    selectedBtn.IsSelected = true;
-                };
-                //绾�
-                Button lineBtn = new Button
-                {
-                    Y = addFlieRow.Height - 1,
-                    X = Application.GetRealWidth(20),
-                    Width = Application.GetRealWidth(304),
-                    Height = 1,
-                    BackgroundColor = MusicColor.LineColor,
-                };
-                addFlieRow.AddChidren(lineBtn);
-            }
-            #endregion
-            confirmBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                if (selectedBtn.Name.ToString() == "No")
-                {
-                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.noSelectedPlay), false);
-                    return;
-                }
-                dialogF.Close();
-                dialog.Close();
-
-                var serverMusic = selectedBtn.Tag as A31MusicModel;
-                MergeThreading(serverMusic, musicList1);
-            };
-
-        }
-        /// <summary>
-        /// 閫変腑瑙i櫎缁勫悎鐨勬挱鏀惧櫒鐨勭晫闈�
-        /// </summary>
-        public void DetachPlayMergence(A31MusicModel a31player)
-        {
-
-            #region
-            //涓绘帶浠�
-            Dialog dialog = new Dialog()
-            {
-                BackgroundColor = MusicColor.PopupBackgroundColor,
-            };
-            dialog.Show();
-            //鐖舵帶浠�
-            FrameLayout frame = new FrameLayout { };
-            dialog.AddChidren(frame);
-            frame.MouseUpEventHandler += (sen, e) =>
-            {
-                dialog.Close();
-            };
-            //鐧借壊蹇埗鎺т欢
-            FrameLayout dialogFra = new FrameLayout()
-            {
-                X = Application.GetRealWidth(16),
-                Y = Application.GetRealHeight(397),
-                Width = Application.GetRealWidth(344),
-                Height = Application.GetRealHeight(250),
-                BackgroundColor = MusicColor.WhiteColor,
-                Radius = (uint)Application.GetRealHeight(12),
-            };
-            frame.AddChidren(dialogFra);
-            //鏄剧ず澶撮儴淇℃伅鐖舵帶浠�
-            FrameLayout topFra = new FrameLayout()
-            {
-                Width = Application.GetRealWidth(344),
-                Height = Application.GetRealHeight(50),
-            };
-            dialogFra.AddChidren(topFra);
-            //鍙栨秷鎺т欢
-            Button cancelnBtn = new Button
-            {
-                X = Application.GetRealWidth(20),
-                Y = Application.GetRealHeight(15),
-                Width = Application.GetRealWidth(60),
-                Height = Application.GetRealHeight(20),
-                TextID = StringId.cancelMusic,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = MusicColor.MusicNoTxetColor,
-                TextSize = TextSize.Text14,
-            };
-            topFra.AddChidren(cancelnBtn);
-            cancelnBtn.MouseUpEventHandler += (sen, e) =>
-            {
-                dialog.Close();
-            };
-            //鏍囬鎺т欢
-            Button txetBtn = new Button
-            {
-                X = cancelnBtn.Right + Application.GetRealWidth(20),
-                Y = Application.GetRealHeight(14),
-                Width = Application.GetRealWidth(152),
-                Height = Application.GetRealHeight(22),
-                TextColor = MusicColor.TextColor,
-                TextSize = TextSize.Text16,
-                TextAlignment = TextAlignment.Center,
-                TextID = StringId.checkTheReleasePlayer,
-                //Text = "閫変腑瑙i櫎鎾斁鍣�",
-                IsBold = true,
-            };
-            topFra.AddChidren(txetBtn);
-
-            //纭鎺т欢
-            Button confirmBtn = new Button
-            {
-                X = Application.GetRealWidth(344 - 60 - 20),
-                Y = Application.GetRealHeight(15),
-                Width = Application.GetRealWidth(60),
-                Height = Application.GetRealHeight(20),
-                TextID = StringId.confirmMusic,
-                TextAlignment = TextAlignment.CenterRight,
-                TextColor = MusicColor.SelectedColor,
-                TextSize = TextSize.Text14,
-            };
-            topFra.AddChidren(confirmBtn);
-
-            VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
-            {
-                Y = Application.GetRealHeight(50),
-                Height = dialogFra.Height - Application.GetRealHeight(50),
-                Width = Application.GetRealWidth(344),
-            };
-            dialogFra.AddChidren(verticalScrolViewLayout);
-
-            var playList1 = new List<A31MusicModel>();
-            playList1.Add(a31player);
-            for (int i = 0; i < a31player.Slave.slave_list.Count; i++)
-            {
-                var slave = a31player.Slave.slave_list[i];
-                var music_If = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == slave.uuid.Replace("uuid:", ""));
-                if (music_If != null)
-                {
-                    playList1.Add(music_If);
-                }
-            }
-
-
-            var playList2 = new List<A31MusicModel>();
-            for (int i = 0; i < playList1.Count; i++)
-            {
-                var player = playList1[i];
-                RowLayout PlayRow = new RowLayout
-                {
-                    Height = Application.GetRealHeight(50),
-                    LineColor = MusicColor.WhiteColor,
-                    SubViewWidth = Application.GetRealWidth(80),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
-                };
-                verticalScrolViewLayout.AddChidren(PlayRow);
-
-
-                //鎾斁鍣ㄥ悕绉版帶浠�
-                Button PlayNameBtn = new Button
-                {
-                    X = Application.GetRealWidth(20),
-                    Y = Application.GetRealHeight(15),
-                    Width = Application.GetRealWidth(150),
-                    Height = Application.GetRealHeight(20),
-                    TextColor = MusicColor.TextColor,
-                    TextSize = TextSize.Text14,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    Text = NamePlayer(player),
-                };
-                PlayRow.AddChidren(PlayNameBtn);
-
-
-                //閫変腑鍥炬爣鎺т欢
-                Button selectedIconBtn = new Button
-                {
-                    X = Application.GetRealWidth(303),
-                    Y = Application.GetRealHeight(11),
-                    Width = Application.GetRealWidth(28),
-                    Height = Application.GetRealWidth(28),
-                    UnSelectedImagePath = "MusicIcon/noSelectedIcon.png",
-                    SelectedImagePath = "MusicIcon/selectedIcon.png",
-                };
-                PlayRow.AddChidren(selectedIconBtn);
-
-                ///鍔犲ぇ鍑犵偣鑼冨洿
-                Button clickBtn = new Button
-                {
-                    Height = Application.GetRealHeight(50),
-                    Tag = player.UniqueDeviceName,
-                };
-                PlayRow.AddChidren(clickBtn);
-
-                clickBtn.MouseUpEventHandler += (sender, e) =>
-                {
-                    clickBtn.IsSelected = !clickBtn.IsSelected;
-                    selectedIconBtn.IsSelected = clickBtn.IsSelected;
-                    var uuid = playList2.Find((obj) => obj.UniqueDeviceName == clickBtn.Tag.ToString());
-                    if (selectedIconBtn.IsSelected)
-                    {
-                        if (uuid == null)
-                        {
-                            playList2.Add(player);
-                        }
-                    }
-                    else
-                    {
-                        if (uuid != null)
-                        {
-                            playList2.Remove(player);
-                        }
-                    }
-                };
-                //绾�
-                Button lineBtn = new Button
-                {
-                    Y = PlayRow.Height - 1,
-                    X = Application.GetRealWidth(20),
-                    Width = Application.GetRealWidth(304),
-                    Height = 1,
-                    BackgroundColor = MusicColor.LineColor,
-                };
-                PlayRow.AddChidren(lineBtn);
-            }
-            #endregion
-            confirmBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                if (playList1.Count == 0)
-                {
-                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.noCheckTheReleasePlayer), false);
-                    return;
-                }
-                dialog.Close();
-                RemoveThreading(a31player, playList2);
-            };
-        }
-        /// <summary>
-        /// 鍙戦�佺粍鍚堝懡浠ら�昏緫澶勭悊鐨勬柟娉�
-        /// </summary>
-        /// <param name="serverMusic">涓绘挱鏀惧櫒</param>
-        /// <param name="musicList1"></param>
-        void MergeThreading(A31MusicModel serverMusic, List<A31MusicModel> musicList1)
-        {
-            A31MusicModel mainModel = null;
-            bool mainModelCollection = false;   
-            MusicMain.loading.Start(Language.StringByID(StringId.inConfiguration));
-            bool _if = false;
-            System.Threading.Tasks.Task.Run(() =>
-            {
-                try
-                {
-                    var statusEx = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=getStatusEx");
-                    if (statusEx == null)
-                    {
-                        statusEx = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=getStatusEx");
-                    }
-                    if (statusEx == null)
-                    {
-                        return;
-                    }
-                    var serverIfon = Newtonsoft.Json.JsonConvert.DeserializeObject<A31Wifi>(statusEx);
-                    if (serverIfon == null)
-                    {
-                        return;
-                    }
-                    string ssid = "";
-                    foreach (var b in serverIfon.ssid)
-                    {
-                        ssid += System.Convert.ToString(b, 16).ToUpper().Length < 2 ? "0" + System.Convert.ToString(b, 16).ToUpper() : System.Convert.ToString(b, 16).ToUpper();
-                    }
-                    System.Threading.Thread.Sleep(1000);
-                    for (int i = 0; i < musicList1.Count; i++)
-                    {
-                        var clientMusic = musicList1[i];
-                        if (clientMusic.UniqueDeviceName == serverMusic.UniqueDeviceName)
-                        {
-                            //杩囨护鎺変富鎾斁鍣�;
-                            continue;
-                        }
-                        var dd = SendMethod.OpenWeb("http://" + clientMusic.IPAddress + "/httpapi.asp?command=ConnectMasterAp:ssid=" + ssid + ":ch=" + serverIfon.WifiChannel + ":auth=OPEN:encry=NONE:pwd=:chext=0:JoinGroupMaster:eth" + serverIfon.eth2 + ":wifi" + serverIfon.ra0 + ":uuid" + serverIfon.uuid);
-                        if (null == SendMethod.OpenWeb("http://" + clientMusic.IPAddress + "/httpapi.asp?command=ConnectMasterAp:ssid=" + ssid + ":ch=" + serverIfon.WifiChannel + ":auth=OPEN:encry=NONE:pwd=:chext=0:JoinGroupMaster:eth" + serverIfon.eth2 + ":wifi" + serverIfon.ra0 + ":uuid" + serverIfon.uuid))
-                        {
-                            if (null == SendMethod.OpenWeb("http://" + clientMusic.IPAddress + "/httpapi.asp?command=ConnectMasterAp:ssid=" + ssid + ":ch=" + serverIfon.WifiChannel + ":auth=OPEN:encry=NONE:pwd=:chext=0:JoinGroupMaster:eth" + serverIfon.eth2 + ":wifi" + serverIfon.ra0 + ":uuid" + serverIfon.uuid))
-                            {
-
-                            }
-                        }
-                        System.Threading.Thread.Sleep(1000);//绛夊緟1绉掑啀鍙戞暟鎹�
-                    }
-                    DateTime dateTime = DateTime.Now;
-                    while ((DateTime.Now - dateTime).TotalMilliseconds < 15 * 1000)
-                    {
-                        System.Threading.Thread.Sleep(1000);
-                        try
-                        {
-                            var result = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
-                            if (result != null && result != "Failed")
-                            {
-                                var tmepSlaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
-                                if (tmepSlaves != null && tmepSlaves.slave_list != null && tmepSlaves.slave_list.Count != 0)
-                                {
-                                    string str = serverMusic.Name;
-                                    for (int j = 0; j < A31MusicModel.A31MusicModelList.Count; j++)
-                                    {
-                                        var music = A31MusicModel.A31MusicModelList[j];
-                                        if(music.collect && !mainModelCollection)
-                                        {
-                                            mainModelCollection = true;
-                                        }
-                                        if (music.UniqueDeviceName == serverMusic.UniqueDeviceName)
-                                        {
-                                            music.ServerClientType = 1;
-                                            mainModel = music;
-                                            music.Slave = tmepSlaves;
-                                            //杩囨护鎺変富鎾斁鍣�;
-                                            continue;
-                                        }
-                                        var slave_Ifon = tmepSlaves.slave_list.Find((obj) => obj.uuid.Replace("uuid:", "") == music.UniqueDeviceName);
-                                        if (null != slave_Ifon)
-                                        {
-                                            str = str + "+" + slave_Ifon.name;
-                                            //宸茬粡娣诲姞鎴愬姛
-                                            music.ServerClientType = -1;
-                                            music.IsCanShow = false;
-                                            music.IsOnLine = false;
-                                            music.IPAddress = slave_Ifon.ip;
-                                            music.MainPlayIP = serverMusic.IPAddress;
-                                            _if = true;
-                                        }
-                                    }
-                                    serverMusic.MainPlayName = str;
-                                    foreach(var music in A31MusicModel.A31MusicModelList)
-                                    {
-                                        if(music.ServerClientType == 1)
-                                        {
-                                            music.MainPlayCollection = mainModelCollection;
-                                        }
-                                    }
-                                    A31MusicModel.Save();
-                                    break;
-                                }
-                            }
-                        }
-                        catch { }
-                    }
-                }
-                catch { }
-                finally
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        MusicMain.loading.Hide();
-                        ///鍙互鎻愮ず閰嶇疆澶辫触;
-                        if (_if)
-                        {
-                            //閰嶇疆鎴愬姛鎵嶅彲浠ュ埛鏂扮晫闈�
-                            MainPage.BasePageView.RemoveViewByTag("MusicMain");
-                            var musicMain = new MusicMain();
-                            MainPage.BasePageView.AddChidren(musicMain);
-                            musicMain.Show();
-                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                        }
-                    });
-                }
-            });
-
-        }
-        /// <summary>
-        /// 瑙i櫎缁勫悎鍛戒护閫昏緫澶勭悊鐨勬柟娉�
-        /// </summary>
-        /// <param name="a31player">涓绘挱鏀惧櫒</param>
-        /// <param name="playList1"></param>
-        void RemoveThreading(A31MusicModel a31player, List<A31MusicModel> playList1)
-        {
-            MusicMain.loading.Start(Language.StringByID(StringId.lifting));
-            var slaveList = new List<Slave>();
-            slaveList.AddRange(a31player.Slave.slave_list);
-           // bool host_If = false; //琛ㄧず鏄惁鏄剧ず瑙i櫎鐨勬挱鏀�
-            bool _if = false;
-            System.Threading.Tasks.Task.Run(() =>
-            {
-                try
-                {
-                    var play_If = playList1.Find((obj) => obj.UniqueDeviceName == a31player.UniqueDeviceName);
-                    if (play_If == null)
-                    {
-                        //瀛愰煶绠变笌涓婚煶绠辨柇寮�鐨勫懡浠�
-                        for (int i = 0; i < playList1.Count; i++)
-                        {
-                            var clientMusic = playList1[i];
-                            if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:SlaveKickout:" + clientMusic.IPAddress))
-                            {
-                                if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:SlaveKickout:" + clientMusic.IPAddress))
-                                {
-
-                                }
-                            }
-                            ///姣忚В闄や竴涓挱鏀惧櫒闇�瑕佺瓑寰�3绉�
-                            System.Threading.Thread.Sleep(3000);//绛夊緟3绉掑啀鍙戞暟鎹�
-                        }
-                    }
-                    else
-                    {
-                        //瑙f暎缁勭殑鍛戒护
-                        if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:Ungroup"))
-                        {
-                            if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:Ungroup"))
-                            {
-
-                            }
-                        }
-                    }
-                    DateTime dateTime = DateTime.Now;
-                    while ((DateTime.Now - dateTime).TotalMilliseconds < 12 * 1000)
-                    {
-                        System.Threading.Thread.Sleep(1000);
-                        try
-                        {
-                            var result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
-                            if (result != null && result != "Failed")
-                            {
-                                var tmepSlaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
-                                if (tmepSlaves != null)
-                                {
-                                    if (tmepSlaves.slave_list.Count == 0)
-                                    {
-                                        var host_music = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == a31player.UniqueDeviceName);
-                                        if (host_music != null)
-                                        {
-                                            host_music.ServerClientType = 0;//瑙i櫎涓讳粠鍏崇郴
-                                            host_music.MainPlayName = "";
-                                        }
-                                        for (int a = 0; a < slaveList.Count; a++)
-                                        {
-                                            var uuid = slaveList[a].uuid.Replace("uuid:", "");
-                                            var music = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == uuid);
-                                            if (music != null)
-                                            {
-                                                music.ServerClientType = 0;//瑙i櫎涓讳粠鍏崇郴
-                                                music.IsCanShow = true;//鍏佽鏄剧ず
-                                                music.IsOnLine = false;//鍏堜笉鍏佽璇诲彇
-                                            }
-                                        }
-                                    }
-                                    else
-                                    {
-                                        for (int b = 0; b < tmepSlaves.slave_list.Count; b++)
-                                        {
-                                            var uuid = tmepSlaves.slave_list[b].uuid.Replace("uuid:", "");
-                                            var music = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == uuid);
-                                            if (music != null)
-                                            {
-                                                music.ServerClientType = 0;//瑙i櫎涓讳粠鍏崇郴
-                                                music.IsCanShow = true;//鍏佽鏄剧ず
-                                                music.IsOnLine = false;//鍏堜笉鍏佽璇诲彇
-                                            }
-                                        }
-                                    }
-
-                                    var host_a31player = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == a31player.UniqueDeviceName);
-                                    string str = host_a31player.Name;
-                                    for (int b = 0; b < tmepSlaves.slave_list.Count; b++)
-                                    {
-                                        str = str + "+" + tmepSlaves.slave_list[b].name;
-                                    }
-                                    host_a31player.MainPlayName = str;///鏀瑰彉涓绘挱鏀惧櫒鐨勬樉绀哄悕绉�
-                                    _if = true;//瑙i櫎鎴愬姛
-                                    A31MusicModel.Save();
-                                    break;
-                                }
-                            }
-
-                        }
-                        catch { }
-                    }
-                }
-                catch { }
-                finally
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        MusicMain.loading.Hide();
-                        ///鍙互鎻愮ず瑙i櫎澶辫触;
-                        if (_if)
-                        {
-                            //瑙i櫎鎴愬姛鎵嶅彲浠ュ埛鏂扮晫闈�
-                            MainPage.BasePageView.RemoveViewByTag("MusicMain");
-                            var musicMain = new MusicMain();
-                            MainPage.BasePageView.AddChidren(musicMain);
-                            musicMain.Show();
-                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                        }
-                    });
-                }
-            });
-
-        }
-        /// <summary>
-        /// 鎾斁鍣ㄥ悕绉�
-        /// </summary>
-        public string NamePlayer(A31MusicModel a31player)
-        {
-            if (a31player.ServerClientType == 1)
-            {
-                return a31player.MainPlayName;
-            }
-            else
-            {
-                return a31player.Name;
-            }
-        }
-       
-        List<A31MusicModel> volumePlayList = new List<A31MusicModel>();
-        A31MusicModel currVolumePlay = null;//褰撳墠鐨勬挱鏀惧櫒
-        int startVolume = 0;//涔嬪墠鐨勯煶閲�
-        int endVolume = 0;//鐜板湪鐨勯煶閲�
-        string if_volume ="";//鏍囪鏄皟鑺傛�婚煶閲忚繕鏄崟涓挱鏀惧櫒闊抽噺;
-        /// <summary>
-        /// 鎾斁鍣ㄩ煶閲忕殑鐣岄潰
-        /// </summary>
-        /// <param name="a31player">涓绘挱鏀惧櫒</param>
-        public void PlayerVolumeView(A31MusicModel a31player)
-        {
-            volumePlayList.Clear();
-            for (int i = 0; i < a31player.Slave.slave_list.Count; i++)
-            {
-                var slave = a31player.Slave.slave_list[i];
-                var music_If = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == slave.uuid.Replace("uuid:", ""));
-                if (music_If != null)
-                {
-                    music_If.ServerClientType = -1;
-                    music_If.A31PlayStatus.vol = slave.volume;
-                    volumePlayList.Add(music_If);
-                }
-            }
-            volumePlayList.Add(a31player);
-            #region
-            //涓绘帶浠�
-            Dialog volumedialog = new Dialog();
-            volumedialog.Show();
-            //鐖舵帶浠�
-            FrameLayout frame = new FrameLayout { };
-            volumedialog.AddChidren(frame);
-            //鐧借壊蹇埗鎺т欢
-            FrameLayout dialogFra = new FrameLayout()
-            {
-                X = Application.GetRealWidth(16),
-                Y = Application.GetRealHeight(397-20),
-                Width = Application.GetRealWidth(344),
-                Height = Application.GetRealHeight(250+20),
-                BackgroundColor = MusicColor.WhiteColor,
-                Radius = (uint)Application.GetRealHeight(12),
-            };
-            frame.AddChidren(dialogFra);
-            #region 纭 鍙栨秷
-            //鏄剧ず澶撮儴淇℃伅鐖舵帶浠�
-            FrameLayout topFra = new FrameLayout()
-            {
-                Width = Application.GetRealWidth(344),
-                Height = Application.GetRealHeight(58),
-            };
-            dialogFra.AddChidren(topFra);
-            //鍙栨秷鎺т欢
-            Button cancelnBtn = new Button
-            {
-                X = Application.GetRealWidth(20),
-                Y = Application.GetRealHeight(15),
-                Width = Application.GetRealWidth(60),
-                Height = Application.GetRealHeight(20),
-                TextID = StringId.cancelMusic,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = MusicColor.MusicNoTxetColor,
-                TextSize = TextSize.Text14,
-            };
-            topFra.AddChidren(cancelnBtn);
-            //鏍囬鎺т欢
-            Button txetBtn = new Button
-            {
-                X = cancelnBtn.Right + Application.GetRealWidth(20),
-                Y = Application.GetRealHeight(14),
-                Width = Application.GetRealWidth(152),
-                Height = Application.GetRealHeight(22),
-                TextColor = MusicColor.TextColor,
-                TextSize = TextSize.Text16,
-                TextAlignment = TextAlignment.Center,
-                TextID = StringId.volumeAdjustment,
-                IsBold = true,
-            };
-            topFra.AddChidren(txetBtn);
-            //纭鎺т欢
-            Button confirmBtn = new Button
-            {
-                X = Application.GetRealWidth(344 - 60 - 20),
-                Y = Application.GetRealHeight(15),
-                Width = Application.GetRealWidth(60),
-                Height = Application.GetRealHeight(20),
-                TextID = StringId.confirmMusic,
-                TextAlignment = TextAlignment.CenterRight,
-                TextColor = MusicColor.SelectedColor,
-                TextSize = TextSize.Text14,
-            };
-            topFra.AddChidren(confirmBtn);
-
-            EventHandler<MouseEventArgs> eventHandler= (sen,e) => {
-                volumedialog.Close();
-                if (updateVolumeThread != null)
-                {
-                    try
-                    {
-                        if (updateVolumeThread.IsAlive)
-                        {
-                            updateVolumeThread.Abort();
-                        }
-                    }
-                    catch { }
-                }
-            };
-            cancelnBtn.MouseUpEventHandler += eventHandler;
-            confirmBtn.MouseUpEventHandler += eventHandler;
-            frame.MouseUpEventHandler += eventHandler;
-            #endregion
-            #region 鎬婚煶閲忕殑View
-            FrameLayout totalVolumeFra = new FrameLayout
-            {
-                Height = Application.GetRealHeight(64),
-                Y = Application.GetRealHeight(58),
-            };
-            dialogFra.AddChidren(totalVolumeFra);
-            Button totalvolumeTextBtn = new Button
-            {
-                X = Application.GetRealWidth(28),
-                Y = Application.GetRealHeight(8),
-                Width = Application.GetRealWidth(200),
-                Height = Application.GetRealHeight(14),
-                TextColor = MusicColor.MusicNoTxetColor,
-                TextSize = TextSize.Text10,
-                TextAlignment = TextAlignment.CenterLeft,
-                Text = Language.StringByID(StringId.totalVolume),
-            };
-            totalVolumeFra.AddChidren(totalvolumeTextBtn);
-            DiyImageSeekBar totalVolSeekBar = new DiyImageSeekBar
-            {
-                Y = Application.GetRealHeight(12),
-                X = Application.GetRealWidth(28),
-                Width = Application.GetRealWidth(240),
-                Height = Application.GetRealHeight(54),//杩涘害鏉$埗鎺т欢鑳屾櫙楂樺害
-                IsProgressTextShow = false,//鏄剧ず鐧惧垎姣�
-                IsClickable = true,//杩涘害鏉℃槸鍚︽粦鍔�
-                ProgressBarColor = MusicColor.SelectedColor,//閫変腑杩涘害鏉¢鑹�
-                ThumbImagePath = "MusicIcon/progressIcon.png",//杩涘害鏉℃寜閽浘鏍�
-                ThumbImageHeight = Application.GetRealWidth(54),//杩涘害鏉℃寜閽浘鏍囩殑楂樺害锛堥粯璁ゆ鏂瑰舰锛氬鍜岄珮涓�鏍凤級
-                SeekBarViewHeight = Application.GetRealWidth(8),//杩涘害鏉$殑楂樺害
-                Progress = int.Parse(a31player.A31PlayStatus.vol),
-                SeekBarPadding = Application.GetRealWidth(20),
-                //ProgressChangeDelayTime=
-            };
-            totalVolumeFra.AddChidren(totalVolSeekBar);
-
-            Button totalVolumeValueBtn = new Button
-            {
-                X = Application.GetRealWidth(289),
-                Y = Application.GetRealHeight(31),
-                Width = Application.GetRealWidth(26 + 15),
-                Height = Application.GetRealHeight(17),
-                TextColor = MusicColor.MusicNoTxetColor,
-                TextSize = TextSize.Text12,
-                TextAlignment = TextAlignment.CenterLeft,
-                Text = totalVolSeekBar.Progress.ToString() + "%",
-            };
-            totalVolumeFra.AddChidren(totalVolumeValueBtn);
-            #endregion
-
-            VerticalScrolViewLayout volumeViewLayout = new VerticalScrolViewLayout
-            {
-                Y =Application.GetRealHeight(58+64),
-                Height = dialogFra.Height - Application.GetRealHeight(58+64),
-                Width = Application.GetRealWidth(343),
-            };
-            dialogFra.AddChidren(volumeViewLayout);
-
-            for (int i = 0; i < volumePlayList.Count; i++)
-            {
-                var player = volumePlayList[i];
-                #region 璋冭妭褰撲釜鎾斁鍣╒iew
-                FrameLayout volumeFra = new FrameLayout
-                {
-                    Height = Application.GetRealHeight(64),
-                };
-                volumeViewLayout.AddChidren(volumeFra);
-                Button volumeTextBtn = new Button
-                {
-                    X = Application.GetRealWidth(28),
-                    Y = Application.GetRealHeight(8),
-                    Width = Application.GetRealWidth(200),
-                    Height = Application.GetRealHeight(14),
-                    TextColor = MusicColor.MusicNoTxetColor,
-                    TextSize = TextSize.Text10,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    Text = player.Name + Language.StringByID(StringId.volumeMusic),
-
-                };
-                volumeFra.AddChidren(volumeTextBtn);
-
-                DiyImageSeekBar volSeekBar = new DiyImageSeekBar
-                {
-                    Y = Application.GetRealHeight(12),
-                    X = Application.GetRealWidth(28),
-                    Width = Application.GetRealWidth(240),
-                    Height = Application.GetRealHeight(54),//杩涘害鏉$埗鎺т欢鑳屾櫙楂樺害
-                    IsProgressTextShow = false,//鏄剧ず鐧惧垎姣�
-                    IsClickable = true,//杩涘害鏉℃槸鍚︽粦鍔�
-                    ProgressBarColor = MusicColor.SelectedColor,//閫変腑杩涘害鏉¢鑹�
-                    ThumbImagePath = "MusicIcon/progressIcon.png",//杩涘害鏉℃寜閽浘鏍�
-                    ThumbImageHeight = Application.GetRealWidth(54),//杩涘害鏉℃寜閽浘鏍囩殑楂樺害锛堥粯璁ゆ鏂瑰舰锛氬鍜岄珮涓�鏍凤級
-                    SeekBarViewHeight = Application.GetRealWidth(8),//杩涘害鏉$殑楂樺害
-                    Progress = int.Parse(player.A31PlayStatus.vol),
-                        SeekBarPadding = Application.GetRealWidth(20),
-                    //ProgressChangeDelayTime=
-                };
-                volumeFra.AddChidren(volSeekBar);
-
-                Button valueBtn = new Button
-                {
-                    X = Application.GetRealWidth(289),
-                    Y = Application.GetRealHeight(31),
-                    Width = Application.GetRealWidth(26+15),
-                    Height = Application.GetRealHeight(17),
-                    TextColor = MusicColor.MusicNoTxetColor,
-                    TextSize = TextSize.Text12,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    Text = player.A31PlayStatus.vol + "%",
-                };
-                volumeFra.AddChidren(valueBtn);
-                #endregion
-                ///闊抽噺杩涘害鏉$偣鍑讳簨浠�
-                EventHandler<int> progressClick = (sender, e) =>
-                {
-                    if (currVolumePlay == null || (currVolumePlay != null && currVolumePlay.UniqueDeviceName != player.UniqueDeviceName))
-                    {
-                        currVolumePlay = player;
-                    }
-                    endVolume = e;
-                    if_volume = "Volume";
-                    valueBtn.Text = volSeekBar.Progress + "%";
-                };
-                volSeekBar.OnProgressChangedEvent += progressClick;
-                volSeekBar.OnStopTrackingTouchEvent += progressClick;
-            }
-
-            EventHandler<int> totalProgressClick = (sender, e) =>
-            {
-                if_volume = "totalVolume";
-                endVolume = e;
-                totalVolumeValueBtn.Text = totalVolSeekBar.Progress + "%";
-                for (int j = 0; j < volumePlayList.Count; j++)
-                {
-                    var music = volumePlayList[j];
-                    var frameLayout = (FrameLayout)volumeViewLayout.GetChildren(j);
-                    var diyImageSeekBar = (DiyImageSeekBar)frameLayout.GetChildren(1);
-                    var button = (Button)frameLayout.GetChildren(2);
-                    diyImageSeekBar.Progress = totalVolSeekBar.Progress;
-                    button.Text = totalVolSeekBar.Progress + "%";
-                }
-            };
-            totalVolSeekBar.OnProgressChangedEvent += totalProgressClick;
-            totalVolSeekBar.OnStopTrackingTouchEvent += totalProgressClick;
-            #endregion
-
-        }
-        /// <summary>
-        /// 瀹氭椂闊抽噺骞朵笖鍙戦�佸懡浠�
-        /// </summary>
-        System.Threading.Thread updateVolumeThread;
-        public void UpdateVolume()
-        {
-            if (updateVolumeThread != null) {
-                try
-                {
-                    if (updateVolumeThread.IsAlive) {
-                        updateVolumeThread.Abort();
-                    }
-                }
-                catch { }
-            }
-            updateVolumeThread = new System.Threading.Thread(() =>
-            {
-                try
-                {
-                    while (true)
-                    {
-                        System.Threading.Thread.Sleep(500);
-                        if (startVolume == endVolume)
-                        {
-                            continue;
-                        }
-                        startVolume = endVolume;
-                        if (if_volume == "totalVolume")
-                        {
-                            for (int j = 0; j < volumePlayList.Count; j++)
-                            {
-                                var music = volumePlayList[j];
-                                //姣忎釜500姣鍙戜粠鎾斁鍣ㄩ煶閲忓懡浠�
-                                SendMethod.ControlVolume(endVolume, music);
-                                System.Threading.Thread.Sleep(1000);
-
-                            }
-                        }
-                        else if(if_volume == "Volume")
-                        {
-                            if (currVolumePlay == null)
-                            {
-                                continue;
-                            }
-                            SendMethod.ControlVolume(endVolume, currVolumePlay);
-                        }
-
-
-                    }
-                }
-                catch { }
-            })
-            { IsBackground = true };
-            updateVolumeThread.Start();
         }
 
     }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/View/MusicView.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/View/MusicView.cs
index 1dfd44f..9f1e81c 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/View/MusicView.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/View/MusicView.cs
@@ -10,14 +10,17 @@
         /// </summary>
         public FrameLayout muiscFl = new FrameLayout
         {
+            Name= "parentfl",
             Height = Application.GetRealHeight(12 + 139),
             Width = Application.GetRealWidth(375),
+            
         };
         /// <summary>
         ///鐧借壊鑳屾櫙鐨勬帶浠�
         /// </summary>
         public FrameLayout musicIfonFl = new FrameLayout
         {
+            Name = "musicparentfl",
             X = Application.GetRealWidth(16),
             Y = Application.GetRealHeight(12),
             Height = Application.GetRealHeight(139),
@@ -89,6 +92,7 @@
         /// </summary>
         public Button songNameBtn = new Button
         {
+            Name="song",
             X = Application.GetRealWidth(54),
             Y = Application.GetRealHeight(12),
             Width = Application.GetRealWidth(140),
@@ -102,6 +106,7 @@
         /// </summary>
         public Button singerBtn = new Button
         {
+            Name= "singer",
             X = Application.GetRealWidth(54),
             Y = Application.GetRealHeight(36),
             Width = Application.GetRealWidth(120),
@@ -116,6 +121,7 @@
         /// </summary>
         public Button musicNameBtn = new Button
         {
+            Name = "musicname",
             X = Application.GetRealWidth(54),
             Y = Application.GetRealHeight(40),//58
             Width = Application.GetRealWidth(140),
@@ -166,6 +172,7 @@
         /// </summary>
         public Button playBtn = new Button
         {
+            Tag= "playstatus",
             X = Application.GetRealWidth(233),
             Y = Application.GetRealHeight(101),
             Width = Application.GetRealWidth(32),
@@ -189,14 +196,14 @@
         /// 鎾斁鍣ㄧ晫闈㈢殑鏂规硶
         /// </summary>
         /// <param name="verticalRefresh"></param>
-        public void View(VerticalRefreshLayout verticalRefresh)
+        public void ViewAddChidren(VerticalRefreshLayout verticalRefresh) 
         {
             verticalRefresh.AddChidren(muiscFl);
             muiscFl.AddChidren(musicIfonFl);
             musicIfonFl.AddChidren(iconBtn);
-            musicIfonFl.AddChidren(mergeBjBtn);
-            musicIfonFl.AddChidren(mergeIconBtn);
-            musicIfonFl.AddChidren(mergeBtn);
+            //musicIfonFl.AddChidren(mergeBjBtn);
+            //musicIfonFl.AddChidren(mergeIconBtn);
+            //musicIfonFl.AddChidren(mergeBtn);
             musicIfonFl.AddChidren(collectIconBtn);
             musicIfonFl.AddChidren(songNameBtn);
             //musicIfonFl.AddChidren(singerBtn);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/View/MyListView.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/View/MyListView.cs
index c9b4aab..f6ec20b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/View/MyListView.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/View/MyListView.cs
@@ -91,20 +91,21 @@
         };
         public void frameLayout(FrameLayout frame,A31MusicModel a31MusicModel)
         {
-            switch (a31MusicModel.A31PlayStatus.loop)
+           var mode= a31MusicModel.functionMusic.GetAttrState("mode");
+            switch (mode)
             {
                 //0鍒楄〃寰幆锛�1鍗曟洸寰幆锛�2闅忔満鎾斁;
-                case "0":
+                case ValueProperty.list_cycle:
                     orderIconBtn.UnSelectedImagePath = "MusicIcon/list.png";
                     orderTxetBtn.Text = Language.StringByID(StringId.listMode);
                     break;
 
-                case "1":
+                case ValueProperty.single_cycle:
                     orderIconBtn.UnSelectedImagePath = "MusicIcon/single.png";
                     orderTxetBtn.Text = Language.StringByID(StringId.singleMode);
 
                     break;
-                case "2":
+                case ValueProperty.random:
                     orderIconBtn.UnSelectedImagePath = "MusicIcon/random.png";
                     orderTxetBtn.Text = Language.StringByID(StringId.randomMode);
                     break;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/View/PlayView.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/View/PlayView.cs
index b054490..5335d37 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/View/PlayView.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/View/PlayView.cs
@@ -14,6 +14,8 @@
             Height = Application.GetRealHeight(526),
             Width = Application.GetRealWidth(327),
             BackgroundImagePath = "MusicIcon/playBj.png",
+            Name="fl",
+            
         };
         /// <summary>
         ///  闊充箰姹夊瓧
@@ -28,6 +30,7 @@
             TextSize = TextSize.Text24,
             TextAlignment = TextAlignment.CenterLeft,
             TextID = StringId.a31Music,
+            Name = "musicname"
         };
         /// <summary>
         ///  鍖哄煙鍚嶇О
@@ -41,6 +44,7 @@
             TextColor = MusicColor.MusicNoTxetColor,
             TextSize = TextSize.Text12,
             TextAlignment = TextAlignment.CenterLeft,
+            Name= "region",
         };
         /// <summary>
         ///鏀惰棌鍥炬爣
@@ -53,6 +57,7 @@
             Height = Application.GetRealWidth(40),
             UnSelectedImagePath = "MusicIcon/collect.png",
             SelectedImagePath = "MusicIcon/collectSelected.png",
+            Name = "collect"
         };
         /// <summary>
         ///蹇�,閫�杩涘害鏉$埗鎺т欢
@@ -86,11 +91,13 @@
             ArcWidth = Application.GetRealWidth(4),//杩涘害瀹藉害
             ThumbImagePath = "MusicIcon/thumbImage.png",//杩涘害鏉℃寜閽浘鏍�
             ThumbImageHeight = Application.GetMinRealAverage(8),//杩涘害鏉℃寜閽浘鏍囩殑楂樺害锛堥粯璁ゆ鏂瑰舰锛氬鍜岄珮涓�鏍凤級
-            MaxValue=100,
+            MaxValue = 100,
             Gravity = Gravity.Center,
             SeekBarPadding = Application.GetMinRealAverage(3),
+            IsClickable = false,//涓嶅彲浠ユ粦鍔�
+
         };
-     
+
         /// <summary>
         ///闊充箰寮�濮嬫椂闂�
         /// </summary>
@@ -207,6 +214,7 @@
             SeekBarViewHeight = Application.GetRealWidth(8),//杩涘害鏉$殑楂樺害
             ProgressChangeDelayTime = 300,//0.3绉掑彂閫佷竴娆�
             SeekBarPadding = Application.GetRealWidth(20),
+
         };
 
         /// <summary>
@@ -264,6 +272,7 @@
         /// <param name="fL"></param>
         public void viewFrameLayout(FrameLayout fL)
         {
+          
             fL.AddChidren(musicBjFl);
             musicBjFl.AddChidren(musicNameBtn);
             musicBjFl.AddChidren(regionBtn);
@@ -276,7 +285,7 @@
             musicBjFl.AddChidren(songNameTextView);
             musicBjFl.AddChidren(singerBtn);
             musicBjFl.AddChidren(playOrderBtn);
-            musicBjFl.AddChidren(loveBtn);
+            //musicBjFl.AddChidren(loveBtn);
             musicBjFl.AddChidren(playlistBtn);
             musicBjFl.AddChidren(volIconBtn);
             musicBjFl.AddChidren(volSeekBar);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/View/SongView.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/View/SongView.cs
index cc67593..26b9e2f 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/View/SongView.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/View/SongView.cs
@@ -94,39 +94,30 @@
         /// 甯冨眬姝屾洸淇℃伅鐨刅iew
         /// </summary>
         /// <returns></returns>
-        public void SongFrameLayout(VerticalRefreshLayout refreshLayout, MusicInfo songs)
+        public void SongFrameLayout(VerticalRefreshLayout refreshLayout, Songs songs)
         {
             musicViewFl.AddChidren(playIconBtn);
             musicViewFl.AddChidren(songBtn);
-            musicViewFl.AddChidren(singerBtn);
+            //musicViewFl.AddChidren(singerBtn);
             musicViewFl.AddChidren(clickBtn);
-            musicViewFl.AddChidren(loveIcon);
-            musicViewFl.AddChidren(addIcon);
+            //musicViewFl.AddChidren(loveIcon);
+            //musicViewFl.AddChidren(addIcon);
             refreshLayout.AddChidren(musicViewFl);
 
             playIconBtn.Tag = songs.URL;
-            songBtn.Tag = songs.URL;
-            singerBtn.Tag = songs.URL;
+            songBtn.Tag = songs.name;
+            singerBtn.Tag = songs.name;
             clickBtn.Tag = songs;//鏍囪鎾斁鍝竴棣栨瓕鏇�
-            songBtn.Text = string.IsNullOrEmpty(songs.Title) ? "Unkonw" : songs.Title.Trim();
+            songBtn.Text = string.IsNullOrEmpty(songs.name) ? "Unkonw" : songs.name.Trim();
             var wText = songBtn.GetTextWidth() + Application.GetRealWidth(15);
-            if (wText > Application.GetRealWidth(220))
+            if (wText > Application.GetRealWidth(250))
             {
-                wText = Application.GetRealWidth(220);//(姝屾洸+姝屾墜)瀹藉害鏈�澶у�兼椂220
+                wText = Application.GetRealWidth(250);//(姝屾洸+姝屾墜)瀹藉害鏈�澶у�兼椂220
             }
             songBtn.Width = wText;
             singerBtn.X = songBtn.Right;
             singerBtn.Width = Application.GetRealWidth(220) - wText;//姝屽悕闀垮害灏忎簬220鎵嶅彲浠ユ樉绀烘瓕鎵嬪嚭鏉�
-            singerBtn.Text = string.IsNullOrEmpty(songs.Artist) ? "-Unkonw" : "-" + songs.Artist.Trim();
-            var music = A31MusicModel.Current.LoveMusicInfoList.Find((m) => m.URL == songs.URL);
-            if (music != null)
-            {
-                loveIcon.IsSelected = true;
-            }
-            else
-            {
-                loveIcon.IsSelected = false;
-            }
+            singerBtn.Text = string.IsNullOrEmpty(songs.name) ? "-Unkonw" : "-" + songs.name.Trim();
 
         }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs
index fc82b32..384f58d 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs
@@ -163,6 +163,10 @@
         ///  homeId
         /// </summary>
         public string homeId;
+        /// <summary>
+        ///  璁惧缂栧彿锛堢洰鍓嶇敤浜庡叏瑙嗛�氾紝鐩稿綋浜庡叏瑙嗛�歀ocalDirectory瀛楁锛�
+        /// </summary>
+        public string deviceCode;
     }
 
     /// <summary>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
index 6d0dd75..a2a6460 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
@@ -34,7 +34,9 @@
             var view1 = new FrameLayout();
             pageView.AddChidren(view1);
             var view2 = new FrameLayout();
-            pageView.AddChidren(view2);
+            if (!Entity.DB_ResidenceData.Instance.SupportFVDevice) {//闈炲叏瑙嗛�氬睍绀洪�氳瘽璁板綍
+                pageView.AddChidren(view2);
+            }
             View1(view1, videoList);
             View2(view2, listCall, videoList);
             Button btn11 = new Button
@@ -46,7 +48,7 @@
                 BackgroundColor = MusicColor.SelectedColor,
                 Radius = (uint)Application.GetRealHeight(4),
             };
-            view1.AddChidren(btn11);
+            //view1.AddChidren(btn11);
 
             Button btn12 = new Button
             {
@@ -57,7 +59,13 @@
                 BackgroundColor = 0x404484F4,
                 Radius = (uint)Application.GetRealHeight(4),
             };
-            view1.AddChidren(btn12);
+            //view1.AddChidren(btn12);
+            if (!Entity.DB_ResidenceData.Instance.SupportFVDevice)
+            {//闈炲叏瑙嗛�氬睍绀轰笅鏂归�夋嫨鎸夐挳
+                view1.AddChidren(btn11);
+                view1.AddChidren(btn12);
+            }
+
             Button btn21 = new Button
             {
                 X = Application.GetRealWidth(170),
@@ -307,8 +315,10 @@
                             Lc_Psk = video.deviceId,//2021-10-15 PSK瀛楁涓嶈兘鍙杁eviceName
                             Lc_PlayToken = video.playToken,
                             deviceSipAccount = video.deviceSipAccount,
-                            HomeId = video.homeId
+                            HomeId = video.homeId,
+                            deviceCode=video.deviceCode
                         };
+                        
                         ESOnVideo.Current.ShowESVideoMonitor(eSVideoInfo, video.interphoneType);
                     }
                 };
diff --git a/SiriIntents/Server/HttpUtil.cs b/SiriIntents/Server/HttpUtil.cs
index f61de04..56a78a0 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";//mmmm
+        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
+        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
         /// <summary>
         /// RegionMark
         /// </summary>
diff --git a/SiriIntents/SiriIntents.csproj b/SiriIntents/SiriIntents.csproj
index 97110fe..45c6d61 100644
--- a/SiriIntents/SiriIntents.csproj
+++ b/SiriIntents/SiriIntents.csproj
@@ -36,7 +36,7 @@
     <DefineConstants></DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <CodesignKey>iPhone Developer</CodesignKey>
+    <CodesignKey>iPhone Distribution</CodesignKey>
     <MtouchUseLlvm>true</MtouchUseLlvm>
     <MtouchFloat32>true</MtouchFloat32>
     <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
@@ -44,6 +44,7 @@
     <MtouchArch>ARM64</MtouchArch>
     <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
     <MtouchVerbosity></MtouchVerbosity>
+    <CodesignProvision>OnProSiri220307-1-Hoc</CodesignProvision>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
     <DebugType>pdbonly</DebugType>
diff --git a/SiriIntentsUI/SiriIntentsUI.csproj b/SiriIntentsUI/SiriIntentsUI.csproj
index 111501c..da2da8b 100644
--- a/SiriIntentsUI/SiriIntentsUI.csproj
+++ b/SiriIntentsUI/SiriIntentsUI.csproj
@@ -37,7 +37,7 @@
     <DefineConstants></DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <CodesignKey>iPhone Developer</CodesignKey>
+    <CodesignKey>iPhone Distribution</CodesignKey>
     <MtouchUseLlvm>true</MtouchUseLlvm>
     <MtouchFloat32>true</MtouchFloat32>
     <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
diff --git a/UMSdk/ApiDefinition.cs b/UMSdk/ApiDefinition.cs
new file mode 100644
index 0000000..3729511
--- /dev/null
+++ b/UMSdk/ApiDefinition.cs
@@ -0,0 +1,20 @@
+锘縰sing System;
+
+using ObjCRuntime;
+using Foundation;
+using UIKit;
+
+namespace UMSdk
+{
+	// @interface HDLUMSDK : NSObject
+	[BaseType(typeof(NSObject))]
+	[Protocol]
+	interface HDLUMSDK
+	{
+		// +(void)initUMSDKWithAppKey:(NSString *)appKey channel:(NSString *)channel;
+		[Static]
+		[Export("initUMSDKWithAppKey:channel:")]
+		void InitUMSDKWithAppKey(string appKey, string channel);
+	}
+}
+
diff --git a/UMSdk/Properties/AssemblyInfo.cs b/UMSdk/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..edd04fd
--- /dev/null
+++ b/UMSdk/Properties/AssemblyInfo.cs
@@ -0,0 +1,34 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+
+using Foundation;
+
+// This attribute allows you to mark your assemblies as 鈥渟afe to link鈥�.
+// When the attribute is present, the linker鈥攊f enabled鈥攚ill process the assembly
+// even if you鈥檙e using the 鈥淟ink SDK assemblies only鈥� option, which is the default for device builds.
+
+[assembly: LinkerSafe]
+
+// Information about this assembly is defined by the following attributes.
+// Change them to the values specific to your project.
+
+[assembly: AssemblyTitle("UMSdk")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("UMSdk")]
+[assembly: AssemblyCopyright("Copyright 漏  2017")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
+// The form "{Major}.{Minor}.*" will automatically update the build and revision,
+// and "{Major}.{Minor}.{Build}.*" will update just the revision.
+
+[assembly: AssemblyVersion("1.0.3")]
+
+// The following attributes are used to specify the signing key for the assembly,
+// if desired. See the Mono documentation for more information about signing.
+
+//[assembly: AssemblyDelaySign(false)]
+//[assembly: AssemblyKeyFile("")]
diff --git a/UMSdk/Structs.cs b/UMSdk/Structs.cs
new file mode 100644
index 0000000..27689d2
--- /dev/null
+++ b/UMSdk/Structs.cs
@@ -0,0 +1,6 @@
+锘縰sing System;
+
+namespace UMSdk
+{
+}
+
diff --git a/UMSdk/UMSdk.csproj b/UMSdk/UMSdk.csproj
new file mode 100644
index 0000000..1d122cd
--- /dev/null
+++ b/UMSdk/UMSdk.csproj
@@ -0,0 +1,68 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectTypeGuids>{8FFB629D-F513-41CE-95D2-7ECE97B6EEEC};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ProjectGuid>{5CD1B2DE-1ABD-4B46-8C97-CCB6EA90346A}</ProjectGuid>
+    <TemplateGuid>{b6f3ff35-79b2-4f25-a2fc-60a7cf61013b}</TemplateGuid>
+    <OutputType>Library</OutputType>
+    <RootNamespace>NativeLibrary</RootNamespace>
+    <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
+    <AssemblyName>NativeLibrary</AssemblyName>
+    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>portable</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>portable</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="Xamarin.iOS" />
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Resources\" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ObjcBindingApiDefinition Include="ApiDefinition.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ObjcBindingCoreSource Include="Structs.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <NativeReference Include="..\..\..\Downloads\HDLUM\HDLUMDemo\HDLUMDemo\HDLUMDemo\UMSDK\UMCommon.framework">
+      <Kind>Framework</Kind>
+      <SmartLink>False</SmartLink>
+    </NativeReference>
+    <NativeReference Include="..\DLL\UMeng\libHDLUMSDK.a">
+      <Kind>Static</Kind>
+      <SmartLink>False</SmartLink>
+    </NativeReference>
+    <NativeReference Include="..\DLL\UMeng\UMCommon.framework">
+      <Kind>Framework</Kind>
+      <SmartLink>False</SmartLink>
+    </NativeReference>
+    <NativeReference Include="..\DLL\UMeng\UMDevice.framework">
+      <Kind>Framework</Kind>
+      <SmartLink>False</SmartLink>
+    </NativeReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.ObjCBinding.CSharp.targets" />
+</Project>
\ No newline at end of file

--
Gitblit v1.8.0