Merge "CatService: Add support for GET_CHANNEL_STATUS p-cmd."
diff --git a/src/java/com/android/internal/telephony/CallManager.java b/src/java/com/android/internal/telephony/CallManager.java
index 7d696b4..1c1799f 100644
--- a/src/java/com/android/internal/telephony/CallManager.java
+++ b/src/java/com/android/internal/telephony/CallManager.java
@@ -100,6 +100,8 @@
// default phone as the first phone registered, which is PhoneBase obj
private Phone mDefaultPhone;
+ private boolean mSpeedUpAudioForMtCall = false;
+
// state registrants
protected final RegistrantList mPreciseCallStateRegistrants
= new RegistrantList();
@@ -377,14 +379,21 @@
// but only on audio mode transitions
switch (getState()) {
case RINGING:
- if (audioManager.getMode() != AudioManager.MODE_RINGTONE) {
+ int curAudioMode = audioManager.getMode();
+ if (curAudioMode != AudioManager.MODE_RINGTONE) {
// only request audio focus if the ringtone is going to be heard
if (audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0) {
if (VDBG) Rlog.d(LOG_TAG, "requestAudioFocus on STREAM_RING");
audioManager.requestAudioFocusForCall(AudioManager.STREAM_RING,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
}
- audioManager.setMode(AudioManager.MODE_RINGTONE);
+ if(!mSpeedUpAudioForMtCall) {
+ audioManager.setMode(AudioManager.MODE_RINGTONE);
+ }
+ }
+
+ if (mSpeedUpAudioForMtCall && (curAudioMode != AudioManager.MODE_IN_CALL)) {
+ audioManager.setMode(AudioManager.MODE_IN_CALL);
}
break;
case OFFHOOK:
@@ -400,13 +409,14 @@
// enable IN_COMMUNICATION audio mode instead for sipPhone
newAudioMode = AudioManager.MODE_IN_COMMUNICATION;
}
- if (audioManager.getMode() != newAudioMode) {
+ if (audioManager.getMode() != newAudioMode || mSpeedUpAudioForMtCall) {
// request audio focus before setting the new mode
if (VDBG) Rlog.d(LOG_TAG, "requestAudioFocus on STREAM_VOICE_CALL");
audioManager.requestAudioFocusForCall(AudioManager.STREAM_VOICE_CALL,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
audioManager.setMode(newAudioMode);
}
+ mSpeedUpAudioForMtCall = false;
break;
case IDLE:
if (audioManager.getMode() != AudioManager.MODE_NORMAL) {
@@ -415,6 +425,7 @@
// abandon audio focus after the mode has been set back to normal
audioManager.abandonAudioFocusForCall();
}
+ mSpeedUpAudioForMtCall = false;
break;
}
}
@@ -529,6 +540,23 @@
}
}
+ Context context = getContext();
+ if (context == null) {
+ Rlog.d(LOG_TAG, "Speedup Audio Path enhancement: Context is null");
+ } else if (context.getResources().getBoolean(
+ com.android.internal.R.bool.config_speed_up_audio_on_mt_calls)) {
+ Rlog.d(LOG_TAG, "Speedup Audio Path enhancement");
+ AudioManager audioManager = (AudioManager)
+ context.getSystemService(Context.AUDIO_SERVICE);
+ int currMode = audioManager.getMode();
+ if ((currMode != AudioManager.MODE_IN_CALL) && !(ringingPhone instanceof SipPhone)) {
+ Rlog.d(LOG_TAG, "setAudioMode Setting audio mode from " +
+ currMode + " to " + AudioManager.MODE_IN_CALL);
+ audioManager.setMode(AudioManager.MODE_IN_CALL);
+ mSpeedUpAudioForMtCall = true;
+ }
+ }
+
ringingPhone.acceptCall();
if (VDBG) {
diff --git a/src/java/com/android/internal/telephony/IccProvider.java b/src/java/com/android/internal/telephony/IccProvider.java
index 77bfde2..6f2c4ed 100644
--- a/src/java/com/android/internal/telephony/IccProvider.java
+++ b/src/java/com/android/internal/telephony/IccProvider.java
@@ -207,12 +207,7 @@
String param = tokens[n];
if (DBG) log("parsing '" + param + "'");
- String[] pair = param.split("=");
-
- if (pair.length != 2) {
- Rlog.e(TAG, "resolve: bad whereClause parameter: " + param);
- continue;
- }
+ String[] pair = param.split("=", 2);
String key = pair[0].trim();
String val = pair[1].trim();