sip звонки с использованием библиотеки Android.Net.Sip

Я использую библиотеку Android.Net.Sip код пишу под Xamarin.Forms , мне нужно позвонить на другой телефон с помощью SIP , приведенный ниже код это осуществляет, но когда я поднимаю трубку, то звонок сам сбрасывается , а так же я не могу понять как передать голос по этому протоколу. На некоторых устройствах возникла проблема что manager = SipManager.NewInstance(this); возвращает null что приводит к завершению программы , многие пишут что это означает что Sip не поддерживается на моем устройстве, но если скачать приложение с playMarket для sip телефонии, то оно работает и звонит. Сервер Asterisk. Помогите пожалуйста разобраться в чем проблема.

Код программы:

        SipProfile profile;
        SipAudioCall.Listener listener = new SipAudioCall.Listener();

        SipProfile.Builder builder = new SipProfile.Builder("1001", "192.168.0.105");
        builder.SetAuthUserName("1001");
        builder.SetPassword("1234");
        builder.SetAutoRegistration(true);
        builder.SetProfileName("1001");
        builder.SetDisplayName("1001");
        profile = builder.Build();
        SipAudioCall call = new SipAudioCall(global::Android.App.Application.Context,profile);
        call.StartAudio();

        SipProfile perProfile;
        SipProfile.Builder PerBuildere = new SipProfile.Builder("1002", "192.168.0.105");
        perProfile = PerBuildere.Build();
          SipManager manager = null;
        if (manager == null)
            manager = SipManager.NewInstance(this);
        var intent = new Intent();
        intent.SetAction("com.companyname.corporate_messenger.INCOMING_CALL");
        var pendingIntent = PendingIntent.GetBroadcast(this, 0, intent,
                 (PendingIntentFlags)FillInFlags.Data);
        manager.Open(profile, pendingIntent, null);
        SipSession session = manager.GetSessionFor(intent);
        manager.MakeAudioCall(profile, perProfile, listener, 120);

Манифест:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.ACCOUNT_MANAGER" />
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
    <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
    <uses-permission android:name="android.permission.USE_SIP" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-feature android:name="android.hardware.sip.voip" android:required="true" />
    <uses-feature android:name="android.software.sip.voip" android:required="true" />
    <uses-feature android:name="android.hardware.wifi" android:required="true" />
    <uses-feature android:name="android.hardware.microphone" android:required="true" />

Ответы (1 шт):

Автор решения: eri

Android.net.sip это интерфейс встроенной звонилки андроида. Он используется ,например, для вызовов по вайфай в мобильной сети. Этого интерфейса может и не быть, если телефон не поддерживает вызовы в вайфай сети или подобное. Звонилки из маркета используют другие юзер агенты. Смотрите pjsip,sofia,liblinphone,jami и другие

→ Ссылка