我注册了PHONE_STATE侦听器,以检测用户何时开始和结束呼叫。万一有人想知道,我严格是为了娱乐和学习而这样做,所以没有隐私问题。

无论如何,我在尝试telnet和模拟器时注意到一个问题。在一个特定的场景中,当一个呼叫处于保留状态而第二个呼叫(活动的呼叫)结束时,我的侦听器未收到任何事件。我期望它在再次激活第一个呼叫时至少会收到另一个OFFHOOK,如果不是同时IDLE + OFFHOOK。但是什么都没有。

在相关说明中,我还注意到没有定义用于保留呼叫的电话状态事件,这对我来说也有些奇怪。

当然,Android日志条目可以正确反映这些事件。问题是,如何才能在代码中可靠地检测到它们?我应该监视日志本身(甚至不确定是否可行),而不是依靠电话状态侦听器吗?

我正在通过Xamarin Studio在模拟器上的API 15上进行测试,因此我的代码是Mono上的C#+ Xamarin.Android,而不是Java。可能是这种行为仅仅是这些层之一中的错误或遗漏,但是我很可能只是缺少明显的东西。

FWIW,我尚未在真实设备上测试我的代码。我知道某些硬件的行为可能与我在模拟器中看到的有所不同。

任何帮助,将不胜感激!

最佳答案

是的,这是一个问题。很难检测到何时有多个呼叫:

可以通过idle to offhookringing to offhook检测到第一个呼叫,即已拨还是打入。现在,当电话转到offhook to ringing时,我们知道第二个电话已接到。如果拨打第二个电话,则无法在此处检测到它的offhook to offhook。 (尽管您可以收听拨号广播)。现在,如果第二个呼叫被拒绝,我们将得到ringing to offhook,这与接听电话混淆了。

恕我直言,仅3个状态不足以跟踪多个调用,但这是API暂时支持的状态。

08-28 19:31