xm
2020-12-14 d6fb0646531172f23648441c224cdcccd721b894
ZigbeeApp/GateWay.Droid/FengLinVideo/Forms/MonitorFragment.cs
New file
@@ -0,0 +1,237 @@

using System;
using Android.App;
using Android.OS;
using Android.Content.Res;
using Android.Graphics;
using Android.Views;
using Android.Widget;
using Com.ETouchSky;
using Org.Json;
using Com.Tool;
using GateWay.Droid.FengLinVideo.Interface;
using Java.Util;
using GateWay.Droid.FengLinVideo.widget;
using Java.Text;
namespace GateWay.Droid.FengLinVideo.Forms
{
    public class MonitorFragment : Fragment, View.IOnClickListener, View.IOnTouchListener,VideoState
    {
        private View mView;
        private VideoPhone mPhone;
        private RelativeLayout rlScreenshot;
        private ImageView imgScreenshot;
        private TextView tvScreenshot;
        private RelativeLayout rlUnlock;
        private ImageView imgUnlock;
        private TextView tvUnlock;
        private System.Threading.Thread thread = null;
        public MonitorFragment(VideoPhone phone)
        {
            mPhone = phone;
        }
        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
        }
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            mView = inflater.Inflate(Resource.Layout.fragment_monitor, container, false);
            iniView();
            return mView;
        }
        private void iniView()
        {
            //
            rlScreenshot = (RelativeLayout)mView.FindViewById(Resource.Id.rl_sceenshot);
            imgScreenshot = (ImageView)mView.FindViewById(Resource.Id.icon_screenshot);
            tvScreenshot = (TextView)mView.FindViewById(Resource.Id.tv_screenshot);
            rlUnlock = (RelativeLayout)mView.FindViewById(Resource.Id.rl_unlock);
            imgUnlock = (ImageView)mView.FindViewById(Resource.Id.icon_unlock);
            tvUnlock = (TextView)mView.FindViewById(Resource.Id.tv_unlock);
            rlScreenshot.SetOnClickListener(this);
            rlUnlock.SetOnClickListener(this);
            rlScreenshot.SetOnTouchListener(this);
            rlUnlock.SetOnTouchListener(this);
        }
        //开锁
        private void unlock()
        {
            //开锁,当收到来电信息时可进行开锁操作
            if (mPhone != null)
            {
                try
                {
                    JSONObject ht = new JSONObject();
                    ht.Put("command", "open");//固定参数
                    ht.Put("room_id", 123); //动态参数 ,传递开门的房间号。这个开门口记录就能记录谁开的门
                    ht.Put("devType", 7); //固定参数
                    mPhone.SendCustomData(ht.ToString());
                }
                catch (Exception e)
                {
                    string erro = e.Message;
                }
            }
        }
        //更新开锁按钮状态
        private void updataUnlockState()
        {
            try
            {
                //开锁成功,15秒内不给再点击按钮
                rlUnlock.Enabled = false;
                imgUnlock.SetImageResource(Resource.Drawable.unlock_disable);
                tvUnlock.SetTextColor(new Color(Activity.GetColor(Resource.Color.color_disable)));
                if (thread != null)
                {
                    try
                    {
                        thread.Interrupt();
                    }
                    catch { }
                    thread = null;
                }
                thread = new System.Threading.Thread(() =>
                  {
                      try
                      {
                          System.Threading.Thread.Sleep(15 * 1000);
                          Activity.RunOnUiThread(() =>
                          {
                              try
                              {
                                  rlUnlock.Enabled = true;
                                  imgUnlock.SetImageResource(Resource.Drawable.unlock);
                                  tvUnlock.SetTextColor(new Color(Activity.GetColor(Resource.Color.text_color)));
                              }
                              catch { }
                          });
                      }
                      catch { }
                  });
                thread.Start();
            }
            catch { }
        }
        public void OnClick(View v)
        {
            //
            if (v.Equals(rlUnlock))
            {
                if (mPhone != null)
                    unlock();
            }
            else if (v.Equals(rlScreenshot))
            {
                //有视频过来可调用此接口进行拍照
                if (mPhone != null)
                {
                    //有视频过来可调用此接口进行拍照
                    if (mPhone != null)
                    {
                        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
                        string time = format.Format(new Date(SystemClock.CurrentThreadTimeMillis()));
                        string ss = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures).AbsolutePath;
                        string path = ss + "/" + time +".jpg";
                        mPhone.Snap(path);
                    }
                }
            }
        }
        public bool OnTouch(View v, MotionEvent e)
        {
            if (e.Action == MotionEventActions.Down)
            {
                if (v.Equals(rlScreenshot))
                {
                    imgScreenshot.Selected = true;
                    tvScreenshot.Selected = true;
                }
                else if (v.Equals(rlUnlock))
                {
                    imgUnlock.Selected = true;
                    tvUnlock.Selected = true;
                }
            }
            else if (e.Action == MotionEventActions.Up)
            {
                if (v.Equals(rlScreenshot))
                {
                    imgScreenshot.Selected = false;
                    tvScreenshot.Selected = false;
                }
                else if (v.Equals(rlUnlock))
                {
                    imgUnlock.Selected = false;
                    tvUnlock.Selected = false;
                }
            }
            else
            {
                //
            }
            return false;
        }
        public void onPhoneEvent(string msg)
        {
            try
            {
                //
                TextProtocol tp = new TextProtocol();
                tp.Parse(msg);
                string event1 = tp.GetString("event");
                switch (event1)
                {
                    case "EVT_HangUp":
                        break;
                    case "EVT_RECV_CUSTOM_DATA":
                        updataUnlockState();
                        break;
                    case "EVT_SnapAck":
                        break;
                }
            }
            catch (Exception e)
            {
                string error = e.Message;
            }
        }
        public override void OnDestroy()
        {
            base.OnDestroy();
            if (thread != null)
            {
                try
                {
                    thread.Interrupt();
                }
                catch { }
                thread = null;
            }
        }
    }
}