【问题标题】:How do I detect skype/telegram/whatsapp calls when my messenger app is in a call or wants to make a call?当我的 Messenger 应用程序正在通话或想要拨打电话时,如何检测 Skype/telegram/whatsapp 通话?
【发布时间】:2018-03-15 14:54:39
【问题描述】:

我想知道是否有一种方法可以检测正在进行的 Skype 呼叫/电报/whatsapp/fb 信使呼叫等或来电等,就像与电话经理/听众的常规电话通话一样?我想要某种机制来检测来自我的应用程序的 Skype/电报等正在进行的/传入等呼叫。我遇到了这个解决方案:Call Detection for skype in android,但不确定它是否适用于所有通用信使应用程序。是否有我可以在我身边实施的黑客或任何类型的侦听器来检测这些?任何想法都会很棒。

谢谢!

【问题讨论】:

  • 有人对此有任何线索吗?或者这根本不可能??

标签: android android-service android-service-binding android-messaging


【解决方案1】:

您可以使用AudioManager 系统服务并使用AudioManager#getMode() 检查音频模式。根据文档,AudioManager#getMode() 返回当前的音频模式,可以是以下之一:

  • MODE_NORMAL (0x00000000):正常音频模式:不响铃且未建立呼叫。

  • MODE_RINGTONE (0x00000001):响铃音频模式。正在发出来电信号。

  • MODE_IN_CALL (0x00000002):处于通话音频模式。电话已建立。

  • MODE_IN_COMMUNICATION (0x00000003):处于通信音频模式。已建立音频/视频聊天或 VoIP 呼叫(在 API 11 中添加)。

使用AudioManager#getMode(),您可以检查是否有任何其他应用当前持有MODE_IN_COMMUNICATION 类型的音频焦点,并相应地处理您的呼叫。

AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
final int mode = am.getMode();
if(AudioManager.MODE_IN_CALL == mode){
  // device is in a telephony call
} else if(AudioManager.MODE_IN_COMMUNICATION == mode){
  // device is in communiation mode, i.e. in a VoIP or video call
} else if(AudioManager.MODE_RINGTONE == mode){
  // device is in ringing mode, some incoming is being signalled
} else {
  // device is in normal mode, no incoming and no audio being played
}

附:我已经用 whatsapp messenger 对此进行了测试,它确实有效!不能对其他 Messenger 应用说同样的话。

【讨论】:

  • 我确实检查了 onStop 作为 whatsapp 接管并且我的应用程序被抛出在后台。但是,它不适用于电报,因为电报甚至不调用 onpause 状态。有没有办法我可以检测到来电活动或通知吗?
  • 根据您在 OP 中所说的,我假设您在谈论您的应用程序未处于活动状态的情况,然后有人打电话给调用某种服务(或可能是活动?)的用户你的应用程序。在这里,您可以检查设备是否已在通话中并将状态返回给呼叫者。我在吗?
  • 从您在评论中所说的看来,您的应用似乎已经在通话中,在这种情况下,您应该以任何方式持有 AudioFocus...
  • 是的。如果我的应用程序已经在通话中,当另一个 voip 电话进来时,我是否应该放弃我的音频焦点?还是不推荐?
  • 我不这么认为...想象一下在对话中,突然你正在使用的应用程序将音频焦点传递给其他应用程序!作为用户,这将是多么不方便!除此之外,您的应用现在处于 top 优先级,因为用户正在积极使用它,并且此时任何 surprises 从用户体验角度来看都是非常糟糕的。
猜你喜欢
  • 1970-01-01
  • 2017-06-19
  • 2023-03-23
  • 1970-01-01
  • 2017-11-26
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多