I am wondering if there is a way I can detect a skype call/telegram/whatsapp/fb messenger call etc in progress or incoming call etc just like the regular phone call with telephony manager/listener? I would like to have some kind of mechanism that detects an ongoing /incoming etc call from skype/telegram etc for my app. I came across this solution :Call Detection for skype in android but not sure if it'll work for all generic messenger apps. Is there a hack or any kind of listener I can implement on my side that allows me to detect these? Any ideas would be awesome.
Thanks!
You can use the
AudioManager
system service and check for audio mode usingAudioManager#getMode()
. According to the docs,AudioManager#getMode()
returns the current audio mode which can be one of following:MODE_NORMAL
(0x00000000): Normal audio mode: not ringing and no call established.MODE_RINGTONE
(0x00000001): Ringing audio mode. An incoming is being signaled.MODE_IN_CALL
(0x00000002): In call audio mode. A telephony call is established.MODE_IN_COMMUNICATION
(0x00000003): In communication audio mode. An audio/video chat or VoIP call is established (added in API 11).Using
AudioManager#getMode()
you can check if any other app is currently holding an audio focus of typeMODE_IN_COMMUNICATION
and handle your call accordingly.P.S. I've tested this with whatsapp messenger and it works! Cannot say the same for other messenger apps.