Remove Battery settings if battery is not present

Bug: 8051556
Change-Id: I044b24e26dc3d6351c19168a2fcd085a1e761796
This commit is contained in:
Jaewan Kim
2013-06-04 21:17:40 +09:00
parent 747f726caf
commit a3fe77b2e4
2 changed files with 38 additions and 4 deletions

View File

@@ -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);

View File

@@ -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);