0

我正在开发一个 sip 应用程序,它可以啜饮和啜饮其他电话。我也想记录两者。最后发现linphone-sdk可以解决问题。我已将 Linphone-sdk 从他们的 maven 存储库集成到我的应用程序中。我正在使用另一个 Sip 客户端进行通话(不是 linphone 帐户)。拨出电话工作正常。但是,每当我们收到对 sip 帐户的来电时,应用程序就会因 log cat 中的错误而终止。

正如这个问题所回答的那样,我将相应的 linphone 服务更改为一个长时间运行的服务,当应用程序不在前台时,它可以接收来电。但这并不能解决问题。

mHandler = new Handler();
        // This will be our main Core listener, it will change activities depending on events
        mCoreListener = new CoreListenerStub() {
            @Override
            public void onCallStateChanged(Core core, Call call, Call.State state, String message) {
                android.util.Log.i(TAG, "onCallStateChanged: ");

                if (state == Call.State.IncomingReceived || state == Call.State.IncomingEarlyMedia) {
                    Log.i(TAG, "onCallReceived: ");
                    // For this sample we will automatically answer incoming calls
                    CallParams params = getCore().createCallParams(call);
                    params.enableVideo(false);
                    call.acceptWithParams(params);
               .....
            }
        };

根据代码,呼叫将被自动应答,但对于来电,onCallStateChanged() 永远不会被调用,逻辑输出如下:

……

    2019-07-23 14:56:50.468 9248-9248/com.call.mysipapp I/liblinphone: Found payload AMR/8000 fmtp=mode-change-period=2
    2019-07-23 14:56:50.469 9248-9248/com.call.mysipapp I/liblinphone: Found payload AMR/8000 fmtp=mode-change-period=1

    --------- beginning of crash
2019-07-23 14:56:50.473 9248-9248/com.call.mysipapp A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x28 in tid 9248 (m.call.mysipapp)
4

0 回答 0