From 6b7a07bcbe147be7ed64994c40bcc5b0a2042aae Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期一, 05 七月 2021 11:23:35 +0800 Subject: [PATCH] 代码合并-温居城 --- HDL-ON_Android/LeChengVideoActivity.cs | 304 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 304 insertions(+), 0 deletions(-) diff --git a/HDL-ON_Android/LeChengVideoActivity.cs b/HDL-ON_Android/LeChengVideoActivity.cs new file mode 100644 index 0000000..9020958 --- /dev/null +++ b/HDL-ON_Android/LeChengVideoActivity.cs @@ -0,0 +1,304 @@ +锘� +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 HDL_ON.DAL.Server; +using HDL_ON_Android.LeChengView.Form; +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"; + public string AccessToken = ""; + public string DeviceId = ""; + public string Psk = ""; + public string PlayToken = "";//鎾斁playToken + public string CallId = "";//鍛煎彨Id + private int Type = 0;//0鐩戞帶锛�1瀵硅 + /// <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; + + public LCOpenSDK_PlayWindow mPlayWindow; + + protected override void OnCreate(Bundle savedInstanceState) + { + base.OnCreate(savedInstanceState); + + 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 + + InitLCSDK(); + + IniView(); + + IniData(); + + 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(); + } + } + + 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); + + tvName.SetText("DeviceName", null); + ivBack.SetOnClickListener(this); + + } + + private void IniData() + { + // + //SetStatusBarColor();// 杩欓噷璁捐鐨凾opBarColor鏄櫧鑹诧紝涓庣郴缁熷鑸爮瀛椾綋棰滆壊涓�鐩达紝鏆傛椂灞忚斀涓嶇敤 + + mPlayWindow = new LCOpenSDK_PlayWindow(); + mPlayWindow.InitPlayWindow(this, flWindowContent, 0, true); + + if (Location == 1) + URL = "openapi.easy4ip.com:443"; + } + + /// <summary> + /// 鍒濆鍖栦箰姗欏簱 + /// </summary> + private void InitLCSDK() + { + 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); + mPlayWindow.PlayRtspReal(paramReal); + } + catch (System.Exception e) + { + string sss = e.Message; + } + } + + /// <summary> + /// 鍋滄棰勮锛堝仠姝㈡挱鏀剧敾闈級 + /// </summary> + public void Stop() + { + mPlayWindow.StopRtspReal(true);//鍏抽棴瑙嗛 + } + + /// <summary> + /// 鎵撳紑瀵硅 + /// </summary> + public void StartTalk() + { + CloseAudio();// 鍏抽棴Audio + LCOpenSDK_Talk.Listener = new AudioTalkerListener();//璁剧疆瀵硅鐩戝惉 + // 瀵硅鍙傛暟 + LCOpenSDK_ParamTalk paramTalk = new LCOpenSDK_ParamTalk(AccessToken, DeviceId, -1, Psk, PlayToken, true); + LCOpenSDK_Talk.PlayTalk(paramTalk); + } + + /// <summary> + /// 鍏抽棴瀵硅 + /// </summary> + public void StopTalk() + { + LCOpenSDK_Talk.StopTalk(); + LCOpenSDK_Talk.Listener = null; + } + + /// <summary> + /// 鎵撳紑澹伴煶锛堥瑙堢殑鏃跺�欏彲浠ュ惉鍒伴棬鍙f満浼犳潵鐨勫0闊筹級 + /// </summary> + /// <returns></returns> + public bool OpenAudio() + { + return mPlayWindow.PlayAudio() == 0; + } + + /// <summary> + /// 鍏抽棴澹伴煶锛堥瑙堢殑鏃跺�欏叧闂棬鍙f尋浼犳潵鐨勫0闊筹紝娉ㄦ剰锛氭墦寮�瀵硅鏃堕渶瑕佸厛璋冪敤姝ゆ柟娉曞叧闂0闊筹級 + /// </summary> + /// <returns></returns> + public bool CloseAudio() + { + return mPlayWindow.StopAudio() == 0; + } + + /// <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 + }; + + 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(); + } + } + + protected override void OnDestroy() + { + base.OnDestroy(); + + 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); + + try + { + 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 { } + } + + 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 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); + } + } + + } +} -- Gitblit v1.8.0