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

Commit 7d59c480 authored by Jordan Liu's avatar Jordan Liu Committed by android-build-merger
Browse files

Merge "Make RadioInfo settings menu work for mSIM"

am: a85fa6c5

Change-Id: I0c83baafa8d30638b26c5dce3f23c722d3628991
parents 2e5cc974 a85fa6c5
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -25,6 +25,19 @@
        android:descendantFocusability="beforeDescendants"
        android:focusableInTouchMode="true">

        <!-- Phone index -->
        <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/phone_index_label"
                style="@style/info_label"
                />

        <Spinner android:id="@+id/phoneIndex"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                />

        <!-- IMEI -->
        <LinearLayout style="@style/entry_layout">
            <TextView android:text="@string/radio_info_imei_label" style="@style/info_label" />
@@ -37,6 +50,18 @@
            <TextView android:id="@+id/number" style="@style/info_value" />
        </LinearLayout>

        <!-- Subscription ID -->
        <LinearLayout style="@style/entry_layout">
            <TextView android:text="@string/radio_info_subid" style="@style/info_label" />
            <TextView android:id="@+id/subid" style="@style/info_value" />
        </LinearLayout>

        <!-- Default data subscription -->
        <LinearLayout style="@style/entry_layout">
            <TextView android:text="@string/radio_info_dds" style="@style/info_label" />
            <TextView android:id="@+id/dds" style="@style/info_value" />
        </LinearLayout>

        <!-- IMSI -->
        <LinearLayout style="@style/entry_layout">
            <TextView android:text="@string/radio_info_imsi_label" style="@style/info_label" />
+6 −0
Original line number Diff line number Diff line
@@ -482,6 +482,10 @@
    <!-- HTTP proxy settings. Title for Proxy-Auto Config URL.  [CHAR LIMIT=25] -->
    <string name="proxy_url_title">"PAC URL: "</string>
    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
    <string name="radio_info_subid">Current subId:</string>
    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
    <string name="radio_info_dds">SubId of default data SIM:</string>
    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
    <string name="radio_info_dl_kbps">DL Bandwidth (kbps):</string>
    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
@@ -529,6 +533,8 @@
    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
    <string name="radio_info_data_network_type_label">Data Network Type:</string>
    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
    <string name="phone_index_label">Select phone index</string>
    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
    <string name="radio_info_set_perferred_label">Set Preferred Network Type:</string>
    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
    <string name="radio_info_ping_hostname_v4">Ping Hostname(www.google.com) IPv4:</string>
+117 −25
Original line number Diff line number Diff line
@@ -127,6 +127,7 @@ public class RadioInfo extends Activity {
            "Unknown"
    };

    private static String[] mPhoneIndexLabels;

    private static final int CELL_INFO_LIST_RATE_DISABLED = Integer.MAX_VALUE;
    private static final int CELL_INFO_LIST_RATE_MAX = 0;
@@ -162,7 +163,7 @@ public class RadioInfo extends Activity {
        60000
    };

    private void log(String s) {
    private static void log(String s) {
        Log.d(TAG, s);
    }

@@ -182,6 +183,8 @@ public class RadioInfo extends Activity {

    private TextView mDeviceId; //DeviceId is the IMEI in GSM and the MEID in CDMA
    private TextView number;
    private TextView mSubscriptionId;
    private TextView mDds;
    private TextView mSubscriberId;
    private TextView callState;
    private TextView operatorName;
@@ -219,6 +222,7 @@ public class RadioInfo extends Activity {
    private Switch imsWfcProvisionedSwitch;
    private Switch eabProvisionedSwitch;
    private Spinner preferredNetworkType;
    private Spinner mSelectPhoneIndex;
    private Spinner cellInfoRefreshRateSpinner;

    private ConnectivityManager mConnectivityManager;
@@ -237,6 +241,7 @@ public class RadioInfo extends Activity {

    private int mPreferredNetworkTypeResult;
    private int mCellInfoRefreshRateIndex;
    private int mSelectedPhoneIndex;

    private final NetworkRequest mDefaultNetworkRequest = new NetworkRequest.Builder()
            .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
@@ -346,6 +351,21 @@ public class RadioInfo extends Activity {
        preferredNetworkType.setSelection(mPreferredNetworkTypeResult, true);
    }

    private void updatePhoneIndex(int phoneIndex, int subId) {
        // unregister listeners on the old subId
        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
        mTelephonyManager.setCellInfoListRate(CELL_INFO_LIST_RATE_DISABLED);

        // update the subId
        mTelephonyManager = mTelephonyManager.createForSubscriptionId(subId);
        mImsManager = ImsManager.getInstance(getApplicationContext(), phoneIndex);

        // update the phoneId
        phone = PhoneFactory.getPhone(phoneIndex);

        updateAllFields();
    }

    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
@@ -406,13 +426,15 @@ public class RadioInfo extends Activity {
        mConnectivityManager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
        phone = PhoneFactory.getDefaultPhone();

        //TODO: Need to update this if the default phoneId changes?
        //      Better to have an instance per phone?
        mImsManager = ImsManager.getInstance(getApplicationContext(),
                SubscriptionManager.getDefaultVoicePhoneId());

        mPhoneIndexLabels = getPhoneIndexLabels(mTelephonyManager);

        mDeviceId = (TextView) findViewById(R.id.imei);
        number = (TextView) findViewById(R.id.number);
        mSubscriptionId = (TextView) findViewById(R.id.subid);
        mDds = (TextView) findViewById(R.id.dds);
        mSubscriberId = (TextView) findViewById(R.id.imsi);
        callState = (TextView) findViewById(R.id.call);
        operatorName = (TextView) findViewById(R.id.operator);
@@ -439,10 +461,17 @@ public class RadioInfo extends Activity {
        mPhyChanConfig = (TextView) findViewById(R.id.phy_chan_config);

        preferredNetworkType = (Spinner) findViewById(R.id.preferredNetworkType);
        ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,
        ArrayAdapter<String> preferredNetworkTypeAdapter = new ArrayAdapter<String> (this,
                android.R.layout.simple_spinner_item, mPreferredNetworkLabels);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        preferredNetworkType.setAdapter(adapter);
        preferredNetworkTypeAdapter
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        preferredNetworkType.setAdapter(preferredNetworkTypeAdapter);

        mSelectPhoneIndex = (Spinner) findViewById(R.id.phoneIndex);
        ArrayAdapter<String> phoneIndexAdapter = new ArrayAdapter<String> (this,
                android.R.layout.simple_spinner_item, mPhoneIndexLabels);
        phoneIndexAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mSelectPhoneIndex.setAdapter(phoneIndexAdapter);

        cellInfoRefreshRateSpinner = (Spinner) findViewById(R.id.cell_info_rate_select);
        ArrayAdapter<String> cellInfoAdapter = new ArrayAdapter<String>(this,
@@ -493,6 +522,7 @@ public class RadioInfo extends Activity {

        mCellInfoRefreshRateIndex = 0; //disabled
        mPreferredNetworkTypeResult = mPreferredNetworkLabels.length - 1; //Unknown
        mSelectedPhoneIndex = 0; //phone 0

        //FIXME: Replace with TelephonyManager call
        phone.getPreferredNetworkType(
@@ -507,6 +537,10 @@ public class RadioInfo extends Activity {

        log("Started onResume");

        updateAllFields();
    }

    private void updateAllFields() {
        updateMessageWaiting();
        updateCallRedirect();
        updateDataState();
@@ -519,6 +553,7 @@ public class RadioInfo extends Activity {

        updateLocation(mCellLocationResult);
        updateCellInfo(mCellInfoResult);
        updateSubscriptionIds();

        mPingHostnameV4.setText(mPingHostnameResultV4);
        mPingHostnameV6.setText(mPingHostnameResultV6);
@@ -532,25 +567,17 @@ public class RadioInfo extends Activity {
        preferredNetworkType.setSelection(mPreferredNetworkTypeResult, true);
        preferredNetworkType.setOnItemSelectedListener(mPreferredNetworkHandler);

        // set phone index
        mSelectPhoneIndex.setSelection(mSelectedPhoneIndex, true);
        mSelectPhoneIndex.setOnItemSelectedListener(mSelectPhoneIndexHandler);

        radioPowerOnSwitch.setOnCheckedChangeListener(mRadioPowerOnChangeListener);
        imsVolteProvisionedSwitch.setOnCheckedChangeListener(mImsVolteCheckedChangeListener);
        imsVtProvisionedSwitch.setOnCheckedChangeListener(mImsVtCheckedChangeListener);
        imsWfcProvisionedSwitch.setOnCheckedChangeListener(mImsWfcCheckedChangeListener);
        eabProvisionedSwitch.setOnCheckedChangeListener(mEabCheckedChangeListener);

        mTelephonyManager.listen(mPhoneStateListener,
                  PhoneStateListener.LISTEN_CALL_STATE
        //b/27803938 - RadioInfo currently cannot read PRECISE_CALL_STATE
        //      | PhoneStateListener.LISTEN_PRECISE_CALL_STATE
                | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
                | PhoneStateListener.LISTEN_DATA_ACTIVITY
                | PhoneStateListener.LISTEN_CELL_LOCATION
                | PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR
                | PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR
                | PhoneStateListener.LISTEN_CELL_INFO
                | PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
                | PhoneStateListener.LISTEN_PHYSICAL_CHANNEL_CONFIGURATION);
        registerPhoneStateListener();

        mConnectivityManager.registerNetworkCallback(
                mDefaultNetworkRequest, mNetworkCallback, mHandler);
@@ -586,6 +613,8 @@ public class RadioInfo extends Activity {
        mPreferredNetworkTypeResult = b.getInt("mPreferredNetworkTypeResult",
                                               mPreferredNetworkLabels.length - 1);

        mSelectedPhoneIndex = b.getInt("mSelectedPhoneIndex", 0);

        mCellInfoRefreshRateIndex = b.getInt("mCellInfoRefreshRateIndex", 0);
    }

@@ -596,6 +625,7 @@ public class RadioInfo extends Activity {
        outState.putString("mHttpClientTestResult", mHttpClientTestResult);

        outState.putInt("mPreferredNetworkTypeResult", mPreferredNetworkTypeResult);
        outState.putInt("mSelectedPhoneIndex", mSelectedPhoneIndex);
        outState.putInt("mCellInfoRefreshRateIndex", mCellInfoRefreshRateIndex);

    }
@@ -643,6 +673,34 @@ public class RadioInfo extends Activity {
        return true;
    }

    // returns array of string labels for each phone index. The array index is equal to the phone
    // index.
    private static String[] getPhoneIndexLabels(TelephonyManager tm) {
        int phones = tm.getPhoneCount();
        String[] labels = new String[phones];
        for (int i = 0; i < phones; i++) {
            labels[i] = "Phone " + i;
        }
        return labels;
    }

    // register mPhoneStateListener for relevant fields using the current TelephonyManager
    private void registerPhoneStateListener() {
        mTelephonyManager.listen(mPhoneStateListener,
                  PhoneStateListener.LISTEN_CALL_STATE
        //b/27803938 - RadioInfo currently cannot read PRECISE_CALL_STATE
        //      | PhoneStateListener.LISTEN_PRECISE_CALL_STATE
                | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
                | PhoneStateListener.LISTEN_DATA_ACTIVITY
                | PhoneStateListener.LISTEN_CELL_LOCATION
                | PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR
                | PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR
                | PhoneStateListener.LISTEN_CELL_INFO
                | PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
                | PhoneStateListener.LISTEN_PHYSICAL_CHANNEL_CONFIGURATION);
    }

    private void updateDnsCheckState() {
        //FIXME: Replace with a TelephonyManager call
        dnsCheckState.setText(phone.isDnsCheckDisabled() ?
@@ -864,6 +922,11 @@ public class RadioInfo extends Activity {
        mCellInfo.setText(buildCellInfoString(arrayCi));
    }

    private final void updateSubscriptionIds() {
        mSubscriptionId.setText(Integer.toString(phone.getSubId()));
        mDds.setText(Integer.toString(SubscriptionManager.getDefaultDataSubscriptionId()));
    }

    private final void
    updateMessageWaiting() {
        mMwi.setText(String.valueOf(mMwiValue));
@@ -1487,6 +1550,35 @@ public class RadioInfo extends Activity {
        }
    };

    AdapterView.OnItemSelectedListener mSelectPhoneIndexHandler =
            new AdapterView.OnItemSelectedListener() {

        public void onItemSelected(AdapterView parent, View v, int pos, long id) {
            if (pos >= 0 && pos <= mPhoneIndexLabels.length - 1) {
                // the array position is equal to the phone index
                int phoneIndex = pos;
                Phone[] phones = PhoneFactory.getPhones();
                if (phones == null || phones.length <= phoneIndex) {
                    log("phoneIndex " + phoneIndex + " is invalid");
                    return;
                }
                log("switching to phone " + phoneIndex);
                // getSubId says it takes a slotIndex, but it actually takes a phone index
                int[] subIds = SubscriptionManager.getSubId(phoneIndex);
                if (subIds == null || subIds.length < 1) {
                    log("no subscription found for phoneIndex " + phoneIndex);
                    return;
                }
                mSelectedPhoneIndex = phoneIndex;

                updatePhoneIndex(phoneIndex, subIds[0]);
            }
        }

        public void onNothingSelected(AdapterView parent) {
        }
    };

    AdapterView.OnItemSelectedListener mCellInfoRefreshRateHandler  =
            new AdapterView.OnItemSelectedListener() {