gpt4 book ai didi

android - SIP 注册监听器未触发

转载 作者:行者123 更新时间:2023-12-03 21:39:11 25 4
gpt4 key购买 nike

我在android中的 native SIP注册有一些问题。似乎有时它可以正确注册而没有问题,但其他人它注册和注销,还有其他人什么都不做并且从不进入回调。
有人可能会提供一些线索我做错了什么?

我在服务中有 initSIP() 方法,这里是:

private void initSIP()
{
Toast.makeText(ctxt, "init SIP", Toast.LENGTH_LONG).show();

if ((MyApplication)getApplication()).mSipManager == null)
{
return;
}

closeLocalProfile();

SipProfile.Builder builder = null;
try
{
SharedPreferences prefs = getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE);

String phone = ((MyApplication)getApplication()).js_config.getString("sipuser");
String pass = ((MyApplication)getApplication()).js_config.getString("sippass");

builder = new SipProfile.Builder(phone, "127.0.0.1");
builder.setPassword(pass);

builder.setPort(5060);

((MyApplication)getApplication()).mSipProfile = builder.build();
Intent intent = new Intent();
intent.setAction("android.SipDemo.INCOMING_CALL");
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, Intent.FILL_IN_DATA);

((MyApplication)getApplication()).mSipManager.open(((MyApplication) getApplication()).mSipProfile, pendingIntent, null);

((MyApplication)getApplication()).mSipManager.setRegistrationListener(((MyApplication)getApplication()).mSipProfile.getUriString(), new SipRegistrationListener()
{

public void onRegistering(String localProfileUri)
{
Log.v("IncomingSipCallsService", "Registering with SIP Server...");
}

public void onRegistrationDone(String localProfileUri, long expiryTime)
{
Log.v("IncomingSipCallsService", "Ready");
((MyApplication)getApplication()).status_SIP = MyApplication.SIP_READY;
}

public void onRegistrationFailed(String localProfileUri, int errorCode, String errorMessage)
{
((MyApplication)getApplication()).status_SIP = MyApplication.SIP_UNREADY;
Log.v("SipCallsService", "Registration failed. Please check settings.");
Log.v("SipCallsService", "URI: " + localProfileUri + " ERROR: " + errorCode + " " + errorMessage);
}
});
}
catch (ParseException e)
{
e.printStackTrace();
Toast.makeText(ctxt, e.getMessage(), Toast.LENGTH_LONG).show();

}
catch (SipException ex)
{
ex.printStackTrace();
Toast.makeText(ctxt, ex.getMessage(), Toast.LENGTH_LONG).show();
}
catch (Exception e)
{
e.printStackTrace();
Toast.makeText(ctxt, e.getMessage(), Toast.LENGTH_LONG).show();
}

}

在服务器端,我们有 Asterisk,并且不断地从应用程序客户端接收“选项”消息,但也有一些“注册”消息。

最佳答案

可悲的是,当您开发应用程序时,有时 Android 原生 SIP 服务会卡住,并且注册监听器永远不会被触发。因此,如果监听器的任何方法在 30 秒内被触发,我们会选择显示一个请求用户重新启动其设备的屏幕。
我们在开发应用程序时以及当您在 Release模式下使用一个签名然后使用另一个签名运行应用程序时(例如,在设置发布生产签名之前和之后)时遇到过这种情况。所以,这不应该在现实世界中发生......但以防万一,我们决定添加请重启屏幕。

关于android - SIP 注册监听器未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28431865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com