DTMF Tones work in dialing state
plus some additional logging.
bug:10425120
Change-Id: I2a7ab27a3f387feb091340112dd6e41881c50429
diff --git a/src/com/android/phone/CallModeler.java b/src/com/android/phone/CallModeler.java
index a5e2044..94584a2 100644
--- a/src/com/android/phone/CallModeler.java
+++ b/src/com/android/phone/CallModeler.java
@@ -175,15 +175,17 @@
return false;
}
- public boolean hasOutstandingActiveCall() {
- return hasOutstandingActiveCallInternal(mCallMap) ||
- hasOutstandingActiveCallInternal(mConfCallMap);
+ public boolean hasOutstandingActiveOrDialingCall() {
+ return hasOutstandingActiveOrDialingCallInternal(mCallMap) ||
+ hasOutstandingActiveOrDialingCallInternal(mConfCallMap);
}
- private static boolean hasOutstandingActiveCallInternal(HashMap<Connection, Call> map) {
+ private static boolean hasOutstandingActiveOrDialingCallInternal(
+ HashMap<Connection, Call> map) {
for (Call call : map.values()) {
final int state = call.getState();
- if (Call.State.ACTIVE == state) {
+ if (state == Call.State.ACTIVE ||
+ state == Call.State.DIALING) {
return true;
}
}
@@ -192,6 +194,7 @@
}
private void onNewRingingConnection(AsyncResult r) {
+ Log.i(TAG, "onNewRingingConnection");
final Connection conn = (Connection) r.result;
final Call call = getCallFromMap(mCallMap, conn, true);
@@ -207,6 +210,7 @@
}
private void onDisconnect(AsyncResult r) {
+ Log.i(TAG, "onDisconnect");
final Connection conn = (Connection) r.result;
final Call call = getCallFromMap(mCallMap, conn, false);
@@ -237,6 +241,7 @@
* Called when the phone state changes.
*/
private void onPhoneStateChanged(AsyncResult r) {
+ Log.i(TAG, "onPhoneStateChanged: ");
final List<Call> updatedCalls = Lists.newArrayList();
doUpdate(false, updatedCalls);
@@ -267,6 +272,8 @@
final Call call = getCallFromMap(mCallMap, connection, true);
boolean changed = updateCallFromConnection(call, connection, false);
+
+ Log.i(TAG, "doUpdate: " + call);
if (fullUpdate || changed) {
out.add(call);
}
diff --git a/src/com/android/phone/DTMFTonePlayer.java b/src/com/android/phone/DTMFTonePlayer.java
index 0e27a99..87c071a 100644
--- a/src/com/android/phone/DTMFTonePlayer.java
+++ b/src/com/android/phone/DTMFTonePlayer.java
@@ -327,7 +327,11 @@
final int len = calls.size();
for (int i = 0; i < len; i++) {
- hasActiveCall |= (calls.get(i).getState() == Call.State.ACTIVE);
+ // We can also dial while in DIALING state because there are
+ // some connections that never update to an ACTIVE state (no
+ // indication from the network).
+ hasActiveCall |= (calls.get(i).getState() == Call.State.ACTIVE)
+ || (calls.get(i).getState() == Call.State.DIALING);
hasIncomingCall |= (calls.get(i).getState() == Call.State.INCOMING);
}
@@ -365,7 +369,7 @@
*/
private void checkCallState() {
logD("checkCallState");
- if (mCallModeler.hasOutstandingActiveCall()) {
+ if (mCallModeler.hasOutstandingActiveOrDialingCall()) {
startDialerSession();
} else {
stopDialerSession();