diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8f6cc9c40dc..ce0370ec65d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2695,8 +2695,6 @@
Bluetooth address
Serial number
-
- Unavailable
Up time
@@ -5532,8 +5530,6 @@
Sync for this item is currently disabled. To change this setting, temporarily turn on background data and automatic sync.
- 4G
- 4G MAC address
To start Android, enter your password
@@ -9071,10 +9067,4 @@
This feature is not available on this device
-
- "IMS registration state"
-
- "Registered"
-
- "Not registered"
diff --git a/res/xml/device_info_status.xml b/res/xml/device_info_status.xml
index 3456f9199ea..07bbc4e9939 100644
--- a/res/xml/device_info_status.xml
+++ b/res/xml/device_info_status.xml
@@ -82,13 +82,6 @@
android:title="@string/status_up_time"
android:summary="@string/summary_placeholder"
android:persistent="false" />
-
mStatus;
-
- public MyHandler(Status activity) {
- mStatus = new WeakReference(activity);
- }
-
- @Override
- public void handleMessage(Message msg) {
- Status status = mStatus.get();
- if (status == null) {
- return;
- }
-
- switch (msg.what) {
- case EVENT_UPDATE_STATS:
- status.updateTimes();
- sendEmptyMessageDelayed(EVENT_UPDATE_STATS, 1000);
- break;
-
- case EVENT_UPDATE_CONNECTIVITY:
- status.updateConnectivity();
- break;
- }
- }
- }
+ private BluetoothAddressPreferenceController mBluetoothAddressPreferenceController;
+ private IpAddressPreferenceController mIpAddressPreferenceController;
+ private WifiMacAddressPreferenceController mWifiMacAddressPreferenceController;
+ private ImsStatusPreferenceController mImsStatusPreferenceController;
private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() {
@@ -138,68 +68,33 @@ public class Status extends SettingsPreferenceFragment implements Indexable {
}
};
- private IntentFilter mConnectivityIntentFilter;
- private final BroadcastReceiver mConnectivityReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (ArrayUtils.contains(CONNECTIVITY_INTENTS, action)) {
- mHandler.sendEmptyMessage(EVENT_UPDATE_CONNECTIVITY);
- }
- }
- };
-
- private boolean hasBluetooth() {
- return BluetoothAdapter.getDefaultAdapter() != null;
- }
-
- private boolean hasWimax() {
- return mCM.getNetworkInfo(ConnectivityManager.TYPE_WIMAX) != null;
- }
-
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- mHandler = new MyHandler(this);
-
- mCM = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
- mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
- mSerialNumberPreferenceController = new SerialNumberPreferenceController(getActivity());
+ final Context context = getContext();
+ final Lifecycle lifecycle = getLifecycle();
+ mSerialNumberPreferenceController = new SerialNumberPreferenceController(context);
+ mUptimePreferenceController = new UptimePreferenceController(context, lifecycle);
+ mBluetoothAddressPreferenceController =
+ new BluetoothAddressPreferenceController(context, lifecycle);
+ mIpAddressPreferenceController = new IpAddressPreferenceController(context, lifecycle);
+ mWifiMacAddressPreferenceController =
+ new WifiMacAddressPreferenceController(context, lifecycle);
+ mImsStatusPreferenceController = new ImsStatusPreferenceController(context, lifecycle);
addPreferencesFromResource(R.xml.device_info_status);
mBatteryLevel = findPreference(KEY_BATTERY_LEVEL);
mBatteryStatus = findPreference(KEY_BATTERY_STATUS);
- mBtAddress = findPreference(KEY_BT_ADDRESS);
- mWifiMacAddress = findPreference(KEY_WIFI_MAC_ADDRESS);
- mWimaxMacAddress = findPreference(KEY_WIMAX_MAC_ADDRESS);
- mIpAddress = findPreference(KEY_IP_ADDRESS);
- mImsStatus = findPreference(KEY_IMS_REGISTRATION_STATE);
- mRes = getResources();
- mUnavailable = mRes.getString(R.string.status_unavailable);
-
- // Note - missing in zaku build, be careful later...
- mUptime = findPreference("up_time");
final PreferenceScreen screen = getPreferenceScreen();
- if (!hasBluetooth()) {
- screen.removePreference(mBtAddress);
- mBtAddress = null;
- }
-
- if (!hasWimax()) {
- screen.removePreference(mWimaxMacAddress);
- mWimaxMacAddress = null;
- }
-
- mConnectivityIntentFilter = new IntentFilter();
- for (String intent: CONNECTIVITY_INTENTS) {
- mConnectivityIntentFilter.addAction(intent);
- }
-
- updateConnectivity();
mSerialNumberPreferenceController.displayPreference(screen);
+ mUptimePreferenceController.displayPreference(screen);
+ mBluetoothAddressPreferenceController.displayPreference(screen);
+ mIpAddressPreferenceController.displayPreference(screen);
+ mWifiMacAddressPreferenceController.displayPreference(screen);
+ mImsStatusPreferenceController.displayPreference(screen);
// Remove SimStatus and Imei for Secondary user as it access Phone b/19165700
// Also remove on Wi-Fi only devices.
@@ -219,11 +114,8 @@ public class Status extends SettingsPreferenceFragment implements Indexable {
@Override
public void onResume() {
super.onResume();
- getContext().registerReceiver(mConnectivityReceiver, mConnectivityIntentFilter,
- android.Manifest.permission.CHANGE_NETWORK_STATE, null);
getContext().registerReceiver(mBatteryInfoReceiver,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
- mHandler.sendEmptyMessage(EVENT_UPDATE_STATS);
}
@Override
@@ -231,8 +123,6 @@ public class Status extends SettingsPreferenceFragment implements Indexable {
super.onPause();
getContext().unregisterReceiver(mBatteryInfoReceiver);
- getContext().unregisterReceiver(mConnectivityReceiver);
- mHandler.removeMessages(EVENT_UPDATE_STATS);
}
/**
@@ -246,96 +136,6 @@ public class Status extends SettingsPreferenceFragment implements Indexable {
}
}
- private void setWimaxStatus() {
- if (mWimaxMacAddress != null) {
- String macAddress = SystemProperties.get("net.wimax.mac.address", mUnavailable);
- mWimaxMacAddress.setSummary(macAddress);
- }
- }
-
- private void setWifiStatus() {
- WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
- boolean hasMacAddress = wifiInfo != null && wifiInfo.hasRealMacAddress();
- String macAddress = hasMacAddress ? wifiInfo.getMacAddress() : null;
- mWifiMacAddress.setSummary(!TextUtils.isEmpty(macAddress) ? macAddress : mUnavailable);
- }
-
- private void setIpAddressStatus() {
- String ipAddress = Utils.getDefaultIpAddresses(this.mCM);
- if (ipAddress != null) {
- mIpAddress.setSummary(ipAddress);
- } else {
- mIpAddress.setSummary(mUnavailable);
- }
- }
-
- private void setBtStatus() {
- BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
- if (bluetooth != null && mBtAddress != null) {
- String address = bluetooth.isEnabled() ? bluetooth.getAddress() : null;
- if (!TextUtils.isEmpty(address)) {
- // Convert the address to lowercase for consistency with the wifi MAC address.
- mBtAddress.setSummary(address.toLowerCase());
- } else {
- mBtAddress.setSummary(mUnavailable);
- }
- }
- }
-
- private void setImsRegistrationStatus() {
- CarrierConfigManager configManager = (CarrierConfigManager)
- getSystemService(Context.CARRIER_CONFIG_SERVICE);
- int subId = SubscriptionManager.getDefaultDataSubscriptionId();
- PersistableBundle config = null;
- if (configManager != null) {
- config = configManager.getConfigForSubId(subId);
- }
- if (config != null && config.getBoolean(
- CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)) {
- TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
- mImsStatus.setSummary((tm != null && tm.isImsRegistered(subId)) ?
- R.string.ims_reg_status_registered : R.string.ims_reg_status_not_registered);
- } else {
- removePreferenceFromScreen(KEY_IMS_REGISTRATION_STATE);
- mImsStatus = null;
- }
- }
-
- void updateConnectivity() {
- setWimaxStatus();
- setWifiStatus();
- setBtStatus();
- setIpAddressStatus();
- setImsRegistrationStatus();
- }
-
- void updateTimes() {
- long at = SystemClock.uptimeMillis() / 1000;
- long ut = SystemClock.elapsedRealtime() / 1000;
-
- if (ut == 0) {
- ut = 1;
- }
-
- mUptime.setSummary(convert(ut));
- }
-
- private String pad(int n) {
- if (n >= 10) {
- return String.valueOf(n);
- } else {
- return "0" + String.valueOf(n);
- }
- }
-
- private String convert(long t) {
- int s = (int)(t % 60);
- int m = (int)((t / 60) % 60);
- int h = (int)((t / 3600));
-
- return h + ":" + pad(m) + ":" + pad(s);
- }
-
/**
* For Search.
*/
diff --git a/src/com/android/settings/deviceinfo/UptimePreferenceController.java b/src/com/android/settings/deviceinfo/UptimePreferenceController.java
new file mode 100644
index 00000000000..8bb0df75d64
--- /dev/null
+++ b/src/com/android/settings/deviceinfo/UptimePreferenceController.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.deviceinfo;
+
+import android.content.Context;
+
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.deviceinfo.AbstractUptimePreferenceController;
+
+/**
+ * Concrete subclass of uptime preference controller
+ */
+public class UptimePreferenceController extends AbstractUptimePreferenceController
+ implements PreferenceControllerMixin {
+ public UptimePreferenceController(Context context, Lifecycle lifecycle) {
+ super(context, lifecycle);
+ }
+
+ // This space intentionally left blank
+}
diff --git a/src/com/android/settings/deviceinfo/WifiMacAddressPreferenceController.java b/src/com/android/settings/deviceinfo/WifiMacAddressPreferenceController.java
new file mode 100644
index 00000000000..92390d750e0
--- /dev/null
+++ b/src/com/android/settings/deviceinfo/WifiMacAddressPreferenceController.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.deviceinfo;
+
+import android.content.Context;
+
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.deviceinfo.AbstractWifiMacAddressPreferenceController;
+
+/**
+ * Concrete subclass of WIFI MAC address preference controller
+ */
+public class WifiMacAddressPreferenceController extends AbstractWifiMacAddressPreferenceController
+ implements PreferenceControllerMixin {
+ public WifiMacAddressPreferenceController(Context context, Lifecycle lifecycle) {
+ super(context, lifecycle);
+ }
+
+ // This space intentionally left blank
+}