1

I'm trying to determine for how long a user has been in a GSM call. Is that possible using the TelephonyManager?Thank you.

user2492806
  • 209
  • 1
  • 3
  • 9

1 Answers1

1

You can set a listener on TelephonyManager. Try this.

long startCallTime = 0;
private void setTelephonyManagerCallListener(){
    TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
    tm.listen(phoneCallStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}

private PhoneStateListener phoneCallStateListener = new PhoneStateListener(){
    public void onCallStateChanged(int state, String incomingNumber) {
        switch (state){
        case TelephonyManager.CALL_STATE_OFFHOOK:
            startCallTime = System.currentTimeMillis();
            break;
        case TelephonyManager.CALL_STATE_RINGING:
        case TelephonyManager.CALL_STATE_IDLE:
            if (startCallTime>0){
                 long endCallTime = System.currentTimeMillis();
                 long durationInMillis = endCallTime - startCallTime;
                 startCallTime = 0;
            }
            break;
        }
    };
};
ZanoOnStack
  • 389
  • 2
  • 11