我正在尝试了解使用自定义拨号器应用进行互联网通话的可行性和不可行性。
我们的想法是,当没有可用的互联网连接时,可以使用标准的Android拨号器,但只要有互联网连接,就可以使用自定义编写的VOIP拨号器/来电应用程序。 我看到,在Android通话设置中,您可以将其设置为在连接可用时使用Internet呼叫。这是如何运作的?这是否只是告诉本机拨号器应用程序使用互联网呼叫,还是实际上有一个特定的Intent或者在进行互联网呼叫时被触发的东西,以便我可以打开我的自定义SIP应用程序?
此外,“标准手机应用”图标是否始终与标准手机应用相关联,还是可以覆盖此手机图标以在连接时打开自定义VOIP应用?
基本上,有没有办法根据手机是否连接到互联网,在标准拨号器和自定义SIP拨号器之间无缝自动切换?
如果没有,这可以通过自定义Android来完成吗?
谢谢,
答案 0 :(得分:0)
有四种可能的方法可以做我想知道的事情:
<强> 1 即可。替换Android拨号器
这很难并且很多工作。 Android Dialer(我最后一次检查)是Android中的电话堆栈。因此,要替换它,您必须更换完整的电话堆栈(包括任何公共API),即处理进出设备的所有蜂窝(现在是sip)呼叫。另外,更换设备的唯一方法是将设备设备为root,因为它无法正常更换。
<强> 2 即可。提供与主拨号程序分开的自己的拨号程序。
这样做的好处是,你永远不会遇到其他任何问题。
第3 即可。挂钩出站呼叫API(ACTION_NEW_OUTGOING_CALL)
这是非常酷的东西,我还没有看到任何其他操作系统允许你这样做。基本上,当普通拨号器开始拨号时(或当另一个应用程序也开始拨打号码时)你可以捕获,你可以允许它通过,修改它或取消它。我从SIP客户端看到的行为是,他们将取消呼叫并设置一个选择屏幕,提示您要发送呼叫的位置(啜饮,移动电话或其他)。
以下是example的使用方法。
缺点是:
您可以与其他首先应用的应用程序进行斗争。有一个'优先'设置,但我所看到的是每个人都希望成为第一。
在某些拥有拨号器的OEM提供商的Android设备上,他们并不总是解雇它!
<强> 4 即可。检测拨号器何时显示并在其前面显示您自己的拨号器。
这可以让您提供更好的集成感,因为您可以在拨号器中提供呼叫类型选择,以及其他自定义号码查找,但在某些设备上这可能有点棘手。
我建议 3 开始,因为它很容易做到,你可以很快得到一些东西。在我编写的代码中,我们已经完成了2,3和4,并且还查看了1。