I am trying to run the SIPDemo downloaded from Google Andoid sample applications, but not able to get it running.
The issue I am facing is that after I invoke SipManager.open passing it a profile and a pending intent, it should start the registration process with the SIP Provider, in my case I am using an already registered account to connect. But none of the callbacks in SipRegistrationListener are getting fired. Not sure weather the application is able to register or not, weather the app is able to even hit the SIP server or not.
Also please note that I am passing null as listner in SipManager.open call but in next line providing the listener by invoking SipManager.setRegistrationListener.
Below is the complete code of the FullScreenActivity that I've modified a bit after downloading.
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);
}
}
}