public void Initialize(Last_Calls_AdapterViewHolder holder, Classes.Call_User item) { try { ImageCacheLoader.LoadImage(item.avatar, holder.Image_Avatar, false, true); string name = IMethods.Fun_String.DecodeString(item.name); holder.Txt_Username.Text = name; if (item.typeIcon == "Accept") { IMethods.Set_TextViewIcon("2", holder.Txt_LastCall_icon, "\uf095"); holder.Txt_LastCall_icon.SetTextColor(Color.ParseColor(item.typeColor)); } else if (item.typeIcon == "Cancel") { IMethods.Set_TextViewIcon("2", holder.Txt_LastCall_icon, "\uf3dd"); holder.Txt_LastCall_icon.SetTextColor(Color.ParseColor(item.typeColor)); } else if (item.typeIcon == "Declined") { IMethods.Set_TextViewIcon("2", holder.Txt_LastCall_icon, "\uf05e"); holder.Txt_LastCall_icon.SetTextColor(Color.ParseColor(item.typeColor)); } if (item.time == "Declined call") { holder.Txt_LastTimecall.Text = this.Activity_Context.GetText(Resource.String.Lbl_Declined_call); } else if (item.time == "Missed call") { holder.Txt_LastTimecall.Text = this.Activity_Context.GetText(Resource.String.Lbl_Missed_call); } else if (item.time == "Answered call") { holder.Txt_LastTimecall.Text = this.Activity_Context.GetText(Resource.String.Lbl_Answered_call); } else { holder.Txt_LastTimecall.Text = item.time; } } catch (Exception e) { Console.WriteLine(e); } }
// Function Call public void Insert(Classes.Call_User Call) { try { var check = mCallUser.FirstOrDefault(a => a.id == Call.id); if (check == null) { mCallUser.Insert(0, Call); NotifyItemInserted(0); Last_Calls_Fragment.LastCallsRecyler?.ScrollToPosition(0); } } catch (Exception e) { Console.WriteLine(e); } }
public async void OnCallTime_Running_Out() { try { var ckd = Last_Calls_Fragment.mAdapter?.mCallUser?.FirstOrDefault(a => a.id == CALL_ID); // id >> Call_Id if (ckd == null) { Classes.Call_User cv = new Classes.Call_User { id = CALL_ID, user_id = UserID, avatar = avatar, name = name, from_id = from_id, active = active, time = "Missed call", status = status, room_name = ROOM_NAME, type = CALL_TYPE, typeIcon = "Cancel", typeColor = "#FF0000" }; Last_Calls_Fragment.mAdapter?.Insert(cv); SqLiteDatabase dbDatabase = new SqLiteDatabase(); dbDatabase.Insert_CallUser(cv); dbDatabase.Dispose(); } IMethods.AudioRecorderAndPlayer.StopAudioFromAsset(); IMethods.AudioRecorderAndPlayer.PlayAudioFromAsset("Error.mp3"); DurationTextView.Text = this.GetText(Resource.String.Lbl_No_respond_from_the_user); await Task.Delay(3000); AgoraEngine.LeaveChannel(); AgoraEngine.Dispose(); AgoraEngine = null; Finish(); } catch (Exception e) { Finish(); Console.WriteLine(e); } }
protected override void OnCreate(Bundle savedInstanceState) { try { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.TwilioAudioCallActivityLayout); Window.AddFlags(WindowManagerFlags.KeepScreenOn); // Create your application here Intent intentCloser = new Intent(this, typeof(NotificationManagerClass.NotificationBroadcasterCloser)); intentCloser.PutExtra("action", "answer"); intentCloser.PutExtra("type", Intent.GetStringExtra("type")); SendBroadcast(intentCloser); UserID = Intent.GetStringExtra("UserID"); avatar = Intent.GetStringExtra("avatar"); name = Intent.GetStringExtra("name"); var data_CALL_ID = Intent.GetStringExtra("CallID") ?? "Data not available"; if (data_CALL_ID != "Data not available" && !string.IsNullOrEmpty(data_CALL_ID)) { CALL_ID = data_CALL_ID; TWILIO_ACCESS_TOKEN = Intent.GetStringExtra("access_token"); TWILIO_ACCESS_TOKEN_USER2 = Intent.GetStringExtra("access_token_2"); from_id = Intent.GetStringExtra("from_id"); active = Intent.GetStringExtra("active"); time = Intent.GetStringExtra("time"); status = Intent.GetStringExtra("status"); ROOM_NAME = Intent.GetStringExtra("room_name"); CALL_TYPE = Intent.GetStringExtra("type"); } Speaker_audio_button = FindViewById <CircleButton>(Resource.Id.speaker_audio_button); End_call_button = FindViewById <CircleButton>(Resource.Id.end_audio_call_button); Mute_audio_button = FindViewById <CircleButton>(Resource.Id.mute_audio_call_button); UserImageViewAsync = FindViewById <ImageView>(Resource.Id.audiouserImageViewAsync); UserNameTextView = FindViewById <TextView>(Resource.Id.audiouserNameTextView); DurationTextView = FindViewById <TextView>(Resource.Id.audiodurationTextView); Speaker_audio_button.Click += Speaker_audio_button_Click; End_call_button.Click += End_call_button_Click; Mute_audio_button.Click += Mute_audio_button_Click; Speaker_audio_button.SetImageResource(Resource.Drawable.ic_speaker_close); bool granted = ContextCompat.CheckSelfPermission(ApplicationContext, Manifest.Permission.Camera) == Permission.Granted && ContextCompat.CheckSelfPermission(ApplicationContext, Manifest.Permission.RecordAudio) == Permission.Granted; CheckVideoCallPermissions(granted); if (CALL_TYPE == "Twilio_audio_call") { if (!string.IsNullOrEmpty(TWILIO_ACCESS_TOKEN)) { if (!string.IsNullOrEmpty(UserID)) { Load_userWhenCall(UserID); } TwilioVideo = TwilioVideoHelper.GetOrCreate(ApplicationContext); UpdateState(); DurationTextView.Text = this.GetText(Resource.String.Lbl_Waiting_for_answer); var Check_for_ResponseDate = API_Request.Send_Twilio_Audio_Call_Answer_Async("answer", CALL_ID); ConnectToRoom(); var ckd = Last_Calls_Fragment.mAdapter?.mCallUser?.FirstOrDefault(a => a.id == CALL_ID); // id >> Call_Id if (ckd == null) { Classes.Call_User cv = new Classes.Call_User { id = CALL_ID, user_id = UserID, avatar = avatar, name = name, from_id = from_id, active = active, time = "Answered call", status = status, room_name = ROOM_NAME, type = CALL_TYPE, typeIcon = "Accept", typeColor = "#008000" }; Last_Calls_Fragment.mAdapter?.Insert(cv); SqLiteDatabase dbDatabase = new SqLiteDatabase(); dbDatabase.Insert_CallUser(cv); dbDatabase.Dispose(); } } } else if (CALL_TYPE == "Twilio_audio_calling_start") { if (!string.IsNullOrEmpty(UserID)) { LoadProfileFromUserID(UserID); Load_userWhenCall(UserID); } DurationTextView.Text = this.GetText(Resource.String.Lbl_Calling); TwilioVideo = TwilioVideoHelper.GetOrCreate(ApplicationContext); IMethods.AudioRecorderAndPlayer.PlayAudioFromAsset("mystic_call.mp3"); UpdateState(); } } catch (Exception e) { Console.WriteLine(e); } }
private async void TimerCallRequestAnswer_Waiter_Elapsed(object sender, ElapsedEventArgs e) { try { var Call_Result_Generation = await API_Request.Check_Twilio_Call_Answer_Async(CALL_ID, "audio"); IMethods.AudioRecorderAndPlayer.StopAudioFromAsset(); if (string.IsNullOrEmpty(Call_Result_Generation)) { return; } if (Call_Result_Generation == "200") { if (!string.IsNullOrEmpty(TWILIO_ACCESS_TOKEN)) { TimerRequestWaiter.Enabled = false; TimerRequestWaiter.Stop(); TimerRequestWaiter.Close(); RunOnUiThread(async() => { await Task.Delay(1000); TwilioVideo.UpdateToken(TWILIO_ACCESS_TOKEN_USER2); TwilioVideo.JoinRoom(ApplicationContext, ROOM_NAME); var ckd = Last_Calls_Fragment.mAdapter?.mCallUser?.FirstOrDefault(a => a.id == CALL_ID); // id >> Call_Id if (ckd == null) { Classes.Call_User cv = new Classes.Call_User { id = CALL_ID, user_id = UserID, avatar = avatar, name = name, from_id = from_id, active = active, time = "Answered call", status = status, room_name = ROOM_NAME, type = CALL_TYPE, typeIcon = "Accept", typeColor = "#008000" }; Last_Calls_Fragment.mAdapter?.Insert(cv); SqLiteDatabase dbDatabase = new SqLiteDatabase(); dbDatabase.Insert_CallUser(cv); dbDatabase.Dispose(); } }); } } else if (Call_Result_Generation == "300") { if (CountSecoundsOfOutgoingCall < 70) { CountSecoundsOfOutgoingCall += 10; } else { //Call Is inactive TimerRequestWaiter.Enabled = false; TimerRequestWaiter.Stop(); TimerRequestWaiter.Close(); var ckd = Last_Calls_Fragment.mAdapter?.mCallUser?.FirstOrDefault(a => a.id == CALL_ID); // id >> Call_Id if (ckd == null) { Classes.Call_User cv = new Classes.Call_User { id = CALL_ID, user_id = UserID, avatar = avatar, name = name, from_id = from_id, active = active, time = "Missed call", status = status, room_name = ROOM_NAME, type = CALL_TYPE, typeIcon = "Cancel", typeColor = "#FF0000" }; Last_Calls_Fragment.mAdapter?.Insert(cv); SqLiteDatabase dbDatabase = new SqLiteDatabase(); dbDatabase.Insert_CallUser(cv); dbDatabase.Dispose(); } FinishCall(true); } } else { //Call Is inactive TimerRequestWaiter.Enabled = false; TimerRequestWaiter.Stop(); TimerRequestWaiter.Close(); var ckd = Last_Calls_Fragment.mAdapter?.mCallUser?.FirstOrDefault(a => a.id == CALL_ID); // id >> Call_Id if (ckd == null) { Classes.Call_User cv = new Classes.Call_User { id = CALL_ID, user_id = UserID, avatar = avatar, name = name, from_id = from_id, active = active, time = "Declined call", status = status, room_name = ROOM_NAME, type = CALL_TYPE, typeIcon = "Declined", typeColor = "#FF8000" }; Last_Calls_Fragment.mAdapter?.Insert(cv); SqLiteDatabase dbDatabase = new SqLiteDatabase(); dbDatabase.Insert_CallUser(cv); dbDatabase.Dispose(); } FinishCall(true); } } catch (Exception exception) { Console.WriteLine(exception); } }
private async void TimerCallRequestAnswer_Waiter_Elapsed(object sender, ElapsedEventArgs e) { try { var Call_Result_Generation = await API_Request.Check_Agora_Call_Answer_Async(CALL_ID, "video"); if (string.IsNullOrEmpty(Call_Result_Generation)) { return; } TimerRequestWaiter.Enabled = false; TimerRequestWaiter.Stop(); TimerRequestWaiter.Close(); RunOnUiThread(() => { IMethods.AudioRecorderAndPlayer.StopAudioFromAsset(); InitAgoraEngineAndJoinChannel(ROOM_NAME); }); if (Call_Result_Generation == "answered") { var ckd = Last_Calls_Fragment.mAdapter?.mCallUser?.FirstOrDefault(a => a.id == CALL_ID); // id >> Call_Id if (ckd == null) { Classes.Call_User cv = new Classes.Call_User { id = CALL_ID, user_id = UserID, avatar = avatar, name = name, from_id = from_id, active = active, time = "Answered call", status = status, room_name = ROOM_NAME, type = CALL_TYPE, typeIcon = "Accept", typeColor = "#008000" }; Last_Calls_Fragment.mAdapter?.Insert(cv); SqLiteDatabase dbDatabase = new SqLiteDatabase(); dbDatabase.Insert_CallUser(cv); dbDatabase.Dispose(); } } else if (Call_Result_Generation == "calling") { if (CountSecoundsOfOutgoingCall < 80) { CountSecoundsOfOutgoingCall += 10; } else { //Call Is inactive TimerRequestWaiter.Enabled = false; TimerRequestWaiter.Stop(); TimerRequestWaiter.Close(); RunOnUiThread(OnCallTime_Running_Out); } var ckd = Last_Calls_Fragment.mAdapter?.mCallUser?.FirstOrDefault(a => a.id == CALL_ID); // id >> Call_Id if (ckd == null) { Classes.Call_User cv = new Classes.Call_User { id = CALL_ID, user_id = UserID, avatar = avatar, name = name, from_id = from_id, active = active, time = "Answered call", status = status, room_name = ROOM_NAME, type = CALL_TYPE, typeIcon = "Accept", typeColor = "#008000" }; Last_Calls_Fragment.mAdapter?.Insert(cv); SqLiteDatabase dbDatabase = new SqLiteDatabase(); dbDatabase.Insert_CallUser(cv); dbDatabase.Dispose(); } } else if (Call_Result_Generation == "declined") { TimerRequestWaiter.Enabled = false; TimerRequestWaiter.Stop(); TimerRequestWaiter.Close(); RunOnUiThread(OnCall_Declined_From_User); var ckd = Last_Calls_Fragment.mAdapter?.mCallUser?.FirstOrDefault(a => a.id == CALL_ID); // id >> Call_Id if (ckd == null) { Classes.Call_User cv = new Classes.Call_User { id = CALL_ID, user_id = UserID, avatar = avatar, name = name, from_id = from_id, active = active, time = "Declined call", status = status, room_name = ROOM_NAME, type = CALL_TYPE, typeIcon = "Declined", typeColor = "#FF8000" }; Last_Calls_Fragment.mAdapter?.Insert(cv); SqLiteDatabase dbDatabase = new SqLiteDatabase(); dbDatabase.Insert_CallUser(cv); dbDatabase.Dispose(); } } else if (Call_Result_Generation == "no_answer") { //Call Is inactive TimerRequestWaiter.Enabled = false; TimerRequestWaiter.Stop(); TimerRequestWaiter.Close(); RunOnUiThread(OnCallTime_Running_Out); var ckd = Last_Calls_Fragment.mAdapter?.mCallUser?.FirstOrDefault(a => a.id == CALL_ID); // id >> Call_Id if (ckd == null) { Classes.Call_User cv = new Classes.Call_User(); cv.id = CALL_ID; cv.user_id = UserID; cv.avatar = avatar; cv.name = name; cv.from_id = from_id; cv.active = active; cv.time = "Missed call"; cv.status = status; cv.room_name = ROOM_NAME; cv.type = CALL_TYPE; cv.typeIcon = "Cancel"; cv.typeColor = "#FF0000"; Last_Calls_Fragment.mAdapter?.Insert(cv); SqLiteDatabase dbDatabase = new SqLiteDatabase(); dbDatabase.Insert_CallUser(cv); dbDatabase.Dispose(); } } } catch (Exception exception) { Console.WriteLine(exception); } }
public async void Start_Call_Action(string Type) { try { if (Type == "call") { NoteTextView.Text = this.GetText(Resource.String.Lbl_Calling); var ApiStartCall = await API_Request.Create_Agora_Call_Event_Async(UserID, "video"); if (ApiStartCall != null) { ROOM_NAME = ApiStartCall.room_name; CALL_ID = ApiStartCall.id; IMethods.AudioRecorderAndPlayer.PlayAudioFromAsset("mystic_call.mp3"); TimerRequestWaiter = new Timer(); TimerRequestWaiter.Interval = 5000; TimerRequestWaiter.Elapsed += TimerCallRequestAnswer_Waiter_Elapsed; TimerRequestWaiter.Start(); } } else { ROOM_NAME = Intent.GetStringExtra("room_name"); CALL_ID = Intent.GetStringExtra("CallID"); name = Intent.GetStringExtra("name"); avatar = Intent.GetStringExtra("avatar"); NoteTextView.Text = this.GetText(Resource.String.Lbl_Waiting_to_connect); var ApiStartCall = await API_Request.Send_Agora_Call_Action_Async("answer", CALL_ID); if (ApiStartCall == "200") { var ckd = Last_Calls_Fragment.mAdapter?.mCallUser?.FirstOrDefault(a => a.id == CALL_ID); // id >> Call_Id if (ckd == null) { Classes.Call_User cv = new Classes.Call_User(); cv.id = CALL_ID; cv.user_id = UserID; cv.avatar = avatar; cv.name = name; cv.from_id = from_id; cv.active = active; cv.time = "Answered call"; cv.status = status; cv.room_name = ROOM_NAME; cv.type = CALL_TYPE; cv.typeIcon = "Accept"; cv.typeColor = "#008000"; Last_Calls_Fragment.mAdapter?.Insert(cv); SqLiteDatabase dbDatabase = new SqLiteDatabase(); dbDatabase.Insert_CallUser(cv); dbDatabase.Dispose(); } InitAgoraEngineAndJoinChannel(ROOM_NAME); //the caller Is Joining agora Server } else { var ckd = Last_Calls_Fragment.mAdapter?.mCallUser?.FirstOrDefault(a => a.id == CALL_ID); // id >> Call_Id if (ckd == null) { Classes.Call_User cv = new Classes.Call_User(); cv.id = CALL_ID; cv.user_id = UserID; cv.avatar = avatar; cv.name = name; cv.from_id = from_id; cv.active = active; cv.time = "Missed call"; cv.status = status; cv.room_name = ROOM_NAME; cv.type = CALL_TYPE; cv.typeIcon = "Cancel"; cv.typeColor = "#FF0000"; Last_Calls_Fragment.mAdapter?.Insert(cv); SqLiteDatabase dbDatabase = new SqLiteDatabase(); dbDatabase.Insert_CallUser(cv); dbDatabase.Dispose(); } NoteTextView.Text = this.GetText(Resource.String.Lbl_Faild_to_connect); } } } catch (Exception e) { Console.WriteLine(e); } }