| | |
| | | |
| | | #if __IOS__ |
| | | using Shared.IOS.ESVideoOnSDK; |
| | | using Shared.IOS.LCVideoOnSDK; |
| | | using UIKit; |
| | | using Foundation; |
| | | #else |
| | |
| | | /// <param name="mESVideoInfo"></param> |
| | | public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo, string interphoneType) |
| | | { |
| | | #if __IOS__ |
| | | int roomID = 0; |
| | | this.esVideoInfo = mESVideoInfo; |
| | | int roomID = 0; |
| | | int.TryParse(mESVideoInfo.roomno, out roomID); |
| | | ESOnMonitorViewController vc = new ESOnMonitorViewController(); |
| | | vc.MESVideoID = mESVideoInfo.ESVideoUUID; |
| | | vc.MESRoomID =roomID; |
| | | vc.DeviceName = mESVideoInfo.DeviceName; |
| | | //vc.RoomName = mESVideoInfo.RoomName; |
| | | vc.MESCallDelegate = new OnESCallDelegate(this); |
| | | Shared.Application.currentVC.NavigationController.PushViewController(vc, true); |
| | | |
| | | #if __IOS__ |
| | | if (interphoneType == "IMOUVISIAL") |
| | | { |
| | | //乐橙可视对讲 |
| | | //1.初始化LCOpenSDK_Api |
| | | LCApiKit.SharedInstance().InitSDKOpenApi(mESVideoInfo.Lc_AccessToken); |
| | | LCApiKit.SharedInstance().CurrentDevicePlayToken = mESVideoInfo.Lc_PlayToken; |
| | | LCApiKit.SharedInstance().CurrentDeviceId = mESVideoInfo.Lc_DeviceId; |
| | | LCApiKit.SharedInstance().CurrentDeviceName = mESVideoInfo.DeviceName; |
| | | LCApiKit.SharedInstance().CurrentPsk = mESVideoInfo.Lc_DeviceId; |
| | | //2.调整监视页面 |
| | | LCOnMonitorViewController vc = new LCOnMonitorViewController(); |
| | | mOnLCCallDelegate = new OnLCCallDelegate(this); |
| | | vc.MLCCallDelegate = mOnLCCallDelegate; |
| | | //vc.MLCCallDelegate = new OnLCCallDelegate(this); |
| | | Shared.Application.currentVC.NavigationController.PushViewController(vc, true); |
| | | } |
| | | else |
| | | { |
| | | |
| | | ESOnMonitorViewController vc = new ESOnMonitorViewController(); |
| | | vc.MESVideoID = mESVideoInfo.ESVideoUUID; |
| | | vc.MESRoomID = roomID; |
| | | vc.DeviceName = mESVideoInfo.DeviceName; |
| | | //vc.RoomName = mESVideoInfo.RoomName; |
| | | //vc.MESCallDelegate = new OnESCallDelegate(this); |
| | | Shared.Application.currentVC.NavigationController.PushViewController(vc, true); |
| | | } |
| | | #else |
| | | Intent intent = null; |
| | | if (interphoneType == "IMOUVISIAL") |
| | |
| | | public void ShowESvideoVideoIntercom(ESVideoInfo mESVideoInfo, string interphoneType) |
| | | { |
| | | this.esVideoInfo = mESVideoInfo; |
| | | #if __IOS__ |
| | | int roomID = 0; |
| | | int.TryParse(mESVideoInfo.roomno, out roomID); |
| | | ESOnIntercomViewController vc = new ESOnIntercomViewController(); |
| | | vc.MESVideoID = mESVideoInfo.ESVideoUUID; |
| | | vc.MESRoomID = roomID; |
| | | vc.DeviceName = mESVideoInfo.DeviceName; |
| | | //vc.RoomName = mESVideoInfo.RoomName; |
| | | //vc.MESCallDelegate = new OnESCallDelegate(this); |
| | | mOnESCallDelegate = new OnESCallDelegate(this); |
| | | vc.MESCallDelegate = mOnESCallDelegate; |
| | | Shared.Application.currentVC.NavigationController.PushViewController(vc, true); |
| | | #if __IOS__ |
| | | if (interphoneType == "IMOUVISIAL") |
| | | { |
| | | //乐橙可视对讲 |
| | | //1.初始化LCOpenSDK_Api |
| | | LCApiKit.SharedInstance().InitSDKOpenApi(mESVideoInfo.Lc_AccessToken); |
| | | LCApiKit.SharedInstance().CurrentDevicePlayToken = mESVideoInfo.Lc_PlayToken; |
| | | LCApiKit.SharedInstance().CurrentDeviceId = mESVideoInfo.Lc_DeviceId; |
| | | LCApiKit.SharedInstance().CurrentDeviceName = mESVideoInfo.DeviceName; |
| | | LCApiKit.SharedInstance().CurrentPsk = mESVideoInfo.Lc_DeviceId; |
| | | //2.跳转乐橙呼叫页面 |
| | | LCOnIntercomViewController vc = new LCOnIntercomViewController(); |
| | | mOnLCCallDelegate = new OnLCCallDelegate(this); |
| | | vc.MLCCallDelegate = mOnLCCallDelegate; |
| | | //vc.MLCCallDelegate = new OnLCCallDelegate(this); |
| | | Shared.Application.currentVC.NavigationController.PushViewController(vc, true); |
| | | } |
| | | else |
| | | { |
| | | |
| | | ESOnIntercomViewController vc = new ESOnIntercomViewController(); |
| | | vc.MESVideoID = mESVideoInfo.ESVideoUUID; |
| | | vc.MESRoomID = roomID; |
| | | vc.DeviceName = mESVideoInfo.DeviceName; |
| | | //vc.RoomName = mESVideoInfo.RoomName; |
| | | //vc.MESCallDelegate = new OnESCallDelegate(this); |
| | | mOnESCallDelegate = new OnESCallDelegate(this); |
| | | vc.MESCallDelegate = mOnESCallDelegate; |
| | | Shared.Application.currentVC.NavigationController.PushViewController(vc, true); |
| | | } |
| | | #else |
| | | #region |
| | | |
| | |
| | | #endif |
| | | } |
| | | |
| | | #region 动作回调,提交记录到云端 |
| | | #region 动作回调和原生交互,提交记录到云端 |
| | | |
| | | /// <summary> |
| | | /// 判断callId是否为空 |
| | |
| | | |
| | | #endregion |
| | | |
| | | #region 王赢新接听和开锁接口 |
| | | /// <summary> |
| | | /// 开锁 |
| | | /// </summary> |
| | | void HDLUnlockAction() |
| | | { |
| | | //Utlis.WriteLine("UnlockAction"); |
| | | |
| | | if (esVideoInfo == null) return; |
| | | |
| | | new Thread(() => |
| | | { |
| | | Dictionary<string, object> dic = new Dictionary<string, object>(); |
| | | dic.Add("deviceId", esVideoInfo.Lc_DeviceId);//设备id |
| | | var requestJson = HttpUtil.GetSignRequestJson(dic); |
| | | var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_VideoDevice_OpenDoorbell, requestJson); |
| | | if (revertObj.Code == StateCode.SUCCESS) |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | #if __IOS__ |
| | | //和原生监控界面交互、发送开锁成功通知 |
| | | NSNotificationCenter.DefaultCenter.PostNotificationName("lcCallDelegateOpenDoorSuccess", null); |
| | | #endif |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | Utlis.WriteLine("POST 开锁失败 code: " + revertObj.Code); |
| | | } |
| | | |
| | | }) |
| | | { IsBackground = false }.Start(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更改通话状态 |
| | | /// </summary> |
| | | void HDLUpdateCallStatus(CallStatusType callStatusType, InterphoneType interphoneType, int callDuration = 0) { |
| | | |
| | | if (CheckESVideoInfoIsNullOrEmpty()) return; |
| | | |
| | | new Thread(() => |
| | | { |
| | | Dictionary<string, object> dic = new Dictionary<string, object>(); |
| | | dic.Add("callId", esVideoInfo.callId);//呼叫id |
| | | dic.Add("callStatus", callStatusType.ToString());//可用值:MISSED,RECEIVED,REJECT |
| | | dic.Add("interphoneTypeEnum", interphoneType.ToString());//可用值:FLVI,IMOUVISIAL |
| | | if (callStatusType == CallStatusType.RECEIVED && callDuration > 0) |
| | | { |
| | | dic.Add("callDuration", callDuration);//通话时长(秒) |
| | | } |
| | | |
| | | var requestJson = HttpUtil.GetSignRequestJson(dic); |
| | | var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_VideoDevice_UpdateCallStatus, requestJson); |
| | | if (revertObj.Code == StateCode.SUCCESS) |
| | | { |
| | | |
| | | } |
| | | else |
| | | { |
| | | Utlis.WriteLine("POST 更新状态失败 code: " + revertObj.Code); |
| | | } |
| | | |
| | | }) |
| | | { IsBackground = false }.Start(); |
| | | |
| | | } |
| | | #endregion |
| | | |
| | | #if __IOS__ |
| | | #region OnESCallDelegate |
| | | /////// <summary> |
| | |
| | | public override void OnUnlockAction() |
| | | { |
| | | _ESOnVideo.UnlockAction(); |
| | | } |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region OnLCCallDelegate |
| | | /////// <summary> |
| | | /////// OnLCCallDelegate 继承响应事件 |
| | | /////// </summary> |
| | | OnLCCallDelegate mOnLCCallDelegate; |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public class OnLCCallDelegate : LCCallDelegate |
| | | { |
| | | |
| | | [Weak] ESOnVideo _ESOnVideo; |
| | | |
| | | public OnLCCallDelegate(ESOnVideo mESOnVideo) |
| | | { |
| | | _ESOnVideo = mESOnVideo; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 接听 |
| | | /// </summary> |
| | | public override void OnAnswerAction() |
| | | { |
| | | _ESOnVideo.HDLUpdateCallStatus(CallStatusType.RECEIVED, InterphoneType.IMOUVISIAL); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 挂断 |
| | | /// </summary> |
| | | /// <param name="callDuration"></param> |
| | | public override void OnHangUpAction(int callDuration) |
| | | { |
| | | _ESOnVideo.HDLUpdateCallStatus(CallStatusType.RECEIVED, InterphoneType.IMOUVISIAL, callDuration); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 拒接 |
| | | /// </summary> |
| | | public override void OnRejectCallAction() |
| | | { |
| | | _ESOnVideo.HDLUpdateCallStatus(CallStatusType.REJECT, InterphoneType.IMOUVISIAL); |
| | | } |
| | | |
| | | /// <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.HDLUnlockAction(); |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 通话状态类型 |
| | | /// </summary> |
| | | public enum CallStatusType |
| | | { |
| | | /// <summary> |
| | | /// 未接 |
| | | /// </summary> |
| | | MISSED, |
| | | /// <summary> |
| | | /// 已接听 |
| | | /// </summary> |
| | | RECEIVED, |
| | | /// <summary> |
| | | /// 拒接 |
| | | /// </summary> |
| | | REJECT, |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 可视对讲设备平台类型 |
| | | /// </summary> |
| | | public enum InterphoneType |
| | | { |
| | | /// <summary> |
| | | /// 丰林平台 |
| | | /// </summary> |
| | | FLVI, |
| | | /// <summary> |
| | | /// 大华可视对讲平台 |
| | | /// </summary> |
| | | IMOUVISIAL, |
| | | } |
| | | } |