| | |
| | | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using Android; |
| | | using Android.App; |
| | | using Android.Content; |
| | | using Android.Content.PM; |
| | | using Android.Graphics; |
| | | using Android.OS; |
| | | using Android.Runtime; |
| | | using Android.Support.V4.App; |
| | | using Android.Support.V4.Content; |
| | | using Android.Util; |
| | | using Android.Views; |
| | | using Android.Widget; |
| | | //using System; |
| | | //using System.Collections.Generic; |
| | | //using System.Linq; |
| | | //using System.Text; |
| | | //using Android; |
| | | //using Android.App; |
| | | //using Android.Content; |
| | | //using Android.Content.PM; |
| | | //using Android.Graphics; |
| | | //using Android.OS; |
| | | //using Android.Runtime; |
| | | //using Android.Support.V4.App; |
| | | //using Android.Support.V4.Content; |
| | | //using Android.Util; |
| | | //using Android.Views; |
| | | //using Android.Widget; |
| | | |
| | | using Com.Lechange.Opensdk.Api; |
| | | using Com.Lechange.Opensdk.Device; |
| | | using Com.Lechange.Opensdk.Listener; |
| | | using Com.Lechange.Opensdk.Media; |
| | | //using Com.Lechange.Opensdk.Api; |
| | | //using Com.Lechange.Opensdk.Device; |
| | | //using Com.Lechange.Opensdk.Listener; |
| | | //using Com.Lechange.Opensdk.Media; |
| | | |
| | | |
| | | using HDL_ON; |
| | | using HDL_ON.DAL.Server; |
| | | using HDL_ON_Android.LeChengView.Form; |
| | | using Java.IO; |
| | | using Java.Lang; |
| | | //using HDL_ON; |
| | | //using HDL_ON.DAL.Server; |
| | | //using HDL_ON_Android.LeChengView.Form; |
| | | //using Java.IO; |
| | | //using Java.Lang; |
| | | |
| | | namespace HDL_ON_Android |
| | | { |
| | | [Activity(Label = "LeChengVideoActivity", WindowSoftInputMode = SoftInput.AdjustResize, LaunchMode = LaunchMode.SingleInstance, ConfigurationChanges = (ConfigChanges.Keyboard | ConfigChanges.KeyboardHidden | ConfigChanges.LayoutDirection | ConfigChanges.Locale | ConfigChanges.Orientation | ConfigChanges.ScreenSize), Theme = "@style/MyTheme1", ScreenOrientation = ScreenOrientation.Portrait)] |
| | | public class LeChengVideoActivity : Activity, View.IOnClickListener |
| | | { |
| | | private static LeChengVideoActivity CurtActivity; |
| | | // |
| | | private string URL = "openapi.easy4ip.com:443"; //海外(正式) |
| | | private static string URL_LC_CHINA = "openapi.lechange.cn:443"; //中国大陆(正式) |
| | | private static string URL_LC_Overseas = "openapi.easy4ip.com:443"; //中国大陆(正式) |
| | | public string AccessToken = ""; |
| | | public string DeviceId = ""; |
| | | public string Psk = ""; |
| | | public string PlayToken = "";//播放playToken |
| | | public string CallId = "";//呼叫Id |
| | | private int Type = 0;//0监控,1对讲 |
| | | private string DeviceName = "";// 备注 |
| | | //namespace HDL_ON_Android |
| | | //{ |
| | | // [Activity(Label = "LeChengVideoActivity", WindowSoftInputMode = SoftInput.AdjustResize, LaunchMode = LaunchMode.SingleInstance, ConfigurationChanges = (ConfigChanges.Keyboard | ConfigChanges.KeyboardHidden | ConfigChanges.LayoutDirection | ConfigChanges.Locale | ConfigChanges.Orientation | ConfigChanges.ScreenSize), Theme = "@style/MyTheme1", ScreenOrientation = ScreenOrientation.Portrait)] |
| | | // public class LeChengVideoActivity : Activity, View.IOnClickListener |
| | | // { |
| | | // private static LeChengVideoActivity CurtActivity; |
| | | // // |
| | | // private string URL = "openapi.easy4ip.com:443"; //海外(正式) |
| | | // private static string URL_LC_CHINA = "openapi.lechange.cn:443"; //中国大陆(正式) |
| | | // private static string URL_LC_Overseas = "openapi.easy4ip.com:443"; //中国大陆(正式) |
| | | // public string AccessToken = ""; |
| | | // public string DeviceId = ""; |
| | | // public string Psk = ""; |
| | | // public string PlayToken = "";//播放playToken |
| | | // public string CallId = "";//呼叫Id |
| | | // private int Type = 0;//0监控,1对讲 |
| | | // private string DeviceName = "";// 备注 |
| | | |
| | | /// <summary> |
| | | /// 0:国内,1海外 |
| | | /// </summary> |
| | | private int Location = 0; |
| | | // /// <summary> |
| | | // /// 0:国内,1海外 |
| | | // /// </summary> |
| | | // private int Location = 0; |
| | | |
| | | private FrameLayout flWindow; |
| | | private FrameLayout flWindowContent; |
| | | private ImageView ivBack; |
| | | private TextView tvName; |
| | | private MonitorFragment monitorFragment = null; |
| | | private ReverseCallFragment reverseCallFragment = null; |
| | | // private FrameLayout flWindow; |
| | | // private FrameLayout flWindowContent; |
| | | // private ImageView ivBack; |
| | | // private TextView tvName; |
| | | // private MonitorFragment monitorFragment = null; |
| | | // private ReverseCallFragment reverseCallFragment = null; |
| | | |
| | | public LCOpenSDK_PlayWindow mPlayWindow; |
| | | // public LCOpenSDK_PlayWindow mPlayWindow; |
| | | |
| | | protected override void OnCreate(Bundle savedInstanceState) |
| | | { |
| | | base.OnCreate(savedInstanceState); |
| | | // protected override void OnCreate(Bundle savedInstanceState) |
| | | // { |
| | | // base.OnCreate(savedInstanceState); |
| | | |
| | | SetContentView(Resource.Layout.activity_video_phone); |
| | | // SetContentView(Resource.Layout.activity_video_phone); |
| | | |
| | | CurtActivity = this; |
| | | AccessToken = Intent.GetStringExtra("AccessToken");//"St_0000d307a13c965c4db285469484490e" |
| | | DeviceId = Intent.GetStringExtra("DeviceId");//6K056CFAAJ8FFA1 |
| | | Psk = Intent.GetStringExtra("Psk");//6K056CFAAJ8FFA1 |
| | | PlayToken = Intent.GetStringExtra("PlayToken"); // 播放playToken//"8a5e041afa674a2ba3e84d90a54ea962" |
| | | Type = Intent.GetIntExtra("Type", 0);//0监控,1对讲//1 |
| | | Location = Intent.GetIntExtra("Location", 0);//1 |
| | | CallId = Intent.GetStringExtra("callId");//1384766990812426242 |
| | | DeviceName = Intent.GetStringExtra("DeviceName"); |
| | | // CurtActivity = this; |
| | | // AccessToken = Intent.GetStringExtra("AccessToken");//"St_0000d307a13c965c4db285469484490e" |
| | | // DeviceId = Intent.GetStringExtra("DeviceId");//6K056CFAAJ8FFA1 |
| | | // Psk = Intent.GetStringExtra("Psk");//6K056CFAAJ8FFA1 |
| | | // PlayToken = Intent.GetStringExtra("PlayToken"); // 播放playToken//"8a5e041afa674a2ba3e84d90a54ea962" |
| | | // Type = Intent.GetIntExtra("Type", 0);//0监控,1对讲//1 |
| | | // Location = Intent.GetIntExtra("Location", 0);//1 |
| | | // CallId = Intent.GetStringExtra("callId");//1384766990812426242 |
| | | // DeviceName = Intent.GetStringExtra("DeviceName"); |
| | | |
| | | InitLCSDK(); |
| | | // InitLCSDK(); |
| | | |
| | | IniView(); |
| | | // IniView(); |
| | | |
| | | IniData(); |
| | | // IniData(); |
| | | |
| | | Permissions(); |
| | | // Permissions(); |
| | | |
| | | if (Type == 0) |
| | | { |
| | | monitorFragment = new MonitorFragment(); |
| | | FragmentManager.BeginTransaction().Replace(Resource.Id.content, monitorFragment).Commit(); |
| | | } |
| | | else |
| | | { |
| | | reverseCallFragment = new ReverseCallFragment(); |
| | | FragmentManager.BeginTransaction().Replace(Resource.Id.content, reverseCallFragment).Commit(); |
| | | } |
| | | // if (Type == 0) |
| | | // { |
| | | // monitorFragment = new MonitorFragment(); |
| | | // FragmentManager.BeginTransaction().Replace(Resource.Id.content, monitorFragment).Commit(); |
| | | // } |
| | | // else |
| | | // { |
| | | // reverseCallFragment = new ReverseCallFragment(); |
| | | // FragmentManager.BeginTransaction().Replace(Resource.Id.content, reverseCallFragment).Commit(); |
| | | // } |
| | | |
| | | |
| | | } |
| | | // } |
| | | |
| | | private void IniView() |
| | | { |
| | | // |
| | | flWindowContent = (FrameLayout)FindViewById(Resource.Id.remoteFrame); |
| | | flWindow = (FrameLayout)FindViewById(Resource.Id.live_window); |
| | | // private void IniView() |
| | | // { |
| | | // // |
| | | // flWindowContent = (FrameLayout)FindViewById(Resource.Id.remoteFrame); |
| | | // flWindow = (FrameLayout)FindViewById(Resource.Id.live_window); |
| | | |
| | | ivBack = (ImageView)FindViewById(Resource.Id.videoBackImg); |
| | | tvName = (TextView)FindViewById(Resource.Id.nameText); |
| | | // ivBack = (ImageView)FindViewById(Resource.Id.videoBackImg); |
| | | // tvName = (TextView)FindViewById(Resource.Id.nameText); |
| | | |
| | | tvName.SetText(DeviceName, null); |
| | | ivBack.SetOnClickListener(this); |
| | | // tvName.SetText(DeviceName, null); |
| | | // ivBack.SetOnClickListener(this); |
| | | |
| | | } |
| | | // } |
| | | |
| | | private void IniData() |
| | | { |
| | | // |
| | | //SetStatusBarColor();// 这里设计的TopBarColor是白色,与系统导航栏字体颜色一直,暂时屏蔽不用 |
| | | // private void IniData() |
| | | // { |
| | | // // |
| | | // //SetStatusBarColor();// 这里设计的TopBarColor是白色,与系统导航栏字体颜色一直,暂时屏蔽不用 |
| | | |
| | | mPlayWindow = new LCOpenSDK_PlayWindow(); |
| | | mPlayWindow.InitPlayWindow(this, flWindowContent, 0, true); |
| | | // mPlayWindow = new LCOpenSDK_PlayWindow(); |
| | | // mPlayWindow.InitPlayWindow(this, flWindowContent, 0, true); |
| | | |
| | | |
| | | } |
| | | // } |
| | | |
| | | /// <summary> |
| | | /// 初始化乐橙库 |
| | | /// </summary> |
| | | private void InitLCSDK() |
| | | { |
| | | // /// <summary> |
| | | // /// 初始化乐橙库 |
| | | // /// </summary> |
| | | // private void InitLCSDK() |
| | | // { |
| | | |
| | | if (Location == 1) |
| | | { |
| | | URL = URL_LC_Overseas; |
| | | }else { |
| | | URL = URL_LC_CHINA; |
| | | } |
| | | // if (Location == 1) |
| | | // { |
| | | // URL = URL_LC_Overseas; |
| | | // }else { |
| | | // URL = URL_LC_CHINA; |
| | | // } |
| | | |
| | | InitParams initParams = new InitParams(this, URL, AccessToken); |
| | | LCOpenSDK_Api.InitOpenApi(initParams); |
| | | } |
| | | // InitParams initParams = new InitParams(this, URL, AccessToken); |
| | | // LCOpenSDK_Api.InitOpenApi(initParams); |
| | | // } |
| | | |
| | | /// <summary> |
| | | /// 开始播放(预览) |
| | | /// </summary> |
| | | public void Play() |
| | | { |
| | | try |
| | | { |
| | | LCOpenSDK_ParamReal paramReal = new LCOpenSDK_ParamReal(AccessToken, DeviceId, 0, Psk, PlayToken, 1, false, true,-1); |
| | | //PlayEventListener listener = new PlayEventListener();//实现播放事件监听回调 2021-10-15 目前不能监听,监听了会空异常 |
| | | //mPlayWindow.WindowListener = listener;//实现播放事件监听回调 |
| | | mPlayWindow.PlayRtspReal(paramReal); |
| | | } |
| | | catch (System.Exception e) |
| | | { |
| | | string sss = e.Message; |
| | | } |
| | | } |
| | | // /// <summary> |
| | | // /// 开始播放(预览) |
| | | // /// </summary> |
| | | // public void Play() |
| | | // { |
| | | // try |
| | | // { |
| | | // LCOpenSDK_ParamReal paramReal = new LCOpenSDK_ParamReal(AccessToken, DeviceId, 0, Psk, PlayToken, 1, false, true,-1); |
| | | // //PlayEventListener listener = new PlayEventListener();//实现播放事件监听回调 2021-10-15 目前不能监听,监听了会空异常 |
| | | // //mPlayWindow.WindowListener = listener;//实现播放事件监听回调 |
| | | // mPlayWindow.PlayRtspReal(paramReal); |
| | | // } |
| | | // catch (System.Exception e) |
| | | // { |
| | | // string sss = e.Message; |
| | | // } |
| | | // } |
| | | |
| | | /// <summary> |
| | | /// 停止预览(停止播放画面) |
| | | /// </summary> |
| | | public void Stop() |
| | | { |
| | | mPlayWindow.StopRtspReal(true);//关闭视频 |
| | | //mPlayWindow.WindowListener = null; |
| | | } |
| | | // /// <summary> |
| | | // /// 停止预览(停止播放画面) |
| | | // /// </summary> |
| | | // public void Stop() |
| | | // { |
| | | // mPlayWindow.StopRtspReal(true);//关闭视频 |
| | | // //mPlayWindow.WindowListener = null; |
| | | // } |
| | | |
| | | /// <summary> |
| | | /// 打开对讲 |
| | | /// </summary> |
| | | public void StartTalk() |
| | | { |
| | | UserInfo.Current.inVideo = true; |
| | | CloseAudio();// 关闭Audio |
| | | LCOpenSDK_Talk.Listener = new AudioTalkerListener();//设置对讲监听 |
| | | //2021-10-29 对讲请求类型,call呼叫,如果不传,默认为talk |
| | | string talkType = "talk"; |
| | | if (Type == 1)//0监控,1对讲 |
| | | { |
| | | talkType = "call"; |
| | | } |
| | | // 对讲参数 |
| | | LCOpenSDK_ParamTalk paramTalk = new LCOpenSDK_ParamTalk(AccessToken, DeviceId, -1, Psk, PlayToken, true, talkType); |
| | | LCOpenSDK_Talk.PlayTalk(paramTalk); |
| | | } |
| | | // /// <summary> |
| | | // /// 打开对讲 |
| | | // /// </summary> |
| | | // public void StartTalk() |
| | | // { |
| | | // UserInfo.Current.inVideo = true; |
| | | // CloseAudio();// 关闭Audio |
| | | // LCOpenSDK_Talk.Listener = new AudioTalkerListener();//设置对讲监听 |
| | | // //2021-10-29 对讲请求类型,call呼叫,如果不传,默认为talk |
| | | // string talkType = "talk"; |
| | | // if (Type == 1)//0监控,1对讲 |
| | | // { |
| | | // talkType = "call"; |
| | | // } |
| | | // // 对讲参数 |
| | | // LCOpenSDK_ParamTalk paramTalk = new LCOpenSDK_ParamTalk(AccessToken, DeviceId, -1, Psk, PlayToken, true, talkType); |
| | | // LCOpenSDK_Talk.PlayTalk(paramTalk); |
| | | // } |
| | | |
| | | /// <summary> |
| | | /// 关闭对讲 |
| | | /// </summary> |
| | | public void StopTalk() |
| | | { |
| | | UserInfo.Current.inCall = DateTime.MinValue; |
| | | UserInfo.Current.inVideo = false; |
| | | LCOpenSDK_Talk.StopTalk(); |
| | | LCOpenSDK_Talk.Listener = null; |
| | | } |
| | | // /// <summary> |
| | | // /// 关闭对讲 |
| | | // /// </summary> |
| | | // public void StopTalk() |
| | | // { |
| | | // UserInfo.Current.inCall = DateTime.MinValue; |
| | | // UserInfo.Current.inVideo = false; |
| | | // LCOpenSDK_Talk.StopTalk(); |
| | | // LCOpenSDK_Talk.Listener = null; |
| | | // } |
| | | |
| | | /// <summary> |
| | | /// 打开声音(预览的时候可以听到门口机传来的声音) |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public bool OpenAudio() |
| | | { |
| | | return mPlayWindow.PlayAudio() == 0; |
| | | } |
| | | // /// <summary> |
| | | // /// 打开声音(预览的时候可以听到门口机传来的声音) |
| | | // /// </summary> |
| | | // /// <returns></returns> |
| | | // public bool OpenAudio() |
| | | // { |
| | | // return mPlayWindow.PlayAudio() == 0; |
| | | // } |
| | | |
| | | /// <summary> |
| | | /// 关闭声音(预览的时候关闭门口挤传来的声音,注意:打开对讲时需要先调用此方法关闭声音) |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public bool CloseAudio() |
| | | { |
| | | return mPlayWindow.StopAudio() == 0; |
| | | } |
| | | // /// <summary> |
| | | // /// 关闭声音(预览的时候关闭门口挤传来的声音,注意:打开对讲时需要先调用此方法关闭声音) |
| | | // /// </summary> |
| | | // /// <returns></returns> |
| | | // public bool CloseAudio() |
| | | // { |
| | | // return mPlayWindow.StopAudio() == 0; |
| | | // } |
| | | |
| | | /// <summary> |
| | | /// 开锁 |
| | | /// </summary> |
| | | public void Unlock() |
| | | { |
| | | // |
| | | Dictionary<string, object> dic = new Dictionary<string, object>(); |
| | | dic.Add("deviceId", this.DeviceId); |
| | | dic.Add("callId", this.CallId); |
| | | // /// <summary> |
| | | // /// 开锁 |
| | | // /// </summary> |
| | | // public void Unlock() |
| | | // { |
| | | // // |
| | | // Dictionary<string, object> dic = new Dictionary<string, object>(); |
| | | // dic.Add("deviceId", this.DeviceId); |
| | | // dic.Add("callId", this.CallId); |
| | | |
| | | var requestJson = HttpUtil.GetSignRequestJson(dic); |
| | | var revertObj = HttpUtil.RequestHttpsPostFroHome("/home-wisdom/platform/imou/openDoorbell", requestJson); |
| | | if (revertObj.Code == StateCode.SUCCESS) |
| | | { |
| | | Toast.MakeText(this, Resources.GetString(Resource.String.unlock_success), ToastLength.Short).Show(); |
| | | } |
| | | else |
| | | { |
| | | Toast.MakeText(this, Resources.GetString(Resource.String.unlock_fail), ToastLength.Short).Show(); |
| | | } |
| | | } |
| | | // var requestJson = HttpUtil.GetSignRequestJson(dic); |
| | | // var revertObj = HttpUtil.RequestHttpsPostFroHome("/home-wisdom/platform/imou/openDoorbell", requestJson); |
| | | // if (revertObj.Code == StateCode.SUCCESS) |
| | | // { |
| | | // Toast.MakeText(this, Resources.GetString(Resource.String.unlock_success), ToastLength.Short).Show(); |
| | | // } |
| | | // else |
| | | // { |
| | | // Toast.MakeText(this, Resources.GetString(Resource.String.unlock_fail), ToastLength.Short).Show(); |
| | | // } |
| | | // } |
| | | |
| | | ///// <summary> |
| | | ///// 发送广播,通知刷新图库的显示 |
| | | ///// </summary> |
| | | ///// <param name="path"></param> |
| | | //void SendBroadcastScanFile(Context context, string path) |
| | | //{ |
| | | // // 发送广播,通知刷新图库的显示 |
| | | // Intent scanIntent = new Intent(Intent.ActionMediaScannerScanFile); |
| | | // scanIntent.SetData(Android.Net.Uri.FromFile(new File(path))); |
| | | // context.SendBroadcast(scanIntent); |
| | | //} |
| | | // ///// <summary> |
| | | // ///// 发送广播,通知刷新图库的显示 |
| | | // ///// </summary> |
| | | // ///// <param name="path"></param> |
| | | // //void SendBroadcastScanFile(Context context, string path) |
| | | // //{ |
| | | // // // 发送广播,通知刷新图库的显示 |
| | | // // Intent scanIntent = new Intent(Intent.ActionMediaScannerScanFile); |
| | | // // scanIntent.SetData(Android.Net.Uri.FromFile(new File(path))); |
| | | // // context.SendBroadcast(scanIntent); |
| | | // //} |
| | | |
| | | /// <summary> |
| | | /// 截图 |
| | | /// </summary> |
| | | /// <param name="path"></param> |
| | | public void SnapShot(string path) |
| | | { |
| | | try |
| | | { |
| | | int code = mPlayWindow.SnapShot(path); |
| | | if (code == 0) |
| | | { |
| | | //2021-09-01 增加发送广播,通知刷新图库的显示 |
| | | HDLONUtils.SendBroadcastScanFile(this, path); |
| | | // /// <summary> |
| | | // /// 截图 |
| | | // /// </summary> |
| | | // /// <param name="path"></param> |
| | | // public void SnapShot(string path) |
| | | // { |
| | | // try |
| | | // { |
| | | // int code = mPlayWindow.SnapShot(path); |
| | | // if (code == 0) |
| | | // { |
| | | // //2021-09-01 增加发送广播,通知刷新图库的显示 |
| | | // HDLONUtils.SendBroadcastScanFile(this, path); |
| | | |
| | | //Android.Provider.MediaStore.Images.Media.InsertImage(this.getContentResolver(), path, "ss", "ss"); |
| | | Toast.MakeText(this, Resources.GetString(Resource.String.screenshot_success), ToastLength.Short).Show(); |
| | | } |
| | | else |
| | | { |
| | | Toast.MakeText(this, Resources.GetString(Resource.String.screenshot_fail), ToastLength.Short).Show(); |
| | | } |
| | | } |
| | | catch (System.Exception e) |
| | | { |
| | | string error = e.Message; |
| | | } |
| | | // //Android.Provider.MediaStore.Images.Media.InsertImage(this.getContentResolver(), path, "ss", "ss"); |
| | | // Toast.MakeText(this, Resources.GetString(Resource.String.screenshot_success), ToastLength.Short).Show(); |
| | | // } |
| | | // else |
| | | // { |
| | | // Toast.MakeText(this, Resources.GetString(Resource.String.screenshot_fail), ToastLength.Short).Show(); |
| | | // } |
| | | // } |
| | | // catch (System.Exception e) |
| | | // { |
| | | // string error = e.Message; |
| | | // } |
| | | |
| | | //运行到这,photoFile已经存在,这里需要获得这个文件的uri |
| | | //* 分两种情况,android7.0以上和以下 |
| | | // 先存入临时目录,然后再移动到相册目录中 |
| | | //File photoFile = new File(path); |
| | | //Android.Net.Uri photoUri; |
| | | // //运行到这,photoFile已经存在,这里需要获得这个文件的uri |
| | | // //* 分两种情况,android7.0以上和以下 |
| | | // // 先存入临时目录,然后再移动到相册目录中 |
| | | // //File photoFile = new File(path); |
| | | // //Android.Net.Uri photoUri; |
| | | |
| | | //if (Build.VERSION.SdkInt >= 24) |
| | | //if (Build.VERSION.PreviewSdkInt >= 24) |
| | | //{ |
| | | // //if (Build.VERSION.SdkInt >= 24) |
| | | // //if (Build.VERSION.PreviewSdkInt >= 24) |
| | | // //{ |
| | | |
| | | // /** |
| | | // * FileProvider.getUriForFile(),这个方法中需要填写三个参数, |
| | | // * 第一个Context, |
| | | // * 第二个S |
| | | // * tring 任意 |
| | | // * 第三个File |
| | | // */ |
| | | // photoUri = FileProvider.GetUriForFile(this, "HDL Video SnapShot", photoFile); |
| | | // // /** |
| | | // // * FileProvider.getUriForFile(),这个方法中需要填写三个参数, |
| | | // // * 第一个Context, |
| | | // // * 第二个S |
| | | // // * tring 任意 |
| | | // // * 第三个File |
| | | // // */ |
| | | // // photoUri = FileProvider.GetUriForFile(this, "HDL Video SnapShot", photoFile); |
| | | |
| | | //} |
| | | //else |
| | | //{ |
| | | // photoUri = Android.Net.Uri.FromFile(photoFile); |
| | | //} |
| | | // //} |
| | | // //else |
| | | // //{ |
| | | // // photoUri = Android.Net.Uri.FromFile(photoFile); |
| | | // //} |
| | | |
| | | } |
| | | // } |
| | | |
| | | private ContentResolver getContentResolver() |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | // private ContentResolver getContentResolver() |
| | | // { |
| | | // throw new NotImplementedException(); |
| | | // } |
| | | |
| | | /// <summary> |
| | | /// 设置顶部状态栏背景透明 |
| | | /// </summary> |
| | | private void SetStatusBarColor() |
| | | { |
| | | Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds); |
| | | Window.SetStatusBarColor(Color.Transparent); |
| | | } |
| | | // /// <summary> |
| | | // /// 设置顶部状态栏背景透明 |
| | | // /// </summary> |
| | | // private void SetStatusBarColor() |
| | | // { |
| | | // Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds); |
| | | // Window.SetStatusBarColor(Color.Transparent); |
| | | // } |
| | | |
| | | /// <summary> |
| | | /// 必要的一些权限 |
| | | /// </summary> |
| | | private void Permissions() |
| | | { |
| | | string[] mPermissionList = new string[] |
| | | { |
| | | Manifest.Permission.WriteExternalStorage, |
| | | Manifest.Permission.ReadExternalStorage, |
| | | Manifest.Permission.Camera, |
| | | Manifest.Permission.RecordAudio |
| | | }; |
| | | // /// <summary> |
| | | // /// 必要的一些权限 |
| | | // /// </summary> |
| | | // private void Permissions() |
| | | // { |
| | | // string[] mPermissionList = new string[] |
| | | // { |
| | | // Manifest.Permission.WriteExternalStorage, |
| | | // Manifest.Permission.ReadExternalStorage, |
| | | // Manifest.Permission.Camera, |
| | | // Manifest.Permission.RecordAudio |
| | | // }; |
| | | |
| | | foreach (string permissions in mPermissionList) |
| | | { |
| | | if (ContextCompat.CheckSelfPermission(this, permissions) != 0) |
| | | { |
| | | ActivityCompat.RequestPermissions(this, new string[] { permissions }, 1); |
| | | } |
| | | } |
| | | } |
| | | // foreach (string permissions in mPermissionList) |
| | | // { |
| | | // if (ContextCompat.CheckSelfPermission(this, permissions) != 0) |
| | | // { |
| | | // ActivityCompat.RequestPermissions(this, new string[] { permissions }, 1); |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | /// <summary> |
| | | /// 点击事件 |
| | | /// </summary> |
| | | /// <param name="v"></param> |
| | | public void OnClick(View v) |
| | | { |
| | | if (v.Equals(ivBack)) |
| | | { |
| | | this.Finish(); |
| | | } |
| | | } |
| | | // /// <summary> |
| | | // /// 点击事件 |
| | | // /// </summary> |
| | | // /// <param name="v"></param> |
| | | // public void OnClick(View v) |
| | | // { |
| | | // if (v.Equals(ivBack)) |
| | | // { |
| | | // this.Finish(); |
| | | // } |
| | | // } |
| | | |
| | | protected override void OnDestroy() |
| | | { |
| | | base.OnDestroy(); |
| | | // protected override void OnDestroy() |
| | | // { |
| | | // base.OnDestroy(); |
| | | |
| | | Stop(); |
| | | mPlayWindow.UninitPlayWindow();//销毁底层资源 |
| | | } |
| | | // Stop(); |
| | | // mPlayWindow.UninitPlayWindow();//销毁底层资源 |
| | | // } |
| | | |
| | | /// <summary> |
| | | /// 对讲监听 |
| | | /// </summary> |
| | | class AudioTalkerListener : LCOpenSDK_TalkerListener |
| | | { |
| | | /// <summary> |
| | | /// 对讲结果回调 |
| | | /// </summary> |
| | | /// <param name="error"></param> |
| | | /// <param name="type"></param> |
| | | public override void OnTalkResult(string error, int type) |
| | | { |
| | | base.OnTalkResult(error, type); |
| | | // /// <summary> |
| | | // /// 对讲监听 |
| | | // /// </summary> |
| | | // class AudioTalkerListener : LCOpenSDK_TalkerListener |
| | | // { |
| | | // /// <summary> |
| | | // /// 对讲结果回调 |
| | | // /// </summary> |
| | | // /// <param name="error"></param> |
| | | // /// <param name="type"></param> |
| | | // public override void OnTalkResult(string error, int type) |
| | | // { |
| | | // base.OnTalkResult(error, type); |
| | | |
| | | try |
| | | { |
| | | System.Console.WriteLine("LC OnTalkResult error:" + error + " type:" + type); |
| | | bool talkResult = false; |
| | | if (type == 99 || error.Equals("-1000") || error.Equals("0") || error.Equals("1") || error.Equals("3")) |
| | | { |
| | | talkResult = false; |
| | | } |
| | | else if (error.Equals("4")) |
| | | { |
| | | talkResult = true; |
| | | } |
| | | // try |
| | | // { |
| | | // System.Console.WriteLine("LC OnTalkResult error:" + error + " type:" + type); |
| | | // bool talkResult = false; |
| | | // if (type == 99 || error.Equals("-1000") || error.Equals("0") || error.Equals("1") || error.Equals("3")) |
| | | // { |
| | | // talkResult = false; |
| | | // } |
| | | // else if (error.Equals("4")) |
| | | // { |
| | | // talkResult = true; |
| | | // } |
| | | |
| | | if (!talkResult) |
| | | { |
| | | // 提示对讲打开失败 |
| | | CurtActivity.StopTalk(); |
| | | CurtActivity.RunOnUiThread(() => |
| | | { |
| | | Toast.MakeText(CurtActivity, Resource.String.talk_open_failed, ToastLength.Short).Show(); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | CurtActivity.reverseCallFragment.PostAnswer();// post接听电话,给云端做记录 |
| | | CurtActivity.reverseCallFragment.TimeStarts();//接通成功打开计时器 |
| | | } |
| | | } |
| | | catch { } |
| | | } |
| | | // if (!talkResult) |
| | | // { |
| | | // // 提示对讲打开失败 |
| | | // CurtActivity.StopTalk(); |
| | | // CurtActivity.RunOnUiThread(() => |
| | | // { |
| | | // Toast.MakeText(CurtActivity, Resource.String.talk_open_failed, ToastLength.Short).Show(); |
| | | // }); |
| | | // } |
| | | // else |
| | | // { |
| | | // CurtActivity.reverseCallFragment.PostAnswer();// post接听电话,给云端做记录 |
| | | // CurtActivity.reverseCallFragment.TimeStarts();//接通成功打开计时器 |
| | | // } |
| | | // } |
| | | // catch { } |
| | | // } |
| | | |
| | | public override void OnTalkPlayReady() |
| | | { |
| | | base.OnTalkPlayReady(); |
| | | } |
| | | // public override void OnTalkPlayReady() |
| | | // { |
| | | // base.OnTalkPlayReady(); |
| | | // } |
| | | |
| | | public override void OnAudioReceive(byte[] bytes, int p1, int p2, int p3, int p4) |
| | | { |
| | | base.OnAudioReceive(bytes, p1, p2, p3, p4); |
| | | } |
| | | // public override void OnAudioReceive(byte[] bytes, int p1, int p2, int p3, int p4) |
| | | // { |
| | | // base.OnAudioReceive(bytes, p1, p2, p3, p4); |
| | | // } |
| | | |
| | | public override void OnAudioRecord(byte[] bytes, int p1, int p2, int p3, int p4) |
| | | { |
| | | base.OnAudioRecord(bytes, p1, p2, p3, p4); |
| | | } |
| | | // public override void OnAudioRecord(byte[] bytes, int p1, int p2, int p3, int p4) |
| | | // { |
| | | // base.OnAudioRecord(bytes, p1, p2, p3, p4); |
| | | // } |
| | | |
| | | public override void OnDataLength(int i) |
| | | { |
| | | base.OnDataLength(i); |
| | | } |
| | | } |
| | | // public override void OnDataLength(int i) |
| | | // { |
| | | // base.OnDataLength(i); |
| | | // } |
| | | // } |
| | | |
| | | /// <summary> |
| | | /// 播放、预览结果回调 |
| | | /// resultSource: 0--RTSP 1--HLS 5--DHHTTP 99--OPENAPI |
| | | /// </summary> |
| | | class PlayEventListener : LCOpenSDK_EventListener |
| | | { |
| | | public override void OnPlayerResult(int index, string code, int resultSource) |
| | | { |
| | | base.OnPlayerResult(index, code, resultSource); |
| | | System.Console.WriteLine("LC OnPlayerResult index:" + index + " code:" + code + " resultSource:"+ resultSource); |
| | | } |
| | | // /// <summary> |
| | | // /// 播放、预览结果回调 |
| | | // /// resultSource: 0--RTSP 1--HLS 5--DHHTTP 99--OPENAPI |
| | | // /// </summary> |
| | | // class PlayEventListener : LCOpenSDK_EventListener |
| | | // { |
| | | // public override void OnPlayerResult(int index, string code, int resultSource) |
| | | // { |
| | | // base.OnPlayerResult(index, code, resultSource); |
| | | // System.Console.WriteLine("LC OnPlayerResult index:" + index + " code:" + code + " resultSource:"+ resultSource); |
| | | // } |
| | | |
| | | |
| | | } |
| | | } |
| | | } |
| | | // } |
| | | // } |
| | | //} |