Базовый слушатель Linphone не принимает входящие звонки - PullRequest
0 голосов
/ 25 апреля 2018

Я пытался добавить sip входящие звонки с помощью linphone sdk, регистрация прошла успешно, я могу разобрать текущие звонки, и статус звонка регистрируется, как и ожидалось, но я не могу принимать входящие звонки.Я использую службу намерений для обработки соединения.

Вот мой код:

protected void onHandleIntent(Intent intent) {
        String sipAddress = intent.getStringExtra("address");
        String password = intent.getStringExtra("password");
        final LinphoneCoreFactory lcFactory = LinphoneCoreFactory.instance();

        // First instantiate the core Linphone object given only a listener.
        // The listener will react to events in Linphone core.
        try {
            lc = lcFactory.createLinphoneCore(new LinphoneCoreListenerBase() {
                @Override
                public void callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State state, String message) {
                    super.callState(lc, call, state, message);
                    Log.i(TAG, "callState: ");
                }
            }, getApplication());
        } catch (LinphoneCoreException e) {
            e.printStackTrace();
        }
        lc.setUserAgent("Test app", "1.0");

        try {
            LinphoneAddress address = lcFactory.createLinphoneAddress(sipAddress);
            String username = address.getUserName();
            String domain = address.getDomain();
            if (password != null) {
                lc.addAuthInfo(lcFactory.createAuthInfo(username, password, null, domain));
            }
            // create proxy config
            LinphoneProxyConfig proxyCfg = lc.createProxyConfig(sipAddress, domain, null, true);
            proxyCfg.setExpires(2000);
            lc.addProxyConfig(proxyCfg); // add it to linphone
            lc.setDefaultProxyConfig(proxyCfg);


            running = true;
            while (running) {
                lc.iterate(); // first iterate initiates registration
                sleep(20);
            }
        } catch (LinphoneCoreException e) {
            e.printStackTrace();
        }
    }

Что не так с моим кодом?

1 Ответ

0 голосов
/ 07 мая 2018

Как указано в документе IntentService (https://developer.android.com/reference/android/app/IntentService):

, служба запускается по мере необходимости, обрабатывает каждое намерение по очереди, используя рабочий поток, и останавливается, когда заканчивается егоработа.

Я думаю, что вы не должны помещать слушателя в IntentService. Вместо этого поместите его в долго работающую Службу, чтобы слушатель мог фактически оставаться там для получения событий.

...