Refactor wifi calling and video calling

Also add a Callback for 4gLte to notify update to video calling
preference controller

Bug: 114749736
Test: RunSettingsRoboTests
Change-Id: I0b5009733251162327f02ccfae8b10ae56b961bc
This commit is contained in:
jackqdyulei
2018-10-19 11:25:15 -07:00
parent f3fb639f49
commit 3d7e38bc57
7 changed files with 610 additions and 235 deletions

View File

@@ -36,6 +36,9 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
import java.util.ArrayList;
import java.util.List;
/**
* Preference controller for "Enhanced 4G LTE"
*/
@@ -49,13 +52,15 @@ public class Enhanced4gLtePreferenceController extends TogglePreferenceControlle
@VisibleForTesting
ImsManager mImsManager;
private PhoneCallStateListener mPhoneStateListener;
private final List<On4gLteUpdateListener> m4gLteListeners;
private int mSubId;
public Enhanced4gLtePreferenceController(Context context, String key) {
super(context, key);
mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
m4gLteListeners = new ArrayList<>();
mPhoneStateListener = new PhoneCallStateListener(Looper.getMainLooper());
mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
}
@Override
@@ -105,6 +110,9 @@ public class Enhanced4gLtePreferenceController extends TogglePreferenceControlle
@Override
public boolean setChecked(boolean isChecked) {
mImsManager.setEnhanced4gLteModeSetting(isChecked);
for (final On4gLteUpdateListener lsn : m4gLteListeners) {
lsn.on4gLteUpdated();
}
return true;
}
@@ -113,13 +121,20 @@ public class Enhanced4gLtePreferenceController extends TogglePreferenceControlle
return mImsManager.isEnhanced4gLteModeSettingEnabledByUser();
}
public void init(int subId) {
public Enhanced4gLtePreferenceController init(int subId) {
mSubId = subId;
mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId);
mCarrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
}
return this;
}
public Enhanced4gLtePreferenceController addListener(On4gLteUpdateListener lsn) {
m4gLteListeners.add(lsn);
return this;
}
private boolean is4gLtePrefEnabled() {
@@ -151,4 +166,11 @@ public class Enhanced4gLtePreferenceController extends TogglePreferenceControlle
mTelephonyManager.listen(this, PhoneStateListener.LISTEN_NONE);
}
}
/**
* Update other preferences when 4gLte state is changed
*/
public interface On4gLteUpdateListener {
void on4gLteUpdated();
}
}