1

我为 android 手机构建了一个非常 VOIP 应用程序。我所拥有的只是一个文本字段,可让用户输入他们想要呼叫的人的用户名。然后当他们按下呼叫时,它会唤醒接收者的电话并播放铃声。接听者可以接听或拒绝来电。

目前,该应用程序“几乎”在以下设备上运行良好:

  • 带有 OS 4.0.4 的 Galaxy Note 1
  • GS3 与 OS 4.2.2 和 4.3
  • GS2 与 OS 4.0.4
  • 带有操作系统 4.2.2 的 Nexus 4

我遇到的一些小问题是一些GS2 电话 (GT-S7530M) 与一些GS3 电话之间的通话,其中的音频非常安静。我不知道为什么会这样,即使我们把音量调到最高。其他时候,电话中有很多噼啪声,或者你错过了人们的句子。我们确保网络速度始终至少为 15mbps 下载和 1.5mbps 上传。

其他所有电话似乎都可以正常工作。

我正在使用 linphone 作为手机的 sip 库。我使用星号作为电话服务器。我使用 GSM 作为电话和星号服务器的编解码器。我很确定我没有对我的代码做任何“特别”的事情。这是一个简单的应用程序,我认为任何有经验的 Android 开发人员都会发现我的代码非常简单。

我的问题是,假设我纠正了上述目标手机的问题,一个程序员尝试让这个 voip 应用程序在 70% 运行 OS 4.x+ 的现代安卓手机上运行是否现实?假设我希望能够在几周内达到 70% 的目标。

你们中的一些人可能会认为我的问题过于宽泛,所以我想明确表示,我只是在寻找一个是或否的答案,以确定它是否现实以及你回答的原因。

我问的原因是因为我有一个更早的原型,我问了一些陌生人使用其他手机,如 Sony Xperia ZL、HTC One 等......他们似乎无法让我的应用程序正常工作。他们遇到了诸如铃声不起作用、无法接听电话(即使他们成功连接到我的星号服务器)或音频质量极差等问题。这让我对被称为 Android Fragmentation 的流行问题进行了更多研究。当我看到那里所有的安卓手机时,我吓坏了。 在接下来的两周内,我真的可以自己达到 70% 的运行 OS 4.x 的现代安卓手机吗? 我为 Note 1、S3、S2 和 Nexus 4 创建的这个新版本是否可以在其他手机上完美运行?

4

3 回答 3

2

这是一个非常简单的应用程序

我渴望有一天我们可以真正将自定义 VOIP 应用程序描述为简单。现在是 2013 年,我们今天不能准确地说出这一点。恕我直言,您的应用程序相当复杂。碰巧大多数复杂的部分都在你没有编写的开源代码(linphone)和你没有编写的第三方服务器(Asterisk)中。

这是一个简单的应用程序,我认为任何有经验的 Android 开发人员都会发现我的代码非常简单

据我所知,您描述的几乎所有症状都可能是 linphone 的一部分或 Asterisk 的一部分。您的代码可能很简单,但您的应用程序并不简单。

一个程序员尝试让这个 voip 应用程序在 70% 运行 OS 4.x+ 的现代安卓手机上运行是否现实?

如果您从等式中删除 linphone 和 Asterisk(例如,通过重写您的应用程序以根据GCM 用户通知播放铃声),您的目标似乎是合理的。

然而,由于你的应用程序目前几乎完全是 linphone 和 Asterisk(“任何有经验的 Android 开发人员都会发现我的代码非常简单和简单”),你的成功取决于 linphone 在 Android 上的运行情况,以及 linphone-on- Android 在与 Asterisk 通信时工作。因此,唯一能够回答的人是那些对这些技术有经验的人。您可以尝试询问一些专用的 linphone 和/或 Asterisk 资源。或者,您可能会问一些新的 StackOverflow 问题,带有适合这些技术的标签,并且更加专注。

于 2013-08-17T21:26:50.373 回答
0

不,一些运营商造成了空洞:啜饮敌意或不喜欢 IPv4 到 IPv6。

于 2014-01-24T06:37:31.423 回答
-1

目前我也在开发一个 Android VoIP 客户端。实际上,不同的硬件和操作系统版本之间没有任何区别,除了这个音频处理令人头疼的问题。

不幸的是,不同供应商的音频实现存在很多不一致之处。我建议你看看一些开源的 SIP 软电话源代码,例如 sipdroid、mizudroid 和 csipsimple。我从 sipdroid 学到了很多东西,虽然代码没有很好的注释。准备好以不同方式处理每个设备的大量变通方法。

于 2014-01-28T22:53:38.703 回答