summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);