JLChen
2021-03-12 9c8a5408b707322bc195b5dbce07aa30bd539cc7
ios蓝牙
1个文件已添加
5个文件已修改
1 文件已重命名
569 ■■■■■ 已修改文件
HDL_ON/HDL_ON.projitems 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothAndroidLogic.cs 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothIOSLogic.cs 493 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/HDL_ON.projitems
@@ -358,7 +358,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\ClothesHangerSetTimePage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmSensor\ArmSensorHistroyPaging.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\AC\AcControlPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlAndroidBluetoothLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlBluetoothAndroidLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlCloudReceiveLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlWifiLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Controls\CompoundControls\ProgressRowBar.cs" />
@@ -367,6 +367,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection2Page.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection4Page.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddThirdPartyDeviceMenuListPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlBluetoothIOSLogic.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="$(MSBuildThisFileDirectory)UI\" />
HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothAndroidLogic.cs
HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothIOSLogic.cs
New file
@@ -0,0 +1,493 @@
using System;
using System.Collections.Generic;
namespace HDL_ON.Stan
{
#if __IOS__
    /// <summary>
    /// IOS蓝牙的逻辑
    /// </summary>
    public class HdlBluetoothLogic
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 安卓蓝牙的逻辑
        /// </summary>
        private static HdlBluetoothLogic m_Current = null;
        /// <summary>
        /// 安卓蓝牙的逻辑
        /// </summary>
        public static HdlBluetoothLogic Current
        {
            get
            {
                if (m_Current == null)
                {
                    m_Current = new HdlBluetoothLogic();
                }
                return m_Current;
            }
        }
        /// <summary>
        /// 我也不知道这是什么东西
        /// </summary>
        private HdlBlufi.HdlBluWi hdlBluWiShare;
        /// <summary>
        /// 我也不知道这是什么东西
        /// </summary>
        private HdlBlufi.BlufiClient blufiClient;
        /// <summary>
        /// 接收事件
        /// </summary>
        private Action<string> ReceiveEvent = null;
        /// <summary>
        /// 发送状态(0:发送失败 1:发送成功)
        /// </summary>
        private int sendStatuValue = -1;
        /// <summary>
        /// 蓝牙是否打开
        /// </summary>
        private bool IsBlufiOpen = false;
        #endregion
        #region ■ 初始化___________________________
        /// <summary>
        /// 初始化
        /// </summary>
        private bool InitHdlBlufi()
        {
            if (hdlBluWiShare != null) { return true; }
            try
            {
                this.hdlBluWiShare = HdlBlufi.HdlBluWi.Share();
                this.blufiClient = new HdlBlufi.BlufiClient();
                blufiClient.CentralManagerDelete = new BlueCBCentralManagerDelegate();
                //添加回调事件
                ((BlueCBCentralManagerDelegate)blufiClient.CentralManagerDelete).StateEvent += (div, data) =>
                {
                    //-1:异常 1:正常
                    if (div == StatuEnum.A异常)
                    {
                        //蓝牙没有打开
                        this.IsBlufiOpen = false;
                    }
                    else if (div == StatuEnum.A正常)
                    {
                        //蓝牙打开着
                        this.IsBlufiOpen = true;
                    }
                };
                blufiClient.BlufiDelegate = new BlueWifiDelegate();
                return true;
            }
            catch { return false; }
        }
        #endregion
        #region ■ 蓝牙所需功能检测___________________
        /// <summary>
        /// 检测是否能够搜索蓝牙(内部会弹出Msg框,因为内部需要检测系统权限,所以参数采用回调的方式)
        /// </summary>
        /// <param name="resultEvent">检测结果事件</param>
        public void CheckCanScanBluetooth(Action<bool> resultEvent)
        {
            try 
            {
                //先初始化
                if (this.InitHdlBlufi() == false)
                {
                    resultEvent?.Invoke(false);
                    //请打开蓝牙
                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Shared.Language.StringByID(StringId.PleaseTurnOnBluetooth));
                    return;
                }
                if (this.IsBlufiOpen == true)
                {
                    //因为是一直监听着,所以如果是true,直接返回
                    resultEvent?.Invoke(this.IsBlufiOpen);
                    return;
                }
                HdlThreadLogic.Current.RunThread(() =>
                {
                    //ios需要监听才能够获得蓝牙的状态
                    System.Threading.Thread.Sleep(500);
                    if (this.IsBlufiOpen == false)
                    {
                        //请打开蓝牙
                        HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Shared.Language.StringByID(StringId.PleaseTurnOnBluetooth));
                    }
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                        resultEvent?.Invoke(this.IsBlufiOpen);
                    });
                }, ShowErrorMode.NO);
            }
            catch
            {
                resultEvent?.Invoke(false);
                //请打开蓝牙
                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Shared.Language.StringByID(StringId.PleaseTurnOnBluetooth));
            }
        }
        #endregion
        #region ■ 蓝牙扫描___________________________
        /// <summary>
        /// 搜索蓝牙
        /// </summary>
        /// <param name="waitTime">搜索时间(秒)</param>
        /// <param name="FinishEvent">搜索结束的事件</param>
        public void ScanBluetooth(int waitTime, Action<List<BluetoothInfo>> FinishEvent)
        {
            //再次检测是否能够搜索蓝牙
            this.CheckCanScanBluetooth((result) =>
            {
                if (result == true)
                {
                    HdlThreadLogic.Current.RunThread(() =>
                    {
                        //开始搜索蓝牙
                        this.DoScanBluetooth(waitTime, FinishEvent);
                    });
                }
            });
        }
        /// <summary>
        /// 开始搜索蓝牙
        /// </summary>
        /// <param name="waitTime">搜索时间(秒)</param>
        /// <param name="FinishEvent">搜索结束的事件</param>
        private void DoScanBluetooth(int waitTime, Action<List<BluetoothInfo>> FinishEvent)
        {
            //蓝牙列表
            var listData = new List<BluetoothInfo>();
            //重复检测
            var listCheck = new List<string>();
            //实现蓝牙接收事件
            var ReceiveBlufiDeviceEvent = new HdlBlufi.FBYBleDeviceBackBlock((arg0) =>
            {
                var address = arg0.Uuid.ToString();
                if (listCheck.Contains(address) == false)
                {
                    listCheck.Add(address);
                    var data = new BluetoothInfo();
                    data.Address = address;
                    data.Name = arg0.Name == null ? string.Empty : arg0.Name;
                    listData.Add(data);
                }
            });
            HdlThreadLogic.Current.RunMain(() =>
            {
                //开启蓝牙搜索
                this.hdlBluWiShare.StartScan(ReceiveBlufiDeviceEvent);
            }, ShowErrorMode.NO);
            System.Threading.Thread.Sleep(waitTime * 1000);
            HdlThreadLogic.Current.RunMain(() =>
            {
                //关闭蓝牙搜索
                this.hdlBluWiShare.StopScan();
                ReceiveBlufiDeviceEvent = null;
            }, ShowErrorMode.NO);
            //回调事件
            FinishEvent?.Invoke(listData);
        }
        #endregion
        #region ■ 蓝牙链接___________________________
        /// <summary>
        /// 蓝牙链接(false:连接失败 true:连接成功)
        /// </summary>
        /// <param name="bluetooth">需要链接的蓝牙对象</param>
        /// <param name="connectEvent">因为需要对方反馈,所以使用回调(链接结果 false:连接失败 true:连接成功)</param>
        public void ContectBluetooth(BluetoothInfo bluetooth, Action<bool> connectEvent)
        {
            try
            {
                //添加事件
                ((BlueWifiDelegate)blufiClient.BlufiDelegate).StateEvent += (div, data) =>
                {
                    //-1:异常 1:正常 2:发送数据成功 3:发送数据失败
                    if (div == StatuEnum.A异常)
                    {
                        //关闭链接
                        this.DisContectBluetooth();
                        connectEvent?.Invoke(false);
                        //只通知一次
                        connectEvent = null;
                    }
                    else if (div == StatuEnum.A正常)
                    {
                        //链接建立成功
                        connectEvent?.Invoke(true);
                        //只通知一次
                        connectEvent = null;
                    }
                    else if (div == StatuEnum.A发送成功 || div == StatuEnum.A发送失败)
                    {
                        sendStatuValue = div == StatuEnum.A发送成功 ? 1 : 0;
                    }
                    else if (div == StatuEnum.A蓝牙反馈)
                    {
                        //蓝牙返回的结果
                        this.ReceiveEvent?.Invoke(data);
                    }
                };
                //执行链接
                this.blufiClient.Connect(bluetooth.Address);
            }
            catch
            {
                connectEvent?.Invoke(false);
                connectEvent = null;
            }
        }
        #endregion
        #region ■ 蓝牙关闭___________________________
        /// <summary>
        ///  关闭蓝牙链接
        /// </summary>
        public void DisContectBluetooth()
        {
            HdlThreadLogic.Current.RunMain(() =>
            {
                this.blufiClient?.Close();
                this.blufiClient = null;
                this.hdlBluWiShare = null;
            }, ShowErrorMode.NO);
        }
        /// <summary>
        /// 摧毁
        /// </summary>
        public void Dispone()
        {
            //关闭蓝牙链接
            this.DisContectBluetooth();
            this.ReceiveEvent = null;
            m_Current = null;
        }
        #endregion
        #region ■ 发送数据___________________________
        /// <summary>
        /// 发送数据给蓝牙
        /// </summary>
        /// <param name="i_data">发送的数据</param>
        /// <param name="waiTime">等待时间(秒),如果设置为0,则只要发送不出现异常,直接判定为成功</param>
        public bool SendData(string i_data, int waiTime = 0)
        {
            if (this.blufiClient == null)
            {
                return false;
            }
            try
            {
                this.sendStatuValue = -1;
                if (waiTime == 0)
                {
                    //发送数据
                    var data = new Foundation.NSData();
                    data = i_data;
                    blufiClient.PostCustomData(data);
                    //直接返回成功
                    return true;
                }
                else
                {
                    //或许他用的是线程来调用
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                        //发送数据
                        var data = new Foundation.NSData();
                        data = i_data;
                        blufiClient.PostCustomData(data);
                    }, ShowErrorMode.NO);
                }
                waiTime *= 5;
                while (this.sendStatuValue == -1 && waiTime > 0)
                {
                    System.Threading.Thread.Sleep(200);
                    waiTime--;
                }
                return this.sendStatuValue == 1;
            }
            catch { return false; }
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
        /// 添加蓝牙的接收事件
        /// </summary>
        /// <param name="i_ReceiveEvent">蓝牙接收事件</param>
        public void AddReceiveEvent(Action<string> i_ReceiveEvent)
        {
            this.ReceiveEvent = i_ReceiveEvent;
        }
        /// <summary>
        /// 移除蓝牙的接收事件
        /// </summary>
        public void RemoveReceiveEvent()
        {
            this.ReceiveEvent = null;
        }
        #endregion
        #region ■ 系统蓝牙回调_______________________
        private class BlueWifiDelegate : HdlBlufi.BlufiDelegate
        {
            /// <summary>
            /// 状态事件回调 当第一个参数为"A蓝牙反馈"时,第二个参数为蓝牙返回的信息
            /// </summary>
            public Action<StatuEnum, string> StateEvent = null;
            public override void Blufi_didNegotiateSecurity(HdlBlufi.BlufiClient client, HdlBlufi.BlufiStatusCode status)
            {
                //Console.WriteLine("Blufi_didNegotiateSecurity");
            }
            public override void Blufi_didPostCustomData(HdlBlufi.BlufiClient client, Foundation.NSData data, HdlBlufi.BlufiStatusCode status)
            {
                if (status == HdlBlufi.BlufiStatusCode.Success)
                {
                    //发送蓝牙数据成功
                    StateEvent?.Invoke(StatuEnum.A发送成功, null);
                }
                else
                {
                    //发送蓝牙数据失败
                    StateEvent?.Invoke(StatuEnum.A发送失败, null);
                }
            }
            public override void Blufi_didReceiveDeviceScanResponse(HdlBlufi.BlufiClient client, HdlBlufi.BlufiScanResponse[] scanResults, HdlBlufi.BlufiStatusCode status)
            {
                //Console.WriteLine("Blufi_didReceiveDeviceScanResponse");
            }
            public override void Blufi_didReceiveDeviceVersionResponse(HdlBlufi.BlufiClient client, HdlBlufi.BlufiVersionResponse response, HdlBlufi.BlufiStatusCode status)
            {
                //Console.WriteLine("Blufi_didReceiveDeviceVersionResponse");
            }
            public override void Blufi_didPostConfigureParams(HdlBlufi.BlufiClient client, HdlBlufi.BlufiStatusCode status)
            {
                //Console.WriteLine("Blufi_didPostConfigureParams");
            }
            public override void Blufi_didReceiveCustomData(HdlBlufi.BlufiClient client, Foundation.NSData data, HdlBlufi.BlufiStatusCode status)
            {
                //接收蓝牙发送过来的数据
                StateEvent?.Invoke(StatuEnum.A蓝牙反馈, data.ToString());
            }
            public override void Blufi_didReceiveDeviceStatusResponse(HdlBlufi.BlufiClient client, HdlBlufi.BlufiStatusResponse response, HdlBlufi.BlufiStatusCode status)
            {
                //Console.WriteLine("Blufi_didReceiveDeviceStatusResponse");
            }
            public override void Blufi_didReceiveError(HdlBlufi.BlufiClient client, nint errCode)
            {
                //Console.WriteLine("Blufi_didReceiveError");
            }
            public override void Blufi_gattPrepared(HdlBlufi.BlufiClient client, HdlBlufi.BlufiStatusCode status, CoreBluetooth.CBService service, CoreBluetooth.CBCharacteristic writeChar, CoreBluetooth.CBCharacteristic notifyChar)
            {
                if (status == HdlBlufi.BlufiStatusCode.Success)
                {
                    //蓝牙连接成功
                    StateEvent?.Invoke(StatuEnum.A正常, null);
                }
                else
                {
                    //蓝牙连接失败
                    StateEvent?.Invoke(StatuEnum.A异常, null);
                }
            }
        }
        private class BlueCBCentralManagerDelegate : CoreBluetooth.CBCentralManagerDelegate
        {
            /// <summary>
            /// 状态事件回调
            /// </summary>
            public Action<StatuEnum, string> StateEvent = null;
            public override void UpdatedState(CoreBluetooth.CBCentralManager central)
            {
                //只要没有打开蓝牙,都算异常处理
                if (central.State == CoreBluetooth.CBCentralManagerState.PoweredOn)
                {
                    StateEvent?.Invoke(StatuEnum.A正常, null);
                }
                else
                {
                    StateEvent?.Invoke(StatuEnum.A异常, null);
                }
            }
        }
        #endregion
        #region ■ 结构体_____________________________
        /// <summary>
        /// 蓝牙返回的信息
        /// </summary>
        public class BluetoothInfo
        {
            /// <summary>
            /// 名字(此名字不会null,如果它本身是null,只会是string.empty)
            /// </summary>
            public string Name = string.Empty;
            /// <summary>
            /// 地址
            /// </summary>
            public string Address = string.Empty;
        }
        /// <summary>
        /// 状态枚举
        /// </summary>
        private enum StatuEnum
        {
            A异常 = -1,
            A正常 = 1,
            A发送成功 = 2,
            A发送失败 = 3,
            A蓝牙反馈 = 4
        }
        #endregion
    }
#endif
}
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs
@@ -57,21 +57,18 @@
            var btnNext = this.AddBottomClickButton(Language.StringByID(StringId.Next));
            btnNext.ButtonClickEvent += (sender, e) =>
            {
#if __IOS__
#endif
#if __Android__
                //检测蓝牙需要的东西
                HdlAndroidBluetoothLogic.Current.CheckCanScanBluetooth((result) =>
                btnNext.CanClick = false;
                HdlBluetoothLogic.Current.CheckCanScanBluetooth((result) =>
                {
                    btnNext.CanClick = true;
                    if (result == true)
                    {
                        this.CloseForm();
                        var form = new AddMiniRemoteControlDirection2Page();
                        //wifi和密码都为空
                        form.AddForm();
                    }
                });
#endif
            };
        }
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs
@@ -62,12 +62,9 @@
            //搜索时间(秒)
            int searchTime = 5;
#if __IOS__
#endif
#if __Android__
            //安卓搜索蓝牙(特效问题,加1秒)
            this.StartSearchBluetoothOnAndriod(searchTime + 1);
#endif
            //搜索蓝牙(特效问题,加1秒)
            this.StartSearchBluetooth(searchTime + 1);
            HdlThreadLogic.Current.RunThread(() =>
            {
                //进度条特效
@@ -84,19 +81,18 @@
        #endregion
        #region ■ 安卓搜索蓝牙_______________________
        #region ■ 搜索蓝牙___________________________
#if __Android__
        /// <summary>
        /// 安卓搜索蓝牙
        /// </summary>
        /// <param name="i_searchTime">搜索时间(秒)</param>
        private void StartSearchBluetoothOnAndriod(int i_searchTime)
        private void StartSearchBluetooth(int i_searchTime)
        {
            //开始搜索蓝牙
            HdlAndroidBluetoothLogic.Current.ScanBluetooth(i_searchTime, (listBluetooth) =>
            HdlBluetoothLogic.Current.ScanBluetooth(i_searchTime, (listBluetooth) =>
            {
                var listDevice = new List<HdlAndroidBluetoothLogic.BluetoothInfo>();
                var listDevice = new List<HdlBluetoothLogic.BluetoothInfo>();
                foreach (var device in listBluetooth)
                {
                    //只有这个标识,才是红外宝
@@ -109,7 +105,7 @@
                if (listDevice.Count == 0)
                {
                    //摧毁蓝牙缓存
                    HdlAndroidBluetoothLogic.Current.Dispone();
                    HdlBluetoothLogic.Current.Dispone();
                    //显示失败界面
                    HdlThreadLogic.Current.RunMain(() =>
                    {
@@ -119,7 +115,7 @@
                else if (listDevice.Count == 1)
                {
                    //如果只检测到一个,则直接连接
                    HdlAndroidBluetoothLogic.Current.ContectBluetooth(listDevice[0], (result) =>
                    HdlBluetoothLogic.Current.ContectBluetooth(listDevice[0], (result) =>
                    {
                        if (result == true)
                        {
@@ -144,7 +140,7 @@
                    this.ShowBluetoothListView(listName, (index) =>
                    {
                        //如果只检测到一个,则直接连接
                        HdlAndroidBluetoothLogic.Current.ContectBluetooth(listDevice[index], (result) =>
                        HdlBluetoothLogic.Current.ContectBluetooth(listDevice[index], (result) =>
                        {
                            if (result == true)
                            {
@@ -161,7 +157,6 @@
                }
            });
        }
#endif
        #endregion
@@ -232,8 +227,17 @@
            var btnReSearch = this.AddBottomClickButton(Language.StringByID(StringId.ReSearch));
            btnReSearch.ButtonClickEvent += (sender, e) =>
            {
                //初始化中部信息
                this.InitMiddleFrame();
                //检测蓝牙需要的东西
                btnReSearch.CanClick = false;
                HdlBluetoothLogic.Current.CheckCanScanBluetooth((result) =>
                {
                    btnReSearch.CanClick = true;
                    if (result == true)
                    {
                        //初始化中部信息
                        this.InitMiddleFrame();
                    }
                });
            };
        }
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs
@@ -61,12 +61,9 @@
            //这个界面的背景需要白色
            bodyFrameLayout.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor;
#if __IOS__
#endif
#if __Android__
            //添加接收蓝牙反馈的事件
            HdlAndroidBluetoothLogic.Current.AddReceiveEvent(this.BluetoothReceiveEvent);
#endif
            HdlBluetoothLogic.Current.AddReceiveEvent(this.BluetoothReceiveEvent);
            //添加云端反馈事件
            HdlCloudReceiveLogic.Current.AddCloudReceiveEvent("AddMiniRemoteControlDirection4Page", this.CloudReceiveEvent);
@@ -268,14 +265,10 @@
        /// </summary>
        private void SendAccountAndPswToBluetooth()
        {
#if __IOS__
#endif
#if __Android__
            //获取发送到蓝牙的数据
            var sendData = this.GetSendToBluetoothData();
            //不等待
            HdlAndroidBluetoothLogic.Current.SendData(sendData);
#endif
            HdlBluetoothLogic.Current.SendData(sendData);
        }
        #endregion
@@ -399,11 +392,7 @@
        public override void CloseFormBefore()
        {
            //摧毁蓝牙
#if __IOS__
#endif
#if __Android__
            HdlAndroidBluetoothLogic.Current.Dispone();
#endif
            HdlBluetoothLogic.Current.Dispone();
            HdlCloudReceiveLogic.Current.RemoveCloudReceiveEvent("AddMiniRemoteControlDirection4Page");
            base.CloseFormBefore();
HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
@@ -337,9 +337,14 @@
                        == false ? StringId.Administrators : StringId.Member
            };
            userTypeView.AddChidren(btnUserTypeName);
            btnUserTypeIcon.MouseUpEventHandler += (sender, e) =>
            {
                var form = new AddThirdPartyDeviceMenuListPage();
                form.AddForm("Evoyo");
            };
            #endregion
            #region 住宅管理
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                #region ---住宅管理区域