Android SipRegistrationListener回调没有被解雇

Android SipRegistrationListener回调没有被解雇,android,sip,voip,Android,Sip,Voip,我正在尝试运行从Google Andoid示例应用程序下载的SIPDemo,但无法运行它 我面临的问题是,在调用SipManager.open并向其传递配置文件和挂起的意图后,它应该启动与SIP提供商的注册过程,在我的情况下,我使用的是已注册的帐户进行连接。但是SipRegistrationListener中没有一个回调被解雇。不确定应用程序是否能够注册,应用程序是否能够访问SIP服务器 另外请注意,我在SipManager.open调用中将null作为listner传递,但在下一行中,通过调用

我正在尝试运行从Google Andoid示例应用程序下载的SIPDemo,但无法运行它

我面临的问题是,在调用SipManager.open并向其传递配置文件和挂起的意图后,它应该启动与SIP提供商的注册过程,在我的情况下,我使用的是已注册的帐户进行连接。但是SipRegistrationListener中没有一个回调被解雇。不确定应用程序是否能够注册,应用程序是否能够访问SIP服务器

另外请注意,我在SipManager.open调用中将null作为listner传递,但在下一行中,通过调用SipManager.setRegistrationListener提供侦听器

下面是我下载后稍加修改的FullScreenActivity的完整代码

public class CallActivity extends AppCompatActivity {

    private static final String INTENT_INCOMING_CALL = "android.SipDemo.INCOMING_CALL";
    private static final String TAG_CALL_ACTIVITY = "CallActivity";

    public String sipAddress = "yyyyyyyyyyy";
    public SipManager mSIPManager;
    public SipProfile mLocalSIPProfile;
    public SipAudioCall mSIPAudioCall;
    public IncomingCallReceiver mCallReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_call);
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.hide();
        }

        IntentFilter filter = new IntentFilter();
        filter.addAction(INTENT_INCOMING_CALL);
        mCallReceiver = new IncomingCallReceiver();
        this.registerReceiver(mCallReceiver, filter);

        initSIPManager();

    }


    public void initSIPManager() {

        if (mSIPManager == null) {
            mSIPManager = SipManager.newInstance(this);
        }

        if (mSIPManager != null) {
            Toast.makeText(this, "Created SIPManager Instance", Toast.LENGTH_SHORT).show();
            initLocalProfile();
        }
    }

    /**
     * Logs you into your SIP provider, registering this device as the location to
     * send SIP calls to for your SIP address.
     */
    public void initLocalProfile() {
        if (mSIPManager == null) {
            return;
        }

        if (mLocalSIPProfile != null) {
            closeLocalProfile();
        }

        String username = "xxxxxx";
        String password = "xxxxxxxxxx";
        String domain = "getonsip.com";

        try {

            SipProfile.Builder builder = new SipProfile.Builder(username, domain);
            builder.setPassword(password);
            builder.setAuthUserName("xxxxxxxxxxxx");
            builder.setDisplayName("xxxxxxx");
            builder.setOutboundProxy("sip.onsip.com");
            builder.setPort(5080);

            mLocalSIPProfile = builder.build();

            Intent i = new Intent();
            i.setAction(INTENT_INCOMING_CALL);
            PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA);
                mSIPManager.open(mLocalSIPProfile, pi, null);

            // This listener must be added AFTER mSIPManager.open is called,
            // Otherwise the methods aren't guaranteed to fire.

            mSIPManager.setRegistrationListener(mLocalSIPProfile.getUriString(), new SipRegistrationListener() {
                public void onRegistering(String localProfileUri) {
                    Toast.makeText(CallActivity.this, "Registering with SIP Server...", Toast.LENGTH_SHORT).show();
                }

                public void onRegistrationDone(String localProfileUri, long expiryTime) {
                    Toast.makeText(CallActivity.this, "Ready", Toast.LENGTH_SHORT).show();
                }

                public void onRegistrationFailed(String localProfileUri, int errorCode,
                                                 String errorMessage) {
                    Toast.makeText(CallActivity.this, "Registration failed.  Please check settings.", Toast.LENGTH_SHORT).show();
                }
            });

        } catch (ParseException pe) {
            Toast.makeText(CallActivity.this, "ParseException=" + pe.getMessage(), Toast.LENGTH_SHORT).show();
        } catch (SipException se) {
            Toast.makeText(CallActivity.this, "SIPException=" + se.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }


    /**
     * Closes out your local profile, freeing associated objects into memory
     * and unregistering your device from the server.
     */
    public void closeLocalProfile() {

        Toast.makeText(CallActivity.this, "Closing Profile", Toast.LENGTH_SHORT).show();

        if (mSIPManager == null) {
            return;
        }
        try {
            if (mLocalSIPProfile != null) {
                mSIPManager.close(mLocalSIPProfile.getUriString());
            }
        } catch (Exception ee) {
            Toast.makeText(CallActivity.this, "Exception=" + ee.getMessage(), Toast.LENGTH_SHORT).show();
            Log.d(TAG_CALL_ACTIVITY, "Failed to close local profile.", ee);
        }
    }

}