New file |
| | |
| | | using System; |
| | | using HDL_ON; |
| | | using HDL_ON.DAL.Server; |
| | | using System.Threading; |
| | | using System.Collections.Generic; |
| | | |
| | | #if __IOS__ |
| | | using Shared.IOS.ESVideoOnSDK; |
| | | using UIKit; |
| | | using Foundation; |
| | | |
| | | #endif |
| | | |
| | | namespace Shared |
| | | { |
| | | /// <summary> |
| | | /// 丰林可视对讲 |
| | | /// </summary> |
| | | public class ESOnVideo |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | private static ESOnVideo m_Current = null; |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public static ESOnVideo Current |
| | | { |
| | | get |
| | | { |
| | | if (m_Current == null) |
| | | { |
| | | m_Current = new ESOnVideo(); |
| | | } |
| | | return m_Current; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public ESVideoInfo esVideoInfo; |
| | | //public FLInfo mFLInfo; |
| | | |
| | | public void InitESVideoSDK() |
| | | { |
| | | //ESVideo. |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 监控页面 |
| | | /// </summary> |
| | | /// <param name="mESVideoInfo"></param> |
| | | public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo) |
| | | { |
| | | this.esVideoInfo = mESVideoInfo; |
| | | |
| | | #if __IOS__ |
| | | ESOnMonitorViewController vc = new ESOnMonitorViewController(); |
| | | vc.MESVideoID = mESVideoInfo.ESVideoUUID; |
| | | //vc.MESRoomID = mESVideoInfo.ESRoomID; |
| | | vc.DeviceName = mESVideoInfo.DeviceName; |
| | | //vc.RoomName = mESVideoInfo.RoomName; |
| | | vc.MESCallDelegate = new OnESCallDelegate(this); |
| | | Shared.Application.currentVC.NavigationController.PushViewController(vc, true); |
| | | #else |
| | | |
| | | #endif |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 被呼叫页面 |
| | | /// </summary> |
| | | /// <param name="mESVideoInfo"></param> |
| | | public void ShowESvideoVideoIntercom(ESVideoInfo mESVideoInfo) |
| | | { |
| | | this.esVideoInfo = mESVideoInfo; |
| | | #if __IOS__ |
| | | ESOnIntercomViewController vc = new ESOnIntercomViewController(); |
| | | vc.MESVideoID = mESVideoInfo.ESVideoUUID; |
| | | //vc.MESRoomID = mESVideoInfo.ESRoomID; |
| | | vc.DeviceName = mESVideoInfo.DeviceName; |
| | | //vc.RoomName = mESVideoInfo.RoomName; |
| | | vc.MESCallDelegate = new OnESCallDelegate(this); |
| | | Shared.Application.currentVC.NavigationController.PushViewController(vc, true); |
| | | #else |
| | | |
| | | #endif |
| | | } |
| | | |
| | | #region 动作回调,提交记录到云端 |
| | | |
| | | /// <summary> |
| | | /// 判断callId是否为空 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | bool CheckESVideoInfoIsNullOrEmpty() |
| | | { |
| | | return (esVideoInfo == null || string.IsNullOrEmpty(esVideoInfo.callId)); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 接听 |
| | | /// </summary> |
| | | void AnswerAction() |
| | | { |
| | | Utlis.WriteLine("AnswerAction"); |
| | | |
| | | if (CheckESVideoInfoIsNullOrEmpty()) return; |
| | | |
| | | new Thread(() => |
| | | { |
| | | var requestJson = HttpUtil.GetSignRequestJson(esVideoInfo); |
| | | var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Answer, requestJson); |
| | | if (revertObj.Code == StateCode.SUCCESS) |
| | | { |
| | | Utlis.WriteLine("POST 接听成功"); |
| | | } |
| | | else |
| | | { |
| | | Utlis.WriteLine("POST 接听失败"); |
| | | } |
| | | |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 挂断 |
| | | /// </summary> |
| | | /// <param name="callDuration"></param> |
| | | void HangUpAction(int callDuration) |
| | | { |
| | | Utlis.WriteLine("HangUpAction :" + callDuration); |
| | | |
| | | if (CheckESVideoInfoIsNullOrEmpty()) return; |
| | | |
| | | new Thread(() => |
| | | { |
| | | Dictionary<string, object> dic = new Dictionary<string, object>(); |
| | | dic.Add("callId", esVideoInfo.callId); |
| | | dic.Add("callDuration", callDuration); |
| | | |
| | | var requestJson = HttpUtil.GetSignRequestJson(dic); |
| | | var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_HangUp, requestJson); |
| | | if (revertObj.Code == StateCode.SUCCESS) |
| | | { |
| | | Utlis.WriteLine("POST 挂断成功"); |
| | | } |
| | | else |
| | | { |
| | | Utlis.WriteLine("POST 挂断失败"); |
| | | } |
| | | |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 拒接 |
| | | /// </summary> |
| | | void RejectCallAction() |
| | | { |
| | | Utlis.WriteLine("RejectCallAction"); |
| | | |
| | | if (CheckESVideoInfoIsNullOrEmpty()) return; |
| | | |
| | | new Thread(() => |
| | | { |
| | | Dictionary<string, object> dic = new Dictionary<string, object>(); |
| | | dic.Add("callId", esVideoInfo.callId); |
| | | |
| | | var requestJson = HttpUtil.GetSignRequestJson(dic); |
| | | var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Reject, requestJson); |
| | | if (revertObj.Code == StateCode.SUCCESS) |
| | | { |
| | | Utlis.WriteLine("POST 拒接成功"); |
| | | } |
| | | else |
| | | { |
| | | Utlis.WriteLine("POST 拒接失败"); |
| | | } |
| | | |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 截图成功 |
| | | /// </summary> |
| | | void ScreenshotSuccessfulAction(byte[] dataBytes) |
| | | { |
| | | Utlis.WriteLine("ScreenshotSuccessfulAction"); |
| | | |
| | | if (CheckESVideoInfoIsNullOrEmpty()) return; |
| | | |
| | | new Thread(() => |
| | | { |
| | | var imageName = Guid.NewGuid().ToString(); |
| | | Dictionary<string, object> dic = new Dictionary<string, object>(); |
| | | dic.Add("callId", esVideoInfo.callId); |
| | | dic.Add("images", dataBytes); |
| | | dic.Add("imagesName", "FL" + imageName + "_ios.jpg"); |
| | | |
| | | var requestJson = HttpUtil.GetSignRequestJson(dic); |
| | | var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Screenshot, requestJson); |
| | | if (revertObj.Code == StateCode.SUCCESS) |
| | | { |
| | | Utlis.WriteLine("POST 截图上传成功"); |
| | | } |
| | | else |
| | | { |
| | | Utlis.WriteLine("POST 截图上传失败"); |
| | | } |
| | | |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 开锁成功 |
| | | /// </summary> |
| | | void UnlockAction() |
| | | { |
| | | Utlis.WriteLine("UnlockAction"); |
| | | |
| | | if (CheckESVideoInfoIsNullOrEmpty()) return; |
| | | |
| | | new Thread(() => |
| | | { |
| | | Dictionary<string, object> dic = new Dictionary<string, object>(); |
| | | dic.Add("callId", esVideoInfo.callId); |
| | | |
| | | var requestJson = HttpUtil.GetSignRequestJson(dic); |
| | | var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Unlock, requestJson); |
| | | if (revertObj.Code == StateCode.SUCCESS) |
| | | { |
| | | Utlis.WriteLine("POST 开锁成功"); |
| | | } |
| | | else |
| | | { |
| | | Utlis.WriteLine("POST 开锁失败"); |
| | | } |
| | | |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #if __IOS__ |
| | | #region OnESCallDelegate |
| | | /////// <summary> |
| | | /////// OnESCallDelegate 继承响应事件 |
| | | /////// </summary> |
| | | //OnESCallDelegate mOnESCallDelegate; |
| | | |
| | | public class OnESCallDelegate : ESCallDelegate |
| | | { |
| | | |
| | | [Weak] ESOnVideo _ESOnVideo; |
| | | |
| | | public OnESCallDelegate(ESOnVideo mESOnVideo) |
| | | { |
| | | _ESOnVideo = mESOnVideo; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 接听 |
| | | /// </summary> |
| | | public override void OnAnswerAction() |
| | | { |
| | | _ESOnVideo.AnswerAction(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 挂断 |
| | | /// </summary> |
| | | /// <param name="callDuration"></param> |
| | | public override void OnHangUpAction(int callDuration) |
| | | { |
| | | _ESOnVideo.HangUpAction(callDuration); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 拒接 |
| | | /// </summary> |
| | | public override void OnRejectCallAction() |
| | | { |
| | | _ESOnVideo.RejectCallAction(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 截图成功 |
| | | /// </summary> |
| | | /// <param name="image"></param> |
| | | public override void OnScreenshotSuccessfulAction(UIImage image) |
| | | { |
| | | //NSData imageData = UIImagePNGRepresentation(image); UIImage |
| | | NSData imageData = image.AsPNG(); |
| | | byte[] dataBytes = new byte[imageData.Length]; |
| | | System.Runtime.InteropServices.Marshal.Copy(imageData.Bytes, dataBytes, 0, Convert.ToInt32(imageData.Length)); |
| | | //image.g |
| | | _ESOnVideo.ScreenshotSuccessfulAction(dataBytes); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 开锁成功 |
| | | /// </summary> |
| | | public override void OnUnlockAction() |
| | | { |
| | | _ESOnVideo.UnlockAction(); |
| | | } |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | #endif |
| | | |
| | | /// <summary> |
| | | /// 测试方法 |
| | | /// </summary> |
| | | /// <param name="isMonitor"></param> |
| | | public void Test(bool isMonitor = true) |
| | | { |
| | | ESVideoInfo eSVideoInfo = new ESVideoInfo() |
| | | { |
| | | DeviceName = "室外机88", |
| | | ESVideoUUID = "JJY000019VPLLF", |
| | | }; |
| | | if (isMonitor) |
| | | { |
| | | ShowESVideoMonitor(eSVideoInfo); |
| | | } |
| | | else |
| | | { |
| | | ShowESvideoVideoIntercom(eSVideoInfo); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public class ESVideoInfo |
| | | { |
| | | /// <summary> |
| | | /// 室外机的UUID |
| | | /// 例:JJY000007FSEYX |
| | | /// </summary> |
| | | public string ESVideoUUID = string.Empty; |
| | | /// <summary> |
| | | /// 室外机的名称 |
| | | /// 例:室外机 |
| | | /// </summary> |
| | | public string DeviceName = string.Empty; |
| | | /// <summary> |
| | | /// 丰林请求的唯一id |
| | | /// </summary> |
| | | public string uuid; |
| | | /// <summary> |
| | | /// 丰林社区id |
| | | /// </summary> |
| | | public string cmtID; |
| | | /// <summary> |
| | | /// 丰林房间号 |
| | | /// </summary> |
| | | public string roomno; |
| | | /// <summary> |
| | | /// 丰林楼栋号 |
| | | /// </summary> |
| | | public string unitno; |
| | | /// <summary> |
| | | /// 丰林住宅Id |
| | | /// </summary> |
| | | public string HomeID; |
| | | /// <summary> |
| | | /// 呼叫记录Id |
| | | /// </summary> |
| | | public string callId; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |