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

Commit cdde906f authored by Xin Li's avatar Xin Li
Browse files

Merge pi-dev-plus-aosp-without-vendor into stage-dr1-aosp-master

Bug: 111615259
Change-Id: Iba79f9714508b1d7142f064464d4f824ac45ec63
parents a1413490 77919403
Loading
Loading
Loading
Loading
+36 −22
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.os.Parcel;
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.provider.Settings;
import android.telecom.TelecomManager;
import android.telephony.CarrierConfigManager;
import android.telephony.ims.stub.ImsRegistrationImplBase;
@@ -1288,6 +1289,7 @@ public class ImsManager {
                boolean isImsUsed = updateVolteFeatureValue();
                isImsUsed |= updateWfcFeatureAndProvisionedValues();
                isImsUsed |= updateVideoCallFeatureValue();
                isImsUsed |= updateRttConfigValue();

                if (isImsUsed || !isTurnOffImsAllowedByPlatform()) {
                    // Turn on IMS if it is used.
@@ -1417,14 +1419,6 @@ public class ImsManager {
     * busy, it will try to connect before reporting failure.
     */
    public boolean isServiceAvailable() {
        // If we are busy resolving dynamic IMS bindings, we are not available yet.
        TelephonyManager tm = (TelephonyManager)
                mContext.getSystemService(Context.TELEPHONY_SERVICE);
        if (tm.isResolvingImsBinding()) {
            Log.d(TAG, "isServiceAvailable: resolving IMS binding, returning false");
            return false;
        }

        connectIfServiceIsAvailable();
        // mImsServiceProxy will always create an ImsServiceProxy.
        return mMmTelFeatureConnection.isBinderAlive();
@@ -1843,9 +1837,19 @@ public class ImsManager {
        }
    }

    public void setRttEnabled(boolean enabled) {
        try {
            setAdvanced4GMode(enabled || isEnhanced4gLteModeSettingEnabledByUser());
    public boolean updateRttConfigValue() {
        boolean isCarrierSupported =
                getBooleanCarrierConfig(CarrierConfigManager.KEY_RTT_SUPPORTED_BOOL);
        boolean isRttEnabled = Settings.Secure.getInt(mContext.getContentResolver(),
                Settings.Secure.RTT_CALLING_MODE, 0) != 0;
        Log.i(ImsManager.class.getSimpleName(), "update RTT value " + isRttEnabled);
        if (isCarrierSupported == true) {
            setRttConfig(isRttEnabled);
        }
        return isCarrierSupported && isRttEnabled;
    }

    private void setRttConfig(boolean enabled) {
        final int value = enabled ? ImsConfig.FeatureValueConstants.ON :
                ImsConfig.FeatureValueConstants.OFF;
        Thread thread = new Thread(() -> {
@@ -1854,11 +1858,21 @@ public class ImsManager {
                getConfigInterface().setProvisionedValue(
                        ImsConfig.ConfigConstants.RTT_SETTING_ENABLED, value);
            } catch (ImsException e) {
                    Log.e(ImsManager.class.getSimpleName(), "Unable to set RTT enabled to "
                Log.e(ImsManager.class.getSimpleName(), "Unable to set RTT value enabled to "
                        + enabled + ": " + e);
            }
        });
        thread.start();
    }

    public void setRttEnabled(boolean enabled) {
        try {
            if (enabled) {
                setEnhanced4gLteModeSetting(enabled);
            } else {
                setAdvanced4GMode(enabled || isEnhanced4gLteModeSettingEnabledByUser());
            }
            setRttConfig(enabled);
        } catch (ImsException e) {
            Log.e(ImsManager.class.getSimpleName(), "Unable to set RTT enabled to " + enabled
                    + ": " + e);