2015-09-05 3 views
1

Я использую SIP в приложении для Android, но моя текущая библиотека не может предоставить некоторые функции для меня. Поэтому я пытаюсь использовать libroid android-linphone и получить некоторую путаницу. Я не понимаю, как сделать регистрацию на Asterisk с этой библиотекой. Native библиотека загружается хорошоAndroid Linphone не может зарегистрироваться

I/LinphoneCoreFactoryImpl﹕ Trying to load liblinphone for armeabi-v7a 
I/LinphoneCoreFactoryImpl﹕ Loading done with armeabi-v7a 
Has neon: true 
Has ZRTP: true 

Я пытаюсь создать пользователя, как говорят на этой странице liblinphone-javadoc

в моем примере кода деятельность реализует LinphoneCoreListener

LinphoneCoreListener linphoneCoreListener = this; 

    try { 
     mLinphoneCore = LinphoneCoreFactoryImpl.instance().createLinphoneCore(this, this); 
     mLinphoneCore.setNetworkReachable(true); 
    } catch (LinphoneCoreException e) { 
     System.out.println("LinphoneCoreException " + e.toString()); 
    } 

    LinphoneProxyConfig proxy_cfg; 
    LinphoneAuthInfo info; 

    info = LinphoneCoreFactory.instance().createAuthInfo(mUserName, mUserName, mUserPass, null, null, mDomain); /*create authentication structure from identity*/ 
    mLinphoneCore.addAuthInfo(info); /*add authentication info to LinphoneCore*/ 

    /*create proxy config*/ 
    try { 
     proxy_cfg = mLinphoneCore.createProxyConfig(mSipUser, mDomain, mDomain, true); 
     proxy_cfg.setIdentity(mSipUser); /*set identity with user name and domain*/ 
     proxy_cfg.setProxy(mDomain); /* we assume domain = proxy server address*/ 
     proxy_cfg.enableRegister(true); /*activate registration for this proxy config*/ 
     mLinphoneCore.addProxyConfig(proxy_cfg); /*add proxy config to linphone core*/ 
     mLinphoneCore.setDefaultProxyConfig(proxy_cfg); /*set to default proxy*/ 
     mLinphoneCore.addListener(linphoneCoreListener); 
     proxy_cfg.done(); 

     System.out.println("Proxy state is = " + proxy_cfg.getState());/*23838-23838/com.myapplication I/System.out﹕ Proxy state is = RegistrationNone*/ 
    } catch (LinphoneCoreException e) { 
     System.out.println(e.toString()); 
    } 

LinphoneCoreListener сообщения

I/System.out﹕ globalState Starting up 
I/System.out﹕ configuringStatus null 
I/System.out﹕ displayStatus Ready 
I/System.out﹕ globalState Ready 

В документах указано, что configuringStatus message сообщение об ошибке, если состояние == Failed, но ничего не найдено о null.

Я буду очень благодарен за помощь в этой библиотеке.

ответ

2

После настройки вы должны периодически звонить LinphoneCore.iterate() в цикле. Это основной цикл приложения. Например, из источников приложений Linphone:

mLc = LinphoneCoreFactory.instance().createLinphoneCore(...); 

    TimerTask lTask = new TimerTask() { 
     @Override 
     public void run() { 
      UIThreadDispatcher.dispatch(new Runnable() { 
       @Override 
       public void run() { 
        if (mLc != null) { 
         mLc.iterate(); 
        } 
       } 
      }); 
     } 
    }; 
    mTimer = new Timer("Linphone scheduler"); 
    mTimer.schedule(lTask, 0, 20);