diff options
Diffstat (limited to 'src')
6 files changed, 200 insertions, 224 deletions
diff --git a/src/com/android/settings/deviceinfo/BluetoothAddressPreferenceController.java b/src/com/android/settings/deviceinfo/BluetoothAddressPreferenceController.java new file mode 100644 index 0000000000..431ead53a0 --- /dev/null +++ b/src/com/android/settings/deviceinfo/BluetoothAddressPreferenceController.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.AbstractBluetoothAddressPreferenceController; + +/** + * Concrete subclass of bluetooth address preference controller + */ +public class BluetoothAddressPreferenceController extends + AbstractBluetoothAddressPreferenceController implements PreferenceControllerMixin { + public BluetoothAddressPreferenceController(Context context, Lifecycle lifecycle) { + super(context, lifecycle); + } + + // This space intentionally left blank +} diff --git a/src/com/android/settings/deviceinfo/ImsStatusPreferenceController.java b/src/com/android/settings/deviceinfo/ImsStatusPreferenceController.java new file mode 100644 index 0000000000..07bd4a6788 --- /dev/null +++ b/src/com/android/settings/deviceinfo/ImsStatusPreferenceController.java @@ -0,0 +1,36 @@ +/* + * 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.AbstractImsStatusPreferenceController; + +/** + * Concrete subclass of IMS status preference controller + */ +public class ImsStatusPreferenceController extends AbstractImsStatusPreferenceController + implements PreferenceControllerMixin { + public ImsStatusPreferenceController(Context context, + Lifecycle lifecycle) { + super(context, lifecycle); + } + + // This space intentionally left blank +} diff --git a/src/com/android/settings/deviceinfo/IpAddressPreferenceController.java b/src/com/android/settings/deviceinfo/IpAddressPreferenceController.java new file mode 100644 index 0000000000..f4e2f8cefb --- /dev/null +++ b/src/com/android/settings/deviceinfo/IpAddressPreferenceController.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.AbstractIpAddressPreferenceController; + +/** + * Concrete subclass of IP address preference controller + */ +public class IpAddressPreferenceController extends AbstractIpAddressPreferenceController implements + PreferenceControllerMixin { + public IpAddressPreferenceController(Context context, Lifecycle lifecycle) { + super(context, lifecycle); + } + + // This space intentionally left blank +} diff --git a/src/com/android/settings/deviceinfo/Status.java b/src/com/android/settings/deviceinfo/Status.java index 228774f265..080becc873 100644 --- a/src/com/android/settings/deviceinfo/Status.java +++ b/src/com/android/settings/deviceinfo/Status.java @@ -16,115 +16,45 @@ package com.android.settings.deviceinfo; -import android.bluetooth.BluetoothAdapter; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.res.Resources; -import android.net.ConnectivityManager; -import android.net.wifi.WifiInfo; -import android.net.wifi.WifiManager; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.os.PersistableBundle; -import android.os.SystemClock; -import android.os.SystemProperties; import android.os.UserManager; import android.provider.SearchIndexableResource; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; -import android.telephony.CarrierConfigManager; -import android.telephony.SubscriptionManager; -import android.telephony.TelephonyManager; -import android.text.TextUtils; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.internal.util.ArrayUtils; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; +import com.android.settingslib.core.lifecycle.Lifecycle; -import java.lang.ref.WeakReference; import java.util.Arrays; import java.util.List; -import static android.content.Context.CONNECTIVITY_SERVICE; -import static android.content.Context.WIFI_SERVICE; - +/** + * Fragment for showing device hardware info, such as MAC addresses and serial numbers + */ public class Status extends SettingsPreferenceFragment implements Indexable { private static final String KEY_BATTERY_STATUS = "battery_status"; private static final String KEY_BATTERY_LEVEL = "battery_level"; - private static final String KEY_IP_ADDRESS = "wifi_ip_address"; - private static final String KEY_WIFI_MAC_ADDRESS = "wifi_mac_address"; - private static final String KEY_BT_ADDRESS = "bt_address"; - private static final String KEY_WIMAX_MAC_ADDRESS = "wimax_mac_address"; private static final String KEY_SIM_STATUS = "sim_status"; private static final String KEY_IMEI_INFO = "imei_info"; - private static final String KEY_IMS_REGISTRATION_STATE = "ims_reg_state"; - - // Broadcasts to listen to for connectivity changes. - private static final String[] CONNECTIVITY_INTENTS = { - BluetoothAdapter.ACTION_STATE_CHANGED, - ConnectivityManager.CONNECTIVITY_ACTION, - WifiManager.LINK_CONFIGURATION_CHANGED_ACTION, - WifiManager.NETWORK_STATE_CHANGED_ACTION, - }; - - private static final int EVENT_UPDATE_STATS = 500; - - private static final int EVENT_UPDATE_CONNECTIVITY = 600; - - private ConnectivityManager mCM; - private WifiManager mWifiManager; - - private Resources mRes; - - private String mUnavailable; private SerialNumberPreferenceController mSerialNumberPreferenceController; - - private Preference mUptime; + private UptimePreferenceController mUptimePreferenceController; private Preference mBatteryStatus; private Preference mBatteryLevel; - private Preference mBtAddress; - private Preference mIpAddress; - private Preference mWifiMacAddress; - private Preference mWimaxMacAddress; - private Preference mImsStatus; - - private Handler mHandler; - - private static class MyHandler extends Handler { - private WeakReference<Status> mStatus; - - public MyHandler(Status activity) { - mStatus = new WeakReference<Status>(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 0000000000..8bb0df75d6 --- /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 0000000000..92390d750e --- /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 +} |