From f71e74b5f0d2716fbf05da016cdaa18d64e09f80 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 31 十二月 2020 17:01:18 +0800
Subject: [PATCH] 又换完成最新门锁。空气质量传感器完成数据和基本配置功能。开发图表和自动化的同事可下载此代码

---
 ZigbeeApp/GateWay.Droid/VideoActivity.cs |  390 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 390 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/GateWay.Droid/VideoActivity.cs b/ZigbeeApp/GateWay.Droid/VideoActivity.cs
new file mode 100755
index 0000000..acf8255
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/VideoActivity.cs
@@ -0,0 +1,390 @@
+锘縰sing System;
+using Android.App;
+using Android.Content.PM;
+using System.Threading;
+using Android.Content.Res;
+using Android.Graphics;
+using Android.OS;
+using Android.Runtime;
+using Android.Views;
+using Android.Widget;
+using Com.ETouchSky;
+using Com.Tool;
+using GateWay.Droid.FengLinVideo.Forms;
+using GateWay.Droid.FengLinVideo.widget;
+using Java.Text;
+using Java.Util;
+
+namespace GateWay.Droid
+{
+    //娉ㄦ剰锛� com.hdl.evoyohome ====銆媝ackcode=44492e5c51dda5e40862a4255396b741 鍖呭悕鏄浐瀹氱殑锛屾洿鏀瑰寘鍚嶄細瀵艰嚧鍙瀵硅閮ㄥ垎宸ヤ綔涓嶆甯�
+    [Activity(Name = "com.hdl.home.wxapi.VideoActivity", WindowSoftInputMode = SoftInput.AdjustResize, LaunchMode = LaunchMode.SingleInstance, ConfigurationChanges = (ConfigChanges.Keyboard | ConfigChanges.KeyboardHidden | ConfigChanges.LayoutDirection | ConfigChanges.Locale | ConfigChanges.Orientation | ConfigChanges.ScreenSize), Theme = "@style/MyTheme", ScreenOrientation = ScreenOrientation.Portrait)]
+    public class VideoActivity : Android.App.Activity, View.IOnClickListener, ISurfaceHolderCallback, VideoPhoneJni.ICallBack,TipDiaglog.OnConfirmClickListener
+    {
+        private static Activity activity;
+        private VideoPhone mPhone;
+        private ISurfaceHolder mRemoteSurfaceHolder;
+        private FrameLayout mRemoteFrameContainer;
+        private SurfaceView mSurfaceRemote;
+
+        private ImageView ivBack;
+        private TextView tvName;
+        private TextView tvRoomName;
+        private MonitorFragment monitorFragment = null;
+        private ReverseCallFragment reverseCallFragment = null;
+        
+        public string ESVideoUUID= "JJY000019VPLLF";//瀹ゅ鏈篣UID锛屼緥:JJY000007FSEYX  f5f6fa
+        public int ESRoomID = 0;//褰撳墠鐢ㄦ埛鐨勬埧闂� ID
+        public string DeviceName;//瀹ゅ鏈虹殑鍚嶇О锛屼緥锛屽澶栨満
+        public string RoomName;//鎴块棿鍛藉悕锛屼緥 8鏍�1鍗曞厓0801
+        public bool IsCollect;//鏄惁鏀惰棌
+        public int Tpye = 0;//绫诲瀷锛�0 鐩戞帶锛�1鍙嶅懠
+
+        protected override void OnCreate(Bundle savedInstanceState)
+        {
+            base.OnCreate(savedInstanceState);
+
+            try
+            {
+                activity = this;
+                ESVideoUUID = Intent.GetStringExtra("ESVideoUUID");//瀹ゅ鏈篣UID锛屼緥:JJY000007FSEYX
+                ESRoomID = Intent.GetIntExtra("ESRoomID", 0);//褰撳墠鐢ㄦ埛鐨勬埧闂� ID   101
+                DeviceName = Intent.GetStringExtra("DeviceName");//瀹ゅ鏈虹殑鍚嶇О锛屼緥锛屽澶栨満
+                RoomName = Intent.GetStringExtra("RoomName");//鎴块棿鍛藉悕锛屼緥 8鏍�1鍗曞厓0801   81
+                IsCollect = Intent.GetBooleanExtra("IsCollect", false);//鏄惁鏀惰棌
+                Tpye = Intent.GetIntExtra("Type", 0);//绫诲瀷锛�0 鐩戞帶锛�1鍙嶅懠                
+                SetContentView(Resource.Layout.activity_video_phone);
+
+                IniView();
+                IniData();
+
+                if (Tpye == 0)
+                {
+                    Monitor(ESVideoUUID); //鐩戞帶
+
+                    monitorFragment = new MonitorFragment(mPhone);
+                    FragmentManager.BeginTransaction().Replace(Resource.Id.content, monitorFragment).Commit();
+                }
+                else
+                {
+                    string param = "address=" + ESVideoUUID + ",tag=mobile://123,";
+                    reverseCallFragment = new ReverseCallFragment(mPhone, param);
+                    FragmentManager.BeginTransaction().Replace(Resource.Id.content, reverseCallFragment).Commit();
+                }
+            }
+            catch (Exception E)
+            {
+                var D=E.Message;
+            }
+        }
+
+        //鐩戞帶
+        private void Monitor(string address)
+        {
+            //鐩戣鍔熻兘 浠庡钩鍙版媺鍙栫洃瑙嗗垪琛紝璋冪敤姝ゆ帴鍙e彲浠ヤ竴鍙颁竴鍙扮洃瑙�
+            if (mPhone != null)
+            {
+                string UserData = ""; //姝ゅ弬鏁� 鍙互鍚戦棬鍙f満璁惧浼犻�掓暟鎹紝
+                //娉ㄦ剰锛歊equestAudio 璇锋眰瀵规柟闊抽锛孯equestVideo璇锋眰瀵规柟瑙嗛 SendAudio鍙戦�佹湰鍦伴煶棰� SendVideo 鍙戦�佹湰鍦拌棰� 涓�鑸棬鍙d笉鎺ユ敹鍒拌棰戯紝鎵�浠ユ渶濂借缃�0锛屽噺灏戞祦閲忔秷鑰�
+                string param = "SendAudio=0\r\n" + "SendVideo=0\r\n" + "RequestAudio=0\r\n" + "RequestVideo=0\r\n" + "UserData=" + UserData + "\r\n";
+                mPhone.Monitor(address, param);
+            }
+        }
+
+        private void IniView()
+        {
+            mRemoteFrameContainer = (FrameLayout)FindViewById(Resource.Id.remoteFrame);
+
+            ivBack = (ImageView)FindViewById(Resource.Id.icon_back);
+            tvName = (TextView)FindViewById(Resource.Id.tv_name);
+            tvRoomName = (TextView)FindViewById(Resource.Id.tv_roomName);
+
+            tvRoomName.SetText(RoomName, null);
+            tvName.SetText(DeviceName, null);
+
+            ivBack.SetOnClickListener(this);
+        }
+
+        private void IniData()
+        {
+            try
+            {
+                if (mPhone == null)
+                {
+                    string _params = "port=8554\r\n" + "packcode=cd89ae3460c8f396c748bb7d2668dfd0\r\n"; //鍒濆鍖栧璁茬鍙o紝榛樿灏卞ソ锛岃窡闂ㄥ彛鏈鸿缃鍖归厤,娉ㄦ剰鏂版帴鍙i渶瑕佸鍔爌ackcode鍙傛暟锛岄渶瑕佹妸浣犱滑鐨勫寘鍚嶅彂杩囨潵
+                    mPhone = new VideoPhone(this, this, _params);
+
+                    if (mRemoteSurfaceHolder != null)
+                    {
+                        mPhone.SetRemoteSurfaceHolder(mRemoteSurfaceHolder, "mRemoteSurfaceHolder!=null"); //璁剧疆鏉ョ數绐楀彛
+                    }
+
+                    ViewGroup v = (ViewGroup)FindViewById(Resource.Id.localVideo);
+                    mPhone.SetLocalVideoContainer(v);//璁剧疆鏈湴瑙嗛绐楀彛锛屼竴瀹氳璋冪敤锛屼笉鐒跺悗浼氬嚭鐜版病澹伴煶
+                }
+                else
+                {
+                    mPhone.StopStream();
+                    mPhone.Release();
+                    mPhone = null;
+                }
+            }
+            catch (Exception e)
+            {
+                string error = e.Message;
+            }
+        }
+
+        protected override void OnResume()
+        {
+            base.OnResume();
+
+            if (mPhone != null)
+            {
+                mPhone.OnActivityResume();
+            }
+        }
+
+        protected override void OnPause()
+        {
+            base.OnPause();
+            if (mPhone != null)
+            {
+                //mPhone.OnActivityPause();
+            }
+        }
+
+        protected override void OnDestroy()
+        {
+            base.OnDestroy();
+            if (mPhone != null)
+            {
+                mPhone.HangUp();
+                mPhone.Release();
+                mPhone = null;
+                //mPhone.OnActivityDestroy();
+            }
+        }
+
+        public override void OnBackPressed()
+        {
+            if (mPhone != null)
+                mPhone.HangUp();
+            else
+                Finish();
+        }
+
+        public void OnClick(View v)
+        {
+            if (v.Equals(ivBack))
+            {
+                if (mPhone != null)
+                    mPhone.HangUp();
+                else
+                    Finish();
+            }
+        }      
+
+        //涓嶈兘鐢╒iew.INVISIBLE鏉ュ畬鍏ㄩ殣钘�,鍚﹀垯MediaCodec.configure浼氭姤ava.lang.IllegalArgumentException: The surface has been released
+        //[Obsolete]
+        private void showRemoteVideo()
+        {
+            try
+            {
+                if (mSurfaceRemote != null)
+                {
+                    return;
+                }
+                mSurfaceRemote = new SurfaceView(this, null);
+                ISurfaceHolder holder = mSurfaceRemote.Holder;
+                holder.AddCallback(this);//ISurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS
+                holder.SetType(SurfaceType.PushBuffers);
+
+                //鍙戠幇绗竴娆how鏃朵細闂睆涓�涓嬶紝鍚庨潰hide鍐峴how鏃朵笉浼氶棯灞�
+                FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent);
+                //v.setId(View.generateViewId());
+                mSurfaceRemote.LayoutParameters = lp;
+                mRemoteFrameContainer.AddView(mSurfaceRemote);
+            }
+            catch { }
+        }
+
+        private void hideRemoteVideo()
+        {
+            try
+            {
+                if (mSurfaceRemote != null)
+                {
+                    mRemoteFrameContainer.RemoveView(mSurfaceRemote);
+                    mSurfaceRemote = null;
+                }
+            }
+            catch { }
+        }
+
+        /// <summary>
+        /// 寮瑰嚭宸叉寕鏂彁绀�
+        /// </summary>
+        private void showTipDialog(string title, string text, string btnText,bool isClose)
+        {
+            try
+            {
+                TipDiaglog diaglog = new TipDiaglog(this);
+                diaglog.SetAutoClose(isClose);
+                diaglog.SetTitleText(title);//"鎻愮ず"
+                diaglog.SetContentText(text);//"宸叉寕鏂�"
+                diaglog.SetConfirmText(btnText);//"纭"
+                diaglog.SetCanceledOnTouchOutside(false);
+                diaglog.Show();
+                diaglog.Create();
+                diaglog.SetConfirmClickListener(this);
+            }
+            catch (Exception e)
+            {
+                string ss = e.Message;
+            }
+        }
+        
+        public void SurfaceChanged(ISurfaceHolder holder, [GeneratedEnum] Format format, int width, int height)
+        {
+            mRemoteSurfaceHolder = holder;
+            if (mPhone != null)
+            {
+                mPhone.SetRemoteSurfaceHolder(holder, "surfaceChanged");
+            }
+        }
+
+        public void SurfaceCreated(ISurfaceHolder holder)
+        {
+            mRemoteSurfaceHolder = holder;
+            if (mPhone != null)
+            {
+                mPhone.SetRemoteSurfaceHolder(holder, "surfaceCreated");
+            }
+        }
+
+        public void SurfaceDestroyed(ISurfaceHolder holder)
+        {
+            mRemoteSurfaceHolder = null;
+            if (mPhone != null)
+            {
+                mPhone.SetRemoteSurfaceHolder(null, "surfaceDestroyed");
+            }
+        }
+
+        //鐢变簬android妗嗘灦闄愬埗锛岃婊¤冻濡備笅鏉′欢鎵嶈兘寮�娴�:activity瑕佸湪鍓嶅彴锛屽苟涓攕urfaceview鍙敤
+        private void startStream(String reason)
+        {
+            if (mPhone != null)
+            {
+                try
+                {
+                    //寮�娴佷箣鍓嶅彲閰嶇疆瑙嗛灏哄锛岀爜鐜囷紝甯х巼 閽堝鐨勬槸鏈湴
+                    //mPhone.SetVideoSize(640, 480);//1920x1080,1280x720,640x480
+                    //mPhone.SetBps(1.5 * 1024 * 1024);
+                    //mPhone.SetFps(30);
+                    mPhone.StartStream();
+                }
+                catch (Exception e)
+                {
+                    string ss = e.Message;
+                }
+            }
+        }
+
+        //[Obsolete]
+        public void OnPhoneEvent(string msg)
+        {
+            try
+            {
+                if (monitorFragment != null)
+                {
+                    monitorFragment.onPhoneEvent(msg);
+                }
+
+                if (reverseCallFragment != null)
+                {
+                    reverseCallFragment.onPhoneEvent(msg);
+                }
+
+                TextProtocol tp = new TextProtocol();
+                tp.Parse(msg);
+                string event1 = tp.GetString("event");
+
+                switch (event1)
+                {
+                    case "EVT_Ringing":
+                        mPhone.RequestCallerSendVideo();
+                        showRemoteVideo();
+                        break;
+                    case "EVT_Connected":
+                        if (!mPhone.IsStreamRunning)
+                        {
+                            //鐢变簬android妗嗘灦闄愬埗锛岃婊¤冻濡備笅鏉′欢鎵嶈兘寮�娴�: activity瑕佸湪鍓嶅彴锛屽苟涓攕urfaceview鍙敤
+                            startStream("EVT_Connected");
+                        }
+                        showRemoteVideo();
+                        break;
+                    case "EVT_StartStream":
+                        startStream("EVT_StreamStream");
+                        break;
+                    case "EVT_StopStream":
+                        mPhone.StopStream();
+                        break;
+                    case "EVT_MonitorConnected":
+                        if (!mPhone.IsStreamRunning)
+                        {
+                            startStream("EVT_MonitorConnected");
+                        }
+                        showRemoteVideo();
+                        break;
+                    case "EVT_HangUp":
+                        hideRemoteVideo();
+                        if (mPhone != null)
+                        {
+                            mPhone.StopStream();
+                        }
+                        showTipDialog("鎻愮ず", "宸叉寕鏂�", "纭", true);
+                        break;
+                    case "EVT_RECV_CUSTOM_DATA":
+                        string data = tp.GetString("data");
+                        //updataUnlockState();
+                        break;
+                    case "EVT_SnapAck":
+                        int error = tp.GetInt("error");
+                        string filePath = tp.GetString("filePath");
+                        if (error == 0)
+                        {
+                            showTipDialog("鎻愮ず", "鎶撳浘鎴愬姛", "纭", false);
+                        }
+                        else
+                        {
+                            showTipDialog("鎻愮ず", "鎶撳浘澶辫触\n\r" + error, "纭", false);
+                        }
+                        break;
+                }
+            }
+            catch (Exception e)
+            {
+                string error = e.Message;
+            }           
+        }
+
+        public void OnRecvAudioFrame(byte[] p0)
+        {
+            //throw new NotImplementedException();
+        }
+
+        public void OnRecvVideoFrame(byte[] p0)
+        {
+            //throw new NotImplementedException();
+        }
+
+        public void onSureClick(TipDiaglog dialoog, View v, bool bol)
+        {
+            dialoog.Dismiss();
+            if (bol)
+                this.Finish();
+        }
+    }  
+}

--
Gitblit v1.8.0