I am writing an app that is meant to be run during a call. After the user makes a call, and starts my app, I want my app to be able to know if the call is dropped from bad connection. Is this possible? Thanks
The Android TelephonyManager
class provides the getCallState()
method, which will tell you the status of the current call. You'll be looking for a transition from CALL_STATE_OFFHOOK
to CALL_STATE_IDLE
.
Unfortunately, I don't see any methods in there to register a callback, so you may have to resort to polling.
http://developer.android.com/reference/android/telephony/TelephonyManager.html
Doesn't CALL_STATE_OFFHOOK -> CALL_STATE_IDLE also indicate a normally terminated call?
Regardless, you can simply check the call state using the onCallStateChanged callback method of the PhoneStateListener class. This will be called whenever the state changes and you can switch the provided status to find which state it is in.
This website ended up being extremely helpful for helping me figure out how to monitor the call status.
http://androidapps.org.ua/i_sect18_d1e18123.html
As far as I can tell this will not help me detect a dropped call. I was hoping by detecting a hangup and monitoring the signal strength, I might be able to infer whether it was an intentional hangup, or a call drop.