Remove Battery settings if battery is not present
Bug: 8051556 Change-Id: I044b24e26dc3d6351c19168a2fcd085a1e761796
This commit is contained in:
@@ -19,9 +19,11 @@ package com.android.settings;
|
|||||||
import android.accounts.Account;
|
import android.accounts.Account;
|
||||||
import android.accounts.AccountManager;
|
import android.accounts.AccountManager;
|
||||||
import android.accounts.OnAccountsUpdateListener;
|
import android.accounts.OnAccountsUpdateListener;
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
import android.content.RestrictionEntry;
|
import android.content.RestrictionEntry;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.pm.ActivityInfo;
|
import android.content.pm.ActivityInfo;
|
||||||
@@ -134,6 +136,23 @@ public class Settings extends PreferenceActivity
|
|||||||
private Header mLastHeader;
|
private Header mLastHeader;
|
||||||
private boolean mListeningToAccountUpdates;
|
private boolean mListeningToAccountUpdates;
|
||||||
|
|
||||||
|
private boolean mBatteryPresent = true;
|
||||||
|
private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
String action = intent.getAction();
|
||||||
|
if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
|
||||||
|
boolean batteryPresent = Utils.isBatteryPresent(intent);
|
||||||
|
|
||||||
|
if (mBatteryPresent != batteryPresent) {
|
||||||
|
mBatteryPresent = batteryPresent;
|
||||||
|
invalidateHeaders();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
if (getIntent().hasExtra(EXTRA_UI_OPTIONS)) {
|
if (getIntent().hasExtra(EXTRA_UI_OPTIONS)) {
|
||||||
@@ -218,12 +237,16 @@ public class Settings extends PreferenceActivity
|
|||||||
((HeaderAdapter) listAdapter).resume();
|
((HeaderAdapter) listAdapter).resume();
|
||||||
}
|
}
|
||||||
invalidateHeaders();
|
invalidateHeaders();
|
||||||
|
|
||||||
|
registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
|
|
||||||
|
unregisterReceiver(mBatteryInfoReceiver);
|
||||||
|
|
||||||
ListAdapter listAdapter = getListAdapter();
|
ListAdapter listAdapter = getListAdapter();
|
||||||
if (listAdapter instanceof HeaderAdapter) {
|
if (listAdapter instanceof HeaderAdapter) {
|
||||||
((HeaderAdapter) listAdapter).pause();
|
((HeaderAdapter) listAdapter).pause();
|
||||||
@@ -439,6 +462,12 @@ public class Settings extends PreferenceActivity
|
|||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
// ignored
|
// ignored
|
||||||
}
|
}
|
||||||
|
} else if (id == R.id.battery_settings) {
|
||||||
|
// Remove battery settings when battery is not available. (e.g. TV)
|
||||||
|
|
||||||
|
if (!mBatteryPresent) {
|
||||||
|
target.remove(i);
|
||||||
|
}
|
||||||
} else if (id == R.id.account_settings) {
|
} else if (id == R.id.account_settings) {
|
||||||
int headerIndex = i + 1;
|
int headerIndex = i + 1;
|
||||||
i = insertAccountsHeaders(target, headerIndex);
|
i = insertAccountsHeaders(target, headerIndex);
|
||||||
|
@@ -386,17 +386,22 @@ public class Utils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isBatteryPresent(Intent batteryChangedIntent) {
|
||||||
|
return batteryChangedIntent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
|
||||||
|
}
|
||||||
|
|
||||||
public static String getBatteryPercentage(Intent batteryChangedIntent) {
|
public static String getBatteryPercentage(Intent batteryChangedIntent) {
|
||||||
int level = batteryChangedIntent.getIntExtra("level", 0);
|
int level = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
|
||||||
int scale = batteryChangedIntent.getIntExtra("scale", 100);
|
int scale = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
|
||||||
return String.valueOf(level * 100 / scale) + "%";
|
return String.valueOf(level * 100 / scale) + "%";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getBatteryStatus(Resources res, Intent batteryChangedIntent) {
|
public static String getBatteryStatus(Resources res, Intent batteryChangedIntent) {
|
||||||
final Intent intent = batteryChangedIntent;
|
final Intent intent = batteryChangedIntent;
|
||||||
|
|
||||||
int plugType = intent.getIntExtra("plugged", 0);
|
int plugType = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
|
||||||
int status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN);
|
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS,
|
||||||
|
BatteryManager.BATTERY_STATUS_UNKNOWN);
|
||||||
String statusString;
|
String statusString;
|
||||||
if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
|
if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
|
||||||
statusString = res.getString(R.string.battery_info_status_charging);
|
statusString = res.getString(R.string.battery_info_status_charging);
|
||||||
|
Reference in New Issue
Block a user