Android SIP 服务持久化

Posted

技术标签:

【中文标题】Android SIP 服务持久化【英文标题】:Android SIP Service Persistence 【发布时间】:2017-10-09 17:15:00 【问题描述】:

我有一个消息和 SIP 应用程序需要在后台监听收到的消息、来电等,然后在各种活动中显示或输出它们(取决于消息类型)。我的问题是:完成 SIP 部分的最佳方法是什么? AsyncTask、Service、IntentService等?

所以,当我的应用程序启动时,我最初会启动一个启动活动,它会显示一个加载指示器,向用户显示加载状态,并处理一些初始事情(例如检查我们的服务器应用程序、设置声音级别等。 )。

那时,我想在我的 SIP 服务器上注册为 SIP 客户端,并坐在那里在后台监听来电,而其他活动可能在前台运行(例如时钟或带有网页等)。如果有 SIP 呼叫进来,我需要后台 SIP 客户端来接听它,并从可能存在的任何活动中接管屏幕。

最初,我从AsyncTask 开始我的SipListener 课程;但有两个担忧:1)我不想冒内存泄漏的风险,2)在成功注册到 SIP 服务器后,我无法让 SIP 客户端持续存在(因此,没有来电被监听,更不用说回答)。

接下来,我尝试将我的 SipListener 类移植到 Service。但问题是我什至无法注册,因为 SIP 是一种网络服务,而且我遇到了 Network-on-Main-Thread 异常。

现在,我看到了这个IntentService 选项,想知道这是否可行?

我正在学习 android,所以我知道就像他们说的那样危险!有人能指出我正确的方向吗?

【问题讨论】:

【参考方案1】:

您可以在服务中实现 Sip,而不仅仅是侦听器,还可以启动活动或在来电(消息)时推送通知。

如果您想挑战自己,请查看Linphone for android。 尝试构建它,这对您来说将是一个很好的练习,使用它并进行自定义。 他们还有一个Service,可以帮助你。

祝你好运。

【讨论】:

以上是关于Android SIP 服务持久化的主要内容,如果未能解决你的问题,请参考以下文章

Lync 项目经验-24-为持久聊天室-查询或者增加成员

Android上持久移动连接的最佳实践?

android端口号选择上的持久TCP连接?

在android中通过服务实现sip

Android 使用Okhttp/Retrofit持久化cookie的简便方式

不使用持久化服务在后台获取 XMPP 消息