5 android android-service android-service-binding android-messaging
我想知道是否有一种方法可以检测到Skype电话/电报/ whatsapp/fb信使呼叫等正在进行或来电等,就像与电话管理员/听众的常规电话一样?我想有一种机制,可以检测来自Skype /电报等的正在进行/来电等我的应用程序.我遇到了这个解决方案:Android中的Skype调用检测,但不确定它是否适用于所有通用信使应用程序.是否有我可以实施的黑客或任何类型的听众允许我检测这些?任何想法都会很棒.
谢谢!
您可以使用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
}
Run Code Online (Sandbox Code Playgroud)
PS我用whatsapp messenger测试了它,它的工作原理!其他Messenger应用程序不能说相同.