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

标签 android xamarin

我注册了一个 PHONE_STATE 监听器,以便检测用户何时开始和结束通话。如果有人想知道,我这样做完全是为了娱乐和学习,所以不存在隐私问题。

无论如何,我在使用 telnet 和模拟器进行实验时发现了一个问题。在一个特定的场景中,当一个调用被保持并且第二个调用( Activity 调用)结束时,我的听众没有收到任何事件。我期待它至少在第一个调用再次激活时收到另一个摘机,如果不是同时空闲 + 摘机的话。但是什么都没有。

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

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

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

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

最佳答案

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

可以通过idle to offhookringing to offhook 检测到第一个调用,即拨号或来电。现在,当电话摘机响铃时,我们知道有第二个来电。如果您调用第二个电话,它的摘机到摘机,因此无法从这里检测到。 (不过您可以收听拨号广播)。现在,如果第二个调用被拒绝,我们将得到 ringing to offhook 这与接听电话混淆。

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

关于android - 在 Android 中结束第二个通话时未收到电话状态事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16117945/

相关文章:

android - 如何在应用程序卸载之前永久保存数据(String 或 Int)

android - 是否可以防止 iOS 和 Android 上的 GPS 作弊?

c# - Xamarin中有没有可以处理触摸事件的容器

android - 只需在 Android ListView 中填充数据库表名

android - 在 x 轴上旋转动画

c# - 如何在android Webview中输入文本并单击按钮? (c# Xamarin)

xamarin - ZXing 可以停止或处置以便我可以再次使用它吗?

xamarin - 如何创建一个从左到右缓慢填充超过 5、10 或 ?? 的条形区域?秒?

xamarin - 注册路线一览

android - 适用于 iOS 和 Android 的网络延迟、电池和负载模拟工具