using System;
|
using HDL_ON;
|
using HDL_ON.DAL.Server;
|
using System.Threading;
|
using System.Collections.Generic;
|
using HDL_ON.UI.UI2.PersonalCenter.PirDevice;
|
using HDL_ON.Entity;
|
|
#if __IOS__
|
using Shared.IOS.ESVideoOnSDK;
|
using Shared.IOS.LCVideoOnSDK;
|
using UIKit;
|
using Foundation;
|
#else
|
|
using Android.Content;
|
|
#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;
|
|
/// <summary>
|
/// 暂时没用
|
/// </summary>
|
public void InitESVideoSDK()
|
{
|
//ESVideo.
|
}
|
|
/// <summary>
|
/// 如果域名包含china,则SDK 使用乐橙的中国大陆(正式)域名
|
/// </summary>
|
/// <returns></returns>
|
bool GetIsChinaMainland()
|
{
|
////强制使用国内
|
//return true;
|
|
return OnAppConfig.Instance.RequestHttpsHost.Contains("china");//如果域名包含china,则SDK 使用乐橙的中国大陆(正式)域名
|
}
|
|
/// <summary>
|
/// 监控页面
|
/// </summary>
|
/// <param name="mESVideoInfo"></param>
|
public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo, string interphoneType)
|
{
|
this.esVideoInfo = mESVideoInfo;
|
int roomID = 0;
|
int.TryParse(mESVideoInfo.roomno, out roomID);
|
|
#if __IOS__
|
if (interphoneType == InterphoneType.IMOUVISIAL.ToString())
|
{
|
//乐橙可视对讲
|
//1.初始化LCOpenSDK_Api(Shared.IOS.LCVideoOnSDK)
|
LCApiKit.SharedInstance().IsChinaMainland = GetIsChinaMainland();
|
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_Psk;
|
//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 if(interphoneType == InterphoneType.FLVI.ToString())
|
{
|
//Shared.IOS.ESVideoOnSDK
|
ESOnMonitorViewController vc = new ESOnMonitorViewController();
|
vc.MESVideoID = mESVideoInfo.ESVideoUUID;
|
vc.MESRoomID = roomID;
|
vc.DeviceName = mESVideoInfo.DeviceName;
|
Shared.Application.currentVC.NavigationController.PushViewController(vc, true);
|
}
|
else if (interphoneType == InterphoneType.HDL.ToString())
|
{
|
//HDLLinphone 狄耐克
|
HDLLinphone.Current.ShowESVideoMonitor(mESVideoInfo, interphoneType);
|
} else if (interphoneType == InterphoneType.FREEVIEW.ToString())
|
{
|
//全视通监视
|
NSDictionary deviceInfo = new NSDictionary("deviceCode",mESVideoInfo.deviceCode, "deviceName", mESVideoInfo.DeviceName);
|
Shared.IOS.HDLFVSDK.Video.Monitor(deviceInfo);
|
//HDLLinphone.Current.ShowESVideoMonitor(mESVideoInfo);
|
}
|
else
|
{
|
HDLUtils.WriteLine("未对接,不支持监视");
|
}
|
#else
|
Intent intent = null;
|
if (interphoneType == InterphoneType.IMOUVISIAL.ToString())
|
{
|
intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.LeChengVideoActivity));
|
|
//=========乐橙==========
|
intent.PutExtra("Type", 0);
|
intent.PutExtra("callId", mESVideoInfo.callId);
|
intent.PutExtra("DeviceName", mESVideoInfo.DeviceName);
|
intent.PutExtra("AccessToken", mESVideoInfo.Lc_AccessToken);
|
intent.PutExtra("DeviceId", mESVideoInfo.Lc_DeviceId);
|
intent.PutExtra("Location", GetIsChinaMainland() ? 0 : 1);//如果域名包含china,则是国内账号);
|
intent.PutExtra("PlayToken", mESVideoInfo.Lc_PlayToken);
|
intent.PutExtra("Psk", mESVideoInfo.Lc_Psk);
|
|
Shared.Application.Activity.StartActivity(intent);
|
}
|
else if (interphoneType == InterphoneType.FLVI.ToString())
|
{
|
|
intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.VideoActivity));
|
intent.PutExtra("ESVideoUUID", mESVideoInfo.ESVideoUUID);
|
intent.PutExtra("uuid", mESVideoInfo.uuid);
|
intent.PutExtra("DeviceName", mESVideoInfo.DeviceName);
|
intent.PutExtra("cmtID", mESVideoInfo.cmtID);
|
intent.PutExtra("roomno", mESVideoInfo.roomno);
|
intent.PutExtra("unitno", mESVideoInfo.unitno);
|
intent.PutExtra("HomeID", PirSend.HomeId);
|
intent.PutExtra("callId", mESVideoInfo.callId);
|
intent.PutExtra("Type", 0);
|
|
|
|
Shared.Application.Activity.StartActivity(intent);
|
}
|
else if (interphoneType == InterphoneType.HDL.ToString())
|
{
|
//HDLLinphone 狄耐克
|
HDLLinphone.Current.ShowESVideoMonitor(mESVideoInfo, InterphoneType.HDL.ToString());
|
}
|
else if (interphoneType == InterphoneType.FREEVIEW.ToString())
|
{
|
string sip_account = "sip:D" + mESVideoInfo.deviceCode + "@139.159.157.75:46000";
|
mESVideoInfo.deviceSipAccount = sip_account;
|
HDLLinphone.Current.ShowESVideoMonitor(mESVideoInfo, InterphoneType.FREEVIEW.ToString());
|
}
|
else
|
{
|
HDLUtils.WriteLine("未对接,不支持监视");
|
}
|
#endif
|
}
|
|
/// <summary>
|
/// 被呼叫页面
|
/// </summary>
|
/// <param name="mESVideoInfo"></param>
|
public void ShowESvideoVideoIntercom(ESVideoInfo mESVideoInfo, string interphoneType)
|
{
|
this.esVideoInfo = mESVideoInfo;
|
int roomID = 0;
|
int.TryParse(mESVideoInfo.roomno, out roomID);
|
#if __IOS__
|
if (interphoneType == InterphoneType.IMOUVISIAL.ToString())
|
{
|
//乐橙可视对讲
|
//1.初始化LCOpenSDK_Api(Shared.IOS.LCVideoOnSDK)
|
LCApiKit.SharedInstance().IsChinaMainland = GetIsChinaMainland();
|
LCApiKit.SharedInstance().InitSDKOpenApi(mESVideoInfo.Lc_AccessToken);
|
//2021-05-18 目前推送的PlayToken;有问题会导致SDK崩溃,暂时不传
|
//LCApiKit.SharedInstance().CurrentDevicePlayToken = mESVideoInfo.Lc_PlayToken;
|
LCApiKit.SharedInstance().CurrentDeviceId = mESVideoInfo.Lc_DeviceId;
|
LCApiKit.SharedInstance().CurrentDeviceName = mESVideoInfo.DeviceName;
|
LCApiKit.SharedInstance().CurrentPsk = mESVideoInfo.Lc_Psk;
|
//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 if (interphoneType == InterphoneType.EZVIZ.ToString())
|
{
|
//萤石猫眼呼叫
|
//初始化萤石云SDK,中文国内key、英文海外key 开发者账号使用应用包名申请的APPKEY,不同包名应用需配置不同的APPKEY
|
EZSDK.IOS.EZSDK.SharedInstance().InitLibWithAppKey("1aa98a90489b4838b966b57018b4b04b", "1aa98a90489b4838b966b57018b4b04b");
|
//1.设置所需河东的AccessToken和RefreshToken、域名地址
|
EZSDK.IOS.EZSDK.SharedInstance().SetHDlAccessToken(UserInfo.Current.LoginTokenString, UserInfo.Current.RefreshToken);
|
|
EZSDK.IOS.EZSDK.SharedInstance().SetRequestHttpsHostAndPlatform(OnAppConfig.Instance.RequestHttpsHost, 1, mESVideoInfo.HomeId);
|
//2.设置萤石子账号的AccessToken到SDK
|
EZSDK.IOS.EZSDK.SharedInstance().SetEZAccessToken(mESVideoInfo.Lc_AccessToken);
|
//3.打开视频播放页面
|
EZSDK.IOS.EZSDK.SharedInstance().PlayWithDeviceSerial(mESVideoInfo.DeviceSerial);
|
|
}
|
else if (interphoneType == InterphoneType.HDL.ToString())
|
{
|
//HDL Linphone 狄耐克
|
|
|
}
|
else if (interphoneType == InterphoneType.FLVI.ToString())
|
{
|
//Shared.IOS.ESVideoOnSDK
|
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{
|
HDLUtils.WriteLine("未支持的可视对讲类型");
|
|
}
|
#else
|
#region Android 处理
|
|
Intent intent = null;
|
if (interphoneType == InterphoneType.IMOUVISIAL.ToString())
|
{
|
//待删减不必要参数
|
intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.LeChengVideoActivity));
|
|
//=========乐橙==========
|
intent.PutExtra("Type", 1);
|
intent.PutExtra("callId", mESVideoInfo.callId);
|
intent.PutExtra("DeviceName", mESVideoInfo.DeviceName);
|
intent.PutExtra("AccessToken", mESVideoInfo.Lc_AccessToken);
|
intent.PutExtra("DeviceId", mESVideoInfo.Lc_DeviceId);
|
intent.PutExtra("Location", GetIsChinaMainland() ? 0 : 1);//如果域名包含china,则是国内账号);
|
intent.PutExtra("PlayToken", mESVideoInfo.Lc_PlayToken);
|
intent.PutExtra("Psk", mESVideoInfo.Lc_Psk);
|
|
Shared.Application.Activity.StartActivity(intent);
|
|
}
|
else if (interphoneType == InterphoneType.EZVIZ.ToString())
|
{
|
((BaseActivity)Shared.Application.Activity).SetCamera(b =>
|
{
|
if (b)
|
{
|
intent = new Android.Content.Intent();
|
var bundle = new Android.OS.Bundle();
|
//传递name参数为tinyphp
|
bundle.PutString("EzChildAccessToken", mESVideoInfo.Lc_AccessToken);
|
bundle.PutString("HdlToken", UserInfo.Current.LoginTokenString);
|
bundle.PutString("Url", OnAppConfig.Instance.RequestHttpsHost);
|
bundle.PutString("EzvizAppKey", "1aa98a90489b4838b966b57018b4b04b");
|
bundle.PutInt("Platform", 1);
|
bundle.PutString("HomeId", mESVideoInfo.HomeId);
|
bundle.PutString("DeviceSerial", mESVideoInfo.DeviceSerial);
|
intent.PutExtras(bundle);
|
intent.SetComponent(new Android.Content.ComponentName(Shared.Application.Activity, "com.videogo.MainActivity"));
|
Shared.Application.Activity.StartActivity(intent);
|
}
|
});
|
return;
|
}
|
else if (interphoneType == InterphoneType.HDL.ToString())
|
{
|
//HDL Linphone 狄耐克
|
|
|
}
|
else if (interphoneType == InterphoneType.FLVI.ToString())
|
{
|
//待删减不必要参数
|
intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.VideoActivity));
|
intent.PutExtra("ESVideoUUID", mESVideoInfo.ESVideoUUID);
|
intent.PutExtra("uuid", mESVideoInfo.uuid);
|
intent.PutExtra("DeviceName", mESVideoInfo.DeviceName);
|
intent.PutExtra("cmtID", mESVideoInfo.cmtID);
|
intent.PutExtra("roomno", mESVideoInfo.roomno);
|
intent.PutExtra("unitno", mESVideoInfo.unitno);
|
intent.PutExtra("HomeID", PirSend.HomeId);
|
intent.PutExtra("callId", mESVideoInfo.callId);
|
intent.PutExtra("Type", 1);
|
|
Shared.Application.Activity.StartActivity(intent);
|
}
|
else
|
{
|
HDLUtils.WriteLine("未支持的可视对讲类型");
|
}
|
#endregion
|
#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 接听失败 code: " + revertObj.Code);
|
}
|
|
})
|
{ IsBackground = false }.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 挂断失败 code: " + revertObj.Code);
|
}
|
|
})
|
{ IsBackground = false }.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 拒接失败 code: " + revertObj.Code);
|
}
|
|
})
|
{ IsBackground = false }.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);
|
#if __IOS__
|
dic.Add("imagesName", "_IOS.jpg");
|
#else
|
dic.Add("imagesName", "_Android.jpg");
|
#endif
|
|
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 截图上传失败 code: " + revertObj.Code);
|
}
|
|
})
|
{ IsBackground = false }.Start();
|
|
}
|
|
DateTime UnlockDateTime = DateTime.MinValue;
|
|
/// <summary>
|
/// 开锁成功
|
/// </summary>
|
void UnlockAction()
|
{
|
//Utlis.WriteLine("UnlockAction");
|
|
if (CheckESVideoInfoIsNullOrEmpty()) return;
|
|
//3S内不允许触发第二次
|
if (UnlockDateTime.AddSeconds(3) > DateTime.Now)
|
{
|
|
Utlis.WriteLine("3S内不允许触发第二次");
|
//丰林SDKbug,呼叫的时候开锁成功会有2次回调,
|
return;
|
}
|
|
UnlockDateTime = DateTime.Now;
|
|
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 开锁失败 code: " + revertObj.Code);
|
}
|
|
})
|
{ IsBackground = false }.Start();
|
}
|
|
#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
|
dic.Add("callId", esVideoInfo.callId);
|
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>
|
/////// OnESCallDelegate 继承响应事件(Shared.IOS.ESVideoOnSDK)
|
/////// </summary>
|
OnESCallDelegate mOnESCallDelegate;
|
|
/// <summary>
|
/// iOS原生委托事件
|
/// </summary>
|
public class OnESCallDelegate : ESCallDelegate
|
{
|
/// <summary>
|
/// ESOnVideo
|
/// </summary>
|
[Weak] ESOnVideo _ESOnVideo;
|
|
/// <summary>
|
/// 初始化
|
/// </summary>
|
/// <param name="mESOnVideo">呼叫相关的参数</param>
|
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
|
|
#region OnLCCallDelegate
|
/////// <summary>
|
/////// OnLCCallDelegate 继承响应事件(Shared.IOS.LCVideoOnSDK)
|
/////// </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();
|
}
|
|
}
|
|
#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
|
// {
|
// eSVideoInfo.callId = "88888";
|
// ShowESvideoVideoIntercom(eSVideoInfo, "");
|
// }
|
|
//}
|
}
|
|
/// <summary>
|
/// 可视对讲参数对象(仅在最后一步跳转到activity时才调用,为了做兼容这里都数据有点乱,以后有时间再理顺思路优化)
|
/// </summary>
|
public class ESVideoInfo
|
{
|
/// <summary>
|
/// 室外机的UUID
|
/// 例:JJY000007FSEYX
|
/// </summary>
|
public string ESVideoUUID = string.Empty;
|
/// <summary>
|
/// 室外机的名称
|
/// 例:室外机
|
/// </summary>
|
public string DeviceName = "室外机";
|
/// <summary>
|
/// 丰林请求的唯一id
|
/// </summary>
|
public string uuid = string.Empty;
|
/// <summary>
|
/// 丰林社区id
|
/// </summary>
|
public string cmtID = string.Empty;
|
/// <summary>
|
/// 丰林房间号
|
/// </summary>
|
public string roomno = string.Empty;
|
/// <summary>
|
/// 丰林楼栋号
|
/// </summary>
|
public string unitno = string.Empty;
|
///// <summary>
|
///// 丰林住宅Id
|
///// </summary>
|
//public string HomeID= string.Empty;
|
/// <summary>
|
/// 呼叫记录Id
|
/// </summary>
|
public string callId = string.Empty;
|
|
|
//========================大华==========================
|
/// <summary>
|
/// 账号accessToken
|
/// 萤石子账号Token也共用这个字段
|
/// </summary>
|
public string Lc_AccessToken = string.Empty;
|
|
/// <summary>
|
/// 设备序列号,通讯必要字段
|
/// </summary>
|
public string Lc_DeviceId = string.Empty;
|
|
/// <summary>
|
/// 备注???
|
/// </summary>
|
public string Lc_Psk = string.Empty;
|
|
/// <summary>
|
/// 预览画面必须使用
|
/// </summary>
|
public string Lc_PlayToken = string.Empty;
|
|
/// <summary>
|
/// 账号标记:0国内,1国外;国内国外访问都地址不一样
|
/// </summary>
|
public int Lc_Location = 0;
|
|
//========================萤石云猫眼==========================
|
/// <summary>
|
/// 住宅Id
|
/// </summary>
|
public string HomeId = string.Empty;
|
/// <summary>
|
/// 设备序列号
|
/// </summary>
|
public string DeviceSerial = string.Empty;
|
//========================HDL SIP==========================
|
/// <summary>
|
/// 设备sip账号 interphoneType是HDL时才会有值
|
/// </summary>
|
public string deviceSipAccount;
|
/// <summary>
|
/// spk
|
/// </summary>
|
public string spk="";
|
|
//========================全视通==========================
|
/// <summary>
|
/// 设备编号,相当于全视通的LocalDirectory字段
|
/// </summary>
|
public string deviceCode;
|
}
|
|
|
/// <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,
|
/// <summary>
|
/// 萤石猫眼呼叫
|
/// </summary>
|
EZVIZ,
|
/// <summary>
|
/// 狄耐克 HDL Linphone
|
/// </summary>
|
HDL,
|
/// <summary>
|
/// 全视通对讲
|
/// </summary>
|
FREEVIEW,
|
|
}
|
}
|