Xamarin Forms Как узнать, когда в данный момент происходит звонок - PullRequest
0 голосов
/ 18 сентября 2018

Я пишу код для приложения Xamarin Forms Android, которое набирает номер телефона, но я не хочу набирать номер, если пользователь в данный момент находится на вызове (входящем или исходящем, это не имеет значения)).Я много исследовал состояние телефона, но не могу найти то, что ищу, если не применяю его неправильно.Мне нужно что-то вроде этого:

if (NoCurrentCallIsTakingPlace)
{
    var uri = Android.Net.Uri.Parse(string.Format("tel:{0}", PhoneNumber));
    var intent = new Intent(Intent.ActionCall, uri);
    Xamarin.Forms.Forms.Context.StartActivity(CurrentIntent);
}

Код для набора номера работает, но это условный оператор / код для проверки состояния телефона, с которым у меня возникла проблема.Пожалуйста, кто-нибудь может помочь.Извинения, если вам нужно больше информации.Пожалуйста, дайте мне знать, и я предоставлю это.Спасибо.

1 Ответ

0 голосов
/ 18 сентября 2018

Ну в родном андроиде у вас есть менеджер телефонии, чтобы проверить состояние вашего устройства:

У него есть три состояния:

  • В режиме ожидания: когда он находится в режиме ожидания, нет вызова
  • Offhook: при снятии трубки он находится в состоянии вызова
  • Звонок: при звонке

        var telephonyManagerService = (TelephonyManager)Xamarin.Forms.Forms.Context.GetSystemService(TelephonyService);
        var getCurrentState = telephonyManagerService?.CallState;
        switch (getCurrentState)
        {
            case CallState.Idle:
              //No call
                break;
            case CallState.Ringing:
              //Ringing 
                break;
            case CallState.Offhook:
              //On call
                break;
            default:
                break;
        }
    

Возврат в случае запросов

...