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;
}
/**
+ * @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
*/
* <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;
};
/**
if (getRingingCall().isRinging()) {
state = State.RINGING;
+ } else if (getForegroundCall().isRinging()) {
+ state = State.ANSWERING;
} else if (getForegroundCall().isIdle()
&& getBackgroundCall().isIdle()) {
state = State.IDLE;