Android 实现SIP和语音呼叫

Android 实现SIP和语音呼叫,android,sip,Android,Sip,我试图在我的应用程序中使用该协议,我遵循了android文档和SIP演示项目,但不幸的是,我无法使用SIP I get Registration Failed错误。这是InitializeLocalProfile函数: public void initializeLocalProfile() { if (manager == null) { return; } if (me != null) {

我试图在我的应用程序中使用该协议,我遵循了android文档和SIP演示项目,但不幸的是,我无法使用SIP I get Registration Failed错误。这是InitializeLocalProfile函数:

public void initializeLocalProfile()  {
        if (manager == null) {
            return;
        }

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

        String username =  ((EditText)findViewById(R.id.SipUserName)).getText().toString();
        String domain = ((EditText) findViewById(R.id.SipDomain)).getText().toString();
        String password = ((EditText)findViewById(R.id.SipPassword)).getText().toString();    


        try {
            SipProfile.Builder builder = new SipProfile.Builder(username, domain);
            builder.setPassword(password);
            me = builder.build();

                 Intent i = new Intent();
                 // I think Error is here or in one of the Next 3 Lines
                //Kontact is my project Name, I tried also com.example.kontact.INCOMING_CAL
                i.setAction("android.Kontact.INCOMING_CALL"); 
                PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA);
                manager.open(me, pi, null);


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

            manager.setRegistrationListener(me.getUriString(), new SipRegistrationListener() {
                    public void onRegistering(String localProfileUri) {
                        updateStatus("Registering with SIP Server...");
                    }

                    public void onRegistrationDone(String localProfileUri, long expiryTime) {
                        updateStatus("Ready");
                    }

                    public void onRegistrationFailed(String localProfileUri, int errorCode,
                            String errorMessage) {
                        updateStatus("Failure to Register...");
                    }
                });
        } catch (ParseException pe) {
            pe.printStackTrace();
            updateStatus("Connection Error.");
        } catch (SipException se) {
            se.printStackTrace();
            updateStatus("Connection error.");
        } catch (java.text.ParseException e) {
            e.printStackTrace();
        }
    }
这是清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.kontact"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="21" />

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.USE_SIP" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />

    <uses-feature android:name="android.hardware.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" />

    <application
        <receiver android:name=".IncomingCallReceiver" android:label="Call Receiver"/>
        <activity
            android:name=".SipActivity"
            android:label="@string/title_activity_sip" >
             <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
call=mSipManager.makeAudioCallmSipProfile.getUriString,sip:+num.getText.toString+@+域,侦听器,30; 但是在关闭侦听器后调用此函数