diff --git a/core/java/android/accounts/AccountManagerService.java b/core/java/android/accounts/AccountManagerService.java
index 1ba8eee3d3b24..4f3405b852c93 100644
--- a/core/java/android/accounts/AccountManagerService.java
+++ b/core/java/android/accounts/AccountManagerService.java
@@ -499,7 +499,7 @@ public class AccountManagerService
if (response != null) {
try {
if (result == null) {
- onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, "null bundle");
+ response.onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, "null bundle");
return;
}
if (Log.isLoggable(TAG, Log.VERBOSE)) {
@@ -1541,8 +1541,15 @@ public class AccountManagerService
mAuthenticator = null;
IAccountManagerResponse response = getResponseAndClose();
if (response != null) {
- onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION,
- "disconnected");
+ try {
+ response.onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION,
+ "disconnected");
+ } catch (RemoteException e) {
+ if (Log.isLoggable(TAG, Log.VERBOSE)) {
+ Log.v(TAG, "Session.onServiceDisconnected: "
+ + "caught RemoteException while responding", e);
+ }
+ }
}
}
@@ -1551,8 +1558,15 @@ public class AccountManagerService
public void onTimedOut() {
IAccountManagerResponse response = getResponseAndClose();
if (response != null) {
- onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION,
- "timeout");
+ try {
+ response.onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION,
+ "timeout");
+ } catch (RemoteException e) {
+ if (Log.isLoggable(TAG, Log.VERBOSE)) {
+ Log.v(TAG, "Session.onTimedOut: caught RemoteException while responding",
+ e);
+ }
+ }
}
}
diff --git a/core/java/com/android/internal/policy/IFaceLockCallback.aidl b/core/java/com/android/internal/policy/IFaceLockCallback.aidl
index 25adbb6dd41a8..a7b01b269509c 100644
--- a/core/java/com/android/internal/policy/IFaceLockCallback.aidl
+++ b/core/java/com/android/internal/policy/IFaceLockCallback.aidl
@@ -22,5 +22,6 @@ oneway interface IFaceLockCallback {
void unlock();
void cancel();
void reportFailedAttempt();
+ void exposeFallback();
void pokeWakelock();
}
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml b/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml
index 99ab8a3c5a8ac..ee1ce5faf5db2 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml
@@ -62,6 +62,7 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:background="@drawable/lockscreen_password_field_dark"
android:textColor="#ffffffff"
+ android:privateImeOptions="com.google.android.inputmethod.latin.forceAscii"
/>
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml b/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml
index 64c002f885320..254dd3e21501f 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml
@@ -58,6 +58,7 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:background="@drawable/lockscreen_password_field_dark"
android:textColor="#ffffffff"
+ android:privateImeOptions="com.google.android.inputmethod.latin.forceAscii"
/>
diff --git a/core/res/res/layout/keyguard_screen_password_portrait.xml b/core/res/res/layout/keyguard_screen_password_portrait.xml
index 6b033597f56ed..597cfe77571ff 100644
--- a/core/res/res/layout/keyguard_screen_password_portrait.xml
+++ b/core/res/res/layout/keyguard_screen_password_portrait.xml
@@ -117,6 +117,7 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#ffffffff"
android:imeOptions="actionDone"
+ android:privateImeOptions="com.google.android.inputmethod.latin.forceAscii"
/>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 4a83ae8a39d4f..0b64f70ddeaac 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -163,7 +163,7 @@
"Meine persönlichen Informationen"
"Direkter Zugriff auf die Kontakte und den Kalender Ihres Tablets"
"Direkter Zugriff auf die Kontakte und den Kalender Ihres Telefons"
- "Meinen Standort"
+ "Ihren Standort"
"Ihren physischen Standort überwachen"
"Netzwerkkommunikation"
"Ermöglicht Anwendungen den Zugriff auf verschiedene Netzwerkfunktionen"
@@ -712,7 +712,7 @@
"Die Aktion FACTORY_TEST wird nur für unter \"/system/app\" gespeicherte Pakete unterstützt."
"Es wurden kein Paket mit der Aktion FACTORY_TEST gefunden."
"Neustart"
- "Die Seite auf \'%s\' sagt:"
+ "Die Seite %s sagt:"
"JavaScript"
"Von dieser Seite navigieren?"\n\n"%s"\n\n"Wählen Sie \"OK\", um fortzufahren, oder wählen Sie \"Abbrechen\", um auf der aktuellen Seite zu bleiben."
"Bestätigen"
@@ -1058,7 +1058,7 @@
"Ausführen"
"Nummer"\n"mit %s wählen"
"Neuer Kontakt"\n"mit %s erstellen"
- "Die folgenden Anwendungen benötigen die Berechtigung zum aktuellen und zukünftigen Zugriff auf Ihr Konto."
+ "Die folgenden Apps benötigen die Berechtigung zum aktuellen und zukünftigen Zugriff auf Ihr Konto."
"Möchten Sie diese Anfrage zulassen?"
"Zugriffsanfrage"
"Zulassen"
@@ -1178,7 +1178,7 @@
"SD-Karte"
"USB-Speicher"
"Bearbeiten..."
- "Warnung zu Datennutzung"
+ "Warnung zum Datenverbrauch"
"Für Nutzung/Einstell. berühren"
"2G-/3G-Daten deaktiviert"
"4G-Daten deaktiviert"
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index ac48934caf544..127e705fe22f8 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -1080,7 +1080,7 @@
"Υποβολή"
"Η λειτουργία αυτοκινήτου είναι ενεργοποιημένη"
"Επιλέξτε για έξοδο από τη λειτουργία αυτοκινήτου."
- "Σύνδεση μέσω κινητής συσκευής ή σημείου πρόσβασης ενεργή"
+ "Πρόσδεση ή σύνδεση σημείου πρόσβασης ενεργή"
"Αγγίξτε για να γίνει διαμόρφωση"
"Πίσω"
"Επόμενο"
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index eced66b14d914..f8a60f949b802 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -1014,7 +1014,7 @@
"Formato"
"Dispositivo de depuración USB conectado"
"Seleccionar para inhabilitar la depuración USB"
- "Seleccionar método de introducción de texto"
+ "Selecciona un método de introducción de texto"
"Configurar métodos de introducción"
" ABCDEFGHIJKLMNOPQRSTUVWXYZ"
" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 2839734974417..f956e7bd8c598 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -345,7 +345,7 @@
"Permet d\'accéder à des commandes de fournisseur de position géographique supplémentaires. Des applications malveillantes peuvent utiliser cette fonctionnalité pour interférer avec l\'utilisation du GPS ou d\'autres sources de localisation géographique."
"autoriser l\'installation d\'un fournisseur de services de localisation"
"Créer des sources de données de localisation factices à des fins de test. Les applications malveillantes peuvent exploiter cette fonction pour remplacer la position géographique et/ou l\'état renvoyé par les sources de données de localisation réelles, telles que le GPS ou les fournisseurs réseau, ou pour surveiller et transmettre votre position géographique à une source externe."
- "Localisation OK (GPS)"
+ "Localisation précise (GPS)"
"Permet d\'accéder à des sources de localisation précises telles que le système GPS de la tablette, lorsque ces services sont disponibles. Des applications malveillantes peuvent exploiter cette fonctionnalité pour déterminer votre position, ce qui peut entraîner une utilisation accrue de la batterie."
"Permet d\'accéder à des sources de localisation précises telles que le système GPS du téléphone, lorsque ces services sont disponibles. Des applications malveillantes peuvent exploiter cette fonctionnalité pour déterminer votre position, ce qui peut entraîner une utilisation accrue de la batterie."
"Position géo. approximative (selon le réseau)"
@@ -486,11 +486,11 @@
"Permet à une application de lire tous les mots, noms et expressions que l\'utilisateur a pu enregistrer dans son dictionnaire personnel."
"Enregistrement dans le dictionnaire défini par l\'utilisateur"
"Permet à une application d\'enregistrer de nouveaux mots dans le dictionnaire personnel de l\'utilisateur."
- "modif./suppr. contenu mémoire USB"
+ "Modifier/Supprimer contenu mémoire USB"
"modifier/supprimer le contenu de la carte SD"
"Autorise une application à écrire sur la mémoire USB."
"Autorise une application à écrire sur la carte SD."
- "modif./suppr. contenu mémoire interne"
+ "Modifier/Supprimer contenu mémoire interne"
"Permet à une application de modifier le contenu de la mémoire de stockage interne."
"accéder au système de fichiers en cache"
"Permet à une application de lire et d\'écrire dans le système de fichiers en cache."
@@ -886,8 +886,8 @@
"Annuler"
"Attention"
"Chargement en cours..."
- "ON"
- "OFF"
+ "OUI"
+ "NON"
"Continuer avec"
"Utiliser cette application par défaut pour cette action"
"Effacer les paramètres par défaut dans les Paramètres de page d\'accueil > Applications > Gérer les applications."
@@ -895,7 +895,7 @@
"Sélectionnez une application pour le périphérique USB"
"Aucune application ne peut effectuer cette action."
- "Malheureusement, l\'application %1$s s\'est arrêtée."
+ "L\'application \"%1$s\" s\'est arrêtée."
"Malheureusement, le processus %1$s s\'est arrêté."
"L\'application %2$s ne répond pas."\n\n"Voulez-vous la fermer ?"
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 95fbeeb0dd970..155c0693c5618 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -462,12 +462,12 @@
"애플리케이션이 Wi-Fi 액세스포인트에 연결하거나 연결을 끊고, 구성된 Wi-Fi 네트워크를 변경할 수 있도록 합니다."
"Wi-Fi 멀티캐스트 수신 허용"
"애플리케이션이 휴대기기로 직접 주소가 지정되지 않은 패킷을 받을 수 있도록 합니다. 이 기능은 가까운 곳에서 제공되는 서비스를 검색할 때 유용하며 비멀티캐스트 모드보다 전원을 더 많이 소비합니다."
- "Bluetooth 관리"
+ "블루투스 관리"
"애플리케이션이 로컬 블루투스 태블릿을 구성한 다음 원격 기기를 검색하여 페어링할 수 있도록 합니다."
- "애플리케이션이 로컬 Bluetooth 휴대전화를 구성한 다음 원격 장치를 검색하여 페어링할 수 있도록 합니다."
- "Bluetooth 연결 만들기"
+ "애플리케이션이 로컬 블루투스 휴대전화를 구성한 다음 원격 장치를 검색하여 페어링할 수 있도록 합니다."
+ "블루투스 연결 만들기"
"애플리케이션이 로컬 블루투스 태블릿의 구성을 보고 페어링된 장치에 연결하며 연결을 수락할 수 있도록 합니다."
- "애플리케이션이 로컬 Bluetooth 전화의 구성을 보고 페어링된 장치에 연결하며 연결을 수락할 수 있도록 합니다."
+ "애플리케이션이 로컬 블루투스 전화의 구성을 보고 페어링된 장치에 연결하며 연결을 수락할 수 있도록 합니다."
"NFC(Near Field Communication) 제어"
"애플리케이션에서 NFC(Near Field Communication) 태그, 카드 및 리더와 통신할 수 있습니다."
"키 잠금 사용 중지"
@@ -886,8 +886,8 @@
"취소"
"주의"
"로드 중..."
- "사용"
- "사용 안함"
+ "ON"
+ "OFF"
"작업을 수행할 때 사용하는 애플리케이션"
"이 작업에 대해 기본값으로 사용"
"홈 설정 > 애플리케이션 > 애플리케이션 관리에서 기본값을 지웁니다."
@@ -928,10 +928,10 @@
"텍스트에 대한 작업 선택"
"벨소리 볼륨"
"미디어 볼륨"
- "Bluetooth를 통해 재생"
+ "블루투스를 통해 재생"
"고주파 벨소리 선택"
"통화 볼륨"
- "Bluetooth 통화 볼륨"
+ "블루투스 통화 볼륨"
"알람 볼륨"
"알림 볼륨"
"볼륨"
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 12fac56a9cc9d..7a3ae0b92d944 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -887,7 +887,7 @@
"Pozor"
"Nalaganje ..."
"VKLOPLJENO"
- "IZKLOPLJEN"
+ "IZKLOPLJENO"
"Dokončanje dejanja z"
"Privzeta uporaba za to dejanje."
"Počistite privzete nastavitve v razdelku Osnovne nastavitve > Programi > Upravljanje programov."
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 4b791f1e6aa9d..2aaf551be1a45 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -875,7 +875,7 @@
"選取文字"
"新增至字典"
"刪除"
- "輸入方式"
+ "輸入法"
"文字動作"
"儲存空間即將不足"
"平板電腦的儲存空間即將不足。"
@@ -888,9 +888,9 @@
"載入中..."
"開啟"
"關閉"
- "完成操作需使用"
- "以此為本操作預設值。"
- "清除首頁設定 (應用程式) 管理應用程式的預設值。"
+ "選擇要使用的應用程式"
+ "設為預設應用程式。"
+ "清除主螢幕設定 > 應用程式 > 管理應用程式中的預設選項。"
"選取一項操作"
"選取要以 USB 裝置存取的應用程式"
"沒有應用程式可執行此項操作。"
@@ -1014,8 +1014,8 @@
"格式化"
"USB 偵錯模式已啟用"
"選取以停用 USB 偵錯。"
- "選取輸入方式"
- "設定輸入方式"
+ "選擇輸入法"
+ "設定輸入法"
" ABCDEFGHIJKLMNOPQRSTUVWXYZ"
" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"待選項目"
@@ -1065,7 +1065,7 @@
"拒絕"
"已要求權限"
"帳戶 %s 的"\n"權限要求"
- "輸入方式"
+ "輸入法"
"同步處理"
"協助工具"
"桌布"
diff --git a/data/fonts/Roboto-Bold.ttf b/data/fonts/Roboto-Bold.ttf
index e5d828d8b43d1..d226be274dc3d 100644
Binary files a/data/fonts/Roboto-Bold.ttf and b/data/fonts/Roboto-Bold.ttf differ
diff --git a/data/fonts/Roboto-BoldItalic.ttf b/data/fonts/Roboto-BoldItalic.ttf
index d8fa3ae88d838..65ac7eaf183a0 100644
Binary files a/data/fonts/Roboto-BoldItalic.ttf and b/data/fonts/Roboto-BoldItalic.ttf differ
diff --git a/data/fonts/Roboto-Italic.ttf b/data/fonts/Roboto-Italic.ttf
index 6682d17b0bae3..7fd28ec31c9ee 100644
Binary files a/data/fonts/Roboto-Italic.ttf and b/data/fonts/Roboto-Italic.ttf differ
diff --git a/data/fonts/Roboto-Regular.ttf b/data/fonts/Roboto-Regular.ttf
index 153c60882bb8f..7a2db5a03bbe5 100644
Binary files a/data/fonts/Roboto-Regular.ttf and b/data/fonts/Roboto-Regular.ttf differ
diff --git a/docs/html/guide/developing/device.jd b/docs/html/guide/developing/device.jd
index e08119fa61094..9ce36492c2b3a 100644
--- a/docs/html/guide/developing/device.jd
+++ b/docs/html/guide/developing/device.jd
@@ -30,14 +30,9 @@ device directly from Eclipse or from the command line with ADB. If
you don't yet have a device, check with the service providers in your area to determine which
Android-powered devices are available.
-If you want a SIM-unlocked phone, then you might consider either an Android Dev Phone or the
-Google Nexus S. These are SIM-unlocked so that you can use them on any GSM network using a SIM
-card. The Android Dev Phones also feature an unlocked bootloader so you can install custom system
-images (great for developing and installing custom versions of the Android platform). To find a
-a place you can purchase the Nexus S, visit google.com/phone. To purchase an Android
-Dev Phone, see the Android Market site
-(requires a developer account).
+If you want a SIM-unlocked phone, then you might consider the Google Nexus S. To find a place
+to purchase the Nexus S and other Android-powered devices, visit google.com/phone.
Note: When developing on a device, keep in mind that you should
still use the stateNotNeeded=["true" | "false"]
android:taskAffinity="string"
android:theme="resource or theme"
+ android:uiOptions=["none" | "splitActionBarWhenNarrow"]
android:windowSoftInputMode=["stateUnspecified",
"stateUnchanged", "stateHidden",
"stateAlwaysHidden", "stateVisible",
@@ -749,14 +750,39 @@ match what the activity actually looks like).
If this attribute is not set, the activity inherits the theme set for the
-application as a whole — see the
+application as a whole — from the
<application>
element's
theme
-attribute. If that attribute is also not set, the default system theme is used.
+attribute. If that attribute is also not set, the default system theme is used. For more
+information, see the Styles and Themes developer guide.
+
+{@code android:uiOptions}
+Extra options for an activity's UI.
+ Must be one of the following values.
+
+
+ | Value | Description |
+ | {@code "none"} | No extra UI options. This is the default. |
+ | {@code "splitActionBarWhenNarrow"} | Add a bar at
+the bottom of the screen to display action items in the {@link android.app.ActionBar}, when
+constrained for horizontal space (such as when in portrait mode on a handset). Instead of a small
+number of action items appearing in the action bar at the top of the screen, the action bar is
+split into the top navigation section and the bottom bar for action items. This ensures a reasonable
+amount of space is made available not only for the action items, but also for navigation and title
+elements at the top. Menu items are not split across the two bars; they always appear
+together. |
+
+ For more information about the action bar, see the Action Bar developer guide.
+ This attribute was added in API level 14.
+
+
+
{@code android:windowSoftInputMode}
How the main window of the activity interacts with the window containing
diff --git a/docs/html/guide/topics/manifest/application-element.jd b/docs/html/guide/topics/manifest/application-element.jd
index 41313ed35cc25..4f1964cd40286 100644
--- a/docs/html/guide/topics/manifest/application-element.jd
+++ b/docs/html/guide/topics/manifest/application-element.jd
@@ -23,7 +23,8 @@ parent.link=manifest-intro.html
android:process="string"
android:restoreAnyVersion=["true" | "false"]
android:taskAffinity="string"
- android:theme="resource or theme" >
+ android:theme="resource or theme"
+ android:uiOptions=["none" | "splitActionBarWhenNarrow"] >
. . .
</application>
@@ -276,7 +277,31 @@ set by the
A reference to a style resource defining a default theme for all
activities in the application. Individual activities can override
the default by setting their own theme
-attributes; see that attribute for more information.
+attributes. For more information, see the Styles and Themes developer guide.
+
+
+
+{@code android:uiOptions}
+Extra options for an activity's UI.
+ Must be one of the following values.
+
+
+ | Value | Description |
+ | {@code "none"} | No extra UI options. This is the default. |
+ | {@code "splitActionBarWhenNarrow"} | Add a bar at
+the bottom of the screen to display action items in the {@link android.app.ActionBar}, when
+constrained for horizontal space (such as when in portrait mode on a handset). Instead of a small
+number of action items appearing in the action bar at the top of the screen, the action bar is
+split into the top navigation section and the bottom bar for action items. This ensures a reasonable
+amount of space is made available not only for the action items, but also for navigation and title
+elements at the top. Menu items are not split across the two bars; they always appear
+together. |
+
+ For more information about the action bar, see the Action Bar developer guide.
+ This attribute was added in API level 14.
+
diff --git a/docs/html/shareables/adl/2011Q3_Android_Market_for_Developers.pdf b/docs/html/shareables/adl/2011Q3_Android_Market_for_Developers.pdf
new file mode 100644
index 0000000000000..598a27e7c4e76
Binary files /dev/null and b/docs/html/shareables/adl/2011Q3_Android_Market_for_Developers.pdf differ
diff --git a/docs/html/shareables/adl/2011Q3_Designing_UIs_for_Phones_and_Tablets.pdf b/docs/html/shareables/adl/2011Q3_Designing_UIs_for_Phones_and_Tablets.pdf
new file mode 100644
index 0000000000000..6ef41dd8271b4
Binary files /dev/null and b/docs/html/shareables/adl/2011Q3_Designing_UIs_for_Phones_and_Tablets.pdf differ
diff --git a/docs/html/shareables/adl/2011Q3_Introduction_to_Honeycomb_APIs.pdf b/docs/html/shareables/adl/2011Q3_Introduction_to_Honeycomb_APIs.pdf
new file mode 100644
index 0000000000000..da954d80c53e8
Binary files /dev/null and b/docs/html/shareables/adl/2011Q3_Introduction_to_Honeycomb_APIs.pdf differ
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index f151572922fbd..385120afcc52a 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -131,8 +131,7 @@
"TeleTypewriter бе активиран."
"Вибрира при звънене."
"Звънът е заглушен."
-
-
+ "Приложението %s е отхвърлено."
"2G-3G данните са деактивирани"
"4G данните са деактивирани"
"Мобилните данни са деактивирани"
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 29c5c9704271e..06a66a04dc373 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -131,8 +131,7 @@
"TeleTypewriter מופעל"
"צלצול ורטט."
"צלצול שקט."
-
-
+ "%s נדחה."
"נתוני 2G-3G מושבתים"
"נתוני 4G מושבתים"
"נתונים לנייד מושבתים"
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 8a7eff18673ba..03a5166fd116f 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -36,7 +36,7 @@
"알림"
"충전기를 연결하세요."
"배터리가 얼마 남지 않았습니다."
- "%d%%개 남음"
+ "%d%% 남음"
"USB 충전이 지원되지 않습니다."\n"제공된 충전기만 사용하세요."
"배터리 사용량"
"설정"
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index c5909bb6eb8f8..a20f07552eef4 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -42,7 +42,7 @@
"Iestatījumi"
"Wi-Fi"
"Lidmašīnas režīms"
- "Ekrāna automātiska pagriešana"
+ "Automātiska ekrāna pagriešana"
"IZ. SK."
"AUTOM."
"Paziņojumi"
diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
index b4db01d424e1c..81e1901f398ae 100644
--- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
+++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
@@ -358,15 +358,16 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
public void takeEmergencyCallAction() {
mHasOverlay = true;
- // FaceLock must be stopped if it is running when emergency call is pressed
- stopAndUnbindFromFaceLock();
- // Continue showing FaceLock area until dialer comes up
+ // Continue showing FaceLock area until dialer comes up or call is resumed
if (mLockPatternUtils.usingBiometricWeak() &&
- mLockPatternUtils.isBiometricWeakInstalled()) {
+ mLockPatternUtils.isBiometricWeakInstalled() && mFaceLockServiceRunning) {
showFaceLockAreaWithTimeout(FACELOCK_VIEW_AREA_EMERGENCY_DIALER_TIMEOUT);
}
+ // FaceLock must be stopped if it is running
+ stopAndUnbindFromFaceLock();
+
pokeWakelock(EMERGENCY_CALL_TIMEOUT);
if (TelephonyManager.getDefault().getCallState()
== TelephonyManager.CALL_STATE_OFFHOOK) {
@@ -1375,6 +1376,13 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT);
}
+ // Removes the black area that covers the backup unlock method
+ @Override
+ public void exposeFallback() {
+ if (DEBUG) Log.d(TAG, "FaceLock exposeFallback()");
+ hideFaceLockArea(); // Expose fallback
+ }
+
// Allows the Face Unlock service to poke the wake lock to keep the lockscreen alive
@Override
public void pokeWakelock() {
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index fd6ecebbeb917..318ad9e89f0d1 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -827,8 +827,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// See also hasNavigationBar().
String navBarOverride = SystemProperties.get("qemu.hw.mainkeys");
if (! "".equals(navBarOverride)) {
- if (navBarOverride.equals("1")) mHasNavigationBar = true;
- else if (navBarOverride.equals("0")) mHasNavigationBar = false;
+ if (navBarOverride.equals("1")) mHasNavigationBar = false;
+ else if (navBarOverride.equals("0")) mHasNavigationBar = true;
}
mNavigationBarHeight = mHasNavigationBar
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index 99dcd9b424fbc..8abf07ef8d342 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -1698,6 +1698,11 @@ public class PowerManagerService extends IPowerManager.Stub
// make sure button and key backlights are off too
mButtonLight.turnOff();
mKeyboardLight.turnOff();
+ // clear current value so we will update based on the new conditions
+ // when the sensor is reenabled.
+ mLightSensorValue = -1;
+ // reset our highest light sensor value when the screen turns off
+ mHighestLightSensorValue = -1;
}
}
}
@@ -2467,7 +2472,6 @@ public class PowerManagerService extends IPowerManager.Stub
synchronized (mLocks) {
mIsDocked = (state != Intent.EXTRA_DOCK_STATE_UNDOCKED);
if (mIsDocked) {
- // allow brightness to decrease when docked
mHighestLightSensorValue = -1;
}
if ((mPowerState & SCREEN_ON_BIT) != 0) {
@@ -3039,25 +3043,20 @@ public class PowerManagerService extends IPowerManager.Stub
}
if (mSensorManager != null && mLightSensorEnabled != enable) {
mLightSensorEnabled = enable;
+ // clear previous values so we will adjust to current brightness when
+ // auto-brightness is reenabled
+ mHighestLightSensorValue = -1;
+ mLightSensorValue = -1;
+
// clear calling identity so sensor manager battery stats are accurate
long identity = Binder.clearCallingIdentity();
try {
if (enable) {
- // reset our highest value when reenabling
- mHighestLightSensorValue = -1;
- // force recompute of backlight values
- if (mLightSensorValue >= 0) {
- int value = (int)mLightSensorValue;
- mLightSensorValue = -1;
- handleLightSensorValue(value);
- }
mSensorManager.registerListener(mLightListener, mLightSensor,
SensorManager.SENSOR_DELAY_NORMAL);
} else {
mSensorManager.unregisterListener(mLightListener);
mHandler.removeCallbacks(mAutoBrightnessTask);
- mLightSensorPendingDecrease = false;
- mLightSensorPendingIncrease = false;
}
} finally {
Binder.restoreCallingIdentity(identity);
@@ -3109,45 +3108,43 @@ public class PowerManagerService extends IPowerManager.Stub
}
};
- private void handleLightSensorValue(int value) {
- long milliseconds = SystemClock.elapsedRealtime();
- if (mLightSensorValue == -1 ||
- milliseconds < mLastScreenOnTime + mLightSensorWarmupTime) {
- // process the value immediately if screen has just turned on
- mHandler.removeCallbacks(mAutoBrightnessTask);
- mLightSensorPendingDecrease = false;
- mLightSensorPendingIncrease = false;
- lightSensorChangedLocked(value);
- } else {
- if ((value > mLightSensorValue && mLightSensorPendingDecrease) ||
- (value < mLightSensorValue && mLightSensorPendingIncrease) ||
- (value == mLightSensorValue) ||
- (!mLightSensorPendingDecrease && !mLightSensorPendingIncrease)) {
- // delay processing to debounce the sensor
- mHandler.removeCallbacks(mAutoBrightnessTask);
- mLightSensorPendingDecrease = (value < mLightSensorValue);
- mLightSensorPendingIncrease = (value > mLightSensorValue);
- if (mLightSensorPendingDecrease || mLightSensorPendingIncrease) {
- mLightSensorPendingValue = value;
- mHandler.postDelayed(mAutoBrightnessTask, LIGHT_SENSOR_DELAY);
- }
- } else {
- mLightSensorPendingValue = value;
- }
- }
- }
-
SensorEventListener mLightListener = new SensorEventListener() {
public void onSensorChanged(SensorEvent event) {
- if (mDebugLightSensor) {
- Slog.d(TAG, "onSensorChanged: light value: " + event.values[0]);
- }
synchronized (mLocks) {
// ignore light sensor while screen is turning off
if (isScreenTurningOffLocked()) {
return;
}
- handleLightSensorValue((int)event.values[0]);
+
+ int value = (int)event.values[0];
+ long milliseconds = SystemClock.elapsedRealtime();
+ if (mDebugLightSensor) {
+ Slog.d(TAG, "onSensorChanged: light value: " + value);
+ }
+ if (mLightSensorValue == -1 ||
+ milliseconds < mLastScreenOnTime + mLightSensorWarmupTime) {
+ // process the value immediately if screen has just turned on
+ mHandler.removeCallbacks(mAutoBrightnessTask);
+ mLightSensorPendingDecrease = false;
+ mLightSensorPendingIncrease = false;
+ lightSensorChangedLocked(value);
+ } else {
+ if ((value > mLightSensorValue && mLightSensorPendingDecrease) ||
+ (value < mLightSensorValue && mLightSensorPendingIncrease) ||
+ (value == mLightSensorValue) ||
+ (!mLightSensorPendingDecrease && !mLightSensorPendingIncrease)) {
+ // delay processing to debounce the sensor
+ mHandler.removeCallbacks(mAutoBrightnessTask);
+ mLightSensorPendingDecrease = (value < mLightSensorValue);
+ mLightSensorPendingIncrease = (value > mLightSensorValue);
+ if (mLightSensorPendingDecrease || mLightSensorPendingIncrease) {
+ mLightSensorPendingValue = value;
+ mHandler.postDelayed(mAutoBrightnessTask, LIGHT_SENSOR_DELAY);
+ }
+ } else {
+ mLightSensorPendingValue = value;
+ }
+ }
}
}
diff --git a/services/java/com/android/server/location/GpsLocationProvider.java b/services/java/com/android/server/location/GpsLocationProvider.java
index 0ce5499a1e0b5..00788bad3d79a 100755
--- a/services/java/com/android/server/location/GpsLocationProvider.java
+++ b/services/java/com/android/server/location/GpsLocationProvider.java
@@ -554,13 +554,8 @@ public class GpsLocationProvider implements LocationProviderInterface {
long delay;
- // force refresh NTP cache when outdated
- if (mNtpTime.getCacheAge() >= NTP_INTERVAL) {
- mNtpTime.forceRefresh();
- }
-
- // only update when NTP time is fresh
- if (mNtpTime.getCacheAge() < NTP_INTERVAL) {
+ // GPS requires fresh NTP time
+ if (mNtpTime.forceRefresh()) {
long time = mNtpTime.getCachedNtpTime();
long timeReference = mNtpTime.getCachedNtpTimeReference();
long certainty = mNtpTime.getCacheCertainty();
diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java
index 4f50d2483f267..8534810d56c7a 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java
@@ -245,6 +245,11 @@ public class CDMALTEPhone extends CDMAPhone {
return mIccRecords.getMsisdnNumber();
}
+ @Override
+ public void getAvailableNetworks(Message response) {
+ mCM.getAvailableNetworks(response);
+ }
+
@Override
public void requestIsimAuthentication(String nonce, Message result) {
mCM.requestIsimAuthentication(nonce, result);