Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 235e20b2 authored by ljzyal's avatar ljzyal Committed by Ethan Chen
Browse files

Telecomm: Support Samsung Dual Sims Phone phone_type switch

Change-Id: Id6a91a47a5d9ebbb39869a66c05eeec14e1366e2
parent a3664a51
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -18,8 +18,10 @@ package com.android.server.telecom;

import android.content.Context;
import android.media.AudioManager;
import android.os.SystemProperties;
import android.telecom.AudioState;
import android.telecom.CallState;
import android.telephony.SubscriptionManager;

import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
@@ -444,6 +446,20 @@ final class CallAudioManager extends CallsManagerListenerBase
        }
    }

    private void setAudioParameters(Call call, int mode) {
        switch (mode) {
            case AudioManager.MODE_RINGTONE:
            case AudioManager.MODE_IN_CALL:
            case AudioManager.MODE_IN_COMMUNICATION:
                int phoneId = SubscriptionManager.getPhoneId(
                        Integer.valueOf(call.getTargetPhoneAccount().getId()));
                mAudioManager.setParameters(phoneId == 1 ? "phone_type=cp2" : "phone_type=cp1");
                break;
            default:
                break;
        }
    }

    /**
     * Sets the audio mode.
     *
@@ -452,6 +468,10 @@ final class CallAudioManager extends CallsManagerListenerBase
    private void setMode(int newMode) {
        Preconditions.checkState(hasFocus());
        int oldMode = mAudioManager.getMode();

        Call call = CallsManager.getInstance().getForegroundCall();
        boolean isSamsungDualSims = SystemProperties.getBoolean("ro.multisim.samsung", false);

        Log.v(this, "Request to change audio mode from %d to %d", oldMode, newMode);

        if (oldMode != newMode) {
@@ -459,6 +479,9 @@ final class CallAudioManager extends CallsManagerListenerBase
                Log.i(this, "Transition from IN_CALL -> RINGTONE. Resetting to NORMAL first.");
                mAudioManager.setMode(AudioManager.MODE_NORMAL);
            }
            if (call != null && isSamsungDualSims) {
                setAudioParameters(call, newMode);
            }
            mAudioManager.setMode(newMode);
            Log.d(this, "SetMode Done");
            mMostRecentlyUsedMode = newMode;