在Android中结束第二次通话时未收到电话状态事件

时间:2013-04-20 07:37:10

标签: android xamarin

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

无论如何,我在尝试使用telnet和模拟器时发现了一个问题。在特定情况下,当一个呼叫处于保持状态并且第二个呼叫(活动呼叫)结束时,我的监听器不会收到任何事件。当第一次呼叫再次激活时,我期待它至少接收另一个OFFHOOK,如果不是IDLE + OFFHOOK。但是没有任何东西。

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

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

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

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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

是的,这是一个问题。当有多个电话时很难检测到:

可以通过idle to offhookringing to offhook检测第一个来电,即拨打或接听。现在,当电话转到offhook to ringing时,我们知道第二个电话正在进入。如果您拨打第二个电话,则其offhook to offhook无法从此处检测到。 (你可以听拨号广播)。现在,如果第二个电话被拒绝,我们会收到ringing to offhook,因为接听电话会让人感到困惑。

恕我直言,只有3个州不足以跟踪多个电话,但这就是API暂时支持的。