From 8a156091eff22a360f802332daf2fe00b4267ad7 Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Mon, 2 Mar 2009 22:54:43 -0800 Subject: [PATCH] auto import from //depot/cupcake/@137055 --- AndroidManifest.xml | 17 +- res/values-cs/arrays.xml | 21 +- res/values-cs/strings.xml | 78 +++--- res/values-de/arrays.xml | 21 +- res/values-de/strings.xml | 28 ++- res/values-es/arrays.xml | 21 +- res/values-es/strings.xml | 71 +++--- res/values-fr/arrays.xml | 23 +- res/values-fr/strings.xml | 95 ++++---- res/values-it/arrays.xml | 21 +- res/values-it/strings.xml | 107 +++++---- res/values-ja/arrays.xml | 21 +- res/values-ja/strings.xml | 28 ++- res/values-ko/arrays.xml | 21 +- res/values-ko/strings.xml | 28 ++- res/values-nb/arrays.xml | 17 +- res/values-nb/strings.xml | 24 +- res/values-nl/arrays.xml | 21 +- res/values-nl/strings.xml | 62 +++-- res/values-pl/arrays.xml | 23 +- res/values-pl/strings.xml | 150 ++++++------ res/values-ru/arrays.xml | 21 +- res/values-ru/strings.xml | 28 ++- res/values-zh-rCN/arrays.xml | 21 +- res/values-zh-rCN/strings.xml | 28 ++- res/values-zh-rTW/arrays.xml | 21 +- res/values-zh-rTW/strings.xml | 28 ++- res/values/arrays.xml | 12 +- res/values/strings.xml | 35 ++- res/xml/language_settings.xml | 11 +- src/com/android/settings/ApnSettings.java | 142 +++++++++-- .../android/settings/ChooseLockPattern.java | 1 + .../android/settings/InstalledAppDetails.java | 2 +- .../android/settings/LanguageSettings.java | 161 ++++++++++++- .../settings/LauncherGadgetBinder.java | 225 ++++++++++++++++++ .../android/settings/ManageApplications.java | 145 ++++++----- .../settings/UserDictionarySettings.java | 5 +- .../battery_history/BatteryHistory.java | 188 ++++++++++----- .../bluetooth/BluetoothPinDialog.java | 7 +- .../settings/bluetooth/BluetoothSettings.java | 2 + .../ConnectSpecificProfilesActivity.java | 8 +- .../bluetooth/LocalBluetoothManager.java | 35 ++- .../android/settings/deviceinfo/Memory.java | 2 + .../settings/wifi/AdvancedSettings.java | 2 + 44 files changed, 1427 insertions(+), 601 deletions(-) create mode 100644 src/com/android/settings/LauncherGadgetBinder.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 23683451aad..cab768d2774 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -33,6 +33,8 @@ + + @@ -87,6 +89,8 @@ @@ -205,7 +209,9 @@ - + @@ -476,14 +482,19 @@ - - + + + + diff --git a/res/values-cs/arrays.xml b/res/values-cs/arrays.xml index 1006481ca08..a62f04972ba 100644 --- a/res/values-cs/arrays.xml +++ b/res/values-cs/arrays.xml @@ -55,18 +55,15 @@ "Nikdy, je-li zapnuto napájení" "Nikdy" - - "Využití CPU" - "Používání sítě" - "Využití senzoru" - "Doba zapnutí obrazovky" - - - "Od resetování zařízení" - "Před posledním spuštěním" - "Od posledního spuštění" - "Od posledního odpojení" - + + + + + + + + + "Doba použití" "Počet spuštění" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 9a89ac63318..5aca72acd63 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -94,23 +94,24 @@ "Odpojeno" "Odpojování..." "Připojování..." - + "Párovat s tímto zařízením" "Párování..." - "Párováno. Odpojeno." + + "Náhlavní souprava či handsfree" "Vyhledávání" "Požadavek na párování zařízení Bluetooth" "Požadavek na párování" - "Povolit párování se zařízením" + "Povolit párování se zařízením " "Nastavení data a času" "13:00" "13:00" "Volba časového pásma" "Náhled:" "Velikost písma:" - + "Odeslat broadcast" "Action:" @@ -321,7 +322,7 @@ "Připojování k síti %1$s..." "Ověřování v síti %1$s..." "Získávání adresy IP ze sítě %1$s..." - "Připojeno k síti %1$s." + "Připojeno k síti %1$s" "Odpojování od sítě %1$s..." "Odpojeno" "Připojení se nezdařilo." @@ -429,14 +430,14 @@ "Formátovat kartu SD" "Formátovat (vymazat) kartu SD" "Nedostupný údaj" - "(Pouze pro čtení)" + " (Pouze pro čtení)" "Stav baterie" "Stav baterie" - "Názvy AP" + "Přístupové body" "Upravit přístupový bod" "<Nenastaveno>" "Jméno" - "Název AP" + "Název přístupvého bodu (APN)" "Proxy" "Port" "Uživatelské jméno" @@ -447,11 +448,11 @@ "Port systému MMS" "MCC" "MNC" - "Typ názvu AP" - "Smazat název přístupového bodu" - "Nový název AP" + "typ APN" + "Smazat APN" + "Nový APN" "Uložit" - "Zahodit" + "Zrušit" "Upozornění" "Pole Název nemůže být prázdné." "Název AP nemůže být prázdný." @@ -463,8 +464,8 @@ "Resetovat telefon" "Opravdu chcete resetovat telefon? Smažete veškerá data a aplikace. Proces nelze zvrátit." "Odstranit vše" - "Proveďte gesto odemknutí" - "Chcete-li potvrdit reset telefonu, musíte provést gesto odemknutí." + "Nakreslete své bezpečnostní gesto" + "Chcete-li potvrdit resetování telefonu, musíte nakreslit bezpečnostní gesto." "Pokus o reset se nezdařil, protože služba System Clear není dostupná." "Formátovat kartu SD" "Vymaže všechna data na kartě SD" @@ -472,12 +473,12 @@ "Formátovat kartu SD" "Formátování karty SD. Chcete smazat všechna svoje média? Akci nelze vrátit zpět." "Smazat vše" - "Nakreslete odemykací obrazec" - "Formátování karty SD je potřeba potvrdit nakreslením odemykacího obrazce." + "Nakreslete své bezpečnostní gesto" + "Formátování karty SD je potřeba potvrdit nakreslením bezpečnostního gesta." "Nastavení hovorů" "Umožňuje nastavit hlasovou schránku, přesměrování hovorů, další hovory na lince a ID volajícího" "Mobilní sítě" - "Umožňuje nastavit možnosti roamingu, sítí a názvy AP" + "Umožňuje nastavit možnosti roamingu, sítí a názvy přístupových bodů" "Zdroje polohy" "Zaměření přes bezdrátové sítě" "Zobrazuje polohu v aplikacích (jako Mapy) pomocí bezdrátových sítí" @@ -495,37 +496,37 @@ "Licence open source" "Při načítání licencí došlo k chybě." "Načítání..." - "Gesto odemknutí obrazovky" - "Změna gesta odemknutí" + "Gesto pro odemknutí obrazovky" + "Změna bezpečnostního gesta" "Potvrďte uložené gesto" "Zkuste to prosím znovu:" - "Proveďte gesto odemknutí" + "Nakreslete své bezpečnostní gesto." "Nápovědu zobrazíte stisknutím klávesy Menu." "Na závěr zdvihněte prst z obrazovky." "Minimální počet spojených teček je %d. Zkuste to znovu:" "Gesto bylo zaznamenáno." - "Proveďte gesto znovu pro potvrzení:" - "Nové gesto odemknutí:" + "Pro potvrzení nakreslete gesto znovu:" + "Nové bezpečnostní gesto:" "Potvrdit" "Nakreslit znovu" "Zkusit znovu" "Pokračovat" - "Gesto odemknutí" + "Bezpečnostní gesto" "Požadovat gesto" - "Obrazovku je nutné odemknout gestem ruky" - "Použití viditelného vzoru" + "Obrazovku je nutné odemknout pomocí bezpečnostního gesta" + "Použití viditelného gesta" "Použití dotykového ověření" - "Nastavení gesta odemknutí" - "Změna gesta odemknutí" - "Gesto odemknutí obrazovky proveďte tímto způsobem" + "Nastavení bezpečnostního gesta" + "Změna bezpečnostního gesta" + "Bezpečnostní gesto nakreslíte takto" "Příliš mnoho neplatných pokusů." "Sekundy zbývající do dalšího pokusu: %d." "Zrušit" "Další" "Zabezpečení telefonu" - "Chraňte svůj telefon před nepovoleným použitím vytvořením osobního gesta odemknutí. "\n\n"1""  Na dalším snímku uvidíte příklad takového gesta. "\n\n"2""  Až budete připraveni, proveďte své osobní gesto odemknutí. Vyzkoušejte více gest, ale vždy spojte alespoň čtyři tečky. "\n\n"3""  Opakujte gesto pro potvrzení. "\n\n"Jste připraveni začít? Zvolte tlačítko Další "". "\n\n"Chcete-li ponechat telefon nezabezpečený, zvolte tlačítko Storno." + "Chraňte svůj telefon před nepovoleným použitím vytvořením osobního bezpečnostního gesta. "\n\n"1"" Příklad takového gesta uvidíte na dalším snímku. "\n\n"2"" Až budete připraveni, nakreslete své osobní bezpečnostní gesto. Vyzkoušejte více gest, ale vždy spojte alespoň čtyři tečky. "\n\n"3"" Chcete-li gesto potvrdit, zopakujte je. "\n\n"Jste připraveni začít? Zvolte tlačítko Další "". "\n\n"Chcete-li ponechat telefon nezabezpečený, zvolte tlačítko Zrušit." "Příklad gesta" - "Spojte alespoň čtyři tečky."\n" "\n"Až budete připraveni provést vlastní gesto, zvolte tlačítko Další." + "Spojte alespoň čtyři tečky."\n" "\n"Až budete připraveni nakreslit vlastní gesto, zvolte tlačítko Další." "Správa aplikací" "Spravovat a odebrat instalované aplikace" "Aplikace" @@ -622,7 +623,10 @@ "Obrazovka se při nabíjení nepřepne do režimu spánku" "Povoluje simulované polohy" "Povoluje simulované polohy" - "Zvolte gadget" + + + + "Podrobnosti pro UID %d" "UID %1$d" "Podrobnosti o používání sítě aplikací %1$s:" @@ -641,10 +645,22 @@ "Balíčky sdílející toto UID:" "Údaje o využití baterie nejsou k dispozici" "Senzor:" + + "Senzor je používán následujícími balíčky:" "Použito %1$dkrát balíčkem %2$s" "Použito %1$dkrát některým z následujících:" + + + + + + + + "Doba se zapnutou obrazovkou:" + + "Na baterii:" "Připojeno:" "Statistika použití" diff --git a/res/values-de/arrays.xml b/res/values-de/arrays.xml index 5cc368f1de9..e3f0ec16127 100644 --- a/res/values-de/arrays.xml +++ b/res/values-de/arrays.xml @@ -55,18 +55,15 @@ "Niemals im Netzbetrieb" "Niemals" - - "CPU-Verwendung" - "Netzwerk-Nutzung" - "Sensornutzung" - "Display eingeschaltet" - - - "Seit Gerätzurücksetzung" - "Vor dem letzten Starten" - "Seit dem letzten Starten" - "Seit dem letzten Ausstecken" - + + + + + + + + + "Nutzungszeit" "Startzähler" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index e1f2ea48d11..68790d5c5cc 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -94,23 +94,24 @@ "Nicht verbunden" "Verbindung wird getrennt..." "Verbindung wird hergestellt..." - + "Pairing mit diesem Gerät" "Pairing…" - "Gepaart. Nicht verbunden." + + "Freisprechfunktion/Headset" "Scannen..." "Bluetooth-Pairing-Anfrage" "Pairing-Anfrage" - "Zum Pairing auswählen" + "Zum Pairing auswählen " "Einstellungen" "1:00" "13:00" "Zeitzone auswählen" "Vorschau:" "Schriftgröße:" - + "broadcast senden" "Action:" @@ -429,7 +430,7 @@ "SD-Karte formatieren" "SD-Karte formatieren (löschen)" "Nicht verfügbar" - "(schreibgeschützt)" + " (schreibgeschützt)" "Akkustatus" "Akkuladung" "APNs" @@ -622,7 +623,10 @@ "Display wird beim Laden nie in den Ruhezustand versetzt" "Falsche Standorte zulassen" "Falsche Standorte zulassen" - "Gadget auswählen" + + + + "Details für UID %d" "UID %1$d" "Netzwerk-Nutzungsdetails für %1$s:" @@ -641,10 +645,22 @@ "Pakete, die diese UID teilen:" "Keine Akku-Nutzungsdaten verfügbar" "Sensor:" + + "Sensor verwendet von Paketen:" "%1$d mal von %2$s verwendet" "%1$d mal von einem der folgenden verwendet:" + + + + + + + + "Zeit mit Display eingeschaltet:" + + "Auf Akku:" "Eingesteckt:" "Nutzungsstatistik" diff --git a/res/values-es/arrays.xml b/res/values-es/arrays.xml index 8639cfe886f..3129a7211d1 100644 --- a/res/values-es/arrays.xml +++ b/res/values-es/arrays.xml @@ -55,18 +55,15 @@ "Nunca si está conectado" "Nunca" - - "Uso de CPU" - "Uso de red" - "Uso del sensor" - "Tiempo de pantalla activa" - - - "Desde el restablecimiento del dispositivo" - "Antes del último reinicio" - "Desde el último reinicio" - "Desde la última vez que se desconectó" - + + + + + + + + + "Tiempo de uso" "Número de inicios" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index b860facd8db..e22ee4b130f 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -16,8 +16,8 @@ "Desconocido" - "Activar radio" - "Desactivar radio" + "Activar señal móvil" + "Desactivar señal móvil" "Habilitar registro QXDM de SD" "Inhabilitar registro QXDM de SD" "Ver libreta de direcciones de tarjeta SIM" @@ -31,7 +31,7 @@ "En servicio" "Fuera de servicio" "Sólo llamadas de emergencia" - "Radio desconectada" + "Señal móvil desactivada" "Itinerancia" "Sin itinerancia" "Inactivo" @@ -48,7 +48,7 @@ "asu" "LAC" "CID" - "Desmontar tarjeta SD" + "Desactivar tarjeta SD" "Formatear tarjeta SD" "Pequeño" "Mediano" @@ -94,23 +94,23 @@ "Desconectada" "Desconectando..." "Estableciendo conexión..." - + "Sincronizar con este dispositivo" "Sincronizando..." - "Sincronizado. Desconectada." + "Sincronizado pero no conectado" "manos libres/auriculares" "Buscando..." "Solicitud de sincronización de Bluetooth" "Solicitud de sincronización" - "Seleccionar dispositivo para sincronización" + "Seleccionar dispositivo para sincronización " "Configuración de fecha y hora" "1:00 p.m." "13:00" "Seleccionar zona horaria" "Vista previa:" "Tamaño de fuente:" - + "Enviar broadcast" "Action:" @@ -144,10 +144,10 @@ "Intensidad de la señal:" "Estado de la llamada:" "PPP enviado:" - "Restablecimientos de radio:" + "Restablecimientos de señal móvil:" "Mensaje en espera:" "Número de teléfono:" - "Seleccionar banda de radio" + "Seleccionar banda de señal móvil" "Tipo de red:" "Establecer tipo de red preferido:" "Hacer ping a DirIP:" @@ -167,14 +167,14 @@ "Los cambios se aplican cuando se vuelve a conectar el cable USB." "Habilitar almacenamiento masivo USB" "Bytes totales:" - "Ninguna tarjeta SD" + "Falta la tarjeta SD" "Bytes disponibles:" "La tarjeta SD se está utilizando como dispositivo de almacenamiento masivo." - "Ahora es seguro extraer la tarjeta SD." + "Es seguro extraer la tarjeta SD" "La tarjeta SD se ha extraído mientras estaba en uso." "Bytes utilizados:" "Buscando medios en tarjeta SD..." - "Tarjeta SD montada en modo de sólo lectura" + "Tarjeta SD activada en modo de sólo lectura" "Siguiente" "Configuración local" "Selecciona el idioma que prefieras." @@ -212,7 +212,7 @@ "Bluetooth" "Activar Bluetooth" "Bluetooth" - "Configuración de Bluetooth" + "Ajustes de Bluetooth" "Administrar conexiones, establecer el nombre del dispositivo y la visibilidad" "Solicitud de sincronización de Bluetooth" "Información de dispositivo Bluetooth" @@ -405,7 +405,7 @@ "Estado" "IMEI, número de teléfono, señal, etc." "Almacenamiento" - "Tarjeta de SD sin montar, ver almacenamiento disponible" + "Tarjeta de SD sin activar, ver almacenamiento disponible" "Número de teléfono" "Tipo de red móvil" "Estado de red móvil" @@ -424,12 +424,12 @@ "Tarjeta SD" "Espacio disponible" "Espacio total" - "Desmontar tarjeta SD" - "Desmonta la tarjeta SD para extraerla con seguridad" + "Desactivar tarjeta SD" + "Desactiva la tarjeta SD antes de extraerla para evitar la pérdida de datos." "Formatear tarjeta SD" "Formatear (borrar) la tarjeta SD" "No disponible" - "(Sólo lectura)" + " (Sólo lectura)" "Estado de la batería" "Nivel de batería" "APN" @@ -479,7 +479,7 @@ "Redes móviles" "Establecer opciones para itinerancia, redes, APN" "Fuentes de Mi Ubicación" - "Utilizar redes inalámbricas" + "Usar redes inalámbricas" "Para ver una ubicación en aplicaciones (por ejemplo, Google Maps)" "Ubicación determinada por redes móviles o Wi-Fi" "Habilitar satélites GPS" @@ -500,7 +500,7 @@ "Confirmar patrón guardado" "Inténtalo de nuevo:" "Crear un patrón de desbloqueo" - "Pulsa MENU para obtener ayuda." + "Pulsa la tecla de menú para obtener ayuda." "Levanta el dedo cuando termines." "Une al menos %d puntos. Inténtalo de nuevo:" "Patrón grabado" @@ -509,7 +509,7 @@ "Confirmar" "Crear un patrón nuevo" "Reintentar" - "Continuar" + "Seguir" "Patrón de desbloqueo" "Patrón obligatorio" "Se debe crear un patrón para desbloquear la pantalla." @@ -521,11 +521,11 @@ "Se han realizado demasiados intentos incorrectos." "Espera %d segundos y vuelve a intentarlo." "Cancelar" - "Siguiente" + "Seguir" "Protección del teléfono" - "Protege el teléfono de usos no autorizados mediante la creación de un patrón de desbloqueo de pantalla personal. "\n\n"1""  En la siguiente pantalla, puedes observar cómo se crea un patrón de ejemplo. "\n\n"2""  Cuando estés preparado, crea tu propio patrón de desbloqueo personal. Puedes experimentar con distintos patrones, pero recuerda que debes conectar al menos cuatro puntos. "\n\n"3""  Vuelve a dibujar el patrón para confirmarlo. "\n\n"Si estás preparado para comenzar, selecciona \"Siguiente\""". "\n\n"Para dejar el teléfono desprotegido, selecciona \"Cancelar\"." + "Protege el teléfono de usos no autorizados mediante la creación de un patrón de desbloqueo de pantalla personal. "\n\n"1"" En la siguiente pantalla, puedes observar cómo se crea un patrón de ejemplo. "\n\n"2"" Cuando estés preparado, crea tu propio patrón de desbloqueo personal. Puedes experimentar con distintos patrones, pero recuerda que debes conectar al menos cuatro puntos. "\n\n"3"" Vuelve a dibujar el patrón para confirmarlo. "\n\n"Si estás preparado para comenzar, selecciona \"Seguir\""". "\n\n"Para dejar el teléfono desprotegido, selecciona \"Cancelar\"." "Patrón de ejemplo" - "Une al menos cuatro puntos."\n" "\n"Selecciona \"Siguiente\" cuando estés preparado para crear tu propio patrón." + "Une al menos cuatro puntos."\n" "\n"Selecciona \"Seguir\" cuando estés preparado para crear tu propio patrón." "Administrar aplicaciones" "Administrar y eliminar aplicaciones instaladas" "Aplicaciones" @@ -573,13 +573,13 @@ "Calculando…" "No se ha podido calcular el tamaño del paquete." "No tienes instalada ninguna aplicación externa." - "Ajuste regional y de texto" - "Establecer opciones de autocorrección, introducción de texto y configuración local (idioma y país)" + "Idioma y país" + "Configuración local, opciones de autocorrección e introducción de texto" "Configuración local" "Configuración de texto" "Seleccionar configuración local" "Seleccionar idioma y región" - "Reemplazar automáticamente" + "Corrección automática" "Corregir palabras con errores de escritura" "Mayúsculas automáticas" "Escribir en mayúsculas la primera letra de las frases" @@ -622,7 +622,10 @@ "La pantalla nunca entra en modo de suspensión durante la carga" "Permitir ubicaciones simuladas" "Permitir ubicaciones simuladas" - "Seleccionar gadget" + + + + "Detalles del ID único %d" "ID único %1$d" "Detalles de uso de red para %1$s:" @@ -641,10 +644,22 @@ "Paquetes que comparten este ID único:" "No hay datos disponibles sobre el uso de la batería." "Sensor:" + + "Sensor utilizado por paquetes:" "Utilizado %1$d veces por %2$s" "Utilizado %1$d veces por uno de:" + + + + + + + + "Tiempo transcurrido con la pantalla encendida:" + + "En la batería:" "Conectado:" "Estadísticas de uso" diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml index a371ee83b60..65171143e93 100644 --- a/res/values-fr/arrays.xml +++ b/res/values-fr/arrays.xml @@ -34,7 +34,7 @@ "Automatique" - "Aucun" + "Aucune" "WEP" "WPA personnel" "WPA2 personnel" @@ -55,18 +55,15 @@ "Jamais si branché" "Jamais" - - "Utilisation de l\'UC" - "Utilisation du réseau" - "Utilisation du capteur" - "Écran actualisé" - - - "Depuis la réinitialisation de l\'appareil" - "Avant le dernier démarrage" - "Depuis le dernier démarrage" - "Depuis le dernier débranchement" - + + + + + + + + + "Temps d\'utilisation" "Nombre de lancements" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index d23ac483526..7d8e534ebd4 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -21,12 +21,12 @@ "Activer le journal SD QXDM" "Désactiver le journal QXMD SD" "Afficher le carnet d\'adresses de la carte SIM" - "Afficher les numéros de numérotation fixe" + "Afficher les numéros autorisés" "Afficher les numéros de service" "Récupérer la liste PDP" "Activer la connexion des données" "Désactiver la connexion des données" - "Activer les données lors du démarrage" + "Activer les données au démarrage" "Désactiver les données lors du démarrage" "Service en cours" "Hors-service" @@ -58,7 +58,7 @@ "État de la batterie :" "Batterie :" "Niveau de la batterie :" - "Santé de la batterie :" + "État de la batterie :" "Technologie de la batterie :" "Voltage de la batterie :" "mV" @@ -94,23 +94,23 @@ "Déconnecté" "Déconnexion…" "Connexion…" - + "Associer à ce périphérique" "Association…" - "Associé. Déconnecté." + "Associé mais non connecté" "mains libres/casque" "Recherche" "Demande d\'association Bluetooth" "Demande d\'association" - "Sélectionner pour associer à" + "Sélectionner pour associer à " "Paramètres d\'heure et de date" "13:00 h" "13:00" "Choisir fuseau horaire" "Aperçu :" "Taille de police :" - + "Envoyer broadcast" "Action :" @@ -173,7 +173,7 @@ "Vous pouvez maintenant retirer la carte SD en toute sécurité." "La carte SD a été retirée pendant son utilisation !" "Octets utilisés :" - "Recherche de médias sur la carte SD…" + "Recherche de fichiers multimédia sur la carte SD…" "Carte SD montée en lecture seule" "Suivant" "Paramètres régionaux" @@ -192,7 +192,7 @@ "Désactiver toutes les connexions sans fil" "Désactivation des connexions sans fil…" "Activation des connexions sans fil…" - "Commandes sans fil" + "Connexions sans fil" "Gérer le Wi-Fi, le mode Bluetooth, le mode avion et les réseaux mobiles" "Date et heure" "Configurer la date, l\'heure, le fuseau horaire et les formats" @@ -203,10 +203,10 @@ "Définir l\'heure" "Choisir un fuseau horaire" "Définir la date" - "Sélectionner un format de date" + "Sélectionner format de date" "Trier par ordre alphabétique" "Trier par fuseau horaire" - "Sécurité et position géo." + "Sécurité et localisation" "Définir Ma position, le déverrouillage de l\'écran et le blocage de la carte SIM" "Mots de passe" "Bluetooth" @@ -229,7 +229,7 @@ "Déconnecter et dissocier" "Options…" "Se connecter à…" - "Médias" + "Multimédia" "Téléphone" "Connecté aux paramètres audio du média" "Connecté aux paramètres audio du téléphone" @@ -248,7 +248,7 @@ "Paramètres Wi-Fi" "Paramètres Wi-Fi" "Configurer et gérer les points d\'accès sans fil" - "Oublier" + "Retirer" "État" "Vitesse" "Excellente" @@ -276,14 +276,14 @@ "Impossible de se connecter au réseau." "Impossible d\'enregistrer le réseau" "Se connecter" - "Se connecter à %1$s" + "Connexion à %1$s" "Mot de passe sans fil" "Touche hex WEP (0-9, A-F)" "Afficher le mot de passe" "Rechercher" "Hors de portée" "Réseaux enregistrés" - "Échec de la connexion. Veuillez sélectionner cette option pour réessayer." + "Échec de la connexion. Sélectionnez cette option pour réessayer." "Réseaux Wi-Fi" "SSID du réseau" "Sécurité" @@ -306,7 +306,7 @@ "Passerelle" "Masque de réseau" "Se connecter au réseau" - "Oublier le réseau" + "Retirer le réseau" "Modifier le mot de passe" "Avancés" "Domaine régulateur" @@ -337,12 +337,12 @@ "Paramètres sonores" "Configurer les sonneries, les notifications et la luminosité de l\'écran" "Mode silencieux" - "Tous les sons sauf pour les médias et les alarmes sont en mode silencieux" + "Aucun son sauf pour le multimédia et le réveil" "Sonnerie du téléphone" "Configurer la sonnerie par défaut pour les appels entrants" "Volume de la sonnerie" "Régler le volume pour les appels entrants" - "Vibration du téléphone" + "Vibreur" "Activer le vibreur pour les appels entrants" "Sonnerie de notification" "Définir votre sonnerie de notification par défaut" @@ -350,14 +350,14 @@ "Volume des notifications" "Utiliser le volume des appels entrants pour les notifications" "Sélectionner une sonnerie de notification" - "Volume des médias" - "Régler le volume de la musique et des vidéos" + "Volume" + "Régler le volume pour la musique et les vidéos" "Tonalité touches audible" - "Jouer des tonalités lors de l\'utilisation du clavier" - "Jouer les tonalités lors de l\'utilisation du clavier" - "Sélection audible" + "Activer la tonalité des touches du clavier" + "Activer la tonalité des touches du clavier" + "Sélections audibles" "Lire les sons lors des sélections à l\'écran" - "Lire le son lors des sélections à l\'écran" + "Jouer un son lors des sélections à l\'écran" "Notifications de la carte SD" "Désactiver les notifications sonores de la carte SD" "Activer les notifications sonores de la carte SD" @@ -365,19 +365,19 @@ "Sélectionner les applications à synchroniser" "Afficher les paramètres" "Animation" - "Afficher l\'animation lors de l\'ouverture/fermeture de fenêtres" - "Afficher l\'animation lors de l\'ouverture/fermeture de fenêtres" + "Animation lors de l\'ouverture et la fermeture de fenêtres" + "Animation lors de l\'ouverture et la fermeture de fenêtres" "Luminosité" "Régler la luminosité de l\'écran" "Mise en veille de l\'écran" "Définir le délai avant la mise hors tension automatique de l\'écran" - "Paramètres de blocage de la carte SIM" + "Paramètres de blocage carte SIM" "Configurer blocage SIM" "Blocage de la carte SIM" "Bloquer la carte SIM" "Demander le code PIN pour utiliser le téléphone" "Demander le code PIN pour utiliser le téléphone" - "Modifier le code PIN de la carte SIM" + "Modifier PIN de la carte SIM" "Code PIN de la carte SIM" "Bloquer la carte SIM" "Débloquer la carte SIM" @@ -429,7 +429,7 @@ "Formater la carte SD" "Formater (effacer) la carte SD" "Non disponible" - "(Lecture seule)" + " (Lecture seule)" "État de la batterie" "Niveau de la batterie" "APN" @@ -457,8 +457,8 @@ "Le champ Nom de point d\'accès (APN) doit être renseigné." "Le champ MCC doit contenir 3 chiffres." "Le champ MNC doit contenir 2 ou 3 chiffres." - "Réinitialisation des valeurs d\'usine" - "Efface toutes les données du téléphone" + "Réinit. valeurs d\'usine" + "Effacer toutes les données du téléphone" "Cette action réinitialisera le téléphone à ses valeurs d\'usine et effacera toutes les données et applications téléchargées !" "Réinitialiser le téléphone" "Réinitialiser le téléphone et effacer toutes les données et applications ? Cette action ne peut être inversée." @@ -484,7 +484,7 @@ "Position géographique déterminée par réseaux Wi-Fi et/ou mobile" "Activer les satellites GPS" "Localisation précise au niveau de la rue lors du positionnement géographique (désélectionner pour économiser la batterie)" - "Localiser au niveau rue (requiert + de batterie que la vue du ciel)" + "Localiser au niveau rue (requiert + de batterie et une vue dégagée)" "À propos du téléphone" "Informations légales, état du téléphone et version du logiciel" "Informations légales" @@ -492,7 +492,7 @@ "Copyright" "Licence" "Conditions d\'utilisation" - "Ouvrir les licences sources" + "Ouvrir licences source" "Un problème est survenu lors du chargement des licences." "Chargement..." "Motif de déverrouillage de l\'écran" @@ -523,7 +523,7 @@ "Annuler" "Suivant" "Sécurisation de votre téléphone" - "Protégez votre téléphone contre toute utilisation non autorisée en créant un motif personnel de déverrouillage de l\'écran."\n\n"1"" L\'écran suivant vous présente un exemple de motif. "\n\n"2"" Lorsque vous êtes prêt, dessinez votre propre motif de déverrouillage. Essayez différents motifs, mais reliez au moins quatre points."\n\n"Reproduisez votre motif pour confirmer."\n\n"Vous êtes prêt à commencer ? Sélectionnez Suivant."\n\n"Pour laisser votre téléphone sans protection, sélectionnez Annuler." + "Protégez votre téléphone contre toute utilisation non autorisée en créant un motif personnel de déverrouillage de l\'écran."\n\n"1"" L\'écran suivant vous présente un exemple de motif. "\n\n"2"" Lorsque vous êtes prêt, dessinez votre propre motif de déverrouillage. Essayez différents motifs, mais reliez au moins quatre points."\n\n"Reproduisez votre motif pour confirmer."\n\n"Pour commencer, sélectionnez \"Suivant\"."\n\n"Si vous ne souhaitez pas activer cette protection, sélectionnez \"Annuler\"." "Exemple de motif" "Reliez au moins quatre points."\n" "\n"Sélectionnez \"Suivant\" lorsque vous voulez créer votre propre motif." "Gérer les applications" @@ -556,7 +556,7 @@ "Trier par taille" "Gérer l\'espace" "Filtrer" - "Sélectionner les options du filtre" + "Options du filtre" "Tous" "Tiers" "En cours d\'exécution" @@ -579,11 +579,11 @@ "Paramètres du texte" "Langue et région" "Sélectionner une langue et un pays" - "Remplacement auto." + "Remplacement auto" "Corriger les mots mal saisis" - "Maj auto" + "Majuscule auto" "Mettre une majuscule en début de phrase" - "Ponctuation auto." + "Ponctuation auto" "Paramètres du clavier physique" "Appuyez deux fois sur la touche Espace pour insérer \".\"" "Mots de passe visibles" @@ -613,7 +613,7 @@ "Raccourcis" "Saisie de texte" "Gérer les options de saisie de texte" - "%s paramètres" + "Paramètres %s" "Développement" "Définir les options pour le développement de l\'application" "Débogage USB" @@ -622,7 +622,10 @@ "L\'écran ne se met jamais en veille lors du chargement" "Autoriser les positions géographiques fictives" "Positions fictives" - "Choisir un gadget" + + + + "Détails de l\'UID %d" "UID %1$d" "Données d\'utilisation du réseau pour %1$s :" @@ -641,10 +644,22 @@ "Paquets partageant cet UID :" "Aucune donnée sur l\'utilisation de la batterie disponible" "Capteur :" + + "Capteur utilisé par les kits :" "Utilisé %1$d fois par %2$s" "Utilisé %1$d fois par l\'une des applications suivantes :" + + + + + + + + "Temps utilisé avec l\'écran activé :" + + "Sur la batterie :" "Branchée :" "Données statistiques" diff --git a/res/values-it/arrays.xml b/res/values-it/arrays.xml index 42373e0c3fd..b27d0c657b3 100644 --- a/res/values-it/arrays.xml +++ b/res/values-it/arrays.xml @@ -55,18 +55,15 @@ "Mai quando collegato" "Mai" - - "Utilizzo CPU" - "Utilizzo della rete" - "Utilizzo sensore" - "Tempo accensione schermo" - - - "Da ripristino dispositivo" - "Prima di ultimo avvio" - "Da ultimo avvio" - "Da ultimo scollegamento" - + + + + + + + + + "Tempo di utilizzo" "Conteggio avvii" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 4b0b22f5073..24efd38c499 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -16,8 +16,8 @@ "Sconosciuto" - "Accendi radio" - "Disattiva radio" + "Attiva segnale cellulare" + "Disattiva segnale cellulare" "Attiva log SD QXDM" "Disattiva log SD QXDM" "Visualizza rubrica SIM" @@ -31,7 +31,7 @@ "In servizio" "Fuori servizio" "Solo chiamate di emergenza" - "Radio disattivata" + "Segnale cellulare disattivato" "Roaming" "Non roaming" "Inattivo" @@ -65,8 +65,8 @@ "Temperatura batteria:" "°C" "Tempo dall\'avvio:" - "Tempo riattivazione batteria:" - "Tempo riattivazione durante la carica:" + "Tempo di attività con batteria:" + "Tempo di attività sotto carica:" "Tempo accensione schermo:" "Sconosciuta" "In carica" @@ -94,23 +94,23 @@ "Disconnesso" "Disconnessione..." "Connessione..." - + "Accoppia con il dispositivo" "Accoppiamento..." - "Accoppiato. Disconnesso." + "Accoppiati ma non connessi" "vivavoce/auricolare" "Ricerca" "Richiesta accoppiamento Bluetooth" "Richiesta accoppiamento" - "Seleziona per accoppiare" + "Seleziona per accoppiare " "Impostazioni data e ora" "1:00 pm" "13:00" "Seleziona fuso orario" "Anteprima:" "Dimensioni carattere:" - + "Invia broadcast" "Action:" @@ -144,7 +144,7 @@ "Intensità segnale:" "Stato chiamata:" "PPP inviato:" - "Reimpostazioni radio:" + "Reimpostaz. segnale cellulare:" "Messaggio in attesa:" "Numero di telefono:" "Seleziona banda radio" @@ -248,12 +248,12 @@ "Impostazioni Wi-Fi" "Impostazioni Wi-Fi" "Configura e gestisci punti di accesso wireless" - "Ignora" + "Elimina" "Stato" "Velocità" "Eccellente" "Buona" - "Mediocre" + "Discreta" "Scarsa" "Protezione" "Apri" @@ -282,7 +282,7 @@ "Mostra password." "Scansione" "Fuori portata" - "Memorizzato" + "Memorizzata" "Connessione non riuscita. Seleziona per riprovare" "Reti Wi-Fi" "SSID rete" @@ -306,21 +306,21 @@ "Gateway" "Maschera di rete" "Connetti a rete" - "Ignora rete" + "Elimina rete" "Cambia password" "Avanzate" "Dominio regolatore" "Imposta il numero di canali da usare" "Errore durante l\'impostazione del dominio regolatore." "%1$d canali" - "Criterio di sospensione Wi-Fi" + "Criteri di sospensione Wi-Fi" "Specifica quando passare da Wi-Fi a dati cellulare" - "Errore durante l\'impostazione del criterio di sospensione." + "Errore durante l\'impostazione dei criteri di sospensione." "Indirizzo MAC" "Ricerca..." "Connessione a %1$s..." "Autenticazione con %1$s..." - "Ottenimento indirizzo IP da %1$s..." + "Acquisizione indirizzo IP da %1$s..." "Connesso a %1$s" "Disconnessione da %1$s..." "Disconnesso" @@ -328,13 +328,13 @@ "Ricerca..." "Connessione..." "Autenticazione..." - "Ottenimento indirizzo..." - "Connessa" + "Acquisizione indirizzo..." + "Connesso" "Disconnessione..." "Disconnesso" "Non riuscita" - "Toni e display" - "Impostazioni toni" + "Audio e display" + "Impostazioni audio" "Imposta suonerie, notifiche e luminosità dello schermo" "Modalità silenziosa" "Tutti i suoni eccetto quelli multimediali verranno disattivati" @@ -350,7 +350,7 @@ "Volume notifiche" "Usa volume chiamate in entrata per le notifiche" "Seleziona suoneria notifica" - "Volume media" + "Volume app. multimediali" "Imposta il volume di musica e video" "Toni udibili al tocco" "Riproduci toni durante la composizione" @@ -360,7 +360,7 @@ "Riproduci toni durante una selezione sullo schermo" "Notifiche scheda SD" "Disattiva i suoni di notifica della scheda SD" - "Attiva\ni suoni di notifica della scheda SD" + "Attiva suoni di notifica della scheda SD" "Sincronizzazione dati" "Seleziona le applicazioni da sincronizzare" "Impostazioni display" @@ -372,7 +372,7 @@ "Timeout schermo" "Regola il tempo che deve trascorrere prima che lo schermo si spenga automaticamente" "Impostazioni blocco SIM" - "Configurazione blocco SIM" + "Impostazioni blocco SIM" "Blocco della SIM" "Blocca SIM" "Richiedi il PIN per l\'uso del telefono" @@ -393,7 +393,7 @@ "OK" "Annulla" "Stato telefono" - "Aggiornamenti di sistema" + "Aggiornamenti sistema" "Verifica aggiornamenti di sistema" "Versione firmware" "Numero modello" @@ -403,9 +403,9 @@ "Non disponibile" "Stato" "Stato" - "IMEI, numero di telefono, segnale etc." - "Scheda SD e memoria telefono" - "Smonta la scheda SD, visualizza lo spazio di archiviazione disponibile" + "IMEI, numero di telefono, segnale ecc." + "Scheda SD e memoria" + "Smonta la scheda SD, visualizza spazio di archiviazione disponibile" "Numero di telefono" "Tipo di rete cellulare" "Stato rete cellulare" @@ -429,7 +429,7 @@ "Formatta scheda SD" "Formatta (cancella) la scheda SD" "Non disponibile" - "(Sola lettura)" + " (Sola lettura)" "Stato batteria" "Livello batteria" "APN" @@ -480,7 +480,7 @@ "Imposta le opzioni per roaming, reti e APN" "Fonti localizzazione personali" "Usa reti wireless" - "Visualizza la posizione nelle applicazioni (ad esempio Mappe) utilizzando le reti wireless" + "Visualizza la posizione nelle applicazioni (ad esempio Maps) utilizzando le reti wireless" "Posizione determinata dalle reti mobili e/o Wi-Fi" "Attiva satelliti GPS" "Durante localizzazione, accuratezza a livello stradale (deselezionare per risparmiare batteria)" @@ -515,7 +515,7 @@ "Devi inserire la sequenza per sbloccare lo schermo" "Usa sequenza visibile" "Usa reazione tattile" - "Imposta sequenza di sblocco" + "Imposta sequenza" "Cambia sequenza di sblocco" "Procedura per l\'impostazione di una sequenza di sblocco" "Troppi tentativi errati." @@ -529,7 +529,7 @@ "Gestisci applicazioni" "Gestisci e rimuovi applicazioni installate" "Applicazioni" - "Gestisci le applicazioni, imposta i collegamenti di avvio rapido" + "Gestisci le applicazioni, imposta le scorciatoie di avvio rapido" "Impostazioni applicazione" "Origini sconosciute" "Consenti l\'installazione di applicazioni non commerciali" @@ -542,7 +542,7 @@ "Cancella cache" "Cache" "Controlli" - "Forza interruzione" + "Termina" "Totale" "Applicazione" "Dati" @@ -569,15 +569,15 @@ "Applicazione non trovata" "Impossibile trovare l\'applicazione \nnell\'elenco di applicazioni installate." "Impossibile cancellare i dati dell\'applicazione." - "Contenuto a cui può accedere l\'applicazione sul telefono:" + "Contenuti a cui può accedere l\'applicazione sul telefono:" "Elaborazione..." "Impossibile stabilire le dimensioni del pacchetto" "Nessuna applicazione di terze parti installata." - "Impostazioni internazionali e testo" - "Imposta opzioni internazionali (lingua e regione), di inserimento e correzione automatica del testo" - "Impostazione locale" + "Lingua e testo" + "Impostazioni internazionali (lingua e regione), di inserimento e correzione automatica del testo" + "Impostazioni lingua" "Impostazioni testo" - "Seleziona impost. internaz." + "Seleziona lingua" "Seleziona lingua e regione" "Sostituzione automatica" "Corregge le parole con errori di ortografia" @@ -601,17 +601,17 @@ "Informazioni batteria" "Cronologia batteria" "Avvio rapido" - "Imposta tasti di scelta rapida per avviare le applicazioni" + "Imposta scorciatoie da tastiera per avviare le applicazioni" "Assegna applicazione" - "Nessun collegamento" + "Nessuna scorciatoia" "Cerca + %1$s" "Cancella" - "Il collegamento per %1$s (%2$s) verrà cancellato." + "La scorciatoia per %1$s (%2$s) verrà cancellata." "OK" "Annulla" "Applicazioni" - "Collegamenti" - "Inserim. testo" + "Scorciatoie" + "Inserimento testo" "Gestisci opzioni inserimento testo" "Impostazioni %s" "Sviluppo" @@ -619,10 +619,13 @@ "Debug USB" "Modalità debug quando è connesso USB" "Rimani attivo" - "Lo schermo non diventa mai inattivo sotto carica" - "Consenti posizioni fittizie" + "Lo schermo non va mai in stand-by se sotto carica" + "Posizioni fittizie" "Consenti posizioni fittizie" - "Scegli gadget" + + + + "Dettagli per UID %d" "UID %1$d" "Dettagli di utilizzo della rete per %1$s:" @@ -641,10 +644,22 @@ "Pacchetti che condividono questo UID:" "Dati sull\'utilizzo della batteria non disponibili" "Sensore:" + + "Sensore usato dai pacchetti:" "Usato %1$d volte da %2$s" "Usato %1$d volte da uno di:" + + + + + + + + "Tempo trascorso con schermo acceso:" + + "A batteria:" "Collegato:" "Statistiche di utilizzo" diff --git a/res/values-ja/arrays.xml b/res/values-ja/arrays.xml index 4f7d8d55a86..d73a3d7e700 100644 --- a/res/values-ja/arrays.xml +++ b/res/values-ja/arrays.xml @@ -55,18 +55,15 @@ "電源接続時はスリープしない" "スリープしない" - - "CPU使用状況" - "ネットワーク使用状況" - "センサー使用状況" - "画面をONにした時刻" - - - "デバイスリセットからの経過時間" - "前回起動時より前" - "起動時からの経過時間" - "バッテリ使用開始からの経過時間" - + + + + + + + + + "使用時間" "起動回数" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index bc481c22b38..f1c2414fa03 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -94,23 +94,24 @@ "切断" "切断中..." "接続中..." - + "この端末をペアに設定する" "ペアとして設定中..." - "ペア設定。切断。" + + "ハンズフリー/ヘッドセット" "スキャン中" "Bluetoothペア設定リクエスト" "ペア設定リクエスト" - "ペアとして設定" + "ペアとして設定 " "日付形式" "1:00 PM" "13:00" "タイムゾーンの選択" "プレビュー:" "フォントサイズ:" - + "broadcastを送信" "Action:" @@ -429,7 +430,7 @@ "SDカードをフォーマット" "SDカードをフォーマット(消去)" "使用不可" - "(読み取り専用)" + " (読み取り専用)" "電池の状態:" "電池残量" "APN" @@ -622,7 +623,10 @@ "充電中に画面をスリープにしない" "擬似ロケーションを許可" "擬似ロケーションを許可" - "ガジェットを選択" + + + + "UID %dの詳細" "UID %1$d" "%1$sのネットワーク使用状況の詳細:" @@ -641,10 +645,22 @@ "このUIDを共有するパッケージ:" "バッテリ使用状況のデータは利用できません" "センサー:" + + "パッケージで使用されるセンサー:" "%2$sにより%1$d回使用" "次のいずれかにより%1$d回使用:" + + + + + + + + "画面をONで使用した時間:" + + "バッテリ使用開始:" "電源に接続:" "使用統計情報" diff --git a/res/values-ko/arrays.xml b/res/values-ko/arrays.xml index 2399e9d3a18..ac1c6e107ed 100644 --- a/res/values-ko/arrays.xml +++ b/res/values-ko/arrays.xml @@ -55,18 +55,15 @@ "전원에 연결되었을 때는 절전 모드로 전환되지 않음" "전환 안 됨" - - "CPU 사용" - "네트워크 사용" - "센서 사용" - "화면 켜짐 시간" - - - "기기 재설정 이후" - "마지막 부팅 이전" - "마지막 부팅 이후" - "마지막 분리 이후" - + + + + + + + + + "사용 시간" "계수 시작" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 99e965773ae..7d7590fed9f 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -94,23 +94,24 @@ "연결끊김" "연결을 끊는 중..." "연결 중..." - + "이 장치와 페어링" "페어링 중..." - "페어링됨. 연결끊김." + + "핸즈프리/헤드셋" "검색 중" "Bluetooth 페어링 요청" "페어링 요청" - "페어링하려면 선택합니다." + "페어링하려면 선택합니다. " "날짜 및 시간 설정" "1:00 pm" "13:00" "표준시간대 선택" "미리보기:" "글꼴 크기:" - + "broadcast 보내기" "Action:" @@ -429,7 +430,7 @@ "SD 카드 포맷" "SD 카드 포맷(지우기)" "사용할 수 없음" - "(읽기전용)" + " (읽기전용)" "배터리 상태" "배터리 수준" "APN" @@ -622,7 +623,10 @@ "충전하는 동안 화면이 꺼지지 않음" "모의 위치 허용" "모의 위치 허용" - "가젯 선택" + + + + "UID %d의 세부정보" "UID %1$d" "%1$s의 네트워크 사용 세부정보" @@ -641,10 +645,22 @@ "이 UID를 공유하는 패키지" "배터리 사용 데이터가 없습니다." "센서:" + + "패키지가 사용한 센서:" "%2$s에서 %1$d번 사용" "다음 중 하나가 %1$d번 사용:" + + + + + + + + "화면을 켠 상태에서 소비한 시간:" + + "배터리 켜짐 시간:" "연결됨:" "사용 통계" diff --git a/res/values-nb/arrays.xml b/res/values-nb/arrays.xml index 112b38bb53e..e219452c5a6 100644 --- a/res/values-nb/arrays.xml +++ b/res/values-nb/arrays.xml @@ -53,14 +53,15 @@ - - - - - - - - + + + + + + + + + diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index b8da1110f60..f1117586548 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -94,23 +94,23 @@ "Frakoblet" "Kobler fra…" "Kobler til…" - + "Par med denne enheten" "Parer…" - "Paret. Frakoblet." + "Paret" "handsfree/håndsett" "Søker" "Paringsforespørsel for Bluetooth" "Paringsforespørsel" - "Velg å pare med" + "Velg å pare med " "Innstillinger for dato og tid" "1:00 pm" "13:00" "Velg tidssone" "Forhåndsvisning:" "Skriftstørrelse:" - + "Send broadcast" "Action:" @@ -429,7 +429,7 @@ "Formater minnekort" "Formater (fjern alt fra) minnekortet" "Ikke tilgjengelig" - "(skrivebeskyttet)" + " (skrivebeskyttet)" "Batteristatus" "Batterinivå" "APN" @@ -623,6 +623,8 @@ "Tillat manuell plassering" "Tillat manuell plassering" "Velg gadget" + + "Detaljer for UID %d" "UID %1$d" "Nettbruk av %1$s:" @@ -641,10 +643,22 @@ "Pakker som deler denne UID-en:" "Ingen batterihistorikk tilgjengelig" "Sensor:" + + "Sensor brukt av pakker:" "Brukt %1$d ganger av %2$s" "Brukt %1$d ganger av en av:" + + + + + + + + "Tid brukt med skjermen på:" + + "På batteri:" "På nettstrøm:" "Bruksstatistikk" diff --git a/res/values-nl/arrays.xml b/res/values-nl/arrays.xml index 430aab07217..51a48b07e8f 100644 --- a/res/values-nl/arrays.xml +++ b/res/values-nl/arrays.xml @@ -55,18 +55,15 @@ "Nooit indien aangesloten" "Nooit" - - "CPU-gebruik" - "Netwerkgebruik" - "Sensorgebruik" - "Tijd scherm \'aan\'" - - - "Sinds opnieuw instellen van apparaat" - "Voor laatste opstartactie" - "Sinds laatste opstartactie" - "Sinds laatste keer losgekoppeld" - + + + + + + + + + "Gebruikstijd" "Aantal keer gestart" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 1eb22d3c300..6f30611c731 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -94,23 +94,24 @@ "Verbinding verbroken" "Verbinding verbreken..." "Verbinding maken..." - + "Koppelen met dit apparaat" "Koppelen..." - "Gekoppeld. Verbinding verbroken." + + "handsfree/headset" "Scannen" "Bluetooth-koppelingsverzoek" "Koppelingsverzoek" - "Selecteer dit om te koppelen met" + "Selecteer dit om te koppelen met " "Datum- en tijdinstellingen" "13:00 uur" - "13:00" + "01:00:00 PM" "Tijdzone selecteren" "Voorbeeld:" "Lettergrootte:" - + "broadcast verzenden" "Action:" @@ -207,7 +208,7 @@ "Alfabetisch sorteren" "Sorteren op tijdzone" "Beveiliging en locatie" - "\'Mijn locatie\' instellen, scherm deblokkeren en SIM-kaart blokkeren" + "Mijn locatie\' instellen, scherm ontgrendelen en SIM-kaart blokkeren" "Wachtwoorden" "Bluetooth" "Bluetooth inschakelen" @@ -306,7 +307,7 @@ "Gateway" "Netmasker" "Verbinding maken met netwerk" - "Netwerk vergeten" + "Netwerk niet gebruiken" "Wachtwoord wijzigen" "Geavanceerd" "Regulerend domein" @@ -380,7 +381,7 @@ "SIM PIN-code wijzigen" "SIM PIN-code" "SIM-kaart blokkeren" - "SIM-kaart deblokkeren" + "SIM-kaart ontgrendelen" "Oude SIM PIN-code" "Nieuwe SIM PIN-code" "Nieuwe PIN-code nogmaals invoeren" @@ -405,7 +406,7 @@ "Status" "IMEI-nummer, telefoonnummer, signaal, enzovoort" "SD-kaart en telefoongeheugen" - "SD-kaart ontkoppelen, beschikbar opslagruimte weergeven" + "SD-kaart ontkoppelen, beschikbare opslagruimte weergeven" "Telefoonnummer" "Type mobiel netwerk" "Status mobiel netwerk" @@ -429,7 +430,7 @@ "SD-kaart formatteren" "De SD-kaart formatteren (wissen)" "Niet beschikbaar" - "(Alleen-lezen)" + " (Alleen-lezen)" "Accustatus" "Accuniveau" "APN\'s" @@ -463,8 +464,8 @@ "Telefoon opnieuw instellen" "Telefoon opnieuw instellen en alle gegevens en toepassingen wissen? Actie kan niet ongedaan worden gemaakt!" "Alles wissen" - "Teken uw deblokkeringspatroon" - "U moet uw deblokkeringspatroon tekenen om het opnieuw instellen van de telefoon te bevestigen." + "Teken uw ontgrendelingspatroon" + "U moet uw ontgrendelingspatroon tekenen om het opnieuw instellen van de telefoon te bevestigen." "Niet opnieuw ingesteld, omdat de service \'Systeem wissen\' niet beschikbaar is." "SD-kaart formatteren." "Hiermee worden alle gegevens op de SD-kaart gewist" @@ -495,35 +496,35 @@ "Open-sourcelicenties" "Er is een probleem bij het laden van de licenties." "Laden..." - "Deblokkeringspatroon scherm" - "Deblokkeringspatroon wijzigen" + "Ontgrendelingspatroon scherm" + "Ontgrendelingspatroon wijzigen" "Opgeslagen patroon bevestigen" "Probeer het opnieuw:" - "Teken een deblokkeringspatroon" + "Teken een ontgrendelingspatroon" "Druk op \'Menu\' voor hulp." "Haal uw vinger van het scherm als u klaar bent." "Verbind minimaal %d punten. Probeer het opnieuw:" "Patroon opgenomen!" "Teken patroon nogmaals ter bevestiging:" - "Uw nieuwe deblokkeringspatroon:" + "Uw nieuwe ontgrendelingspatroon:" "Bevestigen" "Opnieuw tekenen" "Opnieuw proberen" "Doorgaan" "Deblokkeringspatroon" "Patroon vereist" - "U moet een patroon tekenen om het scherm te deblokkeren" + "U moet een patroon tekenen om het scherm te ontgrendelen" "Zichtbaar patroon gebruiken" "Tastbare feedback gebruiken" - "Deblokkeringspatroon instellen" - "Deblokkeringspatroon wijzigen" - "U tekent als volgt een deblokkeringspatroon" + "Ontgrendelingspatroon instellen" + "Ontgrendelingspatroon wijzigen" + "U tekent als volgt een ontgrendelingspatroon" "Te veel onjuiste pogingen!" "Probeer het over %d seconden opnieuw." "Annuleren" "Volgende" "Uw telefoon beveiligen" - "Beveilig uw telefoon tegen ongeoorloofd gebruik door het instellen van een persoonlijk schermdeblokkeringspatroon. "\n\n"1""  Op het volgende scherm ziet u hoe een voorbeeldpatroon wordt getekend. "\n\n"2""  Teken uw eigen persoonlijke deblokkeringspatroon als het voorbeeld is voltooid. U kunt verschillende patronen uitproberen, maar u moet minimaal vier punten met elkaar verbinden. "\n\n"3""  Teken uw patroon nogmaals ter bevestiging. "\n\n"Bent u er klaar voor? Selecteer \'Volgende\'"". "\n\n"Als u uw telefoon niet wilt beveiligen, selecteert u \'Annuleren\'." + "Beveilig uw telefoon tegen ongeoorloofd gebruik door het instellen van een persoonlijk schermontgrendelingspatroon. "\n\n"1"" Op het volgende scherm ziet u hoe een voorbeeldpatroon wordt getekend. "\n\n"2"" Teken uw eigen persoonlijke deblokkeringspatroon als het voorbeeld is voltooid. U kunt verschillende patronen uitproberen, maar u moet minimaal vier punten met elkaar verbinden. "\n\n"3"" Teken uw patroon nogmaals ter bevestiging. "\n\n"Bent u er klaar voor? Selecteer \'Volgende\'"". "\n\n"Als u uw telefoon niet wilt beveiligen, selecteert u \'Annuleren\'." "Voorbeeldpatroon" "Verbind minimaal vier punten. "\n" "\n"Selecteer \'Volgende\' als u klaar bent om uw eigen patroon te tekenen." "Toepassingen beheren" @@ -542,7 +543,7 @@ "Cache wissen" "Cachegeheugen" "Bedieningselementen" - "Gedwongen stoppen" + "Nu stoppen" "Totaal" "Toepassing" "Gegevens" @@ -622,7 +623,10 @@ "Scherm gaat nooit uit tijdens het opladen" "Neplocaties toestaan" "Neplocaties toestaan" - "Gadget kiezen" + + + + "Details voor UID %d" "UID %1$d" "Netwerkgebruiksdetails voor %1$s:" @@ -641,10 +645,22 @@ "Pakketten die deze UID delen:" "Er zijn geen beschikbare gebruiksgegevens van de accu" "Sensor:" + + "De sensor wordt gebruikt door de volgende pakketten:" "%1$d keer gebruikt door %2$s" "%1$d keer gebruikt door een van de volgende:" + + + + + + + + "Tijd verstreken met scherm aan:" + + "Op accu:" "Opladen:" "Gebruiksstatistieken" diff --git a/res/values-pl/arrays.xml b/res/values-pl/arrays.xml index 68425589f2c..58556189bb1 100644 --- a/res/values-pl/arrays.xml +++ b/res/values-pl/arrays.xml @@ -27,7 +27,7 @@ "15 sekund" "30 sekund" - "minuta" + "1 minuta" "2 minuty" "10 minut" "Nigdy nie wygaszaj" @@ -55,18 +55,15 @@ "Nigdy, gdy podłączony" "Nigdy" - - "Wykorzystanie procesora" - "Wykorzystanie sieci" - "Użycie czujnika" - "Czas włączenia ekranu" - - - "Od ponownego uruchomienia urządzenia" - "Przed ostatnim uruchomieniem" - "Od ostatniego uruchomienia" - "Od ostatniego odłączenia" - + + + + + + + + + "Czas użycia" "Licznik uruchomień" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index a70a6768560..51ce9cb9e92 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -21,14 +21,14 @@ "Włącz dziennik QXDM dla karty SD" "Wyłącz dziennik QXDM dla karty SD" "Wyświetl książkę adresową na karcie SIM" - "Wyświetl numery wybierania ustalonego (FDN)" + "Wyświetl ustalone numery (FDN)" "Wyświetl numery usług" "Pobierz listę PDP" "Włącz połączenie danych" "Wyłącz połączenie danych" "Włącz dane podczas uruchamianiu" "Wyłącz dane przy uruchamianiu" - "W naprawie" + "Działa" "Nie działa" "Tylko połączenia alarmowe" "Radio wyłączone" @@ -82,10 +82,10 @@ "Przepięcie" "Nieznany błąd" "Bluetooth" - "Możliwe do wykrycia" - "Możliwe do wykrycia przez %1$s sekund..." + "Wykrywalny" + "Wykrywalny przez %1$s s …" "Zezwalaj na wykrywanie urządzenia" - "Urządzenia Bluetooth" + "Lista urządzeń" "Nazwa urządzenia" "Nie ustawiono nazwy, wykorzystywana jest nazwa konta" "Wyszukaj urządzenia" @@ -94,23 +94,24 @@ "Rozłączona" "Rozłączanie..." "Łączenie..." - + "Paruj z tym urządzeniem" "Parowanie..." - "Sparowane. Rozłączona." + + "zestaw głośnomówiący/słuchawkowy" "Przeszukiwanie" "Żądanie parowania Bluetooth" "Żądanie parowania" - "Zaznacz, aby sparować" + "Zaznacz, aby sparować " "Ustawienia daty i czasu" "1:00 (po południu)" "13:00" "Wybierz strefę czasową" "Podgląd:" "Rozmiar czcionki:" - + "Wyślij broadcast" "Action:" @@ -134,7 +135,7 @@ "Usługa GPRS:" "Roaming:" "IMEI:" - "Przekierowanie połączenia:" + "Przekierowania połączeń:" "Liczba operacji resetowania PPP od momentu uruchomienia:" "GSM rozłącza się:" "Obecna sieć:" @@ -174,11 +175,11 @@ "Karta SD została usunięta, gdy była używana!" "Wykorzystanych bajtów:" "Przeszukiwanie karty SD w poszukiwaniu multimediów..." - "Karta SD jest zamontowana tylko do odczytu" + "Karta SD jest podłączona tylko do odczytu" "Dalej" "Ustawienia regionalne" "Wybierz język" - "Wybierz działanie" + "Wybierz czynność" "Informacje o urządzeniu" "Informacje o baterii" "Historia baterii" @@ -192,22 +193,22 @@ "Wyłącz wszystkie połączenia bezprzewodowe" "Wyłączanie połączeń bezprzewodowych..." "Włączanie połączeń bezprzewodowych..." - "Sterowanie bezprzewodowe" + "Opcje bezprzewodowe" "Zarządzaj Wi-Fi, Bluetooth, trybem samolotowym i sieciami komórkowymi" "Data i czas" "Ustaw format daty, czasu i strefę czasową" "Automatycznie" "Skorzystaj z wartości dostarczonych przez sieć" - "Skorzystaj z wartości dostarczonych przez sieć" - "Używaj formatu 24-godzinnego" + "Skorzystaj z informacji dostarczonych przez operatora" + "Format 24-godzinny" "Ustaw czas" "Wybierz strefę czasową" "Ustaw datę" "Wybierz format daty" "Sortuj alfabetycznie" "Sortuj według strefy czasowej" - "Zabezpieczenia i położenie" - "Ustaw moją lokalizację, odblokowanie ekranu, blokada karty SIM" + "Położenie i zabezpieczenia" + "Ustaw Moją lokalizację, blokadę ekranu, blokadę karty SIM" "Hasła" "Bluetooth" "Włącz Bluetooth" @@ -291,7 +292,7 @@ "(niezmienione)" "Dodaj sieć Wi-Fi" "Powiadomienie sieciowe" - "Powiadom mnie, gdy będzie dostępna sieć otwarta" + "Powiadom mnie, gdy będę w zasięgu otwartej sieci" "Wprowadzone hasło sieci jest nieprawidłowe. Spróbuj ponownie." "Wystąpił problem podczas łączenia z siecią. Spróbuj ponownie." "Zaawansowane" @@ -299,7 +300,7 @@ "Zapisz" "Anuluj" "Wprowadź poprawny adres IP." - "Używaj statycznego adresu IP" + "Statyczny adres IP" "Adres IP" "DNS 1" "DNS 2" @@ -313,8 +314,8 @@ "Wybierz liczbę wykorzystywanych kanałów" "Wystąpił problem podczas ustawiania domeny standaryzacyjnej." "%1$d kanałów" - "Zasady usypiania łączności Wi-Fi" - "Określ, kiedy przełączyć łączność Wi-Fi na komórkowe połączenie danych" + "Zasady usypiania Wi-Fi" + "Określ, kiedy przełączyć Wi-Fi na komórkowe połączenie danych" "Wystąpił problem podczas ustawiania zasad usypiania." "Adres MAC" "Przeszukiwanie..." @@ -344,20 +345,20 @@ "Ustaw głośność połączeń przychodzących i powiadomień" "Wibracje telefonu" "Wibracje telefonu przy połączeniach przychodzących" - "Dzwonek powiadomienia" - "Ustaw domyślny dzwonek powiadomienia" + "Powiadomienia" + "Ustaw domyślny dzwonek dla powiadomień" "Głośność połączeń przychodzących" "Głośność powiadomienia" "Użyj głośności połączeń przychodzących dla powiadomień" "Wybierz dzwonek powiadomienia" "Głośność multimediów" "Ustaw głośność muzyki oraz filmów wideo" - "Słyszalne dźwięki przy dotykaniu" + "Wybieranie numeru" "Odtwarzaj dźwięki podczas używania panelu wybierania numeru" - "Odtwarzaj dźwięki podczas używania panelu wybierania numeru" - "Dźwięk wybierania" - "Odtwarzaj dźwięk podczas wyboru ekranu" - "Odtwarzaj dźwięk podczas wyboru ekranu" + "Odtwarzaj dźwięki podczas wybierania numeru" + "Dotyk ekranu" + "Odtwarzaj dźwięk podczas wybierania opcji na ekranie" + "Odtwarzaj dźwięk podczas wybierania opcji na ekranie" "Powiadomienia karty SD" "Wyłącz dźwięki powiadomień dla karty SD" "Włącz dźwięki powiadomień dla karty SD" @@ -365,14 +366,14 @@ "Wybierz, które aplikacje są synchronizowane" "Ustawienia wyświetlacza" "Animacja" - "Pokazuj animację podczas otwierania/zamykania okien" - "Pokazuj animację podczas otwierania/zamykania okien" - "Jasność" + "Pokazuj animację podczas otwierania i zamykania okien" + "Pokazuj animację podczas otwierania i zamykania okien" + "Jasność ekranu" "Dostosuj jasność ekranu" - "Wygaszenie ekranu" + "Wygaszanie ekranu" "Dostosuj opóźnienie automatycznego wyłączenia ekranu" "Ustawienia blokady karty SIM" - "Skonfiguruj blokadę karty SIM" + "Ustaw blokadę SIM" "Blokada karty SIM" "Zablokuj kartę SIM" "Aby korzystać z telefonu, należy wprowadzić kod PIN" @@ -395,17 +396,17 @@ "Stan telefonu" "Aktualizacje systemowe" "Sprawdź aktualizacje systemu" - "Wersja oprogramowania układowego" + "Wersja oprogramowania" "Numer modelu" - "Wersja pasma podstawowego" + "Pasmo podstawowe" "Wersja jądra" "Numer wersji" "Niedostępna" - "Stan" - "Stan" + "Informacje o telefonie" + "Informacje o telefonie" "IMEI, numer telefonu, sygnał itp." "Karta SD i pamięć telefonu" - "Odłącz kartę SD, pokaż dostępną pamięć" + "Odłącz kartę SD, pokaż ilość dostępnej pamięci" "Numer telefonu" "Typ sieci komórkowej" "Stan sieci komórkowej" @@ -419,17 +420,17 @@ "Wykorzystanie sieci" "Wysłane: %1$d packets, %2$d bytes%nOdebrane: %3$d packets, %4$d bytes" "Czas działania" - "Czas działania w stanie wybudzenia" + "Czas działania (włączony)" "Pamięć wewnętrzna telefonu" "Karta SD" "Dostępne miejsce" - "Łączny rozmiar" + "Łączna pojemność" "Odmontuj kartę SD" "Odmontuj kartę SD, aby bezpiecznie ją usunąć" "Formatuj kartę SD" "Formatuj (wymaż) kartę SD" "Niedostępna" - "(Tylko do odczytu)" + " (Tylko do odczytu)" "Stan baterii" "Poziom naładowania baterii" "Nazwy APN" @@ -457,9 +458,9 @@ "Pole APN nie może być puste." "Pole MMC musi zawierać 3 cyfry." "Pole MNC musi zawierać 2 lub 3 cyfry." - "Przywracanie danych fabrycznych" + "Ustawienia fabryczne" "Wymazuje wszystkie dane w telefonie" - "To działanie spowoduje przywrócenie w telefonie ustawień fabrycznych i wymazanie wszystkich danych oraz pobranych aplikacji!" + "Ta czynność spowoduje przywrócenie w telefonie ustawień fabrycznych i wymazanie wszystkich danych oraz pobranych aplikacji!" "Resetuj telefon" "Zresetować telefon, wymazując wszystkie dane i aplikacje? Działania nie można cofnąć!" "Wymaż wszystko" @@ -475,16 +476,16 @@ "Narysuj wzorzec odblokowania" "Aby potwierdzić formatowanie karty SD, należy narysować swój wzorzec do odblokowania." "Ustawienia połączeń" - "Konfiguracja poczty głosowej, przekierowania połączeń, połączeń oczekujących, identyfikatora dzwoniącego" + "Poczta głosowa, przekierowania połączeń, poł. oczekujące, ID dzwoniącego" "Sieci komórkowe" "Ustaw opcje roamingu, sieci, nazw APN" - "Źródła mojej lokalizacji" - "Skorzystaj z sieci bezprzewodowych" + "Źródło Mojej lokalizacji" + "Użyj sieci Wi-Fi" "Zobacz położenie w aplikacjach (takich jak Mapy), korzystając z sieci bezprzewodowych" "Położenie określane jest za pomocą Wi-Fi i/lub sieci komórkowych." - "Włącz satelity GPS" - "Podczas ustalania położenia, z dokładnością do ulicy (usuń zaznaczenie, aby oszczędzać baterię)" - "Określ położenie z dokładnością do ulicy (zużywa więcej baterii oraz wymaga czystego widoku nieba)" + "Użyj satelit GPS" + "Ustalanie położenia z dokładnością do ulicy (wyłącz, aby oszczędzać baterię)" + "Podaje dokładne położenie (zużywa więcej baterii, działa na zewnątrz)" "Informacje o telefonie" "Wyświetl informacje prawne, stan telefonu, wersję oprogramowania" "Informacje prawne" @@ -500,7 +501,7 @@ "Potwierdź zapisany wzór" "Niestety, spróbuj ponownie:" "Narysuj wzór odblokowania" - "Naciśnij przycisk Menu, aby uzyskać pomoc." + "Naciśnij Menu, aby uzyskać pomoc." "Puść palec, gdy gotowe." "Połącz co najmniej %d punktów. Spróbuj jeszcze raz:" "Wzór został nagrany!" @@ -509,12 +510,12 @@ "Potwierdź" "Narysuj ponownie" "Ponów próbę" - "Kontynuuj" + "Dalej" "Wzór odblokowania" "Wymagaj wzoru" "Trzeba narysować wzór, aby odblokować ekran" - "Skorzystaj z widocznego wzoru" - "Używaj dotykowych informacji zwrotnych" + "Wzór jest widoczny" + "Wibracje przy rysowaniu" "Ustaw wzór odblokowania" "Zmień wzór odblokowania" "Jak narysować wzór odblokowania" @@ -523,16 +524,16 @@ "Anuluj" "Dalej" "Zabezpieczanie telefonu" - "Chroń swój telefon przed nieuprawnionym użyciem przez stworzenie osobistego wzoru odblokowania ekranu. "\n\n"1"" Obejrzyj rysowanie przykładowego wzoru na następnym ekranie. "\n\n"2"" Kiedy zechcesz, narysuj swój własny wzór odblokowania. Eksperymentuj z różnymi wzorami, ale połącz co najmniej 4 punkty. "\n\n"3"" Narysuj swój wzór ponownie dla potwierdzenia. "\n\n"Możemy zaczynać? Wybierz „Dalej”"". "\n\n"Aby pozostawić niezabezpieczony telefon, wybierz „Anuluj”." + "Chroń swój telefon przed nieuprawnionym użyciem przez stworzenie osobistego wzoru odblokowania ekranu. "\n\n"1"" Obejrzyj rysowanie przykładowego wzoru na następnym ekranie. "\n\n"2"" Następnie narysuj swój własny wzór odblokowania. Eksperymentuj z różnymi wzorami, ale połącz co najmniej 4 punkty. "\n\n"3"" Narysuj swój wzór ponownie dla potwierdzenia. "\n\n"Możemy zaczynać? Wybierz „Dalej”"". "\n\n"Aby zrezygnować z ustawiania blokady, wybierz „Anuluj”." "Przykładowy wzór" - "Połącz co najmniej cztery kropki."\n" "\n"Wybierz polecenie „Dalej”, kiedy zechcesz narysować własny wzór." + "Połącz co najmniej cztery kropki."\n" "\n"Wybierz polecenie „Dalej”, aby narysować własny wzór." "Zarządzaj aplikacjami" "Zarządzaj zainstalowanymi aplikacjami oraz usuwaj je" "Aplikacje" "Zarządzaj aplikacjami, skonfiguruj skróty szybkiego uruchamiania" "Ustawienia aplikacji" "Nieznane źródła" - "Pozwól na instalowanie aplikacji ze źródeł pozarynkowych" + "Pozwól na instalowanie aplikacji spoza Android Market" "Telefon i dane osobiste są bardziej narażone na atak za pomocą aplikacji z nieznanych źródeł. Zgadzasz się ponieść pełną odpowiedzialność za wszelkie uszkodzenia telefonu oraz utratę danych, które mogą wyniknąć ze stosowania tych aplikacji." "Informacje o aplikacji" "Pamięć" @@ -573,19 +574,19 @@ "Przetwarzanie..." "Nie można obliczyć rozmiaru pakietu" "Nie zainstalowano żadnych aplikacji innych firm." - "Ustawienia regionalne i ustawienia tekstu" + "Regionalne i język" "Określ ustawienia regionalne (język i region) oraz opcje wprowadzania tekstu i autokorekty" "Ustawienia regionalne" "Ustawienia tekstu" - "Wybierz ustawienia regionalne" + "Wybierz język" "Wybierz język i region" - "Automatyczne zastępowanie" + "Autokorekta" "Poprawiaj błędnie wpisane słowa" - "Automatyczne wielkie litery" + "Wielka litera po kropce" "Zdanie zaczynaj wielką literą" - "Automatyczna interpunkcja" + "Łatwa interpunkcja" "Ustawienia klawiatury fizycznej" - "Naciśnij klawisz spacji dwukrotnie, aby wstawić „.”" + "Naciśnij klawisz spacji dwukrotnie, aby wstawić kropkę." "Widoczne hasła" "Pokazuj hasło podczas wpisywania" "Słownik użytkownika" @@ -613,16 +614,19 @@ "Skróty" "Wprowadzanie tekstu" "Zarządzaj opcjami wprowadzania tekstu" - "%s — ustawienia" - "Tworzenie" - "Ustaw opcje związane z projektowaniem aplikacji" + "%s – ustawienia" + "Programowanie" + "Ustaw opcje związane z programowaniem aplikacji" "Debugowanie USB" "Tryb debugowania, gdy podłączone jest USB" "Zostaw włączony" "Ekran nigdy nie będzie gaszony podczas ładowania" - "Zezwalaj na pozorowane położenia" + "Pozorowanie położenia" "Zezwalaj na pozorowane położenia" - "Wybierz gadżet" + + + + "Szczegóły dla identyfikatora UID %d" "Identyfikator UID %1$d" "Szczegóły wykorzystania sieci dla %1$s:" @@ -641,10 +645,22 @@ "Pakiety współdzielące ten identyfikator UID:" "Brak danych o użyciu baterii" "Czujnik:" + + "Czujnik używany przez pakiety:" "Używane %1$d raz(y) przez %2$s" "Używane %1$d raz(y) przez:" + + + + + + + + "Czas pracy z włączonym ekranem:" + + "Praca na baterii:" "Podłączone:" "Statystyki użycia" diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml index 4db91fb9525..f9afd8e05a2 100644 --- a/res/values-ru/arrays.xml +++ b/res/values-ru/arrays.xml @@ -55,18 +55,15 @@ "Никогда, если устройство подключено к сети питания" "Никогда" - - "Использование процессора" - "Использование сети" - "Использование сенсора" - "Время пребывания экрана во включенном состоянии" - - - "С перезагрузки устройства" - "До последней загрузки" - "С последней загрузки" - "С последнего отключения питания" - + + + + + + + + + "Время использования" "Начать подсчет" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 57f95eea89f..0a806228a28 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -94,23 +94,24 @@ "Отключено" "Отключение…" "Идет подключение…" - + "Создать пару с этим устройством" "Идет создание пары..." - "Соединено. Отключено." + + "гарнитура/наушники" "Сканирование" "Запрос на соединение Bluetooth" "Запрос на соединение" - "Выбрать для соединения" + "Выбрать для соединения " "Настройки даты и времени" "13:00" "13:00" "Выбрать часовой пояс" "Предварительный просмотр:" "Размер шрифта:" - + "Отправить broadcast" "Action:" @@ -429,7 +430,7 @@ "Форматировать карту SD" "Форматировать (очистить) карту SD" "Недоступно" - "(Только для чтения)" + " (Только для чтения)" "Состояние батареи" "Уровень батареи" "APN" @@ -622,7 +623,10 @@ "При зарядке экран не отключается" "Разрешить фиктивные местоположения" "Разрешить фиктивные местоположения" - "Выбрать·гаджет" + + + + "Сведения для идентификатора пользователя %d" "Идентификатор пользователя %1$d" "Сведения об использовании сети приложением %1$s:" @@ -641,10 +645,22 @@ "Пакеты с этим идентификатором пользователя:" "Данные об использовании батареи недоступны" "Сенсор:" + + "Использования сенсора пакетами:" "Использовано пакетом %2$s: %1$d раз(а)" "Использовано %1$d раз(а) одним из:" + + + + + + + + "Время пребывания экрана включенным:" + + "От батареи:" "Подключен к питанию:" "Статистика использования" diff --git a/res/values-zh-rCN/arrays.xml b/res/values-zh-rCN/arrays.xml index 0cc7a2c03d9..5b3b651343f 100644 --- a/res/values-zh-rCN/arrays.xml +++ b/res/values-zh-rCN/arrays.xml @@ -55,18 +55,15 @@ "插入后从不进入休眠状态" "从不" - - "CPU 使用" - "网络使用" - "传感器使用" - "屏幕开启时间" - - - "自设备重置后" - "在上次引导前" - "自上次引导后" - "自上次拔除后" - + + + + + + + + + "使用时间" "启动次数" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 51e8bd6e537..45148de9f53 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -94,23 +94,24 @@ "已断开连接" "正在断开连接..." "正在连接..." - + "与此设备配对" "正在配对..." - "已配对。已断开连接。" + + "免持听筒/耳机" "正在扫描" "蓝牙配对请求" "配对请求" - "选择以与以下对象配对" + "选择以与以下对象配对 " "日期和时间设置" "下午 1:00" "13:00" "选择时区" "预览:" "字体大小:" - + "发送broadcast" "Action:" @@ -429,7 +430,7 @@ "格式化 SD 卡" "格式化(清除)SD 卡" "不可用" - "(只读)" + " (只读)" "电池状态" "电池级别" "APN" @@ -622,7 +623,10 @@ "充电时屏幕不会休眠" "允许模仿位置" "允许模仿位置" - "选择小工具" + + + + "有关用户 ID %d 的详情" "用户 ID %1$d" "有关%1$s的网络使用详情:" @@ -641,10 +645,22 @@ "共享该用户 ID 的数据包:" "没有可用的电池使用数据" "传感器:" + + "包使用的传感器:" "%2$s使用了 %1$d 次" "由以下某项使用过 %1$d 次:" + + + + + + + + "屏幕开启所花费的时间:" + + "正在使用电池:" "已插入:" "使用情况统计" diff --git a/res/values-zh-rTW/arrays.xml b/res/values-zh-rTW/arrays.xml index 9d9fc9ca057..2ec9ed2a5c6 100644 --- a/res/values-zh-rTW/arrays.xml +++ b/res/values-zh-rTW/arrays.xml @@ -55,18 +55,15 @@ "插入時絕不" "從不" - - "CPU 使用率" - "網路使用率" - "感應器使用率" - "螢幕開啟時間" - - - "自上次重設裝置後的時間" - "上次開機前的時間" - "自最後一次開機後的時間" - "自上次拔除插頭後的時間" - + + + + + + + + + "使用時間" "啟動計數" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 1dda82c7371..c34d6a5a13d 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -94,23 +94,24 @@ "連線中斷" "連線中斷..." "連線中..." - + "與此裝置配對" "配對中..." - "已配對。連線中斷。" + + "免持/頭戴式" "掃描中" "藍牙配對要求" "配對要求" - "選取要配對的裝置" + "選取要配對的裝置 " "日期與時間設定" "下午 1:00" "13:00" "選取時區" "預覽:" "字型大小:" - + "傳送 broadcast" "Action:" @@ -429,7 +430,7 @@ "將 SD 卡格式化" "將 SD 卡格式化 (清除)" "無法取得資訊" - "(唯讀)" + " (唯讀)" "電池狀態" "電池計量" "APN" @@ -622,7 +623,10 @@ "充電時螢幕不會進入休眠" "允許模擬位置" "允許模擬位置" - "選擇小工具" + + + + "UID %d 的詳細資料" "UID %1$d" "%1$s 的網路使用率詳細資料:" @@ -641,10 +645,22 @@ "共用此 UID 的封裝:" "沒有電池使用資料" "感應器:" + + "程式使用的感應器:" "使用次數:%1$d,使用的封裝:%2$s" "使用次數:%1$d,使用者為下列其中之一:" + + + + + + + + "螢幕開啟時間:" + + "使用電池:" "插入時間:" "使用統計資料" diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 019755a0400..d9480c2d9f3 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -145,12 +145,12 @@ - CPU Usage - Network Usage - GPS Usage - Sensor Usage - Wake Locks - Screen On Time + CPU usage + Network usage + GPS usage + Sensor usage + Partial wake usage + Other usage diff --git a/res/values/strings.xml b/res/values/strings.xml index 27329c80550..ecf6e02d92a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1005,6 +1005,12 @@ MCC field must be 3 digits. MNC field must be 2 or 3 digits. + + Restoring default APN settings + + Reset to default + + Reset default APN settings completed @@ -1383,8 +1389,13 @@ found in the list of installed applications. Allow mock locations - Choose Gadget + (or other screens that can host gadgets). Note to translators: we're still determining + the final name for Gadgets/Widgets, so please translate both for now. --> + Choose gadget + + Choose widget Details for UID %d @@ -1452,17 +1463,33 @@ found in the list of installed applications. Used %1$d times by one of: + + Running + + + Screen on + + + Phone on + + + Time spent without sleeping: + Time spent with screen on: + + Time spent with phone on: + On battery: - + Plugged in: - + Usage statistics + Usage statistics diff --git a/res/xml/language_settings.xml b/res/xml/language_settings.xml index 2927540cf77..050896f0e59 100644 --- a/res/xml/language_settings.xml +++ b/res/xml/language_settings.xml @@ -26,15 +26,9 @@ android:targetClass="com.android.settings.LocalePicker"/> - - - - + @@ -42,6 +36,7 @@ android:targetPackage="com.android.settings" android:targetClass="com.android.settings.UserDictionarySettings" /> + diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java index aab529c15c2..87e3412d2a4 100644 --- a/src/com/android/settings/ApnSettings.java +++ b/src/com/android/settings/ApnSettings.java @@ -16,60 +16,86 @@ package com.android.settings; +import android.app.Dialog; +import android.app.ProgressDialog; +import android.content.ContentResolver; import android.content.ContentUris; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; +import android.os.Handler; +import android.os.HandlerThread; +import android.os.Looper; +import android.os.Message; import android.preference.Preference; import android.preference.PreferenceActivity; -import android.preference.PreferenceCategory; import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; import android.provider.Telephony; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; +import android.widget.Toast; public class ApnSettings extends PreferenceActivity { public static final String EXTRA_POSITION = "position"; - + public static final String RESTORE_CARRIERS_URI = + "content://telephony/carriers/restore"; + private static final int ID_INDEX = 0; private static final int NAME_INDEX = 1; private static final int APN_INDEX = 2; private static final int MENU_NEW = Menu.FIRST; - + private static final int MENU_RESTORE = Menu.FIRST + 1; + + private static final int EVENT_RESTORE_DEFAULTAPN_START = 1; + private static final int EVENT_RESTORE_DEFAULTAPN_COMPLETE = 2; + + private static final int DIALOG_RESTORE_DEFAULTAPN = 1001; + + private static final Uri DEFAULTAPN_URI = Uri.parse(RESTORE_CARRIERS_URI); + + private static boolean mRestoreDefaultApnMode; + + private RestoreApnUiHandler mRestoreApnUiHandler; + private RestoreApnProcessHandler mRestoreApnProcessHandler; + private Cursor mCursor; @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); - - addPreferencesFromResource(R.xml.apn_settings); + + addPreferencesFromResource(R.xml.apn_settings); } @Override protected void onResume() { super.onResume(); - - fillList(); + + if (!mRestoreDefaultApnMode) { + fillList(); + } else { + showDialog(DIALOG_RESTORE_DEFAULTAPN); + } } - + private void fillList() { mCursor = managedQuery(Telephony.Carriers.CONTENT_URI, new String[] { "_id", "name", "apn"}, null, Telephony.Carriers.DEFAULT_SORT_ORDER); PreferenceGroup apnList = (PreferenceGroup) findPreference("apn_list"); apnList.removeAll(); - + mCursor.moveToFirst(); while (!mCursor.isAfterLast()) { String name = mCursor.getString(NAME_INDEX); String apn = mCursor.getString(APN_INDEX); - + if (name != null && apn != null && TextUtils.getTrimmedLength(name) > 0 && TextUtils.getTrimmedLength(apn) > 0) { Preference pref = new Preference((Context) this); @@ -79,17 +105,20 @@ public class ApnSettings extends PreferenceActivity { pref.setPersistent(false); apnList.addPreference(pref); } - + mCursor.moveToNext(); } } - + @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); - menu.add(0, MENU_NEW, 0, + menu.add(0, MENU_NEW, 0, getResources().getString(R.string.menu_new)) .setIcon(android.R.drawable.ic_menu_add); + menu.add(0, MENU_RESTORE, 0, + getResources().getString(R.string.menu_restore)) + .setIcon(android.R.drawable.ic_menu_upload); return true; } @@ -99,14 +128,18 @@ public class ApnSettings extends PreferenceActivity { case MENU_NEW: addNewApn(); return true; + + case MENU_RESTORE: + restoreDefaultApn(); + return true; } return super.onOptionsItemSelected(item); } - + private void addNewApn() { startActivity(new Intent(Intent.ACTION_INSERT, Telephony.Carriers.CONTENT_URI)); } - + @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { int pos = Integer.parseInt(preference.getKey()); @@ -114,4 +147,83 @@ public class ApnSettings extends PreferenceActivity { startActivity(new Intent(Intent.ACTION_EDIT, url)); return true; } + + private boolean restoreDefaultApn() { + showDialog(DIALOG_RESTORE_DEFAULTAPN); + mRestoreDefaultApnMode = true; + + if (mRestoreApnUiHandler == null) { + mRestoreApnUiHandler = new RestoreApnUiHandler(); + } + + if (mRestoreApnProcessHandler == null) { + HandlerThread restoreDefaultApnThread = new HandlerThread( + "Restore default APN Handler: Process Thread"); + restoreDefaultApnThread.start(); + mRestoreApnProcessHandler = new RestoreApnProcessHandler( + restoreDefaultApnThread.getLooper(), mRestoreApnUiHandler); + } + + mRestoreApnProcessHandler + .sendEmptyMessage(EVENT_RESTORE_DEFAULTAPN_START); + return true; + } + + private class RestoreApnUiHandler extends Handler { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case EVENT_RESTORE_DEFAULTAPN_COMPLETE: + fillList(); + getPreferenceScreen().setEnabled(true); + mRestoreDefaultApnMode = false; + dismissDialog(DIALOG_RESTORE_DEFAULTAPN); + Toast.makeText( + ApnSettings.this, + getResources().getString( + R.string.restore_default_apn_completed), + Toast.LENGTH_LONG).show(); + break; + } + } + } + + private class RestoreApnProcessHandler extends Handler { + private Handler mRestoreApnUiHandler; + + public RestoreApnProcessHandler(Looper looper, Handler restoreApnUiHandler) { + super(looper); + this.mRestoreApnUiHandler = restoreApnUiHandler; + } + + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case EVENT_RESTORE_DEFAULTAPN_START: + ContentResolver resolver = getContentResolver(); + resolver.delete(DEFAULTAPN_URI, null, null); + mRestoreApnUiHandler + .sendEmptyMessage(EVENT_RESTORE_DEFAULTAPN_COMPLETE); + break; + } + } + } + + @Override + protected Dialog onCreateDialog(int id) { + if (id == DIALOG_RESTORE_DEFAULTAPN) { + ProgressDialog dialog = new ProgressDialog(this); + dialog.setMessage(getResources().getString(R.string.restore_default_apn)); + dialog.setCancelable(false); + return dialog; + } + return null; + } + + @Override + protected void onPrepareDialog(int id, Dialog dialog) { + if (id == DIALOG_RESTORE_DEFAULTAPN) { + getPreferenceScreen().setEnabled(false); + } + } } diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java index 3097e968327..47fc07f6424 100644 --- a/src/com/android/settings/ChooseLockPattern.java +++ b/src/com/android/settings/ChooseLockPattern.java @@ -292,6 +292,7 @@ public class ChooseLockPattern extends Activity implements View.OnClickListener{ mLockPatternView = (LockPatternView) findViewById(R.id.lockPattern); mLockPatternView.setOnPatternListener(mChooseNewLockPatternListener); + mLockPatternView.setTactileFeedbackEnabled(mLockPatternUtils.isTactileFeedbackEnabled()); mFooterText = (TextView) findViewById(R.id.footerText); diff --git a/src/com/android/settings/InstalledAppDetails.java b/src/com/android/settings/InstalledAppDetails.java index eee8b75106e..327874b6493 100644 --- a/src/com/android/settings/InstalledAppDetails.java +++ b/src/com/android/settings/InstalledAppDetails.java @@ -444,7 +444,7 @@ public class InstalledAppDetails extends Activity implements View.OnClickListene Uri packageURI = Uri.parse("package:"+packageName); Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI); startActivity(uninstallIntent); - setIntentAndFinish(true, false); + setIntentAndFinish(true, true); } } else if(v == mActivitiesButton) { mPm.clearPackagePreferredActivities(packageName); diff --git a/src/com/android/settings/LanguageSettings.java b/src/com/android/settings/LanguageSettings.java index b406df6d74c..8463d26fcac 100644 --- a/src/com/android/settings/LanguageSettings.java +++ b/src/com/android/settings/LanguageSettings.java @@ -17,14 +17,24 @@ package com.android.settings; import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; +import android.os.SystemProperties; +import android.preference.CheckBoxPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; -import android.preference.CheckBoxPreference; +import android.provider.Settings; import android.provider.Settings.System; +import android.text.TextUtils; +import android.view.inputmethod.InputMethodInfo; +import android.view.inputmethod.InputMethodManager; + +import java.util.HashSet; +import java.util.List; public class LanguageSettings extends PreferenceActivity { @@ -48,6 +58,18 @@ public class LanguageSettings extends PreferenceActivity { 1, }; + private List mInputMethodProperties; + + final TextUtils.SimpleStringSplitter mStringColonSplitter + = new TextUtils.SimpleStringSplitter(':'); + + private String mLastInputMethodId; + private String mLastTickedInputMethodId; + + static public String getInputMethodIdFromKey(String key) { + return key; + } + @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -71,10 +93,117 @@ public class LanguageSettings extends PreferenceActivity { mSettingsDefault[i]) > 0); } } + + onCreateIMM(); + } + + private void onCreateIMM() { + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + + mInputMethodProperties = imm.getInputMethodList(); + + mLastInputMethodId = Settings.Secure.getString(getContentResolver(), + Settings.Secure.DEFAULT_INPUT_METHOD); + + PreferenceGroup textCategory = (PreferenceGroup) findPreference("text_category"); + + int N = (mInputMethodProperties == null ? 0 : mInputMethodProperties + .size()); + for (int i = 0; i < N; ++i) { + InputMethodInfo property = mInputMethodProperties.get(i); + String prefKey = property.getId(); + + CharSequence label = property.loadLabel(getPackageManager()); + + // Add a check box. + CheckBoxPreference chkbxPref = new CheckBoxPreference(this); + chkbxPref.setKey(prefKey); + chkbxPref.setTitle(label); + textCategory.addPreference(chkbxPref); + + // If setting activity is available, add a setting screen entry. + if (null != property.getSettingsActivity()) { + PreferenceScreen prefScreen = new PreferenceScreen(this, null); + prefScreen.setKey(property.getSettingsActivity()); + CharSequence settingsLabel = getResources().getString( + R.string.input_methods_settings_label_format, label); + prefScreen.setTitle(settingsLabel); + textCategory.addPreference(prefScreen); + } + } } + @Override + protected void onResume() { + super.onResume(); + + final HashSet enabled = new HashSet(); + String enabledStr = Settings.Secure.getString(getContentResolver(), + Settings.Secure.ENABLED_INPUT_METHODS); + if (enabledStr != null) { + final TextUtils.SimpleStringSplitter splitter = mStringColonSplitter; + splitter.setString(enabledStr); + while (splitter.hasNext()) { + enabled.add(splitter.next()); + } + } + + // Update the statuses of the Check Boxes. + int N = mInputMethodProperties.size(); + for (int i = 0; i < N; ++i) { + final String id = mInputMethodProperties.get(i).getId(); + CheckBoxPreference pref = (CheckBoxPreference) findPreference(mInputMethodProperties + .get(i).getId()); + pref.setChecked(enabled.contains(id)); + } + mLastTickedInputMethodId = null; + } + + @Override + protected void onPause() { + super.onPause(); + + StringBuilder builder = new StringBuilder(256); + + boolean haveLastInputMethod = false; + + int firstEnabled = -1; + int N = mInputMethodProperties.size(); + for (int i = 0; i < N; ++i) { + final String id = mInputMethodProperties.get(i).getId(); + CheckBoxPreference pref = (CheckBoxPreference) findPreference(id); + boolean hasIt = id.equals(mLastInputMethodId); + if (pref.isChecked()) { + if (builder.length() > 0) builder.append(':'); + builder.append(id); + if (firstEnabled < 0) { + firstEnabled = i; + } + if (hasIt) haveLastInputMethod = true; + } else if (hasIt) { + mLastInputMethodId = mLastTickedInputMethodId; + } + } + + // If the last input method is unset, set it as the first enabled one. + if (null == mLastInputMethodId || "".equals(mLastInputMethodId)) { + if (firstEnabled >= 0) { + mLastInputMethodId = mInputMethodProperties.get(firstEnabled).getId(); + } else { + mLastInputMethodId = null; + } + } + + Settings.Secure.putString(getContentResolver(), + Settings.Secure.ENABLED_INPUT_METHODS, builder.toString()); + Settings.Secure.putString(getContentResolver(), + Settings.Secure.DEFAULT_INPUT_METHOD, mLastInputMethodId); + } + @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { + + // Physical keyboard stuff for (int i = 0; i < mSettingsUiKey.length; i++) { if (mSettingsUiKey[i].equals(preference.getKey())) { System.putInt(getContentResolver(), mSettingsSystemId[i], @@ -82,6 +211,36 @@ public class LanguageSettings extends PreferenceActivity { return true; } } + + // Input Method stuff + // Those monkeys kept committing suicide, so we add this property + // to disable this functionality + if (!TextUtils.isEmpty(SystemProperties.get("ro.monkey"))) { + return false; + } + + if (preference instanceof CheckBoxPreference) { + CheckBoxPreference chkPref = (CheckBoxPreference) preference; + String id = getInputMethodIdFromKey(chkPref.getKey()); + if (chkPref.isChecked()) { + mLastTickedInputMethodId = id; + } else if (id.equals(mLastTickedInputMethodId)) { + mLastTickedInputMethodId = null; + } + } else if (preference instanceof PreferenceScreen) { + if (preference.getIntent() == null) { + PreferenceScreen pref = (PreferenceScreen) preference; + String activityName = pref.getKey(); + String packageName = activityName.substring(0, activityName + .lastIndexOf(".")); + if (activityName.length() > 0) { + Intent i = new Intent(Intent.ACTION_MAIN); + i.setClassName(packageName, activityName); + startActivity(i); + } + } + } + return super.onPreferenceTreeClick(preferenceScreen, preference); } diff --git a/src/com/android/settings/LauncherGadgetBinder.java b/src/com/android/settings/LauncherGadgetBinder.java new file mode 100644 index 00000000000..f7b5a61bb46 --- /dev/null +++ b/src/com/android/settings/LauncherGadgetBinder.java @@ -0,0 +1,225 @@ +/* + * Copyright (C) 2008 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; + +import android.app.Activity; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Intent; +import android.content.ComponentName; +import android.database.Cursor; +import android.database.SQLException; +import android.gadget.GadgetManager; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.os.Bundle; +import android.provider.BaseColumns; +import android.util.Log; + +import java.util.ArrayList; + +public class LauncherGadgetBinder extends Activity { + private static final String TAG = "LauncherGadgetBinder"; + private static final boolean LOGD = true; + + static final String AUTHORITY = "com.android.launcher.settings"; + static final String TABLE_FAVORITES = "favorites"; + + static final String EXTRA_BIND_SOURCES = "com.android.launcher.settings.bindsources"; + static final String EXTRA_BIND_TARGETS = "com.android.launcher.settings.bindtargets"; + + static final String EXTRA_GADGET_BITMAPS = "com.android.camera.gadgetbitmaps"; + + /** + * {@link ContentProvider} constants pulled over from Launcher + */ + static final class LauncherProvider implements BaseColumns { + static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + TABLE_FAVORITES); + + static final String ITEM_TYPE = "itemType"; + static final String GADGET_ID = "gadgetId"; + static final String ICON = "icon"; + + static final int ITEM_TYPE_GADGET = 4; + static final int ITEM_TYPE_WIDGET_CLOCK = 1000; + static final int ITEM_TYPE_WIDGET_SEARCH = 1001; + static final int ITEM_TYPE_WIDGET_PHOTO_FRAME = 1002; + } + + static final String[] BIND_PROJECTION = new String[] { + LauncherProvider._ID, + LauncherProvider.ITEM_TYPE, + LauncherProvider.GADGET_ID, + LauncherProvider.ICON, + }; + + static final int INDEX_ID = 0; + static final int INDEX_ITEM_TYPE = 1; + static final int INDEX_GADGET_ID = 2; + static final int INDEX_ICON = 3; + + static final ComponentName BIND_PHOTO_GADGET = new ComponentName("com.android.camera", + "com.android.camera.PhotoGadgetBind"); + + @Override + protected void onCreate(Bundle icicle) { + super.onCreate(icicle); + finish(); + + // This helper reaches into the Launcher database and binds any unlinked + // gadgets. If will remove any items that can't be bound successfully. + // We protect this binder at the manifest level by asserting the caller + // has the Launcher WRITE_SETTINGS permission. + + final Intent intent = getIntent(); + final Bundle extras = intent.getExtras(); + + int[] bindSources = null; + ArrayList bindTargets = null; + Exception exception = null; + + try { + bindSources = extras.getIntArray(EXTRA_BIND_SOURCES); + bindTargets = intent.getParcelableArrayListExtra(EXTRA_BIND_TARGETS); + } catch (ClassCastException ex) { + exception = ex; + } + + if (exception != null || bindSources == null || bindTargets == null || + bindSources.length != bindTargets.size()) { + Log.w(TAG, "Problem reading incoming bind request, or invalid request", exception); + return; + } + + final String selectWhere = buildOrWhereString(LauncherProvider.ITEM_TYPE, bindSources); + + final ContentResolver resolver = getContentResolver(); + final GadgetManager gadgetManager = GadgetManager.getInstance(this); + + boolean foundPhotoGadgets = false; + final ArrayList photoGadgetIds = new ArrayList(); + final ArrayList photoBitmaps = new ArrayList(); + + Cursor c = null; + + try { + c = resolver.query(LauncherProvider.CONTENT_URI, + BIND_PROJECTION, selectWhere, null, null); + + if (LOGD) Log.d(TAG, "found bind cursor count="+c.getCount()); + + final ContentValues values = new ContentValues(); + while (c != null && c.moveToNext()) { + long favoriteId = c.getLong(INDEX_ID); + int itemType = c.getInt(INDEX_ITEM_TYPE); + int gadgetId = c.getInt(INDEX_GADGET_ID); + byte[] iconData = c.getBlob(INDEX_ICON); + + // Find the binding target for this type + ComponentName targetGadget = null; + for (int i = 0; i < bindSources.length; i++) { + if (bindSources[i] == itemType) { + targetGadget = bindTargets.get(i); + break; + } + } + + if (LOGD) Log.d(TAG, "found matching targetGadget="+targetGadget.toString()+" for favoriteId="+favoriteId); + + boolean bindSuccess = false; + try { + gadgetManager.bindGadgetId(gadgetId, targetGadget); + bindSuccess = true; + } catch (RuntimeException ex) { + Log.w(TAG, "Problem binding gadget", ex); + } + + // Handle special case of photo gadget by loading bitmap and + // preparing for later binding + if (bindSuccess && iconData != null && + itemType == LauncherProvider.ITEM_TYPE_WIDGET_PHOTO_FRAME) { + Bitmap bitmap = BitmapFactory.decodeByteArray(iconData, 0, iconData.length); + + photoGadgetIds.add(gadgetId); + photoBitmaps.add(bitmap); + foundPhotoGadgets = true; + } + + if (LOGD) Log.d(TAG, "after finished, success="+bindSuccess); + + // Depending on success, update launcher or remove item + Uri favoritesUri = ContentUris.withAppendedId(LauncherProvider.CONTENT_URI, favoriteId); + if (bindSuccess) { + values.clear(); + values.put(LauncherProvider.ITEM_TYPE, LauncherProvider.ITEM_TYPE_GADGET); + values.putNull(LauncherProvider.ICON); + resolver.update(favoritesUri, values, null, null); + } else { + resolver.delete(favoritesUri, null, null); + } + + } + } catch (SQLException ex) { + Log.w(TAG, "Problem while binding gadgetIds for Launcher", ex); + } finally { + if (c != null) { + c.close(); + } + } + + if (foundPhotoGadgets) { + // Convert gadgetIds into int[] + final int N = photoGadgetIds.size(); + final int[] photoGadgetIdsArray = new int[N]; + for (int i = 0; i < N; i++) { + photoGadgetIdsArray[i] = photoGadgetIds.get(i); + } + + // Launch intent over to handle bitmap binding, but we don't need to + // wait around for the result. + final Intent bindIntent = new Intent(); + bindIntent.setComponent(BIND_PHOTO_GADGET); + + final Bundle bindExtras = new Bundle(); + bindExtras.putIntArray(GadgetManager.EXTRA_GADGET_IDS, photoGadgetIdsArray); + bindExtras.putParcelableArrayList(EXTRA_GADGET_BITMAPS, photoBitmaps); + bindIntent.putExtras(bindExtras); + + startActivity(bindIntent); + } + + if (LOGD) Log.d(TAG, "completely finished with binding for Launcher"); + } + + /** + * Build a query string that will match any row where the column matches + * anything in the values list. + */ + static String buildOrWhereString(String column, int[] values) { + StringBuilder selectWhere = new StringBuilder(); + for (int i = values.length - 1; i >= 0; i--) { + selectWhere.append(column).append("=").append(values[i]); + if (i > 0) { + selectWhere.append(" OR "); + } + } + return selectWhere.toString(); + } + +} diff --git a/src/com/android/settings/ManageApplications.java b/src/com/android/settings/ManageApplications.java index 512e547e6d4..74957ed430f 100644 --- a/src/com/android/settings/ManageApplications.java +++ b/src/com/android/settings/ManageApplications.java @@ -19,6 +19,7 @@ package com.android.settings; import com.android.settings.R; import android.app.ActivityManager; import android.app.AlertDialog; +import android.app.Dialog; import android.app.ListActivity; import android.app.ProgressDialog; import android.content.BroadcastReceiver; @@ -31,6 +32,7 @@ import android.content.pm.IPackageStatsObserver; import android.content.pm.PackageManager; import android.content.pm.PackageStats; import android.content.pm.PackageManager.NameNotFoundException; +import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.net.Uri; @@ -86,8 +88,6 @@ import java.util.TreeMap; * ACTION_MANAGE_PACKAGE_STORAGE) the list is sorted per size. * If the user selects an application, extended info(like size, uninstall/clear data options, * permissions info etc.,) is displayed via the InstalledAppDetails activity. - * This activity passes the package name and size information to the - * InstalledAppDetailsActivity to avoid recomputation of the package size information. */ public class ManageApplications extends ListActivity implements OnItemClickListener, DialogInterface.OnCancelListener, @@ -95,13 +95,12 @@ public class ManageApplications extends ListActivity implements // TAG for this activity private static final String TAG = "ManageApplications"; - // log information boolean + // Log information boolean private boolean localLOGV = Config.LOGV || false; // attributes used as keys when passing values to InstalledAppDetails activity public static final String APP_PKG_PREFIX = "com.android.settings."; public static final String APP_PKG_NAME = APP_PKG_PREFIX+"ApplicationPkgName"; - public static final String APP_PKG_SIZE = APP_PKG_PREFIX+"size"; public static final String APP_CHG = APP_PKG_PREFIX+"changed"; // attribute name used in receiver for tagging names of added/deleted packages @@ -122,7 +121,7 @@ public class ManageApplications extends ListActivity implements public static final int FILTER_APPS_RUNNING = MENU_OPTIONS_BASE + 4; public static final int FILTER_OPTIONS = MENU_OPTIONS_BASE + 5; // Alert Dialog presented to user to find out the filter option - AlertDialog.Builder mAlertDlgBuilder; + AlertDialog mAlertDlg; // sort order private int mSortOrder = SORT_ORDER_ALPHA; // Filter value @@ -157,7 +156,8 @@ public class ManageApplications extends ListActivity implements private Drawable mDefaultAppIcon; // temporary dialog displayed while the application info loads - private ProgressDialog mLoadingDlg = null; + private static final int DLG_BASE = 0; + private static final int DLG_LOADING = DLG_BASE + 1; // compute index used to track the application size computations private int mComputeIndex; @@ -196,6 +196,12 @@ public class ManageApplications extends ListActivity implements // Boolean variables indicating state private boolean mLoadLabels = false; private boolean mSizesFirst = false; + // ListView used to display list + private ListView mListView; + // State variables used to figure out menu options and also + // initiate the first computation and loading of resources + private boolean mJustCreated = true; + private boolean mFirst = false; /* * Handler class to handle messages for various operations @@ -242,8 +248,6 @@ public class ManageApplications extends ListActivity implements switch (msg.what) { case INIT_PKG_INFO: if(localLOGV) Log.i(TAG, "Message INIT_PKG_INFO"); - setProgressBarIndeterminateVisibility(true); - mComputeIndex = 0; // Retrieve the package list and init some structures initAppList(mFilterApps); mHandler.sendEmptyMessage(NEXT_LOAD_STEP); @@ -308,6 +312,7 @@ public class ManageApplications extends ListActivity implements } else { // end computation here mComputeSizes = true; + mFirst = true; mAppInfoAdapter.sortList(mSortOrder); mHandler.sendEmptyMessage(NEXT_LOAD_STEP); } @@ -408,8 +413,13 @@ public class ManageApplications extends ListActivity implements } else { // Create list view from the adapter here. Wait till the sort order // of list is defined. its either by label or by size. so atleast one of the - // first steps should be complete before creating the list - createListView(); + // first steps should be complete before filling the list + if (mJustCreated) { + // Set the adapter here. + mJustCreated = false; + mListView.setAdapter(mAppInfoAdapter); + dismissLoadingMsg(); + } if (!mComputeSizes) { initComputeSizes(); } else if (!mLoadLabels) { @@ -423,6 +433,8 @@ public class ManageApplications extends ListActivity implements } }; + + private void doneLoadingData() { setProgressBarIndeterminateVisibility(false); } @@ -487,13 +499,14 @@ public class ManageApplications extends ListActivity implements // some initialization code used when kicking off the size computation private void initAppList(int filterOption) { + setProgressBarIndeterminateVisibility(true); + mComputeIndex = 0; mComputeSizes = false; + mLoadLabels = false; // Initialize lists List appList = getInstalledApps(filterOption); mAddRemoveMap = new TreeMap(); - mAppInfoAdapter = new AppInfoAdapter(this, appList); - // register receiver - mReceiver.registerReceiver(); + mAppInfoAdapter.resetAppList(filterOption, appList); } // Utility method to start a thread to read application labels and icons @@ -519,23 +532,13 @@ public class ManageApplications extends ListActivity implements private void showEmptyViewIfListEmpty() { if (localLOGV) Log.i(TAG, "Checking for empty view"); if (mAppInfoAdapter.getCount() > 0) { + mListView.setVisibility(View.VISIBLE); mEmptyView.setVisibility(View.GONE); } else { + mListView.setVisibility(View.GONE); mEmptyView.setVisibility(View.VISIBLE); } } - - private void createListView() { - dismissLoadingMsg(); - // get list and set listeners and adapter - ListView lv= (ListView) findViewById(android.R.id.list); - lv.setAdapter(mAppInfoAdapter); - lv.setOnItemClickListener(this); - lv.setSaveEnabled(true); - lv.setItemsCanFocus(true); - lv.setOnItemClickListener(this); - showEmptyViewIfListEmpty(); - } // internal structure used to track added and deleted packages when // the activity has focus @@ -868,7 +871,11 @@ public class ManageApplications extends ListActivity implements AppInfo pInfo = iconMap.get(info.packageName); if(pInfo != null) { AppInfo aInfo = mAppPropMap.get(info.packageName); - aInfo.refreshIcon(pInfo); + if (aInfo != null) { + aInfo.refreshIcon(pInfo); + } else { + mAppPropMap.put(info.packageName, pInfo); + } changed = true; } } @@ -1114,12 +1121,6 @@ public class ManageApplications extends ListActivity implements requestWindowFeature(Window.FEATURE_PROGRESS); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); setContentView(R.layout.compute_sizes); - // init mLoadingDlg - mLoadingDlg = new ProgressDialog(this); - mLoadingDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER); - mLoadingDlg.setMessage(getText(R.string.loading)); - mLoadingDlg.setIndeterminate(true); - mLoadingDlg.setOnCancelListener(this); mDefaultAppIcon =Resources.getSystem().getDrawable( com.android.internal.R.drawable.sym_def_app_icon); mInvalidSizeStr = getText(R.string.invalid_size_value); @@ -1129,29 +1130,51 @@ public class ManageApplications extends ListActivity implements mReceiver = new PackageIntentReceiver(); mEmptyView = (TextView) findViewById(R.id.empty_view); mObserver = new PkgSizeObserver(); + // Create adapter and list view here + List appList = getInstalledApps(mSortOrder); + mAppInfoAdapter = new AppInfoAdapter(this, appList); + ListView lv= (ListView) findViewById(android.R.id.list); + //lv.setAdapter(mAppInfoAdapter); + lv.setOnItemClickListener(this); + lv.setSaveEnabled(true); + lv.setItemsCanFocus(true); + lv.setOnItemClickListener(this); + mListView = lv; + showLoadingMsg(); } - private void showLoadingMsg() { - if (mLoadingDlg != null) { - if(localLOGV) Log.i(TAG, "Displaying Loading message"); - mLoadingDlg.show(); + @Override + public Dialog onCreateDialog(int id) { + if (id == DLG_LOADING) { + ProgressDialog dlg = new ProgressDialog(this); + dlg.setProgressStyle(ProgressDialog.STYLE_SPINNER); + dlg.setMessage(getText(R.string.loading)); + dlg.setIndeterminate(true); + dlg.setOnCancelListener(this); + return dlg; } + return null; + } + + + private void showLoadingMsg() { + showDialog(DLG_LOADING); + if(localLOGV) Log.i(TAG, "Displaying Loading message"); } private void dismissLoadingMsg() { - if ((mLoadingDlg != null) && (mLoadingDlg.isShowing())) { - if(localLOGV) Log.i(TAG, "Dismissing Loading message"); - mLoadingDlg.dismiss(); - } + if(localLOGV) Log.i(TAG, "Dismissing Loading message"); + dismissDialog(DLG_LOADING); } @Override public void onStart() { super.onStart(); - showLoadingMsg(); // Create a thread to load resources mResourceThread = new ResourceLoaderThread(); sendMessageToHandler(INIT_PKG_INFO); + // register receiver + mReceiver.registerReceiver(); } @Override @@ -1164,6 +1187,12 @@ public class ManageApplications extends ListActivity implements mAppPropCache = mAppInfoAdapter.mAppPropMap; } + // Avoid the restart and pause when orientation changes + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + } + /* * comparator class used to sort AppInfo objects based on size */ @@ -1191,13 +1220,11 @@ public class ManageApplications extends ListActivity implements } // utility method used to start sub activity - private void startApplicationDetailsActivity(ApplicationInfo info, PackageStats ps) { + private void startApplicationDetailsActivity() { // Create intent to start new activity Intent intent = new Intent(Intent.ACTION_VIEW); intent.setClass(this, InstalledAppDetails.class); - mCurrentPkgName = info.packageName; intent.putExtra(APP_PKG_NAME, mCurrentPkgName); - intent.putExtra(APP_PKG_SIZE, ps); // start new activity to display extended information startActivityForResult(intent, INSTALLED_APP_DETAILS); } @@ -1215,12 +1242,12 @@ public class ManageApplications extends ListActivity implements @Override public boolean onPrepareOptionsMenu(Menu menu) { - if (mComputeSizes) { + if (mFirst) { menu.findItem(SORT_ORDER_ALPHA).setVisible(mSortOrder != SORT_ORDER_ALPHA); menu.findItem(SORT_ORDER_SIZE).setVisible(mSortOrder != SORT_ORDER_SIZE); menu.findItem(FILTER_OPTIONS).setVisible(true); return true; - } + } return false; } @@ -1230,16 +1257,17 @@ public class ManageApplications extends ListActivity implements if ((menuId == SORT_ORDER_ALPHA) || (menuId == SORT_ORDER_SIZE)) { sendMessageToHandler(REORDER_LIST, menuId); } else if (menuId == FILTER_OPTIONS) { - if (mAlertDlgBuilder == null) { - mAlertDlgBuilder = new AlertDialog.Builder(this). - setTitle(R.string.filter_dlg_title). - setNeutralButton(R.string.cancel, this). - setSingleChoiceItems(new CharSequence[] {getText(R.string.filter_apps_all), - getText(R.string.filter_apps_running), - getText(R.string.filter_apps_third_party)}, - -1, this); + if (mAlertDlg == null) { + mAlertDlg = new AlertDialog.Builder(this). + setTitle(R.string.filter_dlg_title). + setNeutralButton(R.string.cancel, this). + setSingleChoiceItems(new CharSequence[] {getText(R.string.filter_apps_all), + getText(R.string.filter_apps_running), + getText(R.string.filter_apps_third_party)}, + -1, this). + create(); } - mAlertDlgBuilder.show(); + mAlertDlg.show(); } return true; } @@ -1247,12 +1275,12 @@ public class ManageApplications extends ListActivity implements public void onItemClick(AdapterView parent, View view, int position, long id) { ApplicationInfo info = (ApplicationInfo)mAppInfoAdapter.getItem(position); - startApplicationDetailsActivity(info, mAppInfoAdapter.getAppStats(info.packageName)); + mCurrentPkgName = info.packageName; + startApplicationDetailsActivity(); } - // onCancel call back for dialog thats displayed when data is being loaded + // Finish the activity if the user presses the back button to cancel the activity public void onCancel(DialogInterface dialog) { - mLoadingDlg = null; finish(); } @@ -1273,6 +1301,7 @@ public class ManageApplications extends ListActivity implements default: return; } + mAlertDlg.dismiss(); sendMessageToHandler(REORDER_LIST, newOption); } } diff --git a/src/com/android/settings/UserDictionarySettings.java b/src/com/android/settings/UserDictionarySettings.java index 89d52794031..aeddcf7a913 100644 --- a/src/com/android/settings/UserDictionarySettings.java +++ b/src/com/android/settings/UserDictionarySettings.java @@ -21,10 +21,10 @@ import android.app.Dialog; import android.app.ListActivity; import android.content.Context; import android.content.DialogInterface; -import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.provider.UserDictionary; +import android.text.InputType; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; @@ -198,6 +198,9 @@ public class UserDictionarySettings extends ListActivity { protected Dialog onCreateDialog(int id) { View content = getLayoutInflater().inflate(R.layout.dialog_edittext, null); final EditText editText = (EditText) content.findViewById(R.id.edittext); + // No prediction in soft keyboard mode. TODO: Create a better way to disable prediction + editText.setInputType(InputType.TYPE_CLASS_TEXT + | InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE); return new AlertDialog.Builder(this) .setTitle(R.string.user_dict_settings_add_dialog_title) diff --git a/src/com/android/settings/battery_history/BatteryHistory.java b/src/com/android/settings/battery_history/BatteryHistory.java index 4265ac65ad8..dcf6cbf78b1 100644 --- a/src/com/android/settings/battery_history/BatteryHistory.java +++ b/src/com/android/settings/battery_history/BatteryHistory.java @@ -63,8 +63,8 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS private static final int NETWORK_USAGE = 1; private static final int GPS_USAGE = 2; private static final int SENSOR_USAGE = 3; - private static final int WAKE_LOCKS = 4; - private static final int SCREEN_ON = 5; + private static final int WAKELOCK_USAGE = 4; + private static final int MISC_USAGE = 5; // Must be in sync with the values in res/values/array.xml (id battery_history_which_spinner) private static final int UNPLUGGED = 0; @@ -83,9 +83,10 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS private List mSensorUsage = new ArrayList(); private List mGpsUsage = new ArrayList(); private List mWakelockUsage = new ArrayList(); + private List mMiscUsage = new ArrayList(); private boolean mHaveCpuUsage, mHaveNetworkUsage, mHaveSensorUsage, - mHaveWakelockUsage, mHaveScreenOnTime; + mHaveWakelockUsage, mHaveMiscUsage; private LinearLayout mGraphLayout; private LinearLayout mTextLayout; @@ -150,6 +151,10 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS public abstract double[] getValues(); public abstract void getInfo(StringBuilder info); + public double getMaxValue() { + return -Double.MAX_VALUE; + } + public int compareTo(Graphable o) { double t = getSortValue(); double ot = o.getSortValue(); @@ -209,9 +214,11 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS class CpuUsage extends Graphable { String mProcess; double[] mUsage; + double mTotalRuntime; long mStarts; - public CpuUsage(int uid, String process, long userTime, long systemTime, long starts) { + public CpuUsage(int uid, String process, long userTime, long systemTime, + long starts, long totalRuntime) { getNameForUid(uid); mProcess = process; PackageManager pm = BatteryHistory.this.getPackageManager(); @@ -220,6 +227,7 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS mUsage[0] = userTime; mUsage[1] = userTime + systemTime; + mTotalRuntime = totalRuntime; mStarts = starts; } @@ -235,6 +243,10 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS return mUsage; } + public double getMaxValue() { + return mTotalRuntime; + } + public void getInfo(StringBuilder info) { info.append(getString(R.string.battery_history_cpu_usage, mProcess)); info.append("\n\n"); @@ -306,13 +318,15 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS class SensorUsage extends Graphable { double[] mUsage; + double mTotalRealtime; int mCount; - public SensorUsage(int uid, long time, int count) { + public SensorUsage(int uid, long time, int count, long totalRealtime) { getNameForUid(uid); mUsage = new double[1]; mUsage[0] = time; + mTotalRealtime = totalRealtime; mCount = count; } @@ -329,6 +343,10 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS return mUsage; } + public double getMaxValue() { + return mTotalRealtime; + } + public void getInfo(StringBuilder info) { info.append(getString(R.string.battery_history_sensor)); info.append(mName); @@ -342,13 +360,15 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS class WakelockUsage extends Graphable { double[] mUsage; + double mTotalRealtime; int mCount; - public WakelockUsage(int uid, long time, int count) { + public WakelockUsage(int uid, long time, int count, long totalRealtime) { getNameForUid(uid); mUsage = new double[1]; mUsage[0] = time; + mTotalRealtime = totalRealtime; mCount = count; } @@ -365,6 +385,10 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS return mUsage; } + public double getMaxValue() { + return mTotalRealtime; + } + public void getInfo(StringBuilder info) { info.append(getString(R.string.battery_history_wakelock)); info.append(mName); @@ -375,35 +399,61 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS } } + class MiscUsage extends Graphable { + int mInfoLabelRes; + double[] mUsage; + double mTotalRealtime; + + public MiscUsage(String name, int infoLabelRes, long value, + long totalRealtime) { + mName = name; + + mInfoLabelRes = infoLabelRes; + + mUsage = new double[2]; + mUsage[0] = value; + mTotalRealtime = totalRealtime; + } + + public String getLabel() { + return mName; + } + + public double getSortValue() { + return mUsage[1]; + } + + public double[] getValues() { + return mUsage; + } + + public double getMaxValue() { + return mTotalRealtime; + } + + public void getInfo(StringBuilder info) { + info.append(getString(mInfoLabelRes)); + info.append(' '); + formatTime(mUsage[0], info); + info.append(" ("); + info.append((mUsage[0]*100)/mTotalRealtime); + info.append("%)"); + } + } + private List getGraphRecords() { switch (mType) { case CPU_USAGE: return mCpuUsage; case NETWORK_USAGE : return mNetworkUsage; case SENSOR_USAGE: return mSensorUsage; case GPS_USAGE: return mGpsUsage; - case WAKE_LOCKS: return mWakelockUsage; - case SCREEN_ON: return null; + case WAKELOCK_USAGE: return mWakelockUsage; + case MISC_USAGE: return mMiscUsage; default: return (List) null; // TODO } } - private void displayScreenUsage() { - mMessageText.setVisibility(View.VISIBLE); - StringBuilder sb = new StringBuilder(); - sb.append(getString(R.string.battery_history_screen_on)); - sb.append("\n\n"); - sb.append(getString(R.string.battery_history_screen_on_battery)); - sb.append(' '); - formatTime((double) mStats.getBatteryScreenOnTime(), sb); - sb.append('\n'); - sb.append(getString(R.string.battery_history_screen_on_plugged)); - sb.append(' '); - formatTime((double) mStats.getPluggedScreenOnTime(), sb); - sb.append('\n'); - mMessageText.setText(sb.toString()); - } - private void displayGraph() { Log.i(TAG, "displayGraph"); @@ -415,17 +465,13 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS mButtons[i].setVisibility(View.INVISIBLE); } - if (mType == SCREEN_ON) { - displayScreenUsage(); - return; - } - double maxValue = -Double.MAX_VALUE; List records = getGraphRecords(); for (Graphable g : records) { double[] values = g.getValues(); maxValue = Math.max(maxValue, values[values.length - 1]); + maxValue = Math.max(maxValue, g.getMaxValue()); } int[] colors = new int[2]; @@ -476,6 +522,9 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS private void processCpuUsage() { mCpuUsage.clear(); + long uSecTime = SystemClock.uptimeMillis() * 1000; + final long uSecNow = mStats.computeBatteryUptime(uSecTime, mWhich) / 1000; + SparseArray uidStats = mStats.getUidStats(); final int NU = uidStats.size(); for (int iu = 0; iu < NU; iu++) { @@ -493,7 +542,7 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS if (userTime != 0 || systemTime != 0) { mCpuUsage.add(new CpuUsage(u.getUid(), ent.getKey(), - userTime, systemTime, starts)); + userTime, systemTime, starts, uSecNow)); } } } @@ -523,7 +572,7 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS mSensorUsage.clear(); long uSecTime = SystemClock.elapsedRealtime() * 1000; - final long uSecNow = mStats.getBatteryUptime(uSecTime); + final long uSecNow = mStats.computeBatteryRealtime(uSecTime, mWhich) / 1000; SparseArray uidStats = mStats.getUidStats(); final int NU = uidStats.size(); @@ -559,10 +608,10 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS } if (timeGps > 0) { - mGpsUsage.add(new SensorUsage(uid, timeGps, countGps)); + mGpsUsage.add(new SensorUsage(uid, timeGps, countGps, uSecNow)); } if (timeOther > 0) { - mSensorUsage.add(new SensorUsage(uid, timeOther, countOther)); + mSensorUsage.add(new SensorUsage(uid, timeOther, countOther, uSecNow)); } } @@ -574,7 +623,7 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS mWakelockUsage.clear(); long uSecTime = SystemClock.elapsedRealtime() * 1000; - final long uSecNow = mStats.getBatteryUptime(uSecTime); + final long uSecNow = mStats.computeBatteryRealtime(uSecTime, mWhich) / 1000; SparseArray uidStats = mStats.getUidStats(); final int NU = uidStats.size(); @@ -600,15 +649,45 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS } if (time > 0) { - mWakelockUsage.add(new WakelockUsage(uid, time, count)); + mWakelockUsage.add(new WakelockUsage(uid, time, count, uSecNow)); } } Collections.sort(mWakelockUsage); } - private void processScreenOn() { - // Do nothing + private void processMiscUsage() { + mMiscUsage.clear(); + + long rawRealtime = SystemClock.elapsedRealtime() * 1000; + final long batteryRealtime = mStats.getBatteryRealtime(rawRealtime); + final long whichRealtime = mStats.computeBatteryRealtime(rawRealtime, mWhich) / 1000; + + long time = mStats.computeBatteryUptime(SystemClock.uptimeMillis() * 1000, mWhich) / 1000; + if (time > 0) { + mMiscUsage.add(new MiscUsage(getString( + R.string.battery_history_awake_label), + R.string.battery_history_awake, + time, whichRealtime)); + } + + time = mStats.getScreenOnTime(batteryRealtime, mWhich) / 1000; + if (time > 0) { + mMiscUsage.add(new MiscUsage(getString( + R.string.battery_history_screen_on_label), + R.string.battery_history_screen_on, + time, whichRealtime)); + } + + time = mStats.getPhoneOnTime(batteryRealtime, mWhich) / 1000; + if (time > 0) { + mMiscUsage.add(new MiscUsage(getString( + R.string.battery_history_phone_on_label), + R.string.battery_history_phone_on, + time, whichRealtime)); + } + + Collections.sort(mMiscUsage); } private void collectStatistics() { @@ -630,16 +709,16 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS processSensorUsage(); } } - if (mType == WAKE_LOCKS) { + if (mType == WAKELOCK_USAGE) { if (!mHaveWakelockUsage) { mHaveWakelockUsage = true; processWakelockUsage(); } } - if (mType == SCREEN_ON) { - if (!mHaveScreenOnTime) { - mHaveScreenOnTime = true; - processScreenOn(); + if (mType == MISC_USAGE) { + if (!mHaveMiscUsage) { + mHaveMiscUsage = true; + processMiscUsage(); } } } @@ -657,7 +736,7 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS //mStats.dumpLocked(new LogPrinter(Log.INFO, TAG)); mHaveCpuUsage = mHaveNetworkUsage = mHaveSensorUsage - = mHaveWakelockUsage = mHaveScreenOnTime = false; + = mHaveWakelockUsage = mHaveMiscUsage = false; } catch (RemoteException e) { Log.e(TAG, "RemoteException:", e); } @@ -686,26 +765,6 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS if (parent.equals(mTypeSpinner)) { mType = position; - switch (position) { - case CPU_USAGE: - mWhichSpinner.setEnabled(true); - break; - case NETWORK_USAGE: - mWhichSpinner.setEnabled(true); - break; - case GPS_USAGE: - mWhichSpinner.setEnabled(true); - break; - case SENSOR_USAGE: - mWhichSpinner.setEnabled(true); - break; - case WAKE_LOCKS: - mWhichSpinner.setEnabled(true); - break; - case SCREEN_ON: - mWhichSpinner.setEnabled(false); - break; - } } else if (parent.equals(mWhichSpinner)) { switch (position) { case UNPLUGGED: @@ -722,7 +781,7 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS if (oldWhich != mWhich) { mHaveCpuUsage = mHaveNetworkUsage = mHaveSensorUsage - = mHaveWakelockUsage = mHaveScreenOnTime = false; + = mHaveWakelockUsage = mHaveMiscUsage = false; } displayGraph(); @@ -766,6 +825,7 @@ public class BatteryHistory extends Activity implements OnClickListener, OnItemS mWhichSpinner = (Spinner) findViewById(R.id.whichSpinner); mWhichSpinner.setOnItemSelectedListener(this); + mWhichSpinner.setEnabled(true); mButtons = new GraphableButton[8]; mButtons[0] = (GraphableButton) findViewById(R.id.button0); diff --git a/src/com/android/settings/bluetooth/BluetoothPinDialog.java b/src/com/android/settings/bluetooth/BluetoothPinDialog.java index a8e77371b0a..5e289f756ac 100644 --- a/src/com/android/settings/bluetooth/BluetoothPinDialog.java +++ b/src/com/android/settings/bluetooth/BluetoothPinDialog.java @@ -157,11 +157,12 @@ public class BluetoothPinDialog extends AlertActivity implements DialogInterface messageView.setText(getString(R.string.bluetooth_pairing_error_message, mLocalManager.getLocalDeviceManager().getName(mAddress))); - mPinView.setEnabled(false); + mPinView.setVisibility(View.GONE); mPinView.clearFocus(); mPinView.removeTextChangedListener(this); - - mAlert.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(false); + + mOkButton.setEnabled(true); + mAlert.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.GONE); } private void onPair(String pin) { diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java index f75e5f5d0c7..5adada3c424 100644 --- a/src/com/android/settings/bluetooth/BluetoothSettings.java +++ b/src/com/android/settings/bluetooth/BluetoothSettings.java @@ -253,6 +253,8 @@ public class BluetoothSettings extends PreferenceActivity // we should start a scan if (bluetoothState == ExtendedBluetoothState.ENABLED) { mLocalManager.startScanning(false); + } else if (bluetoothState == ExtendedBluetoothState.DISABLED) { + mDeviceList.setProgress(false); } } } diff --git a/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java b/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java index b4a8ae0e00d..7dd1b706d7b 100644 --- a/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java +++ b/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java @@ -217,6 +217,9 @@ public class ConnectSpecificProfilesActivity extends PreferenceActivity private void refreshOnlineModePreference() { mOnlineModePreference.setChecked(mOnlineMode); + /* Gray out checkbox while connecting and disconnecting */ + mOnlineModePreference.setEnabled(!mDevice.isBusy()); + /** * If the device is online, show status. Otherwise, show a summary that * describes what the checkbox does. @@ -244,7 +247,10 @@ public class ConnectSpecificProfilesActivity extends PreferenceActivity .getProfileManager(mManager, profile); int connectionStatus = profileManager.getConnectionStatus(address); - + + /* Gray out checkbox while connecting and disconnecting */ + profilePref.setEnabled(!mDevice.isBusy()); + profilePref.setSummary(getProfileSummary(profileManager, profile, address, connectionStatus, mOnlineMode)); diff --git a/src/com/android/settings/bluetooth/LocalBluetoothManager.java b/src/com/android/settings/bluetooth/LocalBluetoothManager.java index 4fd708eccf0..4671fac6e8e 100644 --- a/src/com/android/settings/bluetooth/LocalBluetoothManager.java +++ b/src/com/android/settings/bluetooth/LocalBluetoothManager.java @@ -23,6 +23,7 @@ import java.util.List; import android.app.Activity; import android.app.AlertDialog; +import android.bluetooth.BluetoothA2dp; import android.bluetooth.BluetoothDevice; import android.content.Context; import android.content.Intent; @@ -51,11 +52,13 @@ public class LocalBluetoothManager { private Context mContext; /** If a BT-related activity is in the foreground, this will be it. */ private Activity mForegroundActivity; - + private AlertDialog mErrorDialog = null; + private BluetoothDevice mManager; private LocalBluetoothDeviceManager mLocalDeviceManager; private BluetoothEventRedirector mEventRedirector; + private BluetoothA2dp mBluetoothA2dp; public static enum ExtendedBluetoothState { ENABLED, ENABLING, DISABLED, DISABLING, UNKNOWN } private ExtendedBluetoothState mState = ExtendedBluetoothState.UNKNOWN; @@ -95,7 +98,9 @@ public class LocalBluetoothManager { mEventRedirector = new BluetoothEventRedirector(this); mEventRedirector.start(); - + + mBluetoothA2dp = new BluetoothA2dp(context); + return true; } @@ -112,6 +117,10 @@ public class LocalBluetoothManager { } public void setForegroundActivity(Activity activity) { + if (mErrorDialog != null) { + mErrorDialog.dismiss(); + mErrorDialog = null; + } mForegroundActivity = activity; } @@ -149,9 +158,23 @@ public class LocalBluetoothManager { */ dispatchScanningStateChanged(true); } else { - - // Don't scan more than frequently than SCAN_EXPIRATION_MS, unless forced - if (!force && mLastScan + SCAN_EXPIRATION_MS > System.currentTimeMillis()) return; + if (!force) { + // Don't scan more than frequently than SCAN_EXPIRATION_MS, + // unless forced + if (mLastScan + SCAN_EXPIRATION_MS > System.currentTimeMillis()) { + return; + } + + // If we are playing music, don't scan unless forced. + List sinks = mBluetoothA2dp.listConnectedSinks(); + if (sinks != null) { + for (String address : sinks) { + if (mBluetoothA2dp.getSinkState(address) == BluetoothA2dp.STATE_PLAYING) { + return; + } + } + } + } if (mManager.startDiscovery(true)) { mLastScan = System.currentTimeMillis(); @@ -235,7 +258,7 @@ public class LocalBluetoothManager { if (mForegroundActivity != null) { // Need an activity context to show a dialog - AlertDialog ad = new AlertDialog.Builder(mForegroundActivity) + mErrorDialog = new AlertDialog.Builder(mForegroundActivity) .setIcon(android.R.drawable.ic_dialog_alert) .setTitle(titleResId) .setMessage(message) diff --git a/src/com/android/settings/deviceinfo/Memory.java b/src/com/android/settings/deviceinfo/Memory.java index adfe88ced47..75a84b71909 100644 --- a/src/com/android/settings/deviceinfo/Memory.java +++ b/src/com/android/settings/deviceinfo/Memory.java @@ -81,6 +81,8 @@ public class Memory extends PreferenceActivity { intentFilter.addAction(Intent.ACTION_MEDIA_MOUNTED); intentFilter.addAction(Intent.ACTION_MEDIA_SHARED); intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL); + intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTABLE); + intentFilter.addAction(Intent.ACTION_MEDIA_NOFS); intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED); intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED); intentFilter.addDataScheme("file"); diff --git a/src/com/android/settings/wifi/AdvancedSettings.java b/src/com/android/settings/wifi/AdvancedSettings.java index 54aab4be4b5..323d5c77095 100644 --- a/src/com/android/settings/wifi/AdvancedSettings.java +++ b/src/com/android/settings/wifi/AdvancedSettings.java @@ -95,6 +95,7 @@ public class AdvancedSettings extends PreferenceActivity if (validChannelCounts == null) { Toast.makeText(this, R.string.wifi_setting_num_channels_error, Toast.LENGTH_SHORT).show(); + pref.setEnabled(false); return; } String[] entries = new String[validChannelCounts.length]; @@ -107,6 +108,7 @@ public class AdvancedSettings extends PreferenceActivity } pref.setEntries(entries); pref.setEntryValues(entryValues); + pref.setEnabled(true); int numChannels = wifiManager.getNumAllowedChannels(); if (numChannels >= 0) { pref.setValue(String.valueOf(numChannels));