我注册了一个 PHONE_STATE 监听器,以检测用户何时开始和结束呼叫。万一有人想知道,我这样做完全是为了好玩和学习,所以没有隐私问题。
无论如何,我在尝试使用 telnet 和模拟器时发现了一个问题。在特定情况下,当一个呼叫处于保持状态并且第二个呼叫(活动呼叫)结束时,我的侦听器没有收到任何事件。我期待它至少在第一个呼叫再次激活时收到另一个 OFFHOOK,如果不是 IDLE + OFFHOOK 的话。但是什么都没有。
在相关的说明中,我还注意到没有为保持通话定义电话状态事件,这对我来说也有点奇怪。
当然,Android 日志条目正确地反映了这些事件。问题是,我怎样才能在代码中可靠地检测到它们?我应该监控日志本身(不确定这是否可能)而不是依赖电话状态监听器?
我正在通过 Xamarin Studio 在模拟器上测试 API 15,所以我的代码是 Mono 上的 C# + Xamarin.Android,而不是直接使用 Java。可能这种行为只是其中一个层中的错误或遗漏,但更有可能我只是遗漏了一些明显的东西。
FWIW,我还没有在真实设备上测试我的代码。我知道某些硬件的行为可能与我在模拟器中看到的有所不同。