Example #1
0
        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);
            }
        }
Example #2
0
 // 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);
     }
 }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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);
            }
        }
Example #7
0
        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);
            }
        }