我注册了PHONE_STATE侦听器,以便检测用户何时开始和结束呼叫。如果有人想知道,我这样做是为了娱乐和学习,所以没有隐私问题。
无论如何,我在尝试使用telnet和模拟器时发现了一个问题。在特定情况下,当一个呼叫处于保持状态并且第二个呼叫(活动呼叫)结束时,我的监听器不会收到任何事件。当第一次呼叫再次激活时,我期待它至少接收另一个OFFHOOK,如果不是IDLE + OFFHOOK。但是没有任何东西。
在相关的说明中,我还注意到没有定义用于保持呼叫的电话状态事件,这对我来说似乎有点奇怪。
当然,Android日志条目正确反映了这些事件。问题是,如何在代码中可靠地检测它们?我应该监控日志本身(不确定这是否可能)而不是依赖电话状态监听器?
我正在通过Xamarin Studio在模拟器上测试API 15,因此我的代码是Mono上的C#+ Xamarin.Android,而不是Java直接。这可能是因为这种行为只是一个其中一个图层中的错误或遗漏,但我更可能只是遗漏了一些明显的东西。
FWIW,我还没有在真实设备上测试过我的代码。我知道某些硬件的行为可能与我在模拟器中看到的有所不同。
任何帮助将不胜感激!
答案 0 :(得分:1)
是的,这是一个问题。当有多个电话时很难检测到:
可以通过idle to offhook
或ringing to offhook
检测第一个来电,即拨打或接听。现在,当电话转到offhook to ringing
时,我们知道第二个电话正在进入。如果您拨打第二个电话,则其offhook to offhook
无法从此处检测到。 (你可以听拨号广播)。现在,如果第二个电话被拒绝,我们会收到ringing to offhook
,因为接听电话会让人感到困惑。
恕我直言,只有3个州不足以跟踪多个电话,但这就是API暂时支持的。