summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabriele M <moto.falcon.git@gmail.com>2017-01-03 21:29:12 +0100
committerArne Coucheron <arco68@gmail.com>2017-01-18 23:14:25 +0000
commit7bb2f642e759dad8c0af325870ec57c255a40791 (patch)
tree4e2aa1d9fc5471e4a821516689ee8a09f206ca6e
parentb1aacbe1c0d9d8657119cc6d9aa5cebe55e7f6a9 (diff)
downloadandroid_packages_services_Telecomm-7bb2f642e759dad8c0af325870ec57c255a40791.tar.gz
android_packages_services_Telecomm-7bb2f642e759dad8c0af325870ec57c255a40791.tar.bz2
android_packages_services_Telecomm-7bb2f642e759dad8c0af325870ec57c255a40791.zip
Telecomm: Set MSIM audio params using the proper ID
It is assumed that the ID of every PhoneAccountHandle is the string equivalent of an int, however, the ID can also includes hex chars or, in case of the emergency account handle, it's just "E". This causes issues when we try to get the sub ID using Integer.parseInt(), so don't do it. Change-Id: Iae6cfacaf65bb2791b6fa9ae491bb4ad6edbe936 (cherry picked from commit c2ed09b59edf95548299f1219f76c4da4f85d75f)
-rw-r--r--src/com/android/server/telecom/CallAudioModeStateMachine.java30
-rw-r--r--src/com/android/server/telecom/CallsManager.java3
2 files changed, 13 insertions, 20 deletions
diff --git a/src/com/android/server/telecom/CallAudioModeStateMachine.java b/src/com/android/server/telecom/CallAudioModeStateMachine.java
index f8dd05a2..cc71aec8 100644
--- a/src/com/android/server/telecom/CallAudioModeStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioModeStateMachine.java
@@ -19,8 +19,11 @@ package com.android.server.telecom;
import android.media.AudioManager;
import android.os.Message;
import android.os.SystemProperties;
+import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
import android.util.SparseArray;
import com.android.internal.util.IState;
@@ -297,8 +300,11 @@ public class CallAudioModeStateMachine extends StateMachine {
mAudioManager.requestAudioFocusForCall(AudioManager.STREAM_VOICE_CALL,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
- if (call != null && setMsimAudioParams) {
- int phoneId = getPhoneId(call);
+ if (call != null && call.getTargetPhoneAccount() != null && setMsimAudioParams) {
+ PhoneAccountHandle handle = call.getTargetPhoneAccount();
+ PhoneAccount account = mTelecomManager.getPhoneAccount(handle);
+ int subId = TelephonyManager.getDefault().getSubIdForPhoneAccount(account);
+ int phoneId = SubscriptionManager.getPhoneId(subId);
Log.d(LOG_TAG, "setAudioParameters phoneId=" + phoneId);
if (phoneId == 0) {
mAudioManager.setParameters("phone_type=cp1");
@@ -361,22 +367,6 @@ public class CallAudioModeStateMachine extends StateMachine {
return NOT_HANDLED;
}
}
-
- private int getPhoneId(Call call) {
- if (call.getTargetPhoneAccount() != null) {
- PhoneAccountHandle account = call.getTargetPhoneAccount();
- try {
- int index = Integer.parseInt(account.getId());
- int phoneId = SubscriptionManager.getPhoneId(index);
- if (SubscriptionManager.isValidPhoneId(phoneId)) {
- return phoneId;
- }
- } catch (NumberFormatException e) {
- Log.e(LOG_TAG, e, "Cannot get phoneId from ID value " + account.getId());
- }
- }
- return -1;
- }
}
private class VoipCallFocusState extends BaseState {
@@ -505,14 +495,16 @@ public class CallAudioModeStateMachine extends StateMachine {
private final BaseState mOtherFocusState = new OtherFocusState();
private final AudioManager mAudioManager;
+ private final TelecomManager mTelecomManager;
private CallAudioManager mCallAudioManager;
private int mMostRecentMode;
private boolean mIsInitialized = false;
- public CallAudioModeStateMachine(AudioManager audioManager) {
+ public CallAudioModeStateMachine(AudioManager audioManager, TelecomManager telecomManager) {
super(CallAudioModeStateMachine.class.getSimpleName());
mAudioManager = audioManager;
+ mTelecomManager = telecomManager;
mMostRecentMode = AudioManager.MODE_NORMAL;
addState(mUnfocusedState);
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index 83a076ca..461501db 100644
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -322,7 +322,8 @@ public class CallsManager extends Call.ListenerBase
mCallAudioManager = new CallAudioManager(callAudioRouteStateMachine,
this,new CallAudioModeStateMachine((AudioManager)
- mContext.getSystemService(Context.AUDIO_SERVICE)),
+ mContext.getSystemService(Context.AUDIO_SERVICE),
+ (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE)),
playerFactory, mRinger, new RingbackPlayer(playerFactory), mDtmfLocalTonePlayer);
mHeadsetMediaButton = headsetMediaButtonFactory.create(context, this, mLock);