2

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

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

在相关的说明中,我还注意到没有为保持通话定义电话状态事件,这对我来说也有点奇怪。

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

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

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

4

1 回答 1

1

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

第一呼叫可以被检测到,即被拨或呼入idle to offhookringing to offhook现在,当电话响起时,offhook to ringing我们知道第二个电话打来了。如果您拨打第二个电话,offhook to offhook则无法从此处检测到它。(您可以收听拨号广播)。现在,如果第二个电话被拒绝,我们会得到ringing to offhook与接听电话的混淆。

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

于 2013-04-20T08:11:23.073 回答