在Android中结束第二个呼叫时没有收到电话状态事件



我注册了一个PHONE_STATE侦听器,以便检测用户何时开始和结束调用。如果有人想知道,我这样做完全是为了好玩和学习,所以没有隐私问题。

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

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

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

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

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

是的,这是个问题。当有多个调用时很难检测:

第一个呼叫可以被idle to offhookringing to offhook检测,即拨号或入局。现在,当电话转到offhook to ringing时,我们知道有第二个电话打来。如果你拨打第二个电话,它是offhook to offhook,因此无法从这里检测到。(不过你可以收听拨号广播)。现在,如果第二个呼叫被拒绝,我们得到ringing to offhook,这与接听呼叫混淆。

IMHO只有3个状态不足以跟踪多个调用,但这是API暂时支持的

最新更新