Add a new phone state ANSWERING.
The state ANSWERING is set when we answer an incoming sip call, i.e. sending a 'OK' response to the peer. The state will be set to ACTIVE once the 'ACK' from peer is received. Change-Id: I84ee3cc68222eb34e032896ce23f7431d4ad774a
This commit is contained in:
@@ -197,10 +197,12 @@ public final class CallManager {
|
||||
Phone.State s = Phone.State.IDLE;
|
||||
|
||||
for (Phone phone : mPhones) {
|
||||
if (phone.getState() == Phone.State.RINGING) {
|
||||
return Phone.State.RINGING;
|
||||
if (phone.getState() == Phone.State.ANSWERING) {
|
||||
return Phone.State.ANSWERING;
|
||||
} else if (phone.getState() == Phone.State.RINGING) {
|
||||
s = Phone.State.RINGING;
|
||||
} else if (phone.getState() == Phone.State.OFFHOOK) {
|
||||
s = Phone.State.OFFHOOK;
|
||||
if (s == Phone.State.IDLE) s = Phone.State.OFFHOOK;
|
||||
}
|
||||
}
|
||||
return s;
|
||||
@@ -289,6 +291,18 @@ public final class CallManager {
|
||||
return getFirstActiveRingingCall().getPhone();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the first answering call
|
||||
*/
|
||||
public Call getFirstAnsweringCall() {
|
||||
for (Phone phone : mPhones) {
|
||||
if (phone.getState() == Phone.State.ANSWERING) {
|
||||
return phone.getForegroundCall();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* unregister phone from CallManager
|
||||
* @param phone
|
||||
|
||||
@@ -55,10 +55,12 @@ public interface Phone {
|
||||
* <li>OFFHOOK = The phone is off hook. At least one call
|
||||
* exists that is dialing, active or holding and no calls are
|
||||
* ringing or waiting.</li>
|
||||
* <li>ANSWERING = The incoming call is picked up but the
|
||||
* call is not established yet.</li>
|
||||
* </ul>
|
||||
*/
|
||||
enum State {
|
||||
IDLE, RINGING, OFFHOOK;
|
||||
IDLE, RINGING, OFFHOOK, ANSWERING;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -158,6 +158,7 @@ public class SipPhone extends SipPhoneBase {
|
||||
} else {
|
||||
throw new CallStateException("phone not ringing");
|
||||
}
|
||||
updatePhoneState();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -538,6 +538,8 @@ abstract class SipPhoneBase extends PhoneBase {
|
||||
|
||||
if (getRingingCall().isRinging()) {
|
||||
state = State.RINGING;
|
||||
} else if (getForegroundCall().isRinging()) {
|
||||
state = State.ANSWERING;
|
||||
} else if (getForegroundCall().isIdle()
|
||||
&& getBackgroundCall().isIdle()) {
|
||||
state = State.IDLE;
|
||||
|
||||
Reference in New Issue
Block a user