wxr
2024-09-27 a70ecc5ff8e63921df9009fee23b6abe27f9556a
删除可视对讲,萤石类设备
5个文件已修改
11140 ■■■■ 已修改文件
HDL-ON_Android/Properties/AndroidManifest.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Resources/Resource.designer.cs 10379 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/ApiUtlis.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/HDLCommon.cs 313 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs 385 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.4.8" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202407121">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.7.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202409271">
    <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="33" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
HDL-ON_Android/Resources/Resource.designer.cs
Diff too large
HDL_ON/Common/ApiUtlis.cs
@@ -412,69 +412,8 @@
                                        {
                                            UI.UI2.PersonalCenter.PirDevice.PirSend.LcSubAccessToken = video.subAccountToken;
                                        }
                                        else if (video.interphoneType == InterphoneType.HDL.ToString())
                                        {
                                            isInterphoneType_HDL = true;
                                            DB_ResidenceData.Instance.SupportFacePass = true;
                                            DB_ResidenceData.Instance.SaveResidenceData();
                                            DB_ResidenceData.Instance.SupportFVDevice = true;
                                        }
                                        else if (video.interphoneType == InterphoneType.FREEVIEW.ToString())
                                        {
#if __IOS__
                                            try
                                            {
                                                FunctionList.List.videoIntercom.Remove(video);
                                                --i;
                                            }catch(Exception ex)
                                            {
                                                MainPage.Log("Error", $"ios 全视通异常 : {ex.StackTrace}");
                                            }
#else
                                            //为全视通可视对讲
                                            DB_ResidenceData.Instance.SupportFacePass = true;
                                            Entity.DB_ResidenceData.Instance.SupportVisitorManage = true;
                                            Entity.DB_ResidenceData.Instance.SupportFVDevice = true;
                                            isInterphoneType_FREEVIEW = true;
#endif
                                        }
                                    }
                                }
                                //======================获取Sip账号并且初始化SDK可视对讲设备列表====================
                                //如果检测线程没启动,才继续下面操作 因为App有可能刚启动马上收到推送了,然后才执行到这里
                                if (HDLLinphone.Current.CheckIncomingCallThreadIsNull())
                                {
                                    //当前住宅是HDL可视对讲类型的设备
                                    if (isInterphoneType_HDL)
                                    {
                                        //HDLLinphone可视对讲,获取Sip账号并初始化SDK
                                        HDLCallVideoInfo callVideoInfo = new HDLCallVideoInfo();
                                        callVideoInfo.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
                                        callVideoInfo.InterphoneType = InterphoneType.HDL.ToString();
                                        HDLLinphone.Current.GetHDLSipInfoAndInitSDK(callVideoInfo);
                                    }
                                    else if (isInterphoneType_FREEVIEW)
                                    {
                                        //HDLLinphone可视对讲,获取Sip账号并初始化SDK
                                        HDLCallVideoInfo callVideoInfo = new HDLCallVideoInfo();
                                        callVideoInfo.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
                                        callVideoInfo.InterphoneType = InterphoneType.FREEVIEW.ToString();
                                        HDLLinphone.Current.GetHDLSipInfoAndInitSDK(callVideoInfo);
                                    }
                                    else
                                    {
                                        Utlis.WriteLine("当前住宅不支持HDL可视对讲,退出登录所有账号");
                                        //当前住宅不支持HDL可视对讲
                                        HDLLinphone.Current.LogoutAllAccount();
                                    }
                                }
                                //======================登录全视通====================
                                if (isInterphoneType_FREEVIEW)
                                {
HDL_ON/Common/HDLCommon.cs
@@ -267,200 +267,13 @@
                    {
                        //报警推送弹窗提示
                        ShowAlarmPushMessage(jpushMessageInfo, true);
                        //萤石门锁推送
                        UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DoorLockPush(jpushMessageInfo);
                    }
                    else if (jpushMessageInfo.messageType == (PushMessageType.FLCall.ToString()))
                    {
                        if (string.IsNullOrEmpty(jpushMessageInfo.expantContent)) return;
                        ESVideoInfo eSVideoInfo = GetESOnVideoJson(jpushMessageInfo.expantContent);
                        if (eSVideoInfo == null) return;
                        if (string.IsNullOrEmpty(eSVideoInfo.uuid)) return;
                        if (eSVideoInfo.uuid.Contains(","))
                        {
                            var uuid = eSVideoInfo.uuid.Split(',');
                            eSVideoInfo.ESVideoUUID = uuid[0];
                        }
                        else
                        {
                            eSVideoInfo.ESVideoUUID = eSVideoInfo.uuid;
                        }
                        ESOnVideo.Current.ShowESvideoVideoIntercom(eSVideoInfo, InterphoneType.FLVI.ToString());
                    }
                    else if (jpushMessageInfo.messageType == PushMessageType.HDL_INTERPHONE.ToString())
                    {
                        if (string.IsNullOrEmpty(jpushMessageInfo.expantContent)) return;
                        //字段兼容问题,只能直接取值了
                        var json = Newtonsoft.Json.Linq.JObject.Parse(jpushMessageInfo.expantContent);
                        //1.视对讲厂家类型
                        string interphoneTypeEnum = json["interphoneTypeEnum"].ToString();
                        if (string.IsNullOrEmpty(interphoneTypeEnum)) return;
                        ESVideoInfo eSVideoInfo = new ESVideoInfo();// GetESOnVideoJson(jpushMessageInfo.expantContent);
                        //2.根据可视对讲厂家类型,处理不同的数据
                        if (interphoneTypeEnum == InterphoneType.IMOUVISIAL.ToString())
                        {
                            //大华乐橙
                            eSVideoInfo.callId = json["callId"].ToString();
                            //eSVideoInfo.Lc_AccessToken = UI.UI2.PersonalCenter.PirDevice.PirSend.LcSubAccessToken;//json["subAccountToken"].ToString();//
                            eSVideoInfo.Lc_AccessToken = json["subAccountToken"].ToString();//2021-05-13 目前云端还没拿到Lc_AccessToken,目前没办法正常使用
                            eSVideoInfo.Lc_DeviceId = json["deviceId"].ToString();
                            eSVideoInfo.Lc_Location = OnAppConfig.Instance.RequestHttpsHost.Contains("China") ? 0 : 1;
                            eSVideoInfo.Lc_PlayToken = json["token"].ToString();
                            //eSVideoInfo.Lc_Psk = json["cname"].ToString();
                            eSVideoInfo.Lc_Psk = json["psk"].ToString();//2021-10-15 PSK字段不能取cname
                        }
                        else if (interphoneTypeEnum == InterphoneType.EZVIZ.ToString())
                        {
                            //萤石猫眼
                            eSVideoInfo.Lc_AccessToken = json["subToken"].ToString();//"子账号token
                            eSVideoInfo.DeviceSerial = json["devSerial"].ToString();//设备序列号
                            eSVideoInfo.Lc_DeviceId = json["deviceId"].ToString();
                            eSVideoInfo.spk = json["spk"].ToString();
                            eSVideoInfo.HomeId = jpushMessageInfo.HomeId;
                            if (json.ContainsKey("msgId") && !string.IsNullOrEmpty(json["msgId"].ToString()))
                            {
                                eSVideoInfo.msgId = json["msgId"].ToString();
                            }
                            if (json.ContainsKey("currentTime") && !string.IsNullOrEmpty(json["currentTime"].ToString()))
                            {
                                eSVideoInfo.currentTime = json["currentTime"].ToString();
                            }
                        }
                        else if (interphoneTypeEnum == InterphoneType.HDL.ToString())
                        {
                            try
                            {
                                var pushTime = json["pushTime"];
                                if (pushTime == null)
                                {
                                    return;
                                }
                                if (!string.IsNullOrEmpty(pushTime.ToString()))
                                {
                                    var pushDateTime = Utlis.UnixToDateTimeMS(Convert.ToInt64(pushTime));
                                    if (pushDateTime.AddSeconds(30) < DateTime.Now)
                                    {
                                        return;
                                    }
                                }
                            }
                            catch (Exception ex) {
                                MainPage.Log("Error", $"自研可视对讲通知异常:{ex.StackTrace}");
                            }
#if __ANDROID__
                            Com.Hdl.Hdllinphonesdk.HDLLinphoneKit.Instance.MissedCallsTime = 30;
                            Com.Hdl.Hdllinphonesdk.HDLLinphoneKit.Instance.SetMediaPlayerLooping(true);
                            Com.Hdl.Hdllinphonesdk.HDLLinphoneKit.Instance.PlayRingtone();
                            new Thread(() =>
                            {
                                try
                                {
                                    DateTime dateTime = DateTime.Now;
                                    while (true)
                                    {
                                        Thread.Sleep(1000);
                                        if (!Com.Hdl.Hdllinphonesdk.HDLLinphoneKit.Instance.MediaPlayerPlayingStatus || dateTime.AddSeconds(Com.Hdl.Hdllinphonesdk.HDLLinphoneKit.Instance.MissedCallsTime) <= DateTime.Now)
                                        {
                                            break;
                                        }
                                    }
                                    Com.Hdl.Hdllinphonesdk.HDLLinphoneKit.Instance.SetMediaPlayerLooping(false);
                                }
                                catch (Exception ex)
                                {
                                    MainPage.Log("error", "自研可视对讲铃声播放异常:" + ex.Message);
                                }
                            })
                            { IsBackground = true }.Start();
                            #elif __IOS__
                            SoundPlayer.Ins.PlaySound();
                            new Thread(() => {
                                int count = 0;
                                while (true)
                                {
                                    if (SoundPlayer.Ins.player == null)
                                    {
                                        break;
                                    }
                                    if (!SoundPlayer.Ins.player.Playing)
                                    {
                                        break;
                                    }
                                    System.Threading.Thread.Sleep(1000);
                                    count++;
                                    MainPage.Log("linphone 呼叫计时:" + count);
                                    if (count > 29)
                                    {
                                        SoundPlayer.Ins.StopSound();
                                        Application.RunOnMainThread(() => {
                                            try
                                            {
                                                HDLLinPhoneSDK.Instance().HideIntercomeVC();
                                            }catch(Exception ex)
                                            {
                                                MainPage.Log("error", "ios linphone 呼叫超时关闭界面异常:" + ex.Message);
                                            }
                                        });
                                        break;
                                    }
                                }
                            })
                            { IsBackground = true }.Start();
                            #endif
                            MainPage.Log("接收到推送: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();
                            //打开呼叫页面
                            HDLLinphone.Current.ShowESVideoIntercom(eSVideoInfo, InterphoneType.HDL.ToString(), jpushMessageInfo.isNotificationGoing);
                            return;
                        }
                        else if (interphoneTypeEnum == InterphoneType.FREEVIEW.ToString())
                        {
                            //全视通 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, InterphoneType.FREEVIEW.ToString());
                            return;
                        }
                        //3.打开呼叫页面
                        if (eSVideoInfo == null) return;
                        ESOnVideo.Current.ShowESvideoVideoIntercom(eSVideoInfo, interphoneTypeEnum);
                    }
                    else if (jpushMessageInfo.messageType == (PushMessageType.Prompt.ToString()))
                    {
                        ShowAlarmPushMessage(jpushMessageInfo, false);
                        //萤石门锁推送
                        HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DoorLockPush(jpushMessageInfo);
                    }
                    else if (jpushMessageInfo.messageType == (PushMessageType.DOOR_BELL.ToString()))
                    {
                        //萤石门锁推送
                        HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DoorLockPush(jpushMessageInfo);
                    }
                   
@@ -561,8 +374,6 @@
                            OnAppConfig.Instance.SaveConfig();
                            DB_ResidenceData.Instance.EixtAccount();
                            MainPage.Log("退出账号清空数据");
                            //4.注销HDLSIP账号登录 2021-08-20
                            HDLLinphone.Current.LogoutAllAccount();
                            MainPage.Log("注销HDLSIP账号登录");
#if __IOS__
@@ -760,129 +571,5 @@
        }
#endregion
#region 跳转打开萤石云方法
        /// <summary>
        /// 获取子账号token并跳转设备列表页面
        /// </summary>
        /// <param name="bodyView"></param>
        public void Go2EZvizMonitor(FrameLayout bodyView)
        {
            var waitPage = new Loading();
            bodyView.AddChidren(waitPage);
            waitPage.Start(Language.StringByID(StringId.PleaseWait));
            new Thread(() =>
            {
                try
                {
                    var list = UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.GetVideoDoorLockLockModelsList();
                    //先获取萤石云子账号token
                    var result = new HttpServerRequest().EZGetChildToken();
                    if (result.Code == StateCode.SUCCESS)
                    {
                        var ezChildAccessToken = result.Data.ToString();
                        //var ezChildAccessToken = Newtonsoft.Json.JsonConvert.DeserializeObject<EZChildAccessToken>(result.Data.ToString());
                        Application.RunOnMainThread(() =>
                        {
                            if (!string.IsNullOrEmpty(ezChildAccessToken))
                            {
#if __IOS__
                                //iOS
                                //初始化萤石云SDK,中文国内key、英文海外key 开发者账号使用应用包名申请的APPKEY,不同包名应用需配置不同的APPKEY
                                EZSDK.IOS.EZSDK.SharedInstance().InitLibWithAppKey("1aa98a90489b4838b966b57018b4b04b", "1aa98a90489b4838b966b57018b4b04b");
                                //1.设置所需河东的AccessToken和RefreshToken、域名地址
                                EZSDK.IOS.EZSDK.SharedInstance().SetHDlAccessToken(UserInfo.Current.LoginTokenString, UserInfo.Current.RefreshToken);
                                EZSDK.IOS.EZSDK.SharedInstance().SetRequestHttpsHostAndPlatform(OnAppConfig.Instance.RequestHttpsHost, 1, DB_ResidenceData.Instance.CurrentRegion.id);
                                //2.设置萤石子账号的AccessToken到SDK
                                EZSDK.IOS.EZSDK.SharedInstance().SetEZAccessToken(ezChildAccessToken);
                                //////3.打开摄像头设备列表页面
                                //EZSDK.IOS.EZSDK.SharedInstance().Go2EZvizMonitor();
                                //EZSDK.IOS.EZDeviceInfo info = new EZSDK.IOS.EZDeviceInfo();
                                //info.de
                                //EZSDK.IOS.EZSDK.Play(info);
                                //2023年03月29日13:08:35 修改
                                Foundation.NSObject[] nSObject = new Foundation.NSObject[list.Count];
                                for (int i = 0; i < list.Count; i++)
                                {
                                    string strValue = list[i];
                                    nSObject[i] = new Foundation.NSString(strValue);
                                }
                                EZSDK.IOS.EZSDK.SharedInstance().ToEZDeviceListViewWithFilterTypes(nSObject);
#else
                                //Android
                                //1.设置所需河东的token、域名地址
                                //2.设置萤石子账号的token
                                //3.打开摄像头设备列表页面
                                ((BaseActivity)Shared.Application.Activity).SetCamera(b =>
                                {
                                    if (b)
                                    {
                                        ((BaseActivity)Shared.Application.Activity).SetPermission(result =>
                                        {
                                            //2023年03月29日13:08:35 修改
                                            Com.Videogo.Hdl.HDLEzvizSdk.Instance.Init(Application.Activity.Application, ezChildAccessToken, UserInfo.Current.LoginTokenString, UserInfo.Current.RefreshToken, OnAppConfig.Instance.RequestHttpsHost, "1aa98a90489b4838b966b57018b4b04b", 1, DB_ResidenceData.Instance.CurrentRegion.id,
                                HttpUtil.APP_KEY, HttpUtil.SECRET_KEY);
                                            Com.Videogo.Hdl.HDLEzvizSdk.Instance.JumpToCameraListActivity(Shared.Application.Activity, list);
                                            //if (result)
                                            //{
                                            //    Android.Content.Intent intent = new Android.Content.Intent();
                                            //    var bundle = new Android.OS.Bundle();
                                            //    //传递name参数为tinyphp
                                            //    bundle.PutString("EzChildAccessToken", ezChildAccessToken);
                                            //    bundle.PutString("HdlToken", UserInfo.Current.LoginTokenString);
                                            //    bundle.PutString("Url", OnAppConfig.Instance.RequestHttpsHost);
                                            //    bundle.PutString("EzvizAppKey", "1aa98a90489b4838b966b57018b4b04b");
                                            //    bundle.PutInt("Platform", 1);
                                            //    bundle.PutString("HomeId", DB_ResidenceData.Instance.CurrentRegion.id);
                                            //    intent.PutExtras(bundle);
                                            //    intent.SetComponent(new Android.Content.ComponentName(Shared.Application.Activity, "com.videogo.MainActivity"));
                                            //    Shared.Application.Activity.StartActivity(intent);
                                            //}
                                        }, "android.permission.RECORD_AUDIO");
                                    }
                                });
#endif
                            }
                        });
                    }
                    else
                    {
                        if (result.Code != "-1")
                            IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
                    }
                }
                catch (Exception ex)
                {
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        if (waitPage != null)
                        {
                            waitPage.RemoveFromParent();
                            waitPage = null;
                        }
                    });
                }
            })
            { IsBackground = true }.Start();
        }
#endregion
    }
}
HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
@@ -4,7 +4,6 @@
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock;
using Newtonsoft.Json.Linq;
using Shared;
@@ -349,390 +348,6 @@
                    });
                #endregion
            }
            #region 共享
            //var sharedView = new FrameLayout()
            //{
            //    Height = Application.GetRealHeight(55),
            //    BackgroundColor = CSS_Color.MainBackgroundColor,
            //};
            //contentView.AddChidren(sharedView);
            //var btnSharedText = new Button()
            //{
            //    X = Application.GetRealWidth(16),
            //    Width = Application.GetRealWidth(160),
            //    TextAlignment = TextAlignment.CenterLeft,
            //    TextColor = CSS_Color.FirstLevelTitleColor,
            //    TextSize = CSS_FontSize.SubheadingFontSize,
            //    TextID = StringId.Shared,
            //};
            //sharedView.AddChidren(btnSharedText);
            //var btnSharedRight = new Button()
            //{
            //    X = Application.GetRealWidth(339),
            //    Gravity = Gravity.CenterVertical,
            //    Width = Application.GetMinRealAverage(16),
            //    Height = Application.GetMinRealAverage(16),
            //    UnSelectedImagePath = "Public/RightIcon.png",
            //};
            //sharedView.AddChidren(btnSharedRight);
            //sharedView.AddChidren(
            //    new Button()
            //    {
            //        Gravity = Gravity.CenterHorizontal,
            //        Y = Application.GetRealHeight(54),
            //        BackgroundColor = CSS_Color.DividingLineColor,
            //        Width = Application.GetRealWidth(343),
            //        Height = Application.GetRealHeight(1)
            //    });
            #endregion
            #region 删除设备行  序列号 型号
            if (this.function.spk == SPK.VideoDoorLock)
            {
                contentView.AddChidren(new Button()
                {
                    Height = Application.GetRealWidth(8),
                });
                #region 开锁设置
                var unlockSettingView = new FrameLayout()
                {
                    Height = Application.GetRealHeight(55),
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                };
                contentView.AddChidren(unlockSettingView);
                //unlockSettingView.AddChidren(new Button
                //{
                //    Gravity = Gravity.CenterHorizontal,
                //    BackgroundColor = CSS_Color.DividingLineColor,
                //    Width = Application.GetRealWidth(343),
                //    Height = Application.GetRealHeight(1)
                //});
                var unlockRightBtn = new Button()
                {
                    X = Application.GetRealWidth(339),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(16),
                    UnSelectedImagePath = "Public/RightIcon.png",
                };
                unlockSettingView.AddChidren(unlockRightBtn);
                var btnUnlockText = new Button()
                {
                    X = Application.GetRealWidth(16),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = StringId.UnlockSetting,
                };
                unlockSettingView.AddChidren(btnUnlockText);
                EventHandler<MouseEventArgs> unlockSettingEvent = (sender, e) =>
                {
                    var page = new UnlockSettingPage(function);
                    MainPage.BasePageView.AddChidren(page);
                    page.LoadPage();
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                };
                btnUnlockText.MouseUpEventHandler = unlockSettingEvent;
                #endregion
                #region 音频设置
                var audioSetupView = new FrameLayout()
                {
                    Height = Application.GetRealHeight(55),
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                };
                contentView.AddChidren(audioSetupView);
                audioSetupView.AddChidren(new Button
                {
                    Gravity = Gravity.CenterHorizontal,
                    BackgroundColor = CSS_Color.DividingLineColor,
                    Width = Application.GetRealWidth(343),
                    Height = Application.GetRealHeight(1)
                });
                var btnAudioSetupRight = new Button()
                {
                    X = Application.GetRealWidth(339),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(16),
                    UnSelectedImagePath = "Public/RightIcon.png",
                };
                audioSetupView.AddChidren(btnAudioSetupRight);
                var btnAudioSetupText = new Button()
                {
                    X = Application.GetRealWidth(16),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = StringId.AudioSetup,
                };
                audioSetupView.AddChidren(btnAudioSetupText);
                btnAudioSetupText.MouseUpEventHandler = (sender, e) => {
                    var page = new VideoDoorlockAudioSetupPage(function);
                    MainPage.BasePageView.AddChidren(page);
                    page.LoadPage();
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                };
                #endregion
                #region 电池管理
                var batteryManagementView = new FrameLayout()
                {
                    Height = Application.GetRealHeight(55),
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                };
                contentView.AddChidren(batteryManagementView);
                batteryManagementView.AddChidren(new Button
                {
                    Gravity = Gravity.CenterHorizontal,
                    BackgroundColor = CSS_Color.DividingLineColor,
                    Width = Application.GetRealWidth(343),
                    Height = Application.GetRealHeight(1)
                });
                var btnBatteryManagementRight = new Button()
                {
                    X = Application.GetRealWidth(339),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(16),
                    UnSelectedImagePath = "Public/RightIcon.png",
                };
                batteryManagementView.AddChidren(btnBatteryManagementRight);
                var btnBatteryManagementText = new Button()
                {
                    X = Application.GetRealWidth(16),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = StringId.BatteryManagement,
                };
                batteryManagementView.AddChidren(btnBatteryManagementText);
                btnBatteryManagementText.MouseUpEventHandler = (sender, e) => {
                    var page = new VideoDoorlockBatteryManagementPage();
                    MainPage.BasePageView.AddChidren(page);
                    page.LoadPage();
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                };
                #endregion
                #region 序列号
                var serialView = new FrameLayout()
                {
                    Height = Application.GetRealHeight(55),
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                };
                contentView.AddChidren(serialView);
                var serialLineBtn = new Button()
                {
                    Gravity = Gravity.CenterHorizontal,
                    BackgroundColor = CSS_Color.DividingLineColor,
                    Width = Application.GetRealWidth(343),
                    Height = Application.GetRealHeight(1)
                };
                serialView.AddChidren(serialLineBtn);
                var serialTextBtn = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Width = Application.GetRealWidth(160),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = StringId.xuliehao,
                };
                serialView.AddChidren(serialTextBtn);
                var serialValuesBtn = new Button()
                {
                    X = Application.GetRealWidth(106),
                    Width = Application.GetRealWidth(237),
                    TextAlignment = TextAlignment.CenterRight,
                    TextColor = CSS_Color.PromptingColor1,
                    TextSize = CSS_FontSize.TextFontSize,
                    Text = this.function.sid,
                };
                serialView.AddChidren(serialValuesBtn);
                #endregion
                #region 型号
                var modelView = new FrameLayout()
                {
                    Height = Application.GetRealHeight(55),
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                };
                contentView.AddChidren(modelView);
                var modelLineBtn = new Button()
                {
                    Gravity = Gravity.CenterHorizontal,
                    BackgroundColor = CSS_Color.DividingLineColor,
                    Width = Application.GetRealWidth(343),
                    Height = Application.GetRealHeight(1)
                };
                modelView.AddChidren(modelLineBtn);
                var modelTextBtn = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Width = Application.GetRealWidth(160),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = StringId.xinghao,
                };
                modelView.AddChidren(modelTextBtn);
                var modelValuesBtn = new Button()
                {
                    X = Application.GetRealWidth(106),
                    Width = Application.GetRealWidth(237),
                    TextAlignment = TextAlignment.CenterRight,
                    TextColor = CSS_Color.PromptingColor1,
                    TextSize = CSS_FontSize.TextFontSize,
                    Text = this.function.omodel,
                };
                modelView.AddChidren(modelValuesBtn);
                #endregion
                #region 删除设备行
                contentView.AddChidren(new Button() {
                    Height = Application.GetRealHeight(48),
                });
                var delTextBtn = new Button()
                {
                    Gravity = Gravity.CenterHorizontal,
                    Width = Application.GetRealWidth(220),
                    Height = Application.GetRealWidth(44),
                    TextAlignment = TextAlignment.Center,
                    TextColor = CSS_Color.WarningColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = StringId.DeleteDevice,
                    Radius = (uint)Application.GetRealWidth(22),
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                };
                contentView.AddChidren(delTextBtn);
                EventHandler<MouseEventArgs> ClickEvent = (sener, e) =>
                {
                    new HDL_ON.UI.Music.View.TipView().TipBox(-1, StringId.AreYouSureToDeleteThisDevice, () =>
                    {
                        UI2.FuntionControlView.VideoDoorLock.VideDoorLockSend.Current.DelDevice(this.function, (isBool) =>
                        {
                            Application.RunOnMainThread(() =>
                            {
                                if (!isBool)
                                {
                                    new Tip()
                                    {
                                        CloseTime = 1,
                                        Text = Language.StringByID(StringId.delFail),
                                        Direction = AMPopTipDirection.None,
                                    }.Show(bodyView);
                                    return;
                                }
                                //删除本地文件
                                UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DeleteFunction(this.function);
                                this.RemoveFromParent();
                                this.actionDel?.Invoke();
                            });
                        });
                    });
                };
                delTextBtn.MouseUpEventHandler = ClickEvent;
                #endregion
            }
            #endregion
            #region 删除海信电视设备
            if (this.function.spk == SPK.ElectricalTvHisense)
            {
                contentView.AddChidren(new Button()
                {
                    Height = Application.GetRealWidth(8),
                });
                #region 删除设备行
                contentView.AddChidren(new Button()
                {
                    Height = Application.GetRealHeight(48),
                });
                var delTextBtn = new Button()
                {
                    Gravity = Gravity.CenterHorizontal,
                    Width = Application.GetRealWidth(220),
                    Height = Application.GetRealWidth(44),
                    TextAlignment = TextAlignment.Center,
                    TextColor = CSS_Color.WarningColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = StringId.jiebangshebei,
                    Radius = (uint)Application.GetRealWidth(22),
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                };
                //如果是成员隐藏收藏功能
                if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
                {
                    contentView.AddChidren(delTextBtn);
                }
                EventHandler<MouseEventArgs> ClickEvent = (sener, e) =>
                {
                    new HDL_ON.UI.Music.View.TipView().TipBox(-1, StringId.AreYouSureToDeleteThisDevice, () =>
                    {
                        HDL_ON.UI.UI2.FuntionControlView.HisenseTV.Send.Current.DelDevice(this.function.deviceId, (isBool) =>
                            {
                                Application.RunOnMainThread(() =>
                                {
                                    if (!isBool)
                                    {
                                        new Tip()
                                        {
                                            CloseTime = 1,
                                            Text = Language.StringByID(StringId.delFail),
                                            Direction = AMPopTipDirection.None,
                                        }.Show(bodyView);
                                        return;
                                    }
                                //删除本地文件
                                UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DeleteFunction(this.function);
                                    this.RemoveFromParent();
                                    this.actionDel?.Invoke();
                                });
                            });
                    });
                };
                delTextBtn.MouseUpEventHandler = ClickEvent;
                #endregion
            }
            #endregion
            if (function.spk == SPK.ElectricEnergy)
            {