New file |
| | |
| | | |
| | | using System; |
| | | using Android.App; |
| | | using Android.OS; |
| | | using Android.Content.Res; |
| | | using Android.Graphics; |
| | | using Android.Views; |
| | | using Android.Widget; |
| | | using Com.ETouchSky; |
| | | using Org.Json; |
| | | using Com.Tool; |
| | | using GateWay.Droid.FengLinVideo.Interface; |
| | | using Java.Util; |
| | | using GateWay.Droid.FengLinVideo.widget; |
| | | using Java.Text; |
| | | |
| | | namespace GateWay.Droid.FengLinVideo.Forms |
| | | { |
| | | |
| | | public class MonitorFragment : Fragment, View.IOnClickListener, View.IOnTouchListener,VideoState |
| | | { |
| | | private View mView; |
| | | private VideoPhone mPhone; |
| | | private RelativeLayout rlScreenshot; |
| | | private ImageView imgScreenshot; |
| | | private TextView tvScreenshot; |
| | | |
| | | private RelativeLayout rlUnlock; |
| | | private ImageView imgUnlock; |
| | | private TextView tvUnlock; |
| | | private System.Threading.Thread thread = null; |
| | | |
| | | public MonitorFragment(VideoPhone phone) |
| | | { |
| | | mPhone = phone; |
| | | } |
| | | |
| | | public override void OnCreate(Bundle savedInstanceState) |
| | | { |
| | | base.OnCreate(savedInstanceState); |
| | | } |
| | | |
| | | public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) |
| | | { |
| | | mView = inflater.Inflate(Resource.Layout.fragment_monitor, container, false); |
| | | |
| | | iniView(); |
| | | |
| | | return mView; |
| | | } |
| | | |
| | | private void iniView() |
| | | { |
| | | // |
| | | rlScreenshot = (RelativeLayout)mView.FindViewById(Resource.Id.rl_sceenshot); |
| | | imgScreenshot = (ImageView)mView.FindViewById(Resource.Id.icon_screenshot); |
| | | tvScreenshot = (TextView)mView.FindViewById(Resource.Id.tv_screenshot); |
| | | |
| | | rlUnlock = (RelativeLayout)mView.FindViewById(Resource.Id.rl_unlock); |
| | | imgUnlock = (ImageView)mView.FindViewById(Resource.Id.icon_unlock); |
| | | tvUnlock = (TextView)mView.FindViewById(Resource.Id.tv_unlock); |
| | | |
| | | rlScreenshot.SetOnClickListener(this); |
| | | rlUnlock.SetOnClickListener(this); |
| | | |
| | | rlScreenshot.SetOnTouchListener(this); |
| | | rlUnlock.SetOnTouchListener(this); |
| | | } |
| | | |
| | | //开锁 |
| | | private void unlock() |
| | | { |
| | | //开锁,当收到来电信息时可进行开锁操作 |
| | | if (mPhone != null) |
| | | { |
| | | try |
| | | { |
| | | JSONObject ht = new JSONObject(); |
| | | ht.Put("command", "open");//固定参数 |
| | | ht.Put("room_id", 123); //动态参数 ,传递开门的房间号。这个开门口记录就能记录谁开的门 |
| | | ht.Put("devType", 7); //固定参数 |
| | | mPhone.SendCustomData(ht.ToString()); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | string erro = e.Message; |
| | | } |
| | | } |
| | | } |
| | | |
| | | //更新开锁按钮状态 |
| | | private void updataUnlockState() |
| | | {
|
| | | try
|
| | | {
|
| | | //开锁成功,15秒内不给再点击按钮
|
| | | rlUnlock.Enabled = false;
|
| | | imgUnlock.SetImageResource(Resource.Drawable.unlock_disable);
|
| | | tvUnlock.SetTextColor(new Color(Activity.GetColor(Resource.Color.color_disable)));
|
| | | if (thread != null)
|
| | | {
|
| | | try
|
| | | {
|
| | | thread.Interrupt();
|
| | | }
|
| | | catch { }
|
| | | thread = null;
|
| | | }
|
| | | thread = new System.Threading.Thread(() =>
|
| | | {
|
| | | try
|
| | | {
|
| | | System.Threading.Thread.Sleep(15 * 1000);
|
| | | Activity.RunOnUiThread(() =>
|
| | | {
|
| | | try
|
| | | {
|
| | | rlUnlock.Enabled = true;
|
| | | imgUnlock.SetImageResource(Resource.Drawable.unlock);
|
| | | tvUnlock.SetTextColor(new Color(Activity.GetColor(Resource.Color.text_color)));
|
| | | }
|
| | | catch { }
|
| | | });
|
| | | }
|
| | | catch { }
|
| | | });
|
| | |
|
| | | thread.Start();
|
| | | }
|
| | | catch { } |
| | | } |
| | | |
| | | public void OnClick(View v) |
| | | { |
| | | // |
| | | if (v.Equals(rlUnlock)) |
| | | { |
| | | if (mPhone != null) |
| | | unlock(); |
| | | } |
| | | else if (v.Equals(rlScreenshot)) |
| | | { |
| | | //有视频过来可调用此接口进行拍照 |
| | | if (mPhone != null) |
| | | { |
| | | //有视频过来可调用此接口进行拍照 |
| | | if (mPhone != null) |
| | | { |
| | | |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); |
| | | string time = format.Format(new Date(SystemClock.CurrentThreadTimeMillis())); |
| | | |
| | | string ss = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures).AbsolutePath; |
| | | string path = ss + "/" + time +".jpg"; |
| | | mPhone.Snap(path); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | public bool OnTouch(View v, MotionEvent e) |
| | | { |
| | | if (e.Action == MotionEventActions.Down) |
| | | { |
| | | if (v.Equals(rlScreenshot)) |
| | | { |
| | | imgScreenshot.Selected = true; |
| | | tvScreenshot.Selected = true; |
| | | } |
| | | else if (v.Equals(rlUnlock)) |
| | | { |
| | | imgUnlock.Selected = true; |
| | | tvUnlock.Selected = true; |
| | | } |
| | | } |
| | | else if (e.Action == MotionEventActions.Up) |
| | | { |
| | | if (v.Equals(rlScreenshot)) |
| | | { |
| | | imgScreenshot.Selected = false; |
| | | tvScreenshot.Selected = false; |
| | | } |
| | | else if (v.Equals(rlUnlock)) |
| | | { |
| | | imgUnlock.Selected = false; |
| | | tvUnlock.Selected = false; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | // |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | public void onPhoneEvent(string msg) |
| | | { |
| | | try |
| | | { |
| | | // |
| | | TextProtocol tp = new TextProtocol(); |
| | | tp.Parse(msg); |
| | | string event1 = tp.GetString("event"); |
| | | |
| | | switch (event1) |
| | | { |
| | | case "EVT_HangUp": |
| | | break; |
| | | case "EVT_RECV_CUSTOM_DATA": |
| | | updataUnlockState(); |
| | | break; |
| | | case "EVT_SnapAck": |
| | | break; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | string error = e.Message; |
| | | } |
| | | } |
| | | |
| | | public override void OnDestroy()
|
| | | {
|
| | | base.OnDestroy();
|
| | |
|
| | | if (thread != null)
|
| | | { |
| | | try
|
| | | {
|
| | | thread.Interrupt();
|
| | | }
|
| | | catch { } |
| | | thread = null; |
| | | }
|
| | | } |
| | | } |
| | | } |