wxr
2023-08-23 96e9ff2e5a54f54cdbb6b8b2f049fdf6a837de3c
OnPro/HDL-ON_Android/LeChengVideo/Form/ReverseCallFragment.cs
@@ -1,319 +1,319 @@

using System;
using System.Collections.Generic;
using System.Threading;
using Android.App;
using Android.Icu.Text;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
using HDL_ON.Common;
using HDL_ON.DAL.Server;
using Java.Util;
//using System;
//using System.Collections.Generic;
//using System.Threading;
//using Android.App;
//using Android.Icu.Text;
//using Android.OS;
//using Android.Runtime;
//using Android.Util;
//using Android.Views;
//using Android.Widget;
//using HDL_ON.Common;
//using HDL_ON.DAL.Server;
//using Java.Util;
namespace HDL_ON_Android.LeChengView.Form
{
    public class ReverseCallFragment : Fragment, View.IOnClickListener
    {
//namespace HDL_ON_Android.LeChengView.Form
//{
//    public class ReverseCallFragment : Fragment, View.IOnClickListener
//    {
        private View mView;
//        private View mView;
        private ImageView screenshotImg;// 截图
        private ImageView unlockImg;// 开锁
        private LinearLayout answerLayout; // 接听
        private ImageView hangupImg;// 挂断
        private ImageView answerImg;// 接听
        private TextView hangupText;
//        private ImageView screenshotImg;// 截图
//        private ImageView unlockImg;// 开锁
//        private LinearLayout answerLayout; // 接听
//        private ImageView hangupImg;// 挂断
//        private ImageView answerImg;// 接听
//        private TextView hangupText;
        private TextView tvTip;
//        private TextView tvTip;
        private System.Threading.Timer timer = null;
        private int Time = 0;
        private bool isAnswer;//是否已经点击接听过了
//        private System.Threading.Timer timer = null;
//        private int Time = 0;
//        private bool isAnswer;//是否已经点击接听过了
        private static LeChengVideoActivity CurtActivity;
//        private static LeChengVideoActivity CurtActivity;
        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
//        public override void OnCreate(Bundle savedInstanceState)
//        {
//            base.OnCreate(savedInstanceState);
            CurtActivity = (LeChengVideoActivity)this.Activity;
        }
//            CurtActivity = (LeChengVideoActivity)this.Activity;
//        }
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            mView = inflater.Inflate(Resource.Layout.fragment_call, container, false);
//        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
//        {
//            mView = inflater.Inflate(Resource.Layout.fragment_call, container, false);
            IniView();
//            IniView();
            CurtActivity.Play();
//            CurtActivity.Play();
            CurtActivity.CloseAudio();
//            CurtActivity.CloseAudio();
            return mView;
        }
//            return mView;
//        }
        private void IniView()
        {
            screenshotImg = (ImageView)mView.FindViewById(Resource.Id.callScreenshotImg);//
            unlockImg = (ImageView)mView.FindViewById(Resource.Id.callUnlockImg);//
            tvTip = (TextView)mView.FindViewById(Resource.Id.callTipText);
            answerLayout = (LinearLayout)mView.FindViewById(Resource.Id.callAnswerLayout);
            hangupImg = (ImageView)mView.FindViewById(Resource.Id.callHangupImg);
            answerImg = (ImageView)mView.FindViewById(Resource.Id.callAnswerImg);
            hangupText = (TextView)mView.FindViewById(Resource.Id.callHangupText);
//        private void IniView()
//        {
//            screenshotImg = (ImageView)mView.FindViewById(Resource.Id.callScreenshotImg);//
//            unlockImg = (ImageView)mView.FindViewById(Resource.Id.callUnlockImg);//
//            tvTip = (TextView)mView.FindViewById(Resource.Id.callTipText);
//            answerLayout = (LinearLayout)mView.FindViewById(Resource.Id.callAnswerLayout);
//            hangupImg = (ImageView)mView.FindViewById(Resource.Id.callHangupImg);
//            answerImg = (ImageView)mView.FindViewById(Resource.Id.callAnswerImg);
//            hangupText = (TextView)mView.FindViewById(Resource.Id.callHangupText);
            screenshotImg.SetOnClickListener(this);
            unlockImg.SetOnClickListener(this);
            hangupImg.SetOnClickListener(this);
            answerImg.SetOnClickListener(this);
//            screenshotImg.SetOnClickListener(this);
//            unlockImg.SetOnClickListener(this);
//            hangupImg.SetOnClickListener(this);
//            answerImg.SetOnClickListener(this);
            hangupText.SetText(GetString(Resource.String.video_not_answer), null);
            tvTip.SetText(GetString(Resource.String.calling), null);
        }
//            hangupText.SetText(GetString(Resource.String.video_not_answer), null);
//            tvTip.SetText(GetString(Resource.String.calling), null);
//        }
        /// <summary>
        /// 开锁
        /// </summary>
        private void PostUnlock()
        {
            //开锁,当收到来电信息时可进行开锁操作
            new Thread(() =>
            {
                try
                {
                    Dictionary<string, object> d = new Dictionary<string, object>();
                    d.Add("deviceId", CurtActivity.DeviceId);//设备id
                    string jsonString = HttpUtil.GetSignRequestJson(d);
//        /// <summary>
//        /// 开锁
//        /// </summary>
//        private void PostUnlock()
//        {
//            //开锁,当收到来电信息时可进行开锁操作
//            new Thread(() =>
//            {
//                try
//                {
//                    Dictionary<string, object> d = new Dictionary<string, object>();
//                    d.Add("deviceId", CurtActivity.DeviceId);//设备id
//                    string jsonString = HttpUtil.GetSignRequestJson(d);
                    string url = "/home-wisdom/platform/imou/openDoorbell";
                    ResponsePackNew response = HttpUtil.RequestHttpsPost(url, jsonString);
                    Log.Info("LcVideo", "Post Unlock Response code=" + response.Code);
                }
                catch { }
//                    string url = "/home-wisdom/platform/imou/openDoorbell";
//                    ResponsePackNew response = HttpUtil.RequestHttpsPost(url, jsonString);
//                    Log.Info("LcVideo", "Post Unlock Response code=" + response.Code);
//                }
//                catch { }
            }).Start();
        }
//            }).Start();
//        }
        /// <summary>
        /// 开锁
        /// </summary>
        private void Unlock()
        {
            //
            CurtActivity.Unlock();
            UpdataUnlockState();
        }
//        /// <summary>
//        /// 开锁
//        /// </summary>
//        private void Unlock()
//        {
//            //
//            CurtActivity.Unlock();
//            UpdataUnlockState();
//        }
        /// <summary>
        /// 更新开锁按钮状态,开锁成功,15秒内不给再点击按钮
        /// </summary>
        private void UpdataUnlockState()
        {
            try
            {
                if (unlockImg == null) return;
//        /// <summary>
//        /// 更新开锁按钮状态,开锁成功,15秒内不给再点击按钮
//        /// </summary>
//        private void UpdataUnlockState()
//        {
//            try
//            {
//                if (unlockImg == null) return;
                unlockImg.Enabled = false;
//                unlockImg.Enabled = false;
                new Thread(() =>
                {
                    Thread.Sleep(15 * 1000);
                    Activity.RunOnUiThread(() =>
                    {
                        if (unlockImg != null)
                            unlockImg.Enabled = true;
                    });
                }).Start();
            }
            catch { }
        }
//                new Thread(() =>
//                {
//                    Thread.Sleep(15 * 1000);
//                    Activity.RunOnUiThread(() =>
//                    {
//                        if (unlockImg != null)
//                            unlockImg.Enabled = true;
//                    });
//                }).Start();
//            }
//            catch { }
//        }
        private string GetTime(int time)
        {
//        private string GetTime(int time)
//        {
            int m = time / 60;
            int s = time % 60;
//            int m = time / 60;
//            int s = time % 60;
            return UnitFormat(m) + ":" + UnitFormat(s);
//            return UnitFormat(m) + ":" + UnitFormat(s);
        }
//        }
        private static string UnitFormat(int i)
        {
            string retStr = null;
            if (i >= 0 && i < 10)
                retStr = "0" + i;
            else
                retStr = "" + i;
            return retStr;
        }
//        private static string UnitFormat(int i)
//        {
//            string retStr = null;
//            if (i >= 0 && i < 10)
//                retStr = "0" + i;
//            else
//                retStr = "" + i;
//            return retStr;
//        }
        /// <summary>
        /// 通话记录计时器,从拉流成功开始计算时间
        /// </summary>
        public void TimeStarts()
        {
            try
            {
                if (timer != null)
                    timer.Dispose();
//        /// <summary>
//        /// 通话记录计时器,从拉流成功开始计算时间
//        /// </summary>
//        public void TimeStarts()
//        {
//            try
//            {
//                if (timer != null)
//                    timer.Dispose();
                TimerCallback timerCallback = new TimerCallback(Tick);
                timer = new System.Threading.Timer(timerCallback, null, 0, 1000);
//                TimerCallback timerCallback = new TimerCallback(Tick);
//                timer = new System.Threading.Timer(timerCallback, null, 0, 1000);
            }
            catch (Exception) { }
        }
//            }
//            catch (Exception) { }
//        }
        public void TimeEnd()
        {
            Time = 0;
//        public void TimeEnd()
//        {
//            Time = 0;
            if (timer != null)
            {
                timer.Dispose();
                timer = null;
            }
        }
//            if (timer != null)
//            {
//                timer.Dispose();
//                timer = null;
//            }
//        }
        public void Tick(object state)
        {
            try
            {
                Activity.RunOnUiThread(() =>
                {
                    try
                    {
                        Time++;
                        if (tvTip != null)
                            tvTip.SetText(GetTime(Time), null);
                    }
                    catch { }
                });
            }
            catch { }
        }
//        public void Tick(object state)
//        {
//            try
//            {
//                Activity.RunOnUiThread(() =>
//                {
//                    try
//                    {
//                        Time++;
//                        if (tvTip != null)
//                            tvTip.SetText(GetTime(Time), null);
//                    }
//                    catch { }
//                });
//            }
//            catch { }
//        }
        public void OnClick(View v)
        {
            if (v.Equals(answerImg))
            {
                //接收来电
                isAnswer = true;
                CurtActivity.StartTalk();
                answerLayout.Visibility = ViewStates.Gone;
                PostAnswer();
            }
            else if (v.Equals(hangupImg))
            {
                CurtActivity.StopTalk();
                //2021-11-30 增加拒绝和挂断操作处理
                if (isAnswer)
                {
                    //如果接听过了,执行挂断接口
                    PostHangup();
                }
                else
                {
                    //没接听直接挂断,执行拒接接口
                    PostReject();
                }
//        public void OnClick(View v)
//        {
//            if (v.Equals(answerImg))
//            {
//                //接收来电
//                isAnswer = true;
//                CurtActivity.StartTalk();
//                answerLayout.Visibility = ViewStates.Gone;
//                PostAnswer();
//            }
//            else if (v.Equals(hangupImg))
//            {
//                CurtActivity.StopTalk();
//                //2021-11-30 增加拒绝和挂断操作处理
//                if (isAnswer)
//                {
//                    //如果接听过了,执行挂断接口
//                    PostHangup();
//                }
//                else
//                {
//                    //没接听直接挂断,执行拒接接口
//                    PostReject();
//                }
              
                TimeEnd();
                Activity.Finish();
            }
            else if (v.Equals(screenshotImg))
            {
                //有视频过来可调用此接口进行拍照
                screenshotImg.Selected = true;
                SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
                string time = format.Format(new Date(SystemClock.CurrentThreadTimeMillis()));
                string ss = Android.OS.Environment.ExternalStorageDirectory.Path + "/DCIM/Camera";
                string path = ss + "/" + time + ".jpg";
                CurtActivity.SnapShot(path);
            }
            else if (v.Equals(unlockImg))
            {
                CurtActivity.Unlock();
            }
        }
//                TimeEnd();
//                Activity.Finish();
//            }
//            else if (v.Equals(screenshotImg))
//            {
//                //有视频过来可调用此接口进行拍照
//                screenshotImg.Selected = true;
//                SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
//                string time = format.Format(new Date(SystemClock.CurrentThreadTimeMillis()));
//                string ss = Android.OS.Environment.ExternalStorageDirectory.Path + "/DCIM/Camera";
//                string path = ss + "/" + time + ".jpg";
//                CurtActivity.SnapShot(path);
//            }
//            else if (v.Equals(unlockImg))
//            {
//                CurtActivity.Unlock();
//            }
//        }
        /// <summary>
        /// post 接听电话记录
        /// </summary>
        public void PostAnswer()
        {
            new Thread(() =>
            {
                try
                {
                    Dictionary<string, object> d = new Dictionary<string, object>();
                    d.Add("callId", CurtActivity.CallId);//呼叫id
                    d.Add("callStatus", "RECEIVED");//可用值:MISSED,RECEIVED,REJECT
                    // d.Add("callDuration", Time);//通话时长(秒)
                    d.Add("interphoneTypeEnum", "IMOUVISIAL");//可用值:FLVI,IMOUVISIAL
                    string jsonString = HttpUtil.GetSignRequestJson(d);
//        /// <summary>
//        /// post 接听电话记录
//        /// </summary>
//        public void PostAnswer()
//        {
//            new Thread(() =>
//            {
//                try
//                {
//                    Dictionary<string, object> d = new Dictionary<string, object>();
//                    d.Add("callId", CurtActivity.CallId);//呼叫id
//                    d.Add("callStatus", "RECEIVED");//可用值:MISSED,RECEIVED,REJECT
//                    // d.Add("callDuration", Time);//通话时长(秒)
//                    d.Add("interphoneTypeEnum", "IMOUVISIAL");//可用值:FLVI,IMOUVISIAL
//                    string jsonString = HttpUtil.GetSignRequestJson(d);
                    string url = "/home-wisdom/platform/imou/updateCallStatus";
                    ResponsePackNew response = HttpUtil.RequestHttpsPost(url, jsonString);
                    Log.Info("LcVideo", "Post Answer Response code=" + response.Code);
                }
                catch { }
//                    string url = "/home-wisdom/platform/imou/updateCallStatus";
//                    ResponsePackNew response = HttpUtil.RequestHttpsPost(url, jsonString);
//                    Log.Info("LcVideo", "Post Answer Response code=" + response.Code);
//                }
//                catch { }
            }).Start();
        }
//            }).Start();
//        }
        /// <summary>
        /// post 挂断电话记录
        /// </summary>
        public void PostHangup()
        {
            new Thread(() =>
            {
                try
                {
                    Dictionary<string, object> d = new Dictionary<string, object>();
                    d.Add("callId", CurtActivity.CallId);//呼叫id
                    d.Add("callStatus", "RECEIVED");//可用值:MISSED,RECEIVED,REJECT
                    d.Add("callDuration", Time);//通话时长(秒)
                    d.Add("interphoneTypeEnum", "IMOUVISIAL");//可用值:FLVI,IMOUVISIAL
                    string jsonString = HttpUtil.GetSignRequestJson(d);
//        /// <summary>
//        /// post 挂断电话记录
//        /// </summary>
//        public void PostHangup()
//        {
//            new Thread(() =>
//            {
//                try
//                {
//                    Dictionary<string, object> d = new Dictionary<string, object>();
//                    d.Add("callId", CurtActivity.CallId);//呼叫id
//                    d.Add("callStatus", "RECEIVED");//可用值:MISSED,RECEIVED,REJECT
//                    d.Add("callDuration", Time);//通话时长(秒)
//                    d.Add("interphoneTypeEnum", "IMOUVISIAL");//可用值:FLVI,IMOUVISIAL
//                    string jsonString = HttpUtil.GetSignRequestJson(d);
                    string url = "/home-wisdom/platform/imou/updateCallStatus";
                    ResponsePackNew response = HttpUtil.RequestHttpsPost(url, jsonString);
                    Log.Info("LcVideo", "Post Hangup Response code=" + response.Code);
                }
                catch { }
//                    string url = "/home-wisdom/platform/imou/updateCallStatus";
//                    ResponsePackNew response = HttpUtil.RequestHttpsPost(url, jsonString);
//                    Log.Info("LcVideo", "Post Hangup Response code=" + response.Code);
//                }
//                catch { }
            }).Start();
        }
//            }).Start();
//        }
        /// <summary>
        /// post 拒接记录,仅只有在正常挂断状态下才提交通话时间
        /// </summary>
        public void PostReject()
        {
            new Thread(() =>
            {
                try
                {
                    Dictionary<string, object> d = new Dictionary<string, object>();
                    d.Add("callId", CurtActivity.CallId);//呼叫id
                    d.Add("callStatus", "REJECT");//可用值:MISSED,RECEIVED,REJECT
                    d.Add("interphoneTypeEnum", "IMOUVISIAL");//可用值:FLVI,IMOUVISIAL
                    string jsonString = HttpUtil.GetSignRequestJson(d);
//        /// <summary>
//        /// post 拒接记录,仅只有在正常挂断状态下才提交通话时间
//        /// </summary>
//        public void PostReject()
//        {
//            new Thread(() =>
//            {
//                try
//                {
//                    Dictionary<string, object> d = new Dictionary<string, object>();
//                    d.Add("callId", CurtActivity.CallId);//呼叫id
//                    d.Add("callStatus", "REJECT");//可用值:MISSED,RECEIVED,REJECT
//                    d.Add("interphoneTypeEnum", "IMOUVISIAL");//可用值:FLVI,IMOUVISIAL
//                    string jsonString = HttpUtil.GetSignRequestJson(d);
                    string url = "/home-wisdom/platform/imou/updateCallStatus";
                    ResponsePackNew response = HttpUtil.RequestHttpsPost(url, jsonString);
                    Log.Info("LcVideo", "Post Reject Response code=" + response.Code);
                }
                catch { }
//                    string url = "/home-wisdom/platform/imou/updateCallStatus";
//                    ResponsePackNew response = HttpUtil.RequestHttpsPost(url, jsonString);
//                    Log.Info("LcVideo", "Post Reject Response code=" + response.Code);
//                }
//                catch { }
            }).Start();
        }
    }
}
//            }).Start();
//        }
//    }
//}