0
안녕하세요 저는 아래 코드와 함께 전화를 걸고 응답하는 응용 프로그램을 개발하고자합니다. "SipManager가 닫혔습니다."및 토스트가 "등록되지 않았습니다".SIP 등록 - Android Studio
아무런 예외가 없으며 "setRegistrationListener"의 토스트가 실행되지 않았습니다.
무엇이 잘못 되었나요? 문제가 무엇입니까?
private void inicializarPerfilLocal(){
if(mSipManager == null){
Toast.makeText(getApplicationContext(), "Error al iniciar administrador SIP", Toast.LENGTH_LONG);
return;
}
String username = COUNTRYCODE+PHONE_NUMBER;
String domain = "xx.yy.zz";
String password = "ABCABCABC";
try{
SipProfile.Builder builder = new SipProfile.Builder(username, domain);
builder.setPassword(password);
builder.setAuthUserName(username+"@"+domain);
builder.setOutboundProxy("255.255.255.0");
builder.setProfileName(username + "@" + domain);
builder.setDisplayName("Test");
builder.setProtocol("TCP");
builder.setAutoRegistration(true);
mSipProfile = builder.build();
Intent i = new Intent();
i.setAction("android.SipDemo.INCOMING_CALL");
PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA);
mSipManager.open(mSipProfile, pi, null);
if (mSipManager.isOpened(mSipProfile.getUriString())){
Toast.makeText(getApplicationContext(), "Administrador abierto", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(), "Administrador cerrado", Toast.LENGTH_LONG).show();
}
mSipManager.setRegistrationListener(mSipProfile.getUriString(), new SipRegistrationListener() {
public void onRegistering(String localProfileUri) {
Toast.makeText(getApplicationContext(), "Registrando...",
Toast.LENGTH_LONG).show();
}
public void onRegistrationDone(String localProfileUri, long expiryTime) {
Toast.makeText(getApplicationContext(), "Registrado",
Toast.LENGTH_LONG).show();
}
public void onRegistrationFailed(String localProfileUri, int errorCode,
String errorMessage) {
Toast.makeText(getApplicationContext(), "Error en registro errorCode :: "+errorMessage,
Toast.LENGTH_LONG).show();
}
});
if (mSipManager.isRegistered(mSipProfile.getUriString())){
Toast.makeText(getApplicationContext(), "Registrado", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(), "No registrado", Toast.LENGTH_LONG).show();
}
}catch(ParseException pe){
Toast.makeText(getApplicationContext(), "Excepcion de parseo", Toast.LENGTH_LONG).show();
}catch(SipException se){
Toast.makeText(getApplicationContext(), "Excepcion SIP", Toast.LENGTH_LONG);
}
}
안녕 Ravi! 귀하의 권고에 대해 CSIPSimple로 서비스를 구성하고 작동하기 때문에 IP와 포트가 열립니다. 두 번째 추천에 대해서는 "UDP"로 바뀌었고 이제는 "SipManager가 열려 있습니다"하지만 등록되지 않았습니다. 로그에 "-9"(RegistrationFailed -9 :: 0) 및 "-4"(RegistrationFailed -4 :: 등록 실행되지 않음) 오류가 표시됩니다. –
tcpdump를 통해 로그를 확인하고 tcpdump에서 어떤 종류의 오류가 발생했는지 확인하십시오. 다행스럽게도 CSIPSimple은 모든 종류의 헤더를 허용하지만 앱은 그렇지 않습니다. – Ravi