/** * Implemented to support onPreferenceChangeListener to look for preference changes specifically * on CLIR. * * @param preference is the preference to be changed, should be mButtonCLIR. * @param objValue should be the value of the selection, NOT its localized display value. */ public boolean onPreferenceChange(Preference preference, Object objValue) { if (preference == mButtonPreferredNetworkMode) { // NOTE onPreferenceChange seems to be called even if there is no change // Check if the button value is changed from the System.Setting mButtonPreferredNetworkMode.setValue((String) objValue); int buttonNetworkMode; buttonNetworkMode = Integer.valueOf((String) objValue).intValue(); int settingsNetworkMode = getPreferredNetworkMode(); if (buttonNetworkMode != settingsNetworkMode) { int modemNetworkMode = buttonNetworkMode; // if new mode is invalid set mode to default preferred if ((modemNetworkMode < Phone.NT_MODE_WCDMA_PREF) || (modemNetworkMode > Phone.NT_MODE_LTE_ONLY)) { modemNetworkMode = Phone.PREFERRED_NT_MODE; } // If button has no valid selection && setting is LTE ONLY // mode, let the setting stay in LTE ONLY mode. UI is not // supported but LTE ONLY mode could be used in testing. if ((modemNetworkMode == Phone.PREFERRED_NT_MODE) && (settingsNetworkMode == Phone.NT_MODE_LTE_ONLY)) { return true; } UpdatePreferredNetworkModeSummary(buttonNetworkMode); setPreferredNetworkMode(buttonNetworkMode); // Set the modem network mode mPhone.setPreferredNetworkType( modemNetworkMode, mHandler.obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE)); } } // always let the preference setting proceed. return true; }
public void onItemSelected(AdapterView parent, View v, int pos, long id) { Message msg = mHandler.obtainMessage(EVENT_SET_NETWORKMODE_DONE); int settingsNetworkMode; if (mSimType == PhoneConstants.GEMINI_SIM_1) { settingsNetworkMode = android.provider.Settings.Global.getInt( getContentResolver(), android.provider.Settings.Global.PREFERRED_NETWORK_MODE, Phone.PREFERRED_NT_MODE); } else { settingsNetworkMode = android.provider.Settings.Global.getInt( getContentResolver(), android.provider.Settings.Global.PREFERRED_NETWORK_MODE_2, Phone.PREFERRED_NT_MODE); } int selectNetworkMode = mNetworkTypeValues[pos]; if (settingsNetworkMode != selectNetworkMode) { Xlog.d(TAG, "selectNetworkMode " + selectNetworkMode); if (FeatureOption.MTK_GEMINI_SUPPORT) { mGeminiPhone.setPreferredNetworkTypeGemini(selectNetworkMode, msg, mSimType); } else { mPhone.setPreferredNetworkType(selectNetworkMode, msg); } } }
/** * Requests to set the preferred network type for searching and registering (CS/PS domain, RAT, * and operation mode) * * @param phone * @param networkType * @param response * @param slotId */ public static void setPreferredNetworkType( Phone phone, int networkType, Message response, int slotId) { Assert.assertNotNull(phone); if (GeminiUtils.isGeminiSupport()) { if (GeminiUtils.isValidSlot(slotId)) { ((GeminiPhone) phone).setPreferredNetworkTypeGemini(networkType, response, slotId); } } else { // Set the modem network mode phone.setPreferredNetworkType(networkType, response); } PhoneLog.d( TAG, "setPreferredNetworkType, modemNetworkMode:" + networkType + " slotId:" + slotId); }