wxr
2022-04-01 764185112d44c387e16f0483d8da898f8d998944
HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
@@ -98,6 +98,7 @@
            HDLLinphoneKit.Instance.InitLinphone(Application.Activity);
            //设置收到来电后、是否需自动跳转呼叫页面方案
            HDLLinphoneKit.Instance.AutoJumpCallView = IsAutoJumpCallView;
            //HDLLinphoneKit.Instance.HangUp();//挂断
            //设置Listener监听
            setOnHDLLinphoneCallListener();
#endif
@@ -196,8 +197,6 @@
        {
            try
            {
                //先清空呼叫和监视设备信息
                if (clearCallInfo)
                {
@@ -371,13 +370,14 @@
        }
        #endregion
        #region ■  --  跳转监控页面_______________________________
        /// <summary>
        /// 跳转监控页面
        /// </summary>
        /// <param name="mESVideoInfo"></param>
        public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo)
        /// <param name="enableMic">是否打开麦克风</param>
        public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo,bool enableMic,bool isCallIn = false)
        {
            InitLinphone();
            //sip账号为空
@@ -395,6 +395,22 @@
            mHDLCallVideoInfo.DeviceSipAccount = mESVideoInfo.deviceSipAccount;//监视主动呼叫门口机时用到
            InitCallInfo(mHDLCallVideoInfo);
            if (isCallIn)
            {
                HDLLinphoneKit.Instance.HangUp();
            }
            else
            {
                openMonitorPage(enableMic);
            }
        }
        /// <summary>
        /// 打开监视界面
        /// </summary>
        void openMonitorPage(bool enableMic)
        {
#if __IOS__
            HDLLinPhoneSDK.Instance().CallWithUserName(mHDLCallVideoInfo.DeviceSipAccount, mHDLCallVideoInfo.DeviceName);
@@ -405,10 +421,16 @@
            //2.跳转打开监控页面
            var intent = new Intent(Shared.Application.Activity, typeof(Com.Hdl.Hdllinphonesdk.Activity.HDLLinphoneMonitorActivity)); ;
            intent.PutExtra(HDLLinphoneKit.KeyTitleName, mHDLCallVideoInfo.DeviceName);//传入设备名称为显示标题
            intent.PutExtra(HDLLinphoneKit.Enablemic, enableMic);//是否打开麦克风
            Shared.Application.Activity.StartActivity(intent);
#endif
        }
        #endregion
@@ -417,7 +439,8 @@
        /// 收到推送,后判断呼叫住宅是否为当前住宅,不是的话重新获取SIP账号并登录
        /// </summary>
        /// <param name="mESVideoInfo"></param>
        public void ShowESVideoIntercom(ESVideoInfo mESVideoInfo)
        /// <param name="isHdlLinphone">是否是自研可视对讲</param>
        public void ShowESVideoIntercom(ESVideoInfo mESVideoInfo,bool isHdlLinphone)
        {
            InitLinphone();
@@ -430,26 +453,36 @@
            mHDLCallVideoInfo.DeviceSipAccount = mESVideoInfo.deviceSipAccount;
            InitCallInfo(mHDLCallVideoInfo);
            //当前呼叫来电的住宅和之前注册登录的住宅一致的情况下
            if (currentHDLSipInfo != null && currentHDLSipInfo.homeId == mESVideoInfo.HomeId)
            if (isHdlLinphone)
            {
                Utlis.WriteLine("CALL 收到推送 推送住宅和之前注册登录的住宅一致");
                CheckCallStateAndGotoPage();
            }
            else
            {
                //注意:之前没登录SIP账号或者住宅不一致的情况下需要重新获取SIP账号
                //获取呼叫住宅的SIP账号并登录
                Utlis.WriteLine("CALL 收到推送 其他住宅,重新获取呼叫住宅的SIP账号并登录");
                new Thread(() =>
                //当前呼叫来电的住宅和之前注册登录的住宅一致的情况下
                if (currentHDLSipInfo != null && currentHDLSipInfo.homeId == mESVideoInfo.HomeId)
                {
                    GetHDLSipInfoAndInitSDK(mESVideoInfo.HomeId, false);
                })
                { IsBackground = false }.Start();
                    Utlis.WriteLine("CALL 收到推送 推送住宅和之前注册登录的住宅一致");
                    CheckCallStateAndGotoPage(true);
                }
            }
            else {
                //当前呼叫来电的住宅和之前注册登录的住宅一致的情况下
                if (currentHDLSipInfo != null && currentHDLSipInfo.homeId == mESVideoInfo.HomeId)
                {
                    Utlis.WriteLine("CALL 收到推送 推送住宅和之前注册登录的住宅一致");
                    CheckCallStateAndGotoPage();
                }
                else
                {
                    //注意:之前没登录SIP账号或者住宅不一致的情况下需要重新获取SIP账号
                    //获取呼叫住宅的SIP账号并登录
                    Utlis.WriteLine("CALL 收到推送 其他住宅,重新获取呼叫住宅的SIP账号并登录");
                    new Thread(() =>
                    {
                        GetHDLSipInfoAndInitSDK(mESVideoInfo.HomeId, false);
                    })
                    { IsBackground = false }.Start();
                //
                CheckCallStateAndGotoPage();
                    //
                    CheckCallStateAndGotoPage();
                }
            }
        }
@@ -458,14 +491,14 @@
        /// 检测来电状态,判断是否马上打开呼叫页面,如果还没来电则开启线程检测等待
        /// </summary>
        /// <param name="mESVideoInfo"></param>
        public void CheckCallStateAndGotoPage()
        public void CheckCallStateAndGotoPage(bool isHdlLinphone = false)
        {
            //如果开启了自动跳转方案,则无需继续下面处理、无需手动跳转
            if (IsAutoJumpCallView) return;
            //先结束掉之前的线程
            EndCheckIncomingCallThread();
            //检测是否来电了如果是直接调整呼叫页面如果不是则开启线程等待判断
            if (IsIncomingReceivedCallState()) {
            if (IsIncomingReceivedCallState()|| isHdlLinphone) {
                Utlis.WriteLine("CALL 已经来电了。。。打开呼叫页面");
                GoToHDLLinphoneIntercomActivity();
            }