Merge "CallManager/SipPhone: fix reject a ringing call" into gingerbread
This commit is contained in:
committed by
Android (Google) Code Review
commit
fc7e7766e7
@ -1468,13 +1468,27 @@ public final class CallManager {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public Call getActiveFgCall() {
|
public Call getActiveFgCall() {
|
||||||
for (Call call : mForegroundCalls) {
|
Call call = getFirstNonIdleCall(mForegroundCalls);
|
||||||
if (call.getState() != Call.State.IDLE) {
|
if (call == null) {
|
||||||
|
call = (mDefaultPhone == null)
|
||||||
|
? null
|
||||||
|
: mDefaultPhone.getForegroundCall();
|
||||||
|
}
|
||||||
|
return call;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the first call that is not in IDLE state. If both active calls
|
||||||
|
// and disconnecting/disconnected calls exist, return the first active call.
|
||||||
|
private Call getFirstNonIdleCall(List<Call> calls) {
|
||||||
|
Call result = null;
|
||||||
|
for (Call call : calls) {
|
||||||
|
if (!call.isIdle()) {
|
||||||
return call;
|
return call;
|
||||||
|
} else if (call.getState() != Call.State.IDLE) {
|
||||||
|
if (result == null) result = call;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (mDefaultPhone == null) ?
|
return result;
|
||||||
null : mDefaultPhone.getForegroundCall();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1491,13 +1505,13 @@ public final class CallManager {
|
|||||||
* Complete background calls list can be get by getBackgroundCalls()
|
* Complete background calls list can be get by getBackgroundCalls()
|
||||||
*/
|
*/
|
||||||
public Call getFirstActiveBgCall() {
|
public Call getFirstActiveBgCall() {
|
||||||
for (Call call : mBackgroundCalls) {
|
Call call = getFirstNonIdleCall(mBackgroundCalls);
|
||||||
if (call.getState() != Call.State.IDLE) {
|
if (call == null) {
|
||||||
return call;
|
call = (mDefaultPhone == null)
|
||||||
}
|
? null
|
||||||
|
: mDefaultPhone.getBackgroundCall();
|
||||||
}
|
}
|
||||||
return (mDefaultPhone == null) ?
|
return call;
|
||||||
null : mDefaultPhone.getBackgroundCall();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1514,13 +1528,13 @@ public final class CallManager {
|
|||||||
* Complete ringing calls list can be get by getRingingCalls()
|
* Complete ringing calls list can be get by getRingingCalls()
|
||||||
*/
|
*/
|
||||||
public Call getFirstActiveRingingCall() {
|
public Call getFirstActiveRingingCall() {
|
||||||
for (Call call : mRingingCalls) {
|
Call call = getFirstNonIdleCall(mRingingCalls);
|
||||||
if (!call.isIdle()) {
|
if (call == null) {
|
||||||
return call;
|
call = (mDefaultPhone == null)
|
||||||
}
|
? null
|
||||||
|
: mDefaultPhone.getRingingCall();
|
||||||
}
|
}
|
||||||
return (mDefaultPhone == null) ?
|
return call;
|
||||||
null : mDefaultPhone.getRingingCall();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -807,7 +807,10 @@ public class SipPhone extends SipPhoneBase {
|
|||||||
} catch (SipException e) {
|
} catch (SipException e) {
|
||||||
throw new CallStateException("hangup(): " + e);
|
throw new CallStateException("hangup(): " + e);
|
||||||
} finally {
|
} finally {
|
||||||
mAdapter.onCallEnded(DisconnectCause.LOCAL);
|
mAdapter.onCallEnded(((mState == Call.State.INCOMING)
|
||||||
|
|| (mState == Call.State.WAITING))
|
||||||
|
? DisconnectCause.INCOMING_REJECTED
|
||||||
|
: DisconnectCause.LOCAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user