From c8857436995a1c96eff9e94c08329b18868bc535 Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Tue, 9 Nov 2010 12:19:25 -0800 Subject: [PATCH 1/6] Import revised translations. DO NOT MERGE Change-Id: Ic9978f86bf778e815896bbe858e07d953d53843b --- res/values-cs/strings.xml | 2 +- res/values-da/strings.xml | 2 +- res/values-de/strings.xml | 2 +- res/values-el/strings.xml | 4 ++-- res/values-es/strings.xml | 2 +- res/values-fr/strings.xml | 2 +- res/values-it/strings.xml | 2 +- res/values-ja/strings.xml | 2 +- res/values-ko/strings.xml | 2 +- res/values-nb/strings.xml | 4 ++-- res/values-nl/strings.xml | 2 +- res/values-pl/strings.xml | 2 +- res/values-pt-rPT/strings.xml | 2 +- res/values-pt/strings.xml | 2 +- res/values-ru/strings.xml | 2 +- res/values-sv/strings.xml | 4 ++-- res/values-tr/strings.xml | 2 +- res/values-zh-rCN/strings.xml | 2 +- res/values-zh-rTW/strings.xml | 2 +- 19 files changed, 22 insertions(+), 22 deletions(-) diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index ff8b44bc6be..0fe32ef6ba0 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -541,7 +541,7 @@ "K bezpečnému odebrání karty SD je potřeba kartu nejprve odpojit" "Vložte úložiště USB" "Vložte kartu SD, kterou chcete připojit." - "Připojit sdílené úložiště" + "Připojit úložiště USB" "Připojit kartu SD" "Připojit interní úložiště USB" "Připojit kartu SD" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index c128c107969..4e3e4cb894b 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -541,7 +541,7 @@ "Demonter SD-kortet for at fjerne det sikkert" "Isæt USB-lager til mont." "Insæt et SD-kort, der skal monteres" - "Isæt delt hukommelse" + "Isæt USB-lager" "Montér SD-kort" "Monter det interne USB-lager" "Montér SD-kortet" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 9e3629c9575..aab006d94b1 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -541,7 +541,7 @@ "SD-Karte trennen, damit Sie sie sicher entfernen können" "USB-Sp. für Bereitst. einlegen" "SD-Karte zur Bereitstellung einlegen" - "Speicher bereitstellen" + "USB-Speicher bereitst." "SD-Karte bereitstellen" "Int. USB-Speicher bereitst." "SD-Karte bereitstellen" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index bf3794a6dfb..e75ce290722 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -541,7 +541,7 @@ "Αποπροσαρτήστε την κάρτα SD για να την αφαιρέσετε με ασφάλεια" "Εισ. απ. χώρ. USB για προσ." "Εισαγάγετε μια κάρτα SD για τοποθέτηση" - "Προσάρτ. κοιν. αποθ. χώρ." + "Προσάρτ. χώρου αποθ. USB" "Τοποθέτηση κάρτας SD" "Προσαρ. τον εσ. αποθ. χώρο USB" "Τοποθέτηση κάρτας SD" @@ -973,7 +973,7 @@ "Mediaserver" "Φωνητική είσοδος και έξοδος" "Ρυθμίσεις φωνητικής εισόδου και εξόδου" - "Αναζήτηση με φωνή" + "Φωνητική αναζήτηση" "Πληκτρολόγιο Android" "Φωνητική είσοδος" "Φωνητική έξοδος" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 9917c7843f0..94492e6602c 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -541,7 +541,7 @@ "Desactivar la tarjeta SD para extraerla de forma segura" "Insert alm USB para activ" "Insertar una tarjeta SD para el montaje" - "Activar almacenam compart" + "Activar almacenamiento USB" "Activar tarjeta SD" "Activar almacenam USB interno" "Activar tarjeta SD" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index e272fbbeb87..53a06c08ef8 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -541,7 +541,7 @@ "Désinstaller la carte SD pour la retirer en toute sécurité" "Insérer mémoire USB à installer" "Insérer la carte SD à monter" - "Monter stockage partagé" + "Connecter une mémoire de stockage USB" "Monter la carte SD" "Installer la mémoire USB interne" "Monter la carte SD" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index b021a710fa5..e556aadb522 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -541,7 +541,7 @@ "Smonta la scheda SD per poterla rimuovere in tutta sicurezza" "Inserisci arch. USB da montare" "Inserisci una scheda SD da montare" - "Monta archivio condiviso" + "Monta archivio USB" "Installa scheda SD" "Monta archivio USB interno" "Installa la scheda SD" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 85c527cfb61..daee6586dc0 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -541,7 +541,7 @@ "SDカードのマウント解除(安全な取り外し)" "マウントするUSBストレージを挿入" "マウントするSDカードを挿入" - "共有ストレージをマウント" + "USBストレージをマウント" "SDカードをマウント" "内部USBストレージのマウント" "SDカードをマウント" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 64463d3773b..d88f497c25f 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -541,7 +541,7 @@ "SD 카드를 마운트 해제하여 안전하게 제거" "마운트할 USB 저장소 삽입" "마운트할 SD 카드 삽입" - "공유 저장장치 마운트" + "USB 저장소 마운트" "SD 카드 마운트" "내부 USB 저장소 마운트" "SD 카드 마운트" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 5121efa73fc..d97e3ec3e51 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -541,7 +541,7 @@ "Koble fra SD-kortet for trygg fjerning" "Sett inn USB-lagring" "Sett inn et minnekort for å koble til" - "Koble til delt lagring" + "Koble til USB-lagring" "Koble til minnekort" "Koble fra intern USB-lagring" "Koble til minnekortet" @@ -971,7 +971,7 @@ "Oppdater" "Android-operativsystem" "Medietjener" - "Talekommando og -styring" + "Tale (inn/ut)" "Innstillinger for talekommando og -styring" "Talesøk" "Android-tastatur" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 149e6279ca8..a4c7ec1fec3 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -541,7 +541,7 @@ "Ontkoppel de SD-kaart zodat u deze veilig kunt verwijderen" "USB-opslag plaatsen voor koppelen" "Plaats een SD-kaart om deze te koppelen" - "Gedeelde opslag koppelen" + "USB-opslag koppelen" "SD-kaart koppelen" "Interne USB-opslag koppelen" "De SD-kaart koppelen" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 6af7b4ed833..f28a6ba29de 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -541,7 +541,7 @@ "Odłącz kartę SD, aby bezpiecznie ją wyjąć" "Włóż USB do podłączenia" "Włóż kartę SD w celu zainstalowania" - "Podłącz pamięć współdzieloną" + "Podłącz nośnik USB" "Zainstaluj kartę SD" "Podłącz wewnętrzny nośnik USB" "Zainstaluj kartę SD" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index a819c11a6e5..93efcda0253 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -541,7 +541,7 @@ "Desmonte o cartão SD para removê-lo com segurança" "Inser. armaz. USB para montagem" "Inserir cartão SD para instalação" - "Montar armaz. partilhado" + "Montar armazenamento USB" "Instalar cartão SD" "Montar o armaz. USB interno" "Instalar cartão SD" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 4d9695da174..0e3d4c621cf 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -541,7 +541,7 @@ "Desconecte o cartão SD para poder removê-lo com segurança" "Insira armazen. USB" "Insira um cartão SD para conexão" - "Conectar armaz. compart." + "Conectar armazenam. USB" "Conectar cartão SD" "Conectar armaz. USB interno" "Conectar o cartão SD" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 271ca556b49..3aacf7bd84d 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -541,7 +541,7 @@ "Отключить SD-карту для безопасного извлечения" "Вставить USB-накопитель для подключения" "Вставьте SD-карту для подключения" - "Подключить накопитель" + "Подключить USB-накопитель" "Подключить SD-карту" "Подключить внутр. USB-накопитель" "Подключить SD-карту" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index b8546e80ae9..e0e0ae64785 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -541,7 +541,7 @@ "Demontera SD-kortet för säker borttagning" "Sätt i USB om du vill montera" "Sätt in ett SD-kort för montering" - "Montera delad enhet" + "Sätt i USB-enheten" "Montera SD-kort" "Demontera intern USB-lagring" "Montera SD-kortet" @@ -1032,7 +1032,7 @@ "Nej" "Spara" "Avbryt" - "Återgå" + "Tillbaka" "Anslut till nätverk" "Koppla ifrån nätverket" "Redigera nätverk" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index b3876e8c7be..b3f01a895c7 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -541,7 +541,7 @@ "Güvenle çıkarabilmnz için SD kartın bağl kesin" "Bğl için USB dep brm takn" "Eklemek için bir SD kart yerleştirin" - "Payl deplm birimini bağla" + "USB depl birimini ekleyin" "SD kartı ekle" "Dahili USB depol birimini ekle" "SD kartı ekle" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index c6c4ff63be3..ac417c14bfc 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -541,7 +541,7 @@ "需要先卸载 SD 卡,然后才能将其安全移除" "插入要装载的 USB 存储设备" "插入 SD 卡进行安装" - "装载共享存储设备" + "装载 USB 存储设备" "安装 SD 卡" "装载内部 USB 存储设备" "安装 SD 卡" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 205d45a0e50..8200524dac7 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -541,7 +541,7 @@ "請先卸載 SD 卡,才能將其安全移除" "插入用於掛接的 USB 儲存裝置" "插入要掛載的 SD 卡" - "掛接共用儲存裝置" + "掛接 USB 儲存裝置" "掛載 SD 卡" "掛接內部 USB 儲存裝置" "掛載 SD 卡" From 76629102b911a376eb49e7cffe2a4fb0e43aab55 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Thu, 11 Nov 2010 08:48:43 -0800 Subject: [PATCH 2/6] Don't complain about /proc usage in Settings killing animations. Change-Id: If6c2b5dc2244ac4b921e45daeb8e0052306e2c54 --- .../settings/applications/RunningProcessesView.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/com/android/settings/applications/RunningProcessesView.java b/src/com/android/settings/applications/RunningProcessesView.java index 958adbd0d37..ef5adac761f 100644 --- a/src/com/android/settings/applications/RunningProcessesView.java +++ b/src/com/android/settings/applications/RunningProcessesView.java @@ -24,6 +24,7 @@ import android.app.Fragment; import android.content.Context; import android.content.pm.PackageManager; import android.os.Bundle; +import android.os.StrictMode; import android.os.SystemClock; import android.os.SystemProperties; import android.preference.PreferenceActivity; @@ -335,6 +336,10 @@ public class RunningProcessesView extends FrameLayout } private long readAvailMem() { + // Permit disk reads here, as /proc/meminfo isn't really "on + // disk" and should be fast. TODO: make BlockGuard ignore + // /proc/ and /sys/ files perhaps? + StrictMode.ThreadPolicy savedPolicy = StrictMode.allowThreadDiskReads(); try { long memFree = 0; long memCached = 0; @@ -357,6 +362,8 @@ public class RunningProcessesView extends FrameLayout return memFree + memCached; } catch (java.io.FileNotFoundException e) { } catch (java.io.IOException e) { + } finally { + StrictMode.setThreadPolicy(savedPolicy); } return 0; } From dd9fbb0b9e1b82025fc8699fe4ad4a9e2a918c4d Mon Sep 17 00:00:00 2001 From: Daisuke Miyakawa Date: Thu, 11 Nov 2010 09:03:54 -0800 Subject: [PATCH 3/6] Enable wifi on XL Wifi setup. In I5b29917af73aac6a82e13ba846a9d5085f9bd523, we removed relevant code but it was wrong. At least we need to enable Wifi once when the Activity is created. Bug: 3186944 Change-Id: I078cdf9b3d8952e6ce7bb3f9b27a4439e82da534 --- .../android/settings/wifi/WifiSettingsForSetupWizardXL.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java b/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java index 17c0beb64b5..635f301b435 100644 --- a/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java +++ b/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java @@ -113,6 +113,10 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); mWifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); + // There's no button here enabling wifi network, so we need to enable it without + // users' request. + mWifiManager.setWifiEnabled(true); + mWifiSettings = (WifiSettings)getFragmentManager().findFragmentById(R.id.wifi_setup_fragment); mInputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); From 40124c30a9d554597808992d77ccc867737cf242 Mon Sep 17 00:00:00 2001 From: Daisuke Miyakawa Date: Thu, 11 Nov 2010 16:36:50 -0800 Subject: [PATCH 4/6] Delay showSoftInput() call. We need to wait onFocusView() call back for actually showing software keyboard. Bug: 3053354 Change-Id: Idd946e3b8a372ddbabb8b36600c77290f77a06e6 --- .../wifi/WifiConfigUiForSetupWizardXL.java | 58 +++++++++++++------ .../wifi/WifiSettingsForSetupWizardXL.java | 3 +- 2 files changed, 43 insertions(+), 18 deletions(-) diff --git a/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java b/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java index 155b691ba40..a29790f56ee 100644 --- a/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java +++ b/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java @@ -20,9 +20,11 @@ import com.android.settings.R; import android.app.Activity; import android.content.Context; +import android.os.Handler; import android.util.Log; import android.view.LayoutInflater; import android.view.View; +import android.view.View.OnFocusChangeListener; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.Button; @@ -32,7 +34,7 @@ import android.widget.EditText; * Shows simplified UI for configuring a wifi network. Used only in SetupWizard for XLarge * screen. */ -public class WifiConfigUiForSetupWizardXL implements WifiConfigUiBase { +public class WifiConfigUiForSetupWizardXL implements WifiConfigUiBase, OnFocusChangeListener { private static final String TAG = "SetupWizard"; private Button mConnectButton; @@ -44,6 +46,7 @@ public class WifiConfigUiForSetupWizardXL implements WifiConfigUiBase { private WifiConfigController mController; private AccessPoint mAccessPoint; private boolean mEdit; + private Handler mHandler = new Handler(); private LayoutInflater mInflater; @@ -66,25 +69,18 @@ public class WifiConfigUiForSetupWizardXL implements WifiConfigUiBase { mView = mInflater.inflate(R.layout.wifi_config_ui_for_setup_wizard, parent, false); mController = new WifiConfigController(this, mView, mAccessPoint, edit); - trySetFocusAndLaunchSoftInput(R.id.password); - } - private void trySetFocusAndLaunchSoftInput(int id) { - final View viewToBeFocused = mView.findViewById(id); - if (viewToBeFocused != null && viewToBeFocused.getVisibility() == View.VISIBLE) { + // Set Focus to password View. + final View viewToBeFocused = mView.findViewById(R.id.password); + if (viewToBeFocused != null && viewToBeFocused.getVisibility() == View.VISIBLE && + viewToBeFocused instanceof EditText) { + // After acquiring the focus, we show software keyboard. + viewToBeFocused.setOnFocusChangeListener(this); final boolean requestFocusResult = viewToBeFocused.requestFocus(); - Log.i(TAG, String.format("Focus request to %x %s.", id, + Log.i(TAG, String.format("Focus request %s.", (requestFocusResult ? "successful" : "failed"))); - if (requestFocusResult && viewToBeFocused instanceof EditText) { - Log.i(TAG, String.format( - "Focused View (%x) is EditText. Try to show software keyboard", id)); - final InputMethodManager inputMethodManager = (InputMethodManager) - mActivity.getSystemService(Context.INPUT_METHOD_SERVICE); - final boolean showSoftInputResult = - inputMethodManager.showSoftInput(viewToBeFocused, 0); - if (!showSoftInputResult) { - Log.w(TAG, "Failed to show software keyboard "); - } + if (!requestFocusResult) { + viewToBeFocused.setOnFocusChangeListener(null); } } } @@ -164,4 +160,32 @@ public class WifiConfigUiForSetupWizardXL implements WifiConfigUiBase { public void setTitle(CharSequence title) { Log.d(TAG, "Ignoring setTitle"); } + + private static class FocusRunnable implements Runnable { + final InputMethodManager mInputMethodManager; + final View mViewToBeFocused; + public FocusRunnable(Context context, View viewToBeFocused) { + mInputMethodManager = (InputMethodManager) + context.getSystemService(Context.INPUT_METHOD_SERVICE); + mViewToBeFocused = viewToBeFocused; + } + + @Override + public void run() { + mInputMethodManager.focusIn(mViewToBeFocused); + final boolean showSoftInputResult = + mInputMethodManager.showSoftInput(mViewToBeFocused, 0); + if (!showSoftInputResult) { + Log.w(TAG, "Failed to show software keyboard "); + } + } + } + + @Override + public void onFocusChange(View view, boolean hasFocus) { + view.setOnFocusChangeListener(null); + if (hasFocus) { + mHandler.post(new FocusRunnable(mActivity, view)); + } + } } \ No newline at end of file diff --git a/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java b/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java index 635f301b435..f59816eaff2 100644 --- a/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java +++ b/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java @@ -111,7 +111,7 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis setContentView(R.layout.wifi_settings_for_setup_wizard_xl); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); - + mWifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); // There's no button here enabling wifi network, so we need to enable it without // users' request. @@ -188,6 +188,7 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis } private void hideSoftwareKeyboard() { + Log.i(TAG, "Hiding software keyboard."); final View focusedView = getCurrentFocus(); if (focusedView != null) { mInputMethodManager.hideSoftInputFromWindow(focusedView.getWindowToken(), 0); From 115ea8aa37d82bda1e3328a9af776d6941d498e7 Mon Sep 17 00:00:00 2001 From: Daisuke Miyakawa Date: Thu, 11 Nov 2010 18:28:03 -0800 Subject: [PATCH 5/6] Comment out hidden method call. Bug: 3053354 Change-Id: I5fb5d6eb33e50209c85a95065ac3d0cefb983f6b --- src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java b/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java index a29790f56ee..c49f5ac0f09 100644 --- a/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java +++ b/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java @@ -172,7 +172,7 @@ public class WifiConfigUiForSetupWizardXL implements WifiConfigUiBase, OnFocusCh @Override public void run() { - mInputMethodManager.focusIn(mViewToBeFocused); + // mInputMethodManager.focusIn(mViewToBeFocused); final boolean showSoftInputResult = mInputMethodManager.showSoftInput(mViewToBeFocused, 0); if (!showSoftInputResult) { From 59a48604b5a803fbec6857e07f9fa1adbc6b8bb4 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Wed, 10 Nov 2010 23:34:52 -0800 Subject: [PATCH 6/6] Start fragmentizing battery usage. Change-Id: I0864f6738b37c3203e166bb8f7e61e8904d9980a --- AndroidManifest.xml | 68 ++------- res/values/strings.xml | 5 +- res/xml/application_settings.xml | 4 +- src/com/android/settings/Settings.java | 1 + .../settings/SettingsPreferenceFragment.java | 7 - .../fuelgauge/BatteryHistoryDetail.java | 20 ++- .../settings/fuelgauge/PowerUsageDetail.java | 130 ++++++++++-------- .../settings/fuelgauge/PowerUsageSummary.java | 123 ++++++++--------- 8 files changed, 159 insertions(+), 199 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index d8a2fa1d5ed..596057292b8 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -470,6 +470,7 @@ InstalledAppDetails. --> - - - - - - - - @@ -942,34 +905,19 @@ - + - - - - - - - - - - - - - - + + %1$s" - " %2$s%% + + History details + - Battery use details + Use details Use details diff --git a/res/xml/application_settings.xml b/res/xml/application_settings.xml index 2e446a28211..9042ba94ede 100644 --- a/res/xml/application_settings.xml +++ b/res/xml/application_settings.xml @@ -66,11 +66,9 @@ - 0) { try { - mApp = getPackageManager().getApplicationInfo(mPackages[0], 0); + mApp = getActivity().getPackageManager().getApplicationInfo( + mPackages[0], 0); mInstaller = ApplicationErrorReport.getErrorReportReceiver( - this, mPackages[0], mApp.flags); + getActivity(), mPackages[0], mApp.flags); } catch (NameNotFoundException e) { } } @@ -233,6 +241,17 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener doAction((Integer) v.getTag()); } + // utility method used to start sub activity + private void startApplicationDetailsActivity() { + // start new fragment to display extended information + Bundle args = new Bundle(); + args.putString(InstalledAppDetails.ARG_PACKAGE_NAME, mPackages[0]); + + PreferenceActivity pa = (PreferenceActivity)getActivity(); + pa.startPreferencePanel(InstalledAppDetails.class.getName(), args, + R.string.application_info_label, null, null, 0); + } + private void doAction(int action) { switch (action) { case ACTION_DISPLAY_SETTINGS: @@ -248,10 +267,7 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS)); break; case ACTION_APP_DETAILS: - Intent intent = new Intent(Intent.ACTION_VIEW, - Uri.fromParts("package", mPackages[0], null)); - intent.setClass(this, InstalledAppDetails.class); - startActivity(intent); + startApplicationDetailsActivity(); break; case ACTION_SECURITY_SETTINGS: startActivity(new Intent(Settings.ACTION_SECURITY_SETTINGS)); @@ -266,7 +282,7 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener } private void fillDetailsSection() { - LayoutInflater inflater = getLayoutInflater(); + LayoutInflater inflater = getActivity().getLayoutInflater(); if (mTypes != null && mValues != null) { for (int i = 0; i < mTypes.length; i++) { // Only add an item if the time is greater than zero @@ -276,7 +292,7 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener switch (mTypes[i]) { case R.string.usage_type_data_recv: case R.string.usage_type_data_send: - value = Utils.formatBytes(this, mValues[i]); + value = Utils.formatBytes(getActivity(), mValues[i]); break; case R.string.usage_type_no_coverage: value = String.format("%d%%", (int) Math.floor(mValues[i])); @@ -285,7 +301,7 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener mUsesGps = true; // Fall through default: - value = Utils.formatElapsedTime(this, mValues[i]); + value = Utils.formatElapsedTime(getActivity(), mValues[i]); } ViewGroup item = (ViewGroup) inflater.inflate(R.layout.power_usage_detail_item_text, null); @@ -299,7 +315,7 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener } private void fillControlsSection(int uid) { - PackageManager pm = getPackageManager(); + PackageManager pm = getActivity().getPackageManager(); String[] packages = pm.getPackagesForUid(uid); PackageInfo pi = null; try { @@ -359,7 +375,7 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener private void addControl(int title, int summary, int action) { final Resources res = getResources(); - LayoutInflater inflater = getLayoutInflater(); + LayoutInflater inflater = getActivity().getLayoutInflater(); ViewGroup item = (ViewGroup) inflater.inflate(R.layout.power_usage_action_item,null); mControlsParent.addView(item); Button actionButton = (Button) item.findViewById(R.id.action_button); @@ -372,17 +388,17 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener private void removePackagesSection() { View view; - if ((view = findViewById(R.id.packages_section_title)) != null) { + if ((view = mRootView.findViewById(R.id.packages_section_title)) != null) { view.setVisibility(View.GONE); } - if ((view = findViewById(R.id.packages_section)) != null) { + if ((view = mRootView.findViewById(R.id.packages_section)) != null) { view.setVisibility(View.GONE); } } private void killProcesses() { if (mPackages == null) return; - ActivityManager am = (ActivityManager)getSystemService( + ActivityManager am = (ActivityManager)getActivity().getSystemService( Context.ACTIVITY_SERVICE); for (int i = 0; i < mPackages.length; i++) { am.forceStopPackage(mPackages[i]); @@ -393,7 +409,7 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener private final BroadcastReceiver mCheckKillProcessesReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - mForceStopButton.setEnabled(getResultCode() != RESULT_CANCELED); + mForceStopButton.setEnabled(getResultCode() != Activity.RESULT_CANCELED); } }; @@ -406,7 +422,7 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener Uri.fromParts("package", mPackages[0], null)); intent.putExtra(Intent.EXTRA_PACKAGES, mPackages); intent.putExtra(Intent.EXTRA_UID, mUid); - sendOrderedBroadcast(intent, null, mCheckKillProcessesReceiver, null, + getActivity().sendOrderedBroadcast(intent, null, mCheckKillProcessesReceiver, null, Activity.RESULT_CANCELED, null, null); } @@ -421,12 +437,12 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener report.time = System.currentTimeMillis(); report.systemApp = (mApp.flags & ApplicationInfo.FLAG_SYSTEM) != 0; - final Intent intent = getIntent(); + final Bundle args = getArguments(); ApplicationErrorReport.BatteryInfo batteryInfo = new ApplicationErrorReport.BatteryInfo(); - batteryInfo.usagePercent = intent.getIntExtra(EXTRA_PERCENT, 1); - batteryInfo.durationMicros = intent.getLongExtra(EXTRA_USAGE_DURATION, 0); - batteryInfo.usageDetails = intent.getStringExtra(EXTRA_REPORT_DETAILS); - batteryInfo.checkinDetails = intent.getStringExtra(EXTRA_REPORT_CHECKIN_DETAILS); + batteryInfo.usagePercent = args.getInt(EXTRA_PERCENT, 1); + batteryInfo.durationMicros = args.getLong(EXTRA_USAGE_DURATION, 0); + batteryInfo.usageDetails = args.getString(EXTRA_REPORT_DETAILS); + batteryInfo.checkinDetails = args.getString(EXTRA_REPORT_CHECKIN_DETAILS); report.batteryInfo = batteryInfo; Intent result = new Intent(Intent.ACTION_APP_ERROR); @@ -441,11 +457,11 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener removePackagesSection(); return; } - ViewGroup packagesParent = (ViewGroup) findViewById(R.id.packages_section); + ViewGroup packagesParent = (ViewGroup)mRootView.findViewById(R.id.packages_section); if (packagesParent == null) return; - LayoutInflater inflater = getLayoutInflater(); + LayoutInflater inflater = getActivity().getLayoutInflater(); - PackageManager pm = getPackageManager(); + PackageManager pm = getActivity().getPackageManager(); //final Drawable defaultActivityIcon = pm.getDefaultActivityIcon(); mPackages = pm.getPackagesForUid(uid); if (mPackages == null || mPackages.length < 2) { diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index ea28c595c8b..9fdc7f21ddc 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -31,17 +31,20 @@ import android.os.SystemClock; import android.os.BatteryStats.Uid; import android.preference.Preference; import android.preference.PreferenceActivity; +import android.preference.PreferenceFragment; import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; import android.util.Log; import android.util.SparseArray; import android.view.Menu; +import android.view.MenuInflater; import android.view.MenuItem; import com.android.internal.app.IBatteryStats; import com.android.internal.os.BatteryStatsImpl; import com.android.internal.os.PowerProfile; import com.android.settings.R; +import com.android.settings.applications.InstalledAppDetails; import com.android.settings.fuelgauge.PowerUsageDetail.DrainType; import java.io.PrintWriter; @@ -56,7 +59,7 @@ import java.util.Map; * Displays a list of apps and subsystems that consume power, ordered by how much power was * consumed since the last time it was unplugged. */ -public class PowerUsageSummary extends PreferenceActivity implements Runnable { +public class PowerUsageSummary extends PreferenceFragment implements Runnable { private static final boolean DEBUG = false; @@ -65,6 +68,8 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { private static final int MENU_STATS_TYPE = Menu.FIRST; private static final int MENU_STATS_REFRESH = Menu.FIRST + 1; + private static BatteryStatsImpl sStatsXfer; + IBatteryStats mBatteryInfo; BatteryStatsImpl mStats; private final List mUsageList = new ArrayList(); @@ -94,32 +99,27 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { private boolean mAbort; @Override - protected void onCreate(Bundle icicle) { + public void onCreate(Bundle icicle) { super.onCreate(icicle); - mStats = (BatteryStatsImpl)getLastNonConfigurationInstance(); + mStats = sStatsXfer; addPreferencesFromResource(R.xml.power_usage_summary); mBatteryInfo = IBatteryStats.Stub.asInterface( ServiceManager.getService("batteryinfo")); mAppListGroup = (PreferenceGroup) findPreference("app_list"); - mPowerProfile = new PowerProfile(this); + mPowerProfile = new PowerProfile(getActivity()); } @Override - public Object onRetainNonConfigurationInstance() { - return mStats; - } - - @Override - protected void onResume() { + public void onResume() { super.onResume(); mAbort = false; refreshStats(); } @Override - protected void onPause() { + public void onPause() { synchronized (mRequestQueue) { mAbort = true; } @@ -127,15 +127,25 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { super.onPause(); } + @Override + public void onDestroy() { + super.onDestroy(); + if (getActivity().isChangingConfigurations()) { + sStatsXfer = mStats; + } + } + @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if (preference instanceof BatteryHistoryPreference) { Parcel hist = Parcel.obtain(); mStats.writeToParcelWithoutUids(hist, 0); byte[] histData = hist.marshall(); - Intent intent = new Intent(this, BatteryHistoryDetail.class); - intent.putExtra(BatteryHistoryDetail.EXTRA_STATS, histData); - startActivity(intent); + Bundle args = new Bundle(); + args.putByteArray(BatteryHistoryDetail.EXTRA_STATS, histData); + PreferenceActivity pa = (PreferenceActivity)getActivity(); + pa.startPreferencePanel(BatteryHistoryDetail.class.getName(), args, + R.string.history_details_title, null, null, 0); return super.onPreferenceTreeClick(preferenceScreen, preference); } if (!(preference instanceof PowerGaugePreference)) { @@ -143,20 +153,20 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { } PowerGaugePreference pgp = (PowerGaugePreference) preference; BatterySipper sipper = pgp.getInfo(); - Intent intent = new Intent(this, PowerUsageDetail.class); - intent.putExtra(PowerUsageDetail.EXTRA_TITLE, sipper.name); - intent.putExtra(PowerUsageDetail.EXTRA_PERCENT, (int) + Bundle args = new Bundle(); + args.putString(PowerUsageDetail.EXTRA_TITLE, sipper.name); + args.putInt(PowerUsageDetail.EXTRA_PERCENT, (int) Math.ceil(sipper.getSortValue() * 100 / mTotalPower)); - intent.putExtra(PowerUsageDetail.EXTRA_GAUGE, (int) + args.putInt(PowerUsageDetail.EXTRA_GAUGE, (int) Math.ceil(sipper.getSortValue() * 100 / mMaxPower)); - intent.putExtra(PowerUsageDetail.EXTRA_USAGE_DURATION, mStatsPeriod); - intent.putExtra(PowerUsageDetail.EXTRA_ICON_PACKAGE, sipper.defaultPackageName); - intent.putExtra(PowerUsageDetail.EXTRA_ICON_ID, sipper.iconId); - intent.putExtra(PowerUsageDetail.EXTRA_NO_COVERAGE, sipper.noCoveragePercent); + args.putLong(PowerUsageDetail.EXTRA_USAGE_DURATION, mStatsPeriod); + args.putString(PowerUsageDetail.EXTRA_ICON_PACKAGE, sipper.defaultPackageName); + args.putInt(PowerUsageDetail.EXTRA_ICON_ID, sipper.iconId); + args.putDouble(PowerUsageDetail.EXTRA_NO_COVERAGE, sipper.noCoveragePercent); if (sipper.uidObj != null) { - intent.putExtra(PowerUsageDetail.EXTRA_UID, sipper.uidObj.getUid()); + args.putInt(PowerUsageDetail.EXTRA_UID, sipper.uidObj.getUid()); } - intent.putExtra(PowerUsageDetail.EXTRA_DRAIN_TYPE, sipper.drainType); + args.putSerializable(PowerUsageDetail.EXTRA_DRAIN_TYPE, sipper.drainType); int[] types; double[] values; @@ -190,12 +200,12 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { Writer result = new StringWriter(); PrintWriter printWriter = new PrintWriter(result); mStats.dumpLocked(printWriter, "", mStatsType, uid.getUid()); - intent.putExtra(PowerUsageDetail.EXTRA_REPORT_DETAILS, result.toString()); + args.putString(PowerUsageDetail.EXTRA_REPORT_DETAILS, result.toString()); result = new StringWriter(); printWriter = new PrintWriter(result); mStats.dumpCheckinLocked(printWriter, mStatsType, uid.getUid()); - intent.putExtra(PowerUsageDetail.EXTRA_REPORT_CHECKIN_DETAILS, result.toString()); + args.putString(PowerUsageDetail.EXTRA_REPORT_CHECKIN_DETAILS, result.toString()); } break; case CELL: @@ -258,15 +268,17 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { }; } } - intent.putExtra(PowerUsageDetail.EXTRA_DETAIL_TYPES, types); - intent.putExtra(PowerUsageDetail.EXTRA_DETAIL_VALUES, values); - startActivity(intent); + args.putIntArray(PowerUsageDetail.EXTRA_DETAIL_TYPES, types); + args.putDoubleArray(PowerUsageDetail.EXTRA_DETAIL_VALUES, values); + PreferenceActivity pa = (PreferenceActivity)getActivity(); + pa.startPreferencePanel(PowerUsageDetail.class.getName(), args, + R.string.details_title, null, null, 0); return super.onPreferenceTreeClick(preferenceScreen, preference); } @Override - public boolean onCreateOptionsMenu(Menu menu) { + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { if (DEBUG) { menu.add(0, MENU_STATS_TYPE, 0, R.string.menu_stats_total) .setIcon(com.android.internal.R.drawable.ic_menu_info_details) @@ -275,17 +287,6 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { menu.add(0, MENU_STATS_REFRESH, 0, R.string.menu_stats_refresh) .setIcon(com.android.internal.R.drawable.ic_menu_refresh) .setAlphabeticShortcut('r'); - return true; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - if (DEBUG) { - menu.findItem(MENU_STATS_TYPE).setTitle(mStatsType == BatteryStats.STATS_SINCE_CHARGED - ? R.string.menu_stats_unplugged - : R.string.menu_stats_total); - } - return true; } @Override @@ -327,7 +328,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { mAppListGroup.setOrderingAsAdded(false); - BatteryHistoryPreference hist = new BatteryHistoryPreference(this, mStats); + BatteryHistoryPreference hist = new BatteryHistoryPreference(getActivity(), mStats); hist.setOrder(-1); mAppListGroup.addPreference(hist); @@ -336,7 +337,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { if (sipper.getSortValue() < MIN_POWER_THRESHOLD) continue; final double percentOfTotal = ((sipper.getSortValue() / mTotalPower) * 100); if (percentOfTotal < 1) continue; - PowerGaugePreference pref = new PowerGaugePreference(this, sipper.getIcon(), sipper); + PowerGaugePreference pref = new PowerGaugePreference(getActivity(), sipper.getIcon(), sipper); double percentOfMax = (sipper.getSortValue() * 100) / mMaxPower; sipper.percent = percentOfTotal; pref.setTitle(sipper.name); @@ -349,7 +350,6 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { mAppListGroup.addPreference(pref); if (mAppListGroup.getPreferenceCount() > (MAX_ITEMS_TO_LIST+1)) break; } - if (DEBUG) setTitle("Battery total uAh = " + ((mTotalPower * 1000) / 3600)); synchronized (mRequestQueue) { if (!mRequestQueue.isEmpty()) { if (mRequestThread == null) { @@ -362,16 +362,9 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { } } - private void updateStatsPeriod(long duration) { - String durationString = Utils.formatElapsedTime(this, duration / 1000); - String label = getString(mStats.isOnBattery() - ? R.string.battery_stats_duration - : R.string.battery_stats_last_duration, durationString); - setTitle(label); - } - private void processAppUsage() { - SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); + SensorManager sensorManager = (SensorManager)getActivity().getSystemService( + Context.SENSOR_SERVICE); final int which = mStatsType; final int speedSteps = mPowerProfile.getNumSpeedSteps(); final double[] powerCpuNormal = new double[speedSteps]; @@ -382,7 +375,6 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { final double averageCostPerByte = getAverageDataCost(); long uSecTime = mStats.computeBatteryRealtime(SystemClock.elapsedRealtime() * 1000, which); mStatsPeriod = uSecTime; - updateStatsPeriod(uSecTime); SparseArray uidStats = mStats.getUidStats(); final int NU = uidStats.size(); for (int iu = 0; iu < NU; iu++) { @@ -504,7 +496,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { // Add the app to the list if it is consuming power if (power != 0) { - BatterySipper app = new BatterySipper(this, mRequestQueue, mHandler, + BatterySipper app = new BatterySipper(getActivity(), mRequestQueue, mHandler, packageWithHighestDrain, DrainType.APP, 0, u, new double[] {power}); app.cpuTime = cpuTime; @@ -538,7 +530,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { long phoneOnTimeMs = mStats.getPhoneOnTime(uSecNow, mStatsType) / 1000; double phoneOnPower = mPowerProfile.getAveragePower(PowerProfile.POWER_RADIO_ACTIVE) * phoneOnTimeMs / 1000; - addEntry(getString(R.string.power_phone), DrainType.PHONE, phoneOnTimeMs, + addEntry(getActivity().getString(R.string.power_phone), DrainType.PHONE, phoneOnTimeMs, R.drawable.ic_settings_voice_calls, phoneOnPower); } @@ -559,7 +551,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { } } power /= 1000; // To seconds - addEntry(getString(R.string.power_screen), DrainType.SCREEN, screenOnTimeMs, + addEntry(getActivity().getString(R.string.power_screen), DrainType.SCREEN, screenOnTimeMs, R.drawable.ic_settings_display, power); } @@ -577,8 +569,8 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { power += scanningTimeMs / 1000 * mPowerProfile.getAveragePower( PowerProfile.POWER_RADIO_SCANNING); BatterySipper bs = - addEntry(getString(R.string.power_cell), DrainType.CELL, signalTimeMs, - R.drawable.ic_settings_cell_standby, power); + addEntry(getActivity().getString(R.string.power_cell), DrainType.CELL, + signalTimeMs, R.drawable.ic_settings_cell_standby, power); if (signalTimeMs != 0) { bs.noCoveragePercent = mStats.getPhoneSignalStrengthTime(0, uSecNow, mStatsType) / 1000 * 100.0 / signalTimeMs; @@ -610,8 +602,8 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { * mPowerProfile.getAveragePower(PowerProfile.POWER_WIFI_ON) + runningTimeMs * mPowerProfile.getAveragePower(PowerProfile.POWER_WIFI_ON)) / 1000; if (DEBUG) Log.i(TAG, "WIFI power=" + wifiPower + " from procs=" + mWifiPower); - BatterySipper bs = addEntry(getString(R.string.power_wifi), DrainType.WIFI, runningTimeMs, - R.drawable.ic_settings_wifi, wifiPower + mWifiPower); + BatterySipper bs = addEntry(getActivity().getString(R.string.power_wifi), DrainType.WIFI, + runningTimeMs, R.drawable.ic_settings_wifi, wifiPower + mWifiPower); aggregateSippers(bs, mWifiSippers, "WIFI"); } @@ -619,7 +611,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { long idleTimeMs = (uSecNow - mStats.getScreenOnTime(uSecNow, mStatsType)) / 1000; double idlePower = (idleTimeMs * mPowerProfile.getAveragePower(PowerProfile.POWER_CPU_IDLE)) / 1000; - addEntry(getString(R.string.power_idle), DrainType.IDLE, idleTimeMs, + addEntry(getActivity().getString(R.string.power_idle), DrainType.IDLE, idleTimeMs, R.drawable.ic_settings_phone_idle, idlePower); } @@ -630,8 +622,9 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { int btPingCount = mStats.getBluetoothPingCount(); btPower += (btPingCount * mPowerProfile.getAveragePower(PowerProfile.POWER_BLUETOOTH_AT_CMD)) / 1000; - BatterySipper bs = addEntry(getString(R.string.power_bluetooth), DrainType.BLUETOOTH, - btOnTimeMs, R.drawable.ic_settings_bluetooth, btPower + mBluetoothPower); + BatterySipper bs = addEntry(getActivity().getString(R.string.power_bluetooth), + DrainType.BLUETOOTH, btOnTimeMs, R.drawable.ic_settings_bluetooth, + btPower + mBluetoothPower); aggregateSippers(bs, mBluetoothSippers, "Bluetooth"); } @@ -682,7 +675,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { double power) { if (power > mMaxPower) mMaxPower = power; mTotalPower += power; - BatterySipper bs = new BatterySipper(this, mRequestQueue, mHandler, + BatterySipper bs = new BatterySipper(getActivity(), mRequestQueue, mHandler, label, drainType, iconId, null, new double[] {power}); bs.usageTime = time; bs.iconId = iconId;