diff options
author | Gabriele M <moto.falcon.git@gmail.com> | 2017-01-03 21:29:12 +0100 |
---|---|---|
committer | Arne Coucheron <arco68@gmail.com> | 2017-01-18 23:14:25 +0000 |
commit | 7bb2f642e759dad8c0af325870ec57c255a40791 (patch) | |
tree | 4e2aa1d9fc5471e4a821516689ee8a09f206ca6e | |
parent | b1aacbe1c0d9d8657119cc6d9aa5cebe55e7f6a9 (diff) | |
download | android_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.java | 30 | ||||
-rw-r--r-- | src/com/android/server/telecom/CallsManager.java | 3 |
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); |