using System;
using System.Collections.Generic;
using System.Threading;
using Android.App;
using Android.Icu.Text;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
using HDL_ON.Common;
using HDL_ON.DAL.Server;
using Java.Util;
namespace HDL_ON_Android.LeChengView.Form
{
public class ReverseCallFragment : Fragment, View.IOnClickListener
{
private View mView;
private ImageView screenshotImg;// 截图
private ImageView unlockImg;// 开锁
private LinearLayout answerLayout; // 接听
private ImageView hangupImg;// 挂断
private ImageView answerImg;// 接听
private TextView hangupText;
private TextView tvTip;
private System.Threading.Timer timer = null;
private int Time = 0;
private bool isAnswer;//是否已经点击接听过了
private static LeChengVideoActivity CurtActivity;
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
CurtActivity = (LeChengVideoActivity)this.Activity;
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
mView = inflater.Inflate(Resource.Layout.fragment_call, container, false);
IniView();
CurtActivity.Play();
CurtActivity.CloseAudio();
return mView;
}
private void IniView()
{
screenshotImg = (ImageView)mView.FindViewById(Resource.Id.callScreenshotImg);//
unlockImg = (ImageView)mView.FindViewById(Resource.Id.callUnlockImg);//
tvTip = (TextView)mView.FindViewById(Resource.Id.callTipText);
answerLayout = (LinearLayout)mView.FindViewById(Resource.Id.callAnswerLayout);
hangupImg = (ImageView)mView.FindViewById(Resource.Id.callHangupImg);
answerImg = (ImageView)mView.FindViewById(Resource.Id.callAnswerImg);
hangupText = (TextView)mView.FindViewById(Resource.Id.callHangupText);
screenshotImg.SetOnClickListener(this);
unlockImg.SetOnClickListener(this);
hangupImg.SetOnClickListener(this);
answerImg.SetOnClickListener(this);
hangupText.SetText(GetString(Resource.String.video_not_answer), null);
tvTip.SetText(GetString(Resource.String.calling), null);
}
///
/// 开锁
///
private void PostUnlock()
{
//开锁,当收到来电信息时可进行开锁操作
new Thread(() =>
{
try
{
Dictionary d = new Dictionary();
d.Add("deviceId", CurtActivity.DeviceId);//设备id
string jsonString = HttpUtil.GetSignRequestJson(d);
string url = "/home-wisdom/platform/imou/openDoorbell";
ResponsePackNew response = HttpUtil.RequestHttpsPost(url, jsonString);
Log.Info("LcVideo", "Post Unlock Response code=" + response.Code);
}
catch { }
}).Start();
}
///
/// 开锁
///
private void Unlock()
{
//
CurtActivity.Unlock();
UpdataUnlockState();
}
///
/// 更新开锁按钮状态,开锁成功,15秒内不给再点击按钮
///
private void UpdataUnlockState()
{
try
{
if (unlockImg == null) return;
unlockImg.Enabled = false;
new Thread(() =>
{
Thread.Sleep(15 * 1000);
Activity.RunOnUiThread(() =>
{
if (unlockImg != null)
unlockImg.Enabled = true;
});
}).Start();
}
catch { }
}
private string GetTime(int time)
{
int m = time / 60;
int s = time % 60;
return UnitFormat(m) + ":" + UnitFormat(s);
}
private static string UnitFormat(int i)
{
string retStr = null;
if (i >= 0 && i < 10)
retStr = "0" + i;
else
retStr = "" + i;
return retStr;
}
///
/// 通话记录计时器,从拉流成功开始计算时间
///
public void TimeStarts()
{
try
{
if (timer != null)
timer.Dispose();
TimerCallback timerCallback = new TimerCallback(Tick);
timer = new System.Threading.Timer(timerCallback, null, 0, 1000);
}
catch (Exception) { }
}
public void TimeEnd()
{
Time = 0;
if (timer != null)
{
timer.Dispose();
timer = null;
}
}
public void Tick(object state)
{
try
{
Activity.RunOnUiThread(() =>
{
try
{
Time++;
if (tvTip != null)
tvTip.SetText(GetTime(Time), null);
}
catch { }
});
}
catch { }
}
public void OnClick(View v)
{
if (v.Equals(answerImg))
{
//接收来电
isAnswer = true;
CurtActivity.StartTalk();
answerLayout.Visibility = ViewStates.Gone;
PostAnswer();
}
else if (v.Equals(hangupImg))
{
CurtActivity.StopTalk();
//2021-11-30 增加拒绝和挂断操作处理
if (isAnswer)
{
//如果接听过了,执行挂断接口
PostHangup();
}
else
{
//没接听直接挂断,执行拒接接口
PostReject();
}
TimeEnd();
Activity.Finish();
}
else if (v.Equals(screenshotImg))
{
//有视频过来可调用此接口进行拍照
screenshotImg.Selected = true;
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
string time = format.Format(new Date(SystemClock.CurrentThreadTimeMillis()));
string ss = Android.OS.Environment.ExternalStorageDirectory.Path + "/DCIM/Camera";
string path = ss + "/" + time + ".jpg";
CurtActivity.SnapShot(path);
}
else if (v.Equals(unlockImg))
{
CurtActivity.Unlock();
}
}
///
/// post 接听电话记录
///
public void PostAnswer()
{
new Thread(() =>
{
try
{
Dictionary d = new Dictionary();
d.Add("callId", CurtActivity.CallId);//呼叫id
d.Add("callStatus", "RECEIVED");//可用值:MISSED,RECEIVED,REJECT
// d.Add("callDuration", Time);//通话时长(秒)
d.Add("interphoneTypeEnum", "IMOUVISIAL");//可用值:FLVI,IMOUVISIAL
string jsonString = HttpUtil.GetSignRequestJson(d);
string url = "/home-wisdom/platform/imou/updateCallStatus";
ResponsePackNew response = HttpUtil.RequestHttpsPost(url, jsonString);
Log.Info("LcVideo", "Post Answer Response code=" + response.Code);
}
catch { }
}).Start();
}
///
/// post 挂断电话记录
///
public void PostHangup()
{
new Thread(() =>
{
try
{
Dictionary d = new Dictionary();
d.Add("callId", CurtActivity.CallId);//呼叫id
d.Add("callStatus", "RECEIVED");//可用值:MISSED,RECEIVED,REJECT
d.Add("callDuration", Time);//通话时长(秒)
d.Add("interphoneTypeEnum", "IMOUVISIAL");//可用值:FLVI,IMOUVISIAL
string jsonString = HttpUtil.GetSignRequestJson(d);
string url = "/home-wisdom/platform/imou/updateCallStatus";
ResponsePackNew response = HttpUtil.RequestHttpsPost(url, jsonString);
Log.Info("LcVideo", "Post Hangup Response code=" + response.Code);
}
catch { }
}).Start();
}
///
/// post 拒接记录,仅只有在正常挂断状态下才提交通话时间
///
public void PostReject()
{
new Thread(() =>
{
try
{
Dictionary d = new Dictionary();
d.Add("callId", CurtActivity.CallId);//呼叫id
d.Add("callStatus", "REJECT");//可用值:MISSED,RECEIVED,REJECT
string jsonString = HttpUtil.GetSignRequestJson(d);
string url = "/home-wisdom/platform/imou/updateCallStatus";
ResponsePackNew response = HttpUtil.RequestHttpsPost(url, jsonString);
Log.Info("LcVideo", "Post Reject Response code=" + response.Code);
}
catch { }
}).Start();
}
}
}