/**
   * 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);
            }
          }
        }
Beispiel #3
0
 /**
  * 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);
 }