JLChen
2020-04-16 9ca2281d589fbd4b35177d1846974f17d12095ae
2020-04-16 1.更新

2020-04-14
1.更新为精简版控件库。
2.编译目标版本修改为Android 9.0,支持64。
3.去掉CheckGateway 定时心跳查询网关状态。
4.增加远程连接过程状态提示。
5.增加数据接收菜单按钮。
6.增加通用设备功能,支持红外遥控功能。
2个文件已添加
4个文件已删除
25个文件已修改
518 ■■■■ 已修改文件
Crabtree/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/.vs/SmartHome/xs/UserPrefs.xml 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/.vs/SmartHome/xs/sqlite3/storage.ide 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/2020/CrabtreeOn_Distribution11DEC2019.mobileprovision 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/2020/Distribution_Certificate_iTunes.p12 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/CertificatesDevlopment.p12 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/CertificatesDistribution.p12 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/CrabtreeOn_Development.mobileprovision 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/CrabtreeOn_Distribution.mobileprovision 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/ON.Ios/Info.plist 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/ON.Ios/ON.Ios.csproj 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/ON/Application.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/ON/MyReceiver.cs 114 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/ON/Properties/AndroidManifest.xml 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome.sln 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/HDL/Operation/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/HDL/Operation/Device/Room.cs 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/HDL/Operation/UserConfig.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/HDL/Operation/Utlis.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/UI/SimpleControl/CommonPage.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/UI/SimpleControl/EquipmentPublicClass.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/UI/SimpleControl/MainPage.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToLight.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/UI/SimpleControl/Phone/Room/UserRoom.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/UI/SimpleControl/Phone/UniversalDevice/UserUniversalPage.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/UI/SimpleControl/Phone/User/UserSettingView.cs 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/dll/Android/Shared.Droid.HDLWidget.dll 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/dll/Android/Shared.Droid.dll 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/dll/IOS/Shared.IOS.TBL.dll 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/dll/IOS/Shared.IOS.dll 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/.DS_Store
Binary files differ
Crabtree/.vs/SmartHome/xs/UserPrefs.xml
@@ -1,35 +1,15 @@
<Properties StartupConfiguration="{9D9EF20B-6E65-4A65-92BF-567EBF1E1443}|Default">
  <MonoDevelop.Ide.ItemProperties.ON.Droid AndroidDesignerPreferredDevice="Nexus 4" PreferredExecutionTarget="Android.4b65c46595" />
  <MonoDevelop.Ide.ItemProperties.ON.Droid AndroidDesignerPreferredDevice="Nexus 4" PreferredExecutionTarget="Android.Android_Accelerated_Oreo" />
  <MonoDevelop.Ide.Workbench>
    <Files>
      <File FileName="SmartHome/UI/SimpleControl/Phone/System/SystemRemote.cs" Line="181" Column="112" />
      <File FileName="ON/Properties/AndroidManifest.xml" />
      <File FileName="SmartHome/UI/SimpleControl/MqttCommon.cs" Line="293" Column="37" />
      <File FileName="SmartHome/UI/SimpleControl/R.cs" />
    </Files>
    <Pads>
      <Pad Id="ProjectPad">
        <State name="__root__">
          <Node name="SmartHome" expanded="True">
            <Node name="ON.Droid" expanded="True" selected="True">
              <Node name="Properties" expanded="True" />
            </Node>
            <Node name="Shared" expanded="True">
              <Node name="DLL" expanded="True" />
              <Node name="HDL" expanded="True">
                <Node name="Operation" expanded="True" />
              </Node>
              <Node name="IO" expanded="True" />
              <Node name="Net" expanded="True" />
              <Node name="UI" expanded="True">
                <Node name="SimpleControl" expanded="True">
                  <Node name="Phone" expanded="True">
                    <Node name="Light" expanded="True" />
                    <Node name="Register" expanded="True" />
                    <Node name="Room" expanded="True" />
                    <Node name="System" expanded="True" />
                  </Node>
                </Node>
              </Node>
            </Node>
            <Node name="ON.Droid" selected="True" />
          </Node>
        </State>
      </Pad>
@@ -43,7 +23,7 @@
    <String>Shared.IOS/Shared.IOS.csproj</String>
  </DisabledProjects>
  <MonoDevelop.Ide.Workspace ActiveConfiguration="Release" />
  <MonoDevelop.Ide.ItemProperties.ON.Ios automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.254b82433419c7ca1850b1dfb524c79b7aeb0640" />
  <MonoDevelop.Ide.ItemProperties.ON.Ios automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneSimulatorTarget.446FF651-C1E0-4C68-805D-F62274849738" />
  <MonoDevelop.Ide.DebuggingService.Breakpoints>
    <BreakpointStore />
  </MonoDevelop.Ide.DebuggingService.Breakpoints>
Crabtree/.vs/SmartHome/xs/sqlite3/storage.ide
Binary files differ
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/2020/CrabtreeOn_Distribution11DEC2019.mobileprovision
Binary files differ
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/2020/Distribution_Certificate_iTunes.p12
Binary files differ
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/CertificatesDevlopment.p12
Binary files differ
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/CertificatesDistribution.p12
Binary files differ
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/CrabtreeOn_Development.mobileprovision
Binary files differ
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/CrabtreeOn_Distribution.mobileprovision
Binary files differ
Crabtree/ON.Ios/Info.plist
@@ -17,9 +17,9 @@
    <key>CFBundleIdentifier</key>
    <string>com.hdl.SimpleControl</string>
    <key>CFBundleShortVersionString</key>
    <string>2.5200203</string>
    <string>2.5200408</string>
    <key>CFBundleVersion</key>
    <string>2.50203</string>
    <string>2.50408</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>MinimumOSVersion</key>
Crabtree/ON.Ios/ON.Ios.csproj
@@ -77,7 +77,7 @@
    <WarningLevel>4</WarningLevel>
    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
    <DocumentationFile></DocumentationFile>
    <CodesignKey>iPhone Developer</CodesignKey>
    <CodesignKey>iPhone Developer: xuebiao huang (4P32GXQWWK)</CodesignKey>
    <MtouchFastDev>true</MtouchFastDev>
    <MtouchFastDev>true</MtouchFastDev>
    <MtouchProfiling>false</MtouchProfiling>
@@ -107,6 +107,7 @@
<WarningsNotAsErrors></WarningsNotAsErrors>
<OnDemandResourcesInitialInstallTags></OnDemandResourcesInitialInstallTags>
<OnDemandResourcesPrefetchOrder></OnDemandResourcesPrefetchOrder>
<CodesignProvision>Test</CodesignProvision>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
Crabtree/ON/Application.cs
@@ -3,8 +3,8 @@
using Android.Content;
using Android.Net;
using Android.OS;
using CN.Jpush.Android.Api;
using CN.Jpush.Android.Service;
//using CN.Jpush.Android.Api;
//using CN.Jpush.Android.Service;
using Java.Lang;
using Java.Util;
using Java.Util.Zip;
@@ -42,12 +42,26 @@
    [Android.App.Application]
    public class Application : Android.App.Application
    {
        static void reStartApp (Android.App.Application application)
        {
            var intent = new Intent (application, typeof (BaseActivity));
            intent.AddFlags (ActivityFlags.NewTask);
            application.StartActivity (intent);
            Android.OS.Process.KillProcess (Android.OS.Process.MyPid ());
        }
        public Application (IntPtr handle, Android.Runtime.JniHandleOwnership ownerShip) : base (handle, ownerShip) { }
        public override void OnCreate ()
        {
            initAll ();
            if (Shared.Application.Activity != null) {
                reStartApp (this);
                return;
            }
            //Shared.Application.IsGpsEnable = false;
            base.OnCreate ();
            initAll ();
        }
        /// <summary>
@@ -113,12 +127,12 @@
            init ();
            BaseActivity.OnCreateActoin += (activity, application) => {
                Microsoft.AppCenter.AppCenter.Start ("d0f0f0c5-88af-494b-93af-9a667801b7a3", typeof (Microsoft.AppCenter.Analytics.Analytics), typeof (Microsoft.AppCenter.Crashes.Crashes));
                //保存获取的极光服务器上的注册ID到本地文件
                var tokenID = JPushInterface.GetRegistrationID (activity);
                if (!string.IsNullOrEmpty (tokenID) && UserConfig.Instance.tokenID != tokenID) {
                    UserConfig.Instance.tokenID = tokenID;
                    UserConfig.Instance.SaveUserConfig ();
                }
                ////保存获取的极光服务器上的注册ID到本地文件
                //var tokenID = JPushInterface.GetRegistrationID (activity);
                //if (!string.IsNullOrEmpty (tokenID) && UserConfig.Instance.tokenID != tokenID) {
                //    UserConfig.Instance.tokenID = tokenID;
                //    UserConfig.Instance.SaveUserConfig ();
                //}
                BaseActivity.NetworkStateChanged += (int obj) => {
                    Utlis.WriteLine ("NetworkStateChanged " + obj);
                    UserConfig.Instance.internetStatus = obj;
@@ -153,9 +167,9 @@
            Shared.Application.Skin = UserConfig.Instance.CurrentSkinName;
            SkinStyle.Current.ChangeColor ();
            UserConfig.Instance.phoneName = Android.OS.Build.Manufacturer;
            //设置极光调试模式,为false时只打印警告信息
            JPushInterface.SetDebugMode (false);
            JPushInterface.Init (this);//保存手机名称到本地文件
            ////设置极光调试模式,为false时只打印警告信息
            //JPushInterface.SetDebugMode (false);
            //JPushInterface.Init (this);//保存手机名称到本地文件
            //获取经纬度 
            Shared.Application.LocationAction = (arg1, arg2) => {
@@ -183,7 +197,7 @@
        void checkSomeInfo ()
        {
            RemoteInfo.Current.ReadMsgList (UserConfig.Instance.tokenID, IsShowTip);
            JPushInterface.ClearAllNotifications (this);
            //JPushInterface.ClearAllNotifications (this);
            IsShowTip = true;
            var status = isNetworkAvailable (this);
Crabtree/ON/MyReceiver.cs
@@ -1,61 +1,61 @@
using System;
using Android.Content;
using Android.OS;
using CN.Jpush.Android.Api;
using CN.Jpush.Android.Service;
//using System;
//using Android.Content;
//using Android.OS;
//using CN.Jpush.Android.Api;
//using CN.Jpush.Android.Service;
namespace com.hdl.on
{
    //<receiver android:name="com.hdl.on.MyReceiver" android:exported="false" android:enabled="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
    //    <intent-filter>
    //        <action android:name="cn.jpush.android.intent.REGISTRATION" />
    //        <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
    //        <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
    //        <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
    //        <action android:name="cn.jpush.android.intent.CONNECTION" />
    //        <category android:name="com.hdl.on" />
    //        <action android:name="android.intent.action.BOOT_COMPLETED"></action>
    //        <category android:name="android.intent.category.LAUNCHER" />
    //        <action android:name="android.intent.action.USER_PRESENT" />
    //        <action android:name="android.media.RINGER_MODE_CHANGED" />
    //    </intent-filter>
    //</receiver>
    /*
  *创建一个广播
 * 自定义接收器
 * 如果不定义这个 Receiver,则:
 *  1) 默认用户会打开主界面
 *  2) 接收不到自定义消息
 */
    //[BroadcastReceiver]
    //[IntentFilter(new string []{"cn.jpush.android.intent.REGISTRATION", "cn.jpush.android.intent.MESSAGE_RECEIVED","cn.jpush.android.intent.NOTIFICATION_RECEIVED","cn.jpush.android.intent.NOTIFICATION_OPENED","cn.jpush.android.intent.CONNECTION"})]
    public class MyReceiver : BroadcastReceiver
    {
        static string ACTION = "android.intent.action.BOOT_COMPLETED";
//namespace com.hdl.on
//{
//    //<receiver android:name="com.hdl.on.MyReceiver" android:exported="false" android:enabled="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
//    //    <intent-filter>
//    //        <action android:name="cn.jpush.android.intent.REGISTRATION" />
//    //        <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
//    //        <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
//    //        <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
//    //        <action android:name="cn.jpush.android.intent.CONNECTION" />
//    //        <category android:name="com.hdl.on" />
//    //        <action android:name="android.intent.action.BOOT_COMPLETED"></action>
//    //        <category android:name="android.intent.category.LAUNCHER" />
//    //        <action android:name="android.intent.action.USER_PRESENT" />
//    //        <action android:name="android.media.RINGER_MODE_CHANGED" />
//    //    </intent-filter>
//    //</receiver>
//    /*
//  *创建一个广播
// * 自定义接收器
// * 如果不定义这个 Receiver,则:
// *  1) 默认用户会打开主界面
// *  2) 接收不到自定义消息
// */
//    //[BroadcastReceiver]
//    //[IntentFilter(new string []{"cn.jpush.android.intent.REGISTRATION", "cn.jpush.android.intent.MESSAGE_RECEIVED","cn.jpush.android.intent.NOTIFICATION_RECEIVED","cn.jpush.android.intent.NOTIFICATION_OPENED","cn.jpush.android.intent.CONNECTION"})]
//    public class MyReceiver : BroadcastReceiver
//    {
//        static string ACTION = "android.intent.action.BOOT_COMPLETED";
        public override void OnReceive (Context context, Intent intent)
        {
            Bundle bundle = intent.Extras;
//        public override void OnReceive (Context context, Intent intent)
//        {
//            Bundle bundle = intent.Extras;
            if (intent.Action == ACTION) {
                //开机自动服务自动启动,PushService是要启动的服务
                Intent service = new Intent (context, typeof (PushService));
                context.StartService (service);
            }
//            if (intent.Action == ACTION) {
//                //开机自动服务自动启动,PushService是要启动的服务
//                Intent service = new Intent (context, typeof (PushService));
//                context.StartService (service);
//            }
            //接收Registration Id
            if (JPushInterface.ActionRegistrationId == intent.Action) {
                string regId = bundle.GetString (JPushInterface.ExtraRegistrationId);
            }
            //用户点击打开了通知
            else if (JPushInterface.ActionNotificationOpened == intent.Action) {
                Application.IsShowTip = false;
                Intent i = new Intent (context, typeof (Shared.BaseActivity));//Intent intent=new Intent( 起始组件对象 , 目标 Service.class);
                i.PutExtras (bundle);
                i.SetFlags (ActivityFlags.NewTask);
                context.StartActivity (i);
            } else {
            }
        }
    }
}
//            //接收Registration Id
//            if (JPushInterface.ActionRegistrationId == intent.Action) {
//                string regId = bundle.GetString (JPushInterface.ExtraRegistrationId);
//            }
//            //用户点击打开了通知
//            else if (JPushInterface.ActionNotificationOpened == intent.Action) {
//                Application.IsShowTip = false;
//                Intent i = new Intent (context, typeof (Shared.BaseActivity));//Intent intent=new Intent( 起始组件对象 , 目标 Service.class);
//                i.PutExtras (bundle);
//                i.SetFlags (ActivityFlags.NewTask);
//                context.StartActivity (i);
//            } else {
//            }
//        }
//    }
//}
Crabtree/ON/Properties/AndroidManifest.xml
@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hdl.crabtreenew" android:versionName="2.504021" android:versionCode="202004021">
    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="26" />
    <!-- Required  一些系统要求的权限,此处是极光推送需求的权限,如访问网络等-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hdl.crabtreenew" android:versionName="2.504142" android:versionCode="202004142">
    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="28" />
    <!-- 在安卓P版本之后,必须要授予FOREGROUND_SERVICE权限,才能够使用前台服务 -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <!-- Required  一些系统要求的权限,此处是极光推送需求的权限,如访问网络等
    <permission android:name="com.hdl.crabtreenew.permission.JPUSH_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="com.hdl.crabtreenew.permission.JPUSH_MESSAGE" />
    <uses-permission android:name="com.hdl.crabtreenew.permission.JPUSH_MESSAGE" /> -->
    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
@@ -74,7 +76,7 @@
    <uses-feature android:name="android.hardware.wifi" android:required="false" />
    <uses-feature android:name="android.hardware.bluetooth" android:required="false" />
    <application android:allowBackup="true" android:icon="@drawable/Icon" android:largeHeap="true" android:label="Crabtree-ON">
        <activity android:name="com.videogo.UiKitActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
        <!-- <activity android:name="com.videogo.UiKitActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
        <activity android:name="com.videogo.LoginSelectActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
        <activity android:name="com.videogo.main.EzvizWebViewActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
        <activity android:name="com.videogo.remoteplayback.list.PlayBackListActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="nosensor" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
@@ -104,51 +106,10 @@
                <action android:name="com.videogo.action.OAUTH_SUCCESS_ACTION" />
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>
        </receiver> -->
        <!-- 自动更新 -->
        <provider android:name="android.support.v4.content.FileProvider" android:authorities="com.hdl.crabtreenew.fileProvider" android:grantUriPermissions="true" android:exported="false">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />
        </provider>
        <activity android:name="cn.jpush.android.ui.PushActivity" android:configChanges="orientation|keyboardHidden" android:theme="@android:style/Theme.NoTitleBar" android:exported="false">
            <intent-filter>
                <action android:name="cn.jpush.android.ui.PushActivity" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="com.hdl.crabtreenew" />
            </intent-filter>
        </activity>
        <service android:name="cn.jpush.android.service.PushService" android:process=":mult">
            <intent-filter>
                <action android:name="cn.jpush.android.intent.REGISTER" />
                <action android:name="cn.jpush.android.intent.REPORT" />
                <action android:name="cn.jpush.android.intent.PushService" />
                <action android:name="cn.jpush.android.intent.PUSH_TIME" />
            </intent-filter>
        </service>
        <service android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true">
            <intent-filter>
                <action android:name="cn.jpush.android.intent.DaemonService" />
                <category android:name="com.hdl.crabtreenew" />
            </intent-filter>
        </service>
        <receiver android:name="cn.jpush.android.service.PushReceiver" android:enabled="true">
            <intent-filter android:priority="1000">
                <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
                <category android:name="com.hdl.crabtreenew" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.USER_PRESENT" />
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
            <!-- Optional -->
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED" />
                <action android:name="android.intent.action.PACKAGE_REMOVED" />
                <data android:scheme="package" />
            </intent-filter>
        </receiver>
        <activity android:name="cn.jpush.android.ui.PopWinActivity" android:exported="false" />
        <receiver android:name="cn.jpush.android.service.AlarmReceiver" android:exported="false" />
        <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default" />
        <meta-data android:name="JPUSH_APPKEY" android:value="bcb35a1721fb9edfe9756329" />
    </application>
</manifest>
Crabtree/SmartHome.sln
@@ -13,10 +13,6 @@
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ON.Ios", "ON.Ios\ON.Ios.csproj", "{1D83BF28-BA88-4152-BA41-D7EFE90A5437}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared.IOS", "Shared.IOS\Shared.IOS.csproj", "{0048AB87-2130-4437-8F01-8CADAB787004}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared.Droid", "Shared.Droid\Shared.Droid.csproj", "{B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|iPhoneSimulator = Debug|iPhoneSimulator
@@ -87,30 +83,6 @@
        {1D83BF28-BA88-4152-BA41-D7EFE90A5437}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
        {1D83BF28-BA88-4152-BA41-D7EFE90A5437}.Release|Any CPU.ActiveCfg = Release|iPhone
        {1D83BF28-BA88-4152-BA41-D7EFE90A5437}.Release|Any CPU.Build.0 = Release|iPhone
        {0048AB87-2130-4437-8F01-8CADAB787004}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
        {0048AB87-2130-4437-8F01-8CADAB787004}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
        {0048AB87-2130-4437-8F01-8CADAB787004}.Release|iPhone.ActiveCfg = Release|Any CPU
        {0048AB87-2130-4437-8F01-8CADAB787004}.Release|iPhone.Build.0 = Release|Any CPU
        {0048AB87-2130-4437-8F01-8CADAB787004}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
        {0048AB87-2130-4437-8F01-8CADAB787004}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
        {0048AB87-2130-4437-8F01-8CADAB787004}.Debug|iPhone.ActiveCfg = Debug|Any CPU
        {0048AB87-2130-4437-8F01-8CADAB787004}.Debug|iPhone.Build.0 = Debug|Any CPU
        {0048AB87-2130-4437-8F01-8CADAB787004}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {0048AB87-2130-4437-8F01-8CADAB787004}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {0048AB87-2130-4437-8F01-8CADAB787004}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {0048AB87-2130-4437-8F01-8CADAB787004}.Release|Any CPU.Build.0 = Release|Any CPU
        {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
        {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
        {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Release|iPhone.ActiveCfg = Release|Any CPU
        {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Release|iPhone.Build.0 = Release|Any CPU
        {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
        {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
        {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
        {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Debug|iPhone.Build.0 = Debug|Any CPU
        {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(MonoDevelopProperties) = preSolution
        Policies = $0
Crabtree/SmartHome/HDL/Operation/.DS_Store
Binary files differ
Crabtree/SmartHome/HDL/Operation/Device/Room.cs
@@ -25,6 +25,8 @@
            GetRoomByFilePath (roomFilePath);
        }
        // 房间命名规则 typeof (Room).Name + "_" + etNameBox.Text.Trim ();
        /// <summary>
        /// 根据房间路径恢复房间对象
@@ -84,6 +86,12 @@
                        break;
                    }
                }
                //if( IO.FileUtils.ReadFiles ().FindAll ((obj) => obj.Split ('_').Length == 5 && obj.Split ('_') [0] == "Equipment" && obj.Split ('_') [1] == DeviceType.SuperWireless.ToString ()).Count > 0) {
                //    UserConfig.Instance.HideDeviceTypes.Remove (SimpleControl.R.MyInternationalizationString.SuperWireless);
                //    UserConfig.Instance.HideDeviceTypes.Remove (SimpleControl.R.MyInternationalizationString.Sonos);
                //    UserConfig.Instance.SaveUserConfig ();
                //}
                return nowRoom;
            } catch {
                return null;
@@ -159,11 +167,14 @@
            } else if (deviceType == DeviceType.LightSwitch.ToString ()){
                var common = Newtonsoft.Json.JsonConvert.DeserializeObject<LightSwitch> (jsonInfo);
                room.DeviceList.Add (common);
            } else if (deviceType == DeviceType.LightMixSwitch.ToString () ){
                var common = Newtonsoft.Json.JsonConvert.DeserializeObject<LightMixSwitch> (jsonInfo);
            }
            else if (deviceType == DeviceType.LogicModule.ToString())
            {
                var common = Newtonsoft.Json.JsonConvert.DeserializeObject<LogicModule>(jsonInfo);
                room.DeviceList.Add (common);
            } else if ( deviceType == DeviceType.LightEnergySocket.ToString ()) {
                var common = Newtonsoft.Json.JsonConvert.DeserializeObject<LightEnergySocket> (jsonInfo);
            }
            else if (deviceType == DeviceType.LightMixSwitch.ToString () ){
                var common = Newtonsoft.Json.JsonConvert.DeserializeObject<LightMixSwitch> (jsonInfo);
                room.DeviceList.Add (common);
            } else if (deviceType == DeviceType.LightEnergySwitch.ToString ()) {
                var common = Newtonsoft.Json.JsonConvert.DeserializeObject<LightEnergySwitch> (jsonInfo);
@@ -211,6 +222,15 @@
            } else if (deviceType == DeviceType.FreshAir.ToString ()) {
                room.DeviceList.Add (Newtonsoft.Json.JsonConvert.DeserializeObject<FreshAir> (jsonInfo));
            } 
            //else if (deviceType == DeviceType.Thermostat.ToString ()) {
            //    room.DeviceList.Add (Newtonsoft.Json.JsonConvert.DeserializeObject<Thermostat> (jsonInfo));
            //}
            //else if (deviceType == DeviceType.ACMerrill.ToString ()) {//2020-03-10 新增美林空调系统支持
            //    room.DeviceList.Add (Newtonsoft.Json.JsonConvert.DeserializeObject<ACMerrill> (jsonInfo));
            //}
            //else if (deviceType == DeviceType.DoorLockRelay.ToString ()) { //屏蔽继电器门锁
            //    room.DeviceList.Add (Newtonsoft.Json.JsonConvert.DeserializeObject<LightDoorLock> (jsonInfo));
            //}
            for (int i = UserConfig.Instance.HideDeviceTypes.Count - 1; i >= 0; i--) {
                var hideType = UserConfig.Instance.HideDeviceTypes [i];
@@ -228,7 +248,10 @@
        /// <summary>
        /// 房间名
        /// </summary>
        public string Name { get; set; }
        public string Name {
            get;
            set;
        }
        public string RoomFilePath {
            get {
@@ -238,42 +261,7 @@
            }
        }
        /// <summary>
        /// 不选择到房间时候的背景图
        /// </summary>
        public string UnSelectedBackgroundImage {
            get;
            set;
        }
        /// <summary>
        /// 选择到房间的时候背景图
        /// </summary>
        public string SelectedBackgroundImage {
            get;
            set;
        }
        /// <summary>
        /// 不选择到房间下拉列表时候的背景图
        /// </summary>
        public string UnSelectedListBackgroundImage {
            get;
            set;
        }
        /// <summary>
        /// 选择到房间的下拉列表时候背景图
        /// </summary>
        public string SelectedListBackgroundImage {
            get;
            set;
        }
        /// <summary>
        /// 图标
        /// </summary>
        public string IconPath = "DefaultRoomIcon.png";
        /// <summary>
        /// 房间背景
        /// </summary>
@@ -350,6 +338,9 @@
            {
                roomFilePathList = new List<string> ();
            }
            if (roomFilePathList.Contains (roomFilePath)) return;
            roomFilePathList.Add (roomFilePath);
            //var sssddsa = IO.FileUtils.ReadFiles ().FindAll ((obj) => obj.Contains ("Room_"));
@@ -427,26 +418,16 @@
            Save (newRoomFilePath);
        }
        /// <summary>
        /// 所有的房间列表路径
        /// </summary>
        /// <value>The room file path list.</value>
        public static System.Collections.Generic.List<string> FilePathList {
            get {
                var roomBytes = IO.FileUtils.ReadFile (roomListFilePath);
                string roombyteString = System.Text.Encoding.UTF8.GetString (roomBytes);
                var ddds = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<string>> (roombyteString);
                if (ddds == null)
                    ddds = new List<string> ();
                if (!ddds.Contains (FavoriteRoom)) {
                    ddds.Add (FavoriteRoom);
                    if (!IO.FileUtils.Exists (FavoriteRoom)) {
                        //默认添加对应的房间
                        new Room () { Name = "" }.Save (FavoriteRoom);
                    }
                    IO.FileUtils.WriteFileByBytes (roomListFilePath, System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (ddds)));
                }
                return ddds;
                var rommBytes = IO.FileUtils.ReadFile (roomListFilePath);
                string rommbyteString = System.Text.Encoding.UTF8.GetString (rommBytes);
                return Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<string>> (rommbyteString);
            }
        }
@@ -456,6 +437,7 @@
        public static void InitAllRoom ()
        {
            Lists.Clear ();
            try {
            if (null == Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<string>> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (roomListFilePath)))) {
                //初始化房间列表
                Shared.IO.FileUtils.WriteFileByBytes (roomListFilePath, System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (new System.Collections.Generic.List<string> ())));
@@ -467,9 +449,7 @@
                    //默认添加对应的房间
                    new Room () { Name = "" }.Save (FavoriteRoom);
                }
                IO.FileUtils.WriteFileByBytes (roomListFilePath, System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (roomFilePathList)));
            }
            foreach (var roomFilePath in roomFilePathList) {
@@ -492,7 +472,14 @@
                    }
                }
            }
            } catch {
                Utlis.WriteLine ("解析房间列表异常");
        }
        }
        public void SaveLightScene (string roomFilePath, string SceneRemark, Scene scene)
        {
Crabtree/SmartHome/HDL/Operation/UserConfig.cs
@@ -28,7 +28,7 @@
                            instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Sensor);
                            instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Environmental);
                            instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.MusicModel);
                            instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.UniversalDevice);
                            //instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.UniversalDevice);
                        } else {
                            instance = temp;
                        }
Crabtree/SmartHome/HDL/Operation/Utlis.cs
@@ -45,7 +45,7 @@
        public static void WriteLine (object mes)
        {
#if DEBUG
            Utlis.WriteLine (mes);
            System.Console.WriteLine (mes);
#endif
        }
Crabtree/SmartHome/UI/SimpleControl/CommonPage.cs
@@ -2174,6 +2174,7 @@
                            IO.FileUtils.WriteFileByBytes (Scene.GlobalSceneFilePath, CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (sceneFileList)));
                        }
                    }
                    //Utlis.WriteLine ("接收"+path);
                    FileUtils.WriteFileByInputStream (path, inputStream);
                    Common common = Newtonsoft.Json.JsonConvert.DeserializeObject<Common> (CommonPage.MyEncodingUTF8.GetString (IO.FileUtils.ReadFile (path)));
                    if (common.DeviceTextID == R.MyInternationalizationString.ElectricalControl) {
Crabtree/SmartHome/UI/SimpleControl/EquipmentPublicClass.cs
@@ -153,6 +153,8 @@
                                if (UserConfig.Instance.CheckHomeGateways ()) {
                                    if (!string.IsNullOrEmpty (UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId)) {
                                        // 5.1能远程,显示CloudUnlink状态,IsRemote设为true开始远程
                                        MainPage.AddTip ("Starting remote connection mode...");
                                        Utlis.ShowAppLinkStatus (AppLinkStatus.CloudUnlink);
                                        CommonPage.IsRemote = true;
                                        SmartHome.MqttCommon.IsGatewayOnline = false;
Crabtree/SmartHome/UI/SimpleControl/MainPage.cs
@@ -37,7 +37,7 @@
        //public static Button LogoButton = new Button ();
        public static string RequestVersion = "20200402";
        public static string RequestVersion = "20200414";
        public static UserInfo LoginUser;
        /// <summary>
        /// 是否是管理员权限(变更了,成员的时候,这个也为ture。为什么会声明这样变量,因为有些接口必须使用原来的Token)
@@ -166,11 +166,13 @@
                    Gravity = Gravity.Center,
                    Width = Application.GetRealWidth (560),
                    Height = Application.GetRealHeight (126),
                    BackgroundColor = SkinStyle.Current.AddTipButtonColor,
                    //BackgroundColor = SkinStyle.Current.AddTipButtonColor,
                    BackgroundColor = SkinStyle.Current.MainColor,
                    Radius = 10,
                    IsMoreLines = true,
                    Text = tip,
                    TextSize = 16,
                    TextColor = 0xFF000000
                };
                MainFrameLayout.AddChidren (button);
                button.MouseUpEventHandler += (sender, e) => {
Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
@@ -45,7 +45,7 @@
        static MqttCommon ()
        {
            InitMqtt ();
            InitCheckGateway ();
            //InitCheckGateway ();
        }
        /// <summary>
@@ -239,6 +239,9 @@
                        if (RemoteMqttClient.ConnectedHandler == null) {
                            RemoteMqttClient.UseConnectedHandler (async (e) => {
                                IfNeedReadAllDeviceStatus = true;
                            mCheckGatewayTime = DateTime.Now;
                            CheckGatewayCount = 0;
                            bNeedStartTip = true;
                                Utlis.WriteLine ($"============>Mqtt远程连接成功");
                                if (CommonPage.IsRemote) {
@@ -254,6 +257,8 @@
                                        }
                                        MainPage.AddTip ("Remote failed,gateway offline");
                                    } else {
                                    //Remote Connection Succeeded
                                        //网关在线
                                        //重新一次所有设备状态
@@ -261,6 +266,10 @@
                                        Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus ();
                                        //
                                        MqttRemoteSend (new byte [] { 0 }, 3);
                                    if (CommonPage.IsRemote) {
                                        MainPage.AddTip (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.LinkSuccess));
                                    }
                                    }
                                    //if (CurRemoteMACInfo.isValid == "InValid") {
@@ -275,6 +284,8 @@
                        }
                        #endregion
                    //}
                    //正在获取连接参数..."
                    ShowStartTip ();
                        mqttRequestParToken = MainPage.LoginUser.LoginTokenString;
                        //--第一步:获取mqtt链接参数
@@ -307,8 +318,12 @@
                                        Utlis.WriteLine ("============>Mqtt 取消连接,当前住宅没绑定网关");
                                    }
                            } else {
                                Utlis.WriteLine ("============>Mqtt GetGatewayPagger 失败");
                                }
                        } else {
                            Utlis.WriteLine ("============>Mqtt GetInfo 失败");
                            }
                        } else {
                            //如果是分享过来的住宅 走下面流程
@@ -349,6 +364,9 @@
        {
            if (CurRemoteMACInfo != null && mMqttInfo != null) {
                MainPage.AddTip ("Successfully obtained parameters, starting to connect...");
                var url = mMqttInfo.connEmqDomainPort;
                var clientId = mMqttInfo.connEmqClientId;
                var username = mMqttInfo.connEmqUserName;
@@ -375,6 +393,27 @@
            }
        }
//        571=Starting remote connection mode...
//572=Getting remote connection parameters...
//573=Successfully obtained parameters, starting to connect...
        /// <summary>
        /// 从开始到连接成功,只提示1次
        /// </summary>
        static bool bNeedStartTip = true;
        /// <summary>
        /// 正在获取连接参数...
        /// </summary>
        static void ShowStartTip ()
        {
            if (bNeedStartTip) {
                bNeedStartTip = false;
                if (CommonPage.IsRemote) {
                    MainPage.AddTip ("Getting remote connection parameters...");
                }
            }
        }
        ///// <summary>
        ///// 
@@ -638,7 +677,7 @@
                            if (CheckGatewayCount >= 3) {
                                //连续3次没回复,判定网关超时
                                if (MainPage.WiFiStatus == "CrabtreeAdd/CloudLink.png") {
                                    IsGatewayOnline = false;
                                    //IsGatewayOnline = false;
                                    Utlis.ShowAppLinkStatus (AppLinkStatus.CloudOffline);
                                    MainPage.AddTip ("Gateway offline!");
                                }
@@ -671,7 +710,6 @@
        static void ReceiveCheckGatewayTopic () {
            //Utlis.WriteLine ("============>Mqtt CheckGateway网关回复");
            SetGatewayOnlineResetCheck ();
            //旧网关方法
Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToLight.cs
@@ -92,7 +92,7 @@
                    if (light.Type == DeviceType.LightDimming || light.Type == DeviceType.LightMixDimming || light.Type == DeviceType.LightDALI) {
                        if ((light as LightDimming).CurrentBrightness > 0)
                            brighingCount++;
                    } else if (light.Type == DeviceType.LightSwitch || light.Type == DeviceType.LightMixSwitch)
                    } else if (light.Type == DeviceType.LightSwitch || light.Type == DeviceType.LightMixSwitch || light.Type == DeviceType.LightEnergySwitch)
                        if ((light as LightSwitch).CurrentBrightness == 100)
                            brighingCount++;
                    if (light.Type == DeviceType.LightRGB)
Crabtree/SmartHome/UI/SimpleControl/Phone/Room/UserRoom.cs
@@ -2049,14 +2049,14 @@
                            };
                            DeviceRowView.AddChidren (tempSwitch);
                            if (udDevice.ActionType == 0) {
                                tempSwitch.Text = udDevice.ON_Text;
                                //tempSwitch.TextID = R.MyInternationalizationString.ON;
                                //tempSwitch.Text = udDevice.ON_Text;
                                tempSwitch.TextID = R.MyInternationalizationString.ON;
                            } else if (udDevice.ActionType == 1) {
                                tempSwitch.Text = udDevice.OFF_Text;
                                //tempSwitch.TextID = R.MyInternationalizationString.OFF;
                                //tempSwitch.Text = udDevice.OFF_Text;
                                tempSwitch.TextID = R.MyInternationalizationString.OFF;
                            } else if (udDevice.ActionType == 2) {
                                tempSwitch.Text = udDevice.OFF_Text;
                                //tempSwitch.TextID = R.MyInternationalizationString.OFF;
                                //tempSwitch.Text = udDevice.OFF_Text;
                                tempSwitch.TextID = R.MyInternationalizationString.OFF;
                                Button tempON = new Button () {
                                    Width = Application.GetRealWidth (110),
@@ -2082,6 +2082,7 @@
                                    DeviceRowView.BorderColor = SkinStyle.Current.SelectedColor;
                                    tempON.BorderColor = SkinStyle.Current.SelectedColor;
                                };
                            }
                                tempSwitch.MouseUpEventHandler += (sender3, e3) => {
                                    if (udDevice.UniversalType == 0xE01C) {
                                        if (udDevice.ActionType == 0) {
@@ -2100,7 +2101,7 @@
                                    DeviceRowView.BorderColor = SkinStyle.Current.SelectedColor;
                                    tempSwitch.BorderColor = SkinStyle.Current.SelectedColor;
                                };
                            }
                            #endregion
                        } else if (devcieCommon.Type.ToString ().Contains ("Sensor")) {
                            #region 传感器
Crabtree/SmartHome/UI/SimpleControl/Phone/UniversalDevice/UserUniversalPage.cs
@@ -164,9 +164,11 @@
                            Control.ControlBytesSend (Command.SetCommonSwitch, udDevice.SubnetID, udDevice.DeviceID, new byte [] { udDevice.SendBytes [0], 255 },SendCount.Zero);
                        }
                        lightView.BorderColor = SkinStyle.Current.Transparent;
                        tempON.BorderColor = SkinStyle.Current.BorderColor;
                    };
                    tempON.MouseDownEventHandler += (sende3r, e3) => {
                        lightView.BorderColor = SkinStyle.Current.SelectedColor;
                        tempON.BorderColor = SkinStyle.Current.SelectedColor;
                    };
                }
                tempSiwtch.MouseUpEventHandler += (sender3, e3) => {
@@ -180,9 +182,11 @@
                        }
                    }
                    lightView.BorderColor = SkinStyle.Current.Transparent;
                    tempSiwtch.BorderColor = SkinStyle.Current.BorderColor;
                };
                tempSiwtch.MouseDownEventHandler += (sende3r, e3) => {
                    lightView.BorderColor = SkinStyle.Current.SelectedColor;
                    tempSiwtch.BorderColor = SkinStyle.Current.SelectedColor;
                };
            }
        }
Crabtree/SmartHome/UI/SimpleControl/Phone/User/UserSettingView.cs
@@ -211,39 +211,40 @@
            #region ---数据接收---
            //if (MainPage.LoginUser.AccountType == 2 || MainPage.LoginUser.AccountString == @"464027401@qq.com") {
            //    var DataReceptionView = new FrameLayout () {
            //        Width = Application.GetRealWidth (640),
            //        Height = Application.GetRealHeight (100),
            //        BackgroundColor = SkinStyle.Current.ViewColor
            //    };
            //    UserMiddle.SettingView.AddChidren (DataReceptionView);
            //    var btnDataReceptionIcon = new Button () {
            //        X = Application.GetRealWidth (30),
            //        Gravity = Gravity.CenterVertical,
            //        Width = Application.GetRealWidth (75),
            //        Height = Application.GetRealHeight (75),
            //        UnSelectedImagePath = "AccountSettings/DataShared.png"
            //    };
            //    DataReceptionView.AddChidren (btnDataReceptionIcon);
            //    var btnDataReceptionTitle = new Button () {
            //        X = Application.GetRealWidth (125),
            //        TextAlignment = TextAlignment.CenterLeft,
            //        TextID = R.MyInternationalizationString.DataReception,
            //        TextColor = SkinStyle.Current.TextColor1,
            //    };
            //    DataReceptionView.AddChidren (btnDataReceptionTitle);
            //    EventHandler<MouseEventArgs> DataReceptionEventHandler = (sender, e) => {
            //        GoData ();
            //    };
            //    DataReceptionView.MouseUpEventHandler += DataReceptionEventHandler;
            //    btnDataReceptionIcon.MouseUpEventHandler += DataReceptionEventHandler;
            //    btnDataReceptionTitle.MouseUpEventHandler += DataReceptionEventHandler;
            //    Button btnNull3 = new Button () {
            //        BackgroundColor = SkinStyle.Current.MainColor,
            //        Height = Application.GetRealHeight (5)
            //    };
            //    UserMiddle.SettingView.AddChidren (btnNull3);
            //}
            if (true) {
                var DataReceptionView = new FrameLayout () {
                    Width = Application.GetRealWidth (640),
                    Height = Application.GetRealHeight (100),
                    BackgroundColor = SkinStyle.Current.ViewColor
                };
                UserMiddle.SettingView.AddChidren (DataReceptionView);
                var btnDataReceptionIcon = new Button () {
                    X = Application.GetRealWidth (30),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetRealWidth (75),
                    Height = Application.GetRealHeight (75),
                    UnSelectedImagePath = "AccountSettings/DataShared.png"
                };
                DataReceptionView.AddChidren (btnDataReceptionIcon);
                var btnDataReceptionTitle = new Button () {
                    X = Application.GetRealWidth (125),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextID = R.MyInternationalizationString.DataReception,
                    TextColor = SkinStyle.Current.TextColor1,
                };
                DataReceptionView.AddChidren (btnDataReceptionTitle);
                EventHandler<MouseEventArgs> DataReceptionEventHandler = (sender, e) => {
                    GoData ();
                };
                DataReceptionView.MouseUpEventHandler += DataReceptionEventHandler;
                btnDataReceptionIcon.MouseUpEventHandler += DataReceptionEventHandler;
                btnDataReceptionTitle.MouseUpEventHandler += DataReceptionEventHandler;
                Button btnNull3 = new Button () {
                    BackgroundColor = SkinStyle.Current.MainColor,
                    Height = Application.GetRealHeight (5)
                };
                UserMiddle.SettingView.AddChidren (btnNull3);
            }
            #endregion
Crabtree/SmartHome/dll/Android/Shared.Droid.HDLWidget.dll
Binary files differ
Crabtree/SmartHome/dll/Android/Shared.Droid.dll
Binary files differ
Crabtree/SmartHome/dll/IOS/Shared.IOS.TBL.dll
Binary files differ
Crabtree/SmartHome/dll/IOS/Shared.IOS.dll
Binary files differ