am d7d5b33b: am 375b6d98: Merge "Force closed at settings application when delete Misc files"
* commit 'd7d5b33bcd78680d475c92fca7bafc4ac4279621':
Force closed at settings application when delete Misc files
diff --git a/Android.mk b/Android.mk
index fe8ed2d..738cea0 100644
--- a/Android.mk
+++ b/Android.mk
@@ -2,7 +2,7 @@
include $(CLEAR_VARS)
LOCAL_JAVA_LIBRARIES := bouncycastle telephony-common
-LOCAL_STATIC_JAVA_LIBRARIES := guava android-support-v4 jsr305
+LOCAL_STATIC_JAVA_LIBRARIES := guava android-support-v4 android-support-v13 jsr305
LOCAL_MODULE_TAGS := optional
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 14207db..bdf8296 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -67,7 +67,6 @@
android:icon="@mipmap/ic_launcher_settings"
android:taskAffinity=""
android:theme="@android:style/Theme.Holo"
- android:uiOptions="splitActionBarWhenNarrow"
android:hardwareAccelerated="true"
android:supportsRtl="true">
@@ -122,6 +121,7 @@
<!-- Top-level settings -->
<activity android:name="Settings$WifiSettingsActivity"
+ android:uiOptions="splitActionBarWhenNarrow"
android:taskAffinity=""
android:label="@string/wifi_settings"
android:configChanges="orientation|keyboardHidden|screenSize"
@@ -141,6 +141,7 @@
<!-- Keep compatibility with old shortcuts. -->
<activity-alias android:name=".wifi.WifiSettings"
+ android:uiOptions="splitActionBarWhenNarrow"
android:taskAffinity="com.android.settings"
android:label="@string/wifi_settings"
android:targetActivity="Settings$WifiSettingsActivity"
@@ -153,6 +154,7 @@
</activity-alias>
<activity android:name=".wifi.WifiPickerActivity"
+ android:uiOptions="splitActionBarWhenNarrow"
android:taskAffinity="com.android.settings"
android:parentActivityName="Settings">
<intent-filter>
@@ -163,10 +165,11 @@
</activity>
<activity android:name=".wifi.WifiSetupActivity"
- android:theme="@style/setup_wizard_theme"
- android:label="@string/wifi_setup_wizard_title"
+ android:uiOptions="splitActionBarWhenNarrow"
+ android:theme="@style/setup_wizard_theme"
+ android:label="@string/wifi_setup_wizard_title"
android:icon="@drawable/empty_icon"
- android:clearTaskOnLaunch="true">
+ android:clearTaskOnLaunch="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="com.android.net.wifi.SETUP_WIFI_NETWORK" />
@@ -175,11 +178,12 @@
</activity>
<activity android:name=".wifi.WifiSettingsForSetupWizardXL"
- android:theme="@android:style/Theme.Holo.NoActionBar"
- android:screenOrientation="behind"
- android:clearTaskOnLaunch="true"
- android:windowSoftInputMode="adjustResize"
- android:exported="true" />
+ android:uiOptions="splitActionBarWhenNarrow"
+ android:theme="@android:style/Theme.Holo.NoActionBar"
+ android:screenOrientation="behind"
+ android:clearTaskOnLaunch="true"
+ android:windowSoftInputMode="adjustResize"
+ android:exported="true" />
<activity android:name="Settings$AdvancedWifiSettingsActivity"
android:taskAffinity="com.android.settings"
@@ -254,7 +258,6 @@
<activity android:name="ApnSettings"
android:label="@string/apn_settings"
- android:uiOptions="none"
android:configChanges="orientation|keyboardHidden|screenSize"
android:launchMode="singleTask">
<intent-filter>
@@ -266,6 +269,7 @@
</activity>
<activity android:name="Settings$BluetoothSettingsActivity"
+ android:uiOptions="splitActionBarWhenNarrow"
android:label="@string/bluetooth_settings_title"
android:taskAffinity=""
android:excludeFromRecents="true">
@@ -284,6 +288,7 @@
<!-- Keep compatibility with old shortcuts. -->
<activity-alias android:name=".bluetooth.BluetoothSettings"
+ android:uiOptions="splitActionBarWhenNarrow"
android:label="@string/bluetooth_settings_title"
android:targetActivity="Settings$BluetoothSettingsActivity"
android:exported="true"
@@ -295,6 +300,7 @@
</activity-alias>
<activity android:name=".bluetooth.DevicePickerActivity"
+ android:uiOptions="splitActionBarWhenNarrow"
android:theme="@android:style/Theme.Holo.DialogWhenLarge"
android:label="@string/device_picker"
android:clearTaskOnLaunch="true">
@@ -306,7 +312,6 @@
<activity android:name="Settings$TetherSettingsActivity"
android:label="@string/tether_settings_title_all"
- android:uiOptions="none"
android:taskAffinity=""
android:excludeFromRecents="true">
<intent-filter>
@@ -328,7 +333,6 @@
<!-- Keep compatibility with old shortcuts. -->
<activity-alias android:name=".TetherSettings"
android:label="@string/tether_settings_title_all"
- android:uiOptions="none"
android:clearTaskOnLaunch="true"
android:exported="true"
android:targetActivity="Settings$TetherSettingsActivity">
@@ -343,6 +347,7 @@
</activity-alias>
<activity android:name="Settings$WifiP2pSettingsActivity"
+ android:uiOptions="splitActionBarWhenNarrow"
android:taskAffinity="com.android.settings"
android:parentActivityName="Settings$WifiSettingsActivity">
<intent-filter>
@@ -505,7 +510,6 @@
<activity android:name="Settings$UserDictionarySettingsActivity"
android:label="@string/user_dict_settings_titlebar"
android:taskAffinity="com.android.settings"
- android:uiOptions="none"
android:parentActivityName="Settings$InputMethodAndLanguageSettingsActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -649,8 +653,7 @@
<activity android:name="Settings$ManageApplicationsActivity"
android:label="@string/applications_settings"
android:taskAffinity=""
- android:excludeFromRecents="true"
- android:uiOptions="none">
+ android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.APPLICATION_SETTINGS" />
@@ -765,9 +768,26 @@
android:resource="@id/application_settings" />
</activity>
+ <activity android:name="Settings$AppOpsSummaryActivity"
+ android:label="@string/app_ops_settings"
+ android:taskAffinity=""
+ android:excludeFromRecents="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <action android:name="android.settings.APP_OPS_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.VOICE_LAUNCH" />
+ <category android:name="com.android.settings.SHORTCUT" />
+ </intent-filter>
+ <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+ android:value="com.android.settings.applications.AppOpsSummary" />
+ <!--
+ <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+ android:resource="@id/application_settings" /> -->
+ </activity>
+
<activity android:name="Settings$LocationSettingsActivity"
android:label="@string/location_settings_title"
- android:uiOptions="none"
android:configChanges="orientation|keyboardHidden|screenSize"
android:taskAffinity=""
android:excludeFromRecents="true">
@@ -975,7 +995,6 @@
<activity android:name="Settings$StorageSettingsActivity"
android:label="@string/storage_settings_title"
- android:uiOptions="none"
android:taskAffinity="com.android.settings"
android:parentActivityName="Settings">
<intent-filter>
@@ -1342,7 +1361,6 @@
<activity android:name="Settings$PowerUsageSummaryActivity"
android:label="@string/power_usage_summary_title"
- android:uiOptions="none"
android:taskAffinity=""
android:excludeFromRecents="true">
<intent-filter>
@@ -1371,8 +1389,7 @@
<activity android:name="Settings$AccountSyncSettingsActivity"
android:label="@string/account_sync_settings_title"
android:taskAffinity=""
- android:parentActivityName="Settings"
- android:uiOptions="none">
+ android:parentActivityName="Settings">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.ACCOUNT_SYNC_SETTINGS" />
@@ -1454,7 +1471,6 @@
<activity android:name="Settings$DataUsageSummaryActivity"
android:label="@string/data_usage_summary_title"
- android:uiOptions="none"
android:taskAffinity=""
android:excludeFromRecents="true">
<intent-filter>
@@ -1469,6 +1485,7 @@
</activity>
<activity android:name="Settings$DreamSettingsActivity"
+ android:uiOptions="splitActionBarWhenNarrow"
android:label="@string/screensaver_settings_title"
android:taskAffinity=""
android:excludeFromRecents="true">
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_1.png b/res/drawable-ldrtl-hdpi/avatar_default_1.png
new file mode 100644
index 0000000..4ebe7fe
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/avatar_default_1.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_2.png b/res/drawable-ldrtl-hdpi/avatar_default_2.png
new file mode 100644
index 0000000..524e556
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/avatar_default_2.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_3.png b/res/drawable-ldrtl-hdpi/avatar_default_3.png
new file mode 100644
index 0000000..ea0d69d
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/avatar_default_3.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_4.png b/res/drawable-ldrtl-hdpi/avatar_default_4.png
new file mode 100644
index 0000000..7387835
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/avatar_default_4.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_5.png b/res/drawable-ldrtl-hdpi/avatar_default_5.png
new file mode 100644
index 0000000..0bb455c
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/avatar_default_5.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_6.png b/res/drawable-ldrtl-hdpi/avatar_default_6.png
new file mode 100644
index 0000000..fa42704
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/avatar_default_6.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_7.png b/res/drawable-ldrtl-hdpi/avatar_default_7.png
new file mode 100644
index 0000000..79c0fb7
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/avatar_default_7.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_8.png b/res/drawable-ldrtl-hdpi/avatar_default_8.png
new file mode 100644
index 0000000..a254b84
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/avatar_default_8.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_appwidget_settings_brightness_half_holo.png b/res/drawable-ldrtl-hdpi/ic_appwidget_settings_brightness_half_holo.png
new file mode 100644
index 0000000..9d8b24a
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_appwidget_settings_brightness_half_holo.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_bt_cellphone.png b/res/drawable-ldrtl-hdpi/ic_bt_cellphone.png
new file mode 100644
index 0000000..2d9b75e
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_bt_cellphone.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_emergency.png b/res/drawable-ldrtl-hdpi/ic_emergency.png
new file mode 100644
index 0000000..89e1b07
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_emergency.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_network_signal_0.png b/res/drawable-ldrtl-hdpi/ic_network_signal_0.png
new file mode 100644
index 0000000..54e7af9
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_network_signal_0.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_network_signal_1.png b/res/drawable-ldrtl-hdpi/ic_network_signal_1.png
new file mode 100644
index 0000000..de959d5
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_network_signal_1.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_network_signal_2.png b/res/drawable-ldrtl-hdpi/ic_network_signal_2.png
new file mode 100644
index 0000000..097b9fb
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_network_signal_2.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_network_signal_3.png b/res/drawable-ldrtl-hdpi/ic_network_signal_3.png
new file mode 100644
index 0000000..11cb40b
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_network_signal_3.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_network_signal_4.png b/res/drawable-ldrtl-hdpi/ic_network_signal_4.png
new file mode 100644
index 0000000..d741ffc
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_network_signal_4.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_settings_applications.png b/res/drawable-ldrtl-hdpi/ic_settings_applications.png
new file mode 100644
index 0000000..1cb9c8d
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_settings_applications.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_settings_display.png b/res/drawable-ldrtl-hdpi/ic_settings_display.png
new file mode 100644
index 0000000..c2f3448
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_settings_display.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_settings_language.png b/res/drawable-ldrtl-hdpi/ic_settings_language.png
new file mode 100755
index 0000000..bbd2c1e
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_settings_language.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_settings_multiuser.png b/res/drawable-ldrtl-hdpi/ic_settings_multiuser.png
new file mode 100644
index 0000000..7d6eff9
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_settings_multiuser.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_settings_sound.png b/res/drawable-ldrtl-hdpi/ic_settings_sound.png
new file mode 100755
index 0000000..b703b4e
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_settings_sound.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_tab_selected_running.png b/res/drawable-ldrtl-hdpi/ic_tab_selected_running.png
new file mode 100644
index 0000000..1cb9c8d
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_tab_selected_running.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_tab_unselected_running.png b/res/drawable-ldrtl-hdpi/ic_tab_unselected_running.png
new file mode 100644
index 0000000..1cb9c8d
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_tab_unselected_running.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_1.png b/res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_1.png
new file mode 100644
index 0000000..5806c4f
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_1.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_2.png b/res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_2.png
new file mode 100644
index 0000000..c3a1d91
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_2.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_3.png b/res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_3.png
new file mode 100644
index 0000000..36ea001
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_3.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_4.png b/res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_4.png
new file mode 100644
index 0000000..6c4f252
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_4.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/stat_sys_phone_call.png b/res/drawable-ldrtl-hdpi/stat_sys_phone_call.png
new file mode 100755
index 0000000..033efe4
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/stat_sys_phone_call.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_1.png b/res/drawable-ldrtl-mdpi/avatar_default_1.png
new file mode 100644
index 0000000..2b2c00c
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/avatar_default_1.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_2.png b/res/drawable-ldrtl-mdpi/avatar_default_2.png
new file mode 100644
index 0000000..fa05e11
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/avatar_default_2.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_3.png b/res/drawable-ldrtl-mdpi/avatar_default_3.png
new file mode 100644
index 0000000..91c7d5a
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/avatar_default_3.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_4.png b/res/drawable-ldrtl-mdpi/avatar_default_4.png
new file mode 100644
index 0000000..4638ac2
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/avatar_default_4.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_5.png b/res/drawable-ldrtl-mdpi/avatar_default_5.png
new file mode 100644
index 0000000..6d84a15
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/avatar_default_5.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_6.png b/res/drawable-ldrtl-mdpi/avatar_default_6.png
new file mode 100644
index 0000000..c62ea5b
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/avatar_default_6.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_7.png b/res/drawable-ldrtl-mdpi/avatar_default_7.png
new file mode 100644
index 0000000..fe0cbfe
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/avatar_default_7.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_8.png b/res/drawable-ldrtl-mdpi/avatar_default_8.png
new file mode 100644
index 0000000..424ba3d
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/avatar_default_8.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_appwidget_settings_brightness_half_holo.png b/res/drawable-ldrtl-mdpi/ic_appwidget_settings_brightness_half_holo.png
new file mode 100644
index 0000000..90941e4
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_appwidget_settings_brightness_half_holo.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_bt_cellphone.png b/res/drawable-ldrtl-mdpi/ic_bt_cellphone.png
new file mode 100644
index 0000000..b6ebe34
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_bt_cellphone.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_emergency.png b/res/drawable-ldrtl-mdpi/ic_emergency.png
new file mode 100755
index 0000000..004a473
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_emergency.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_network_signal_0.png b/res/drawable-ldrtl-mdpi/ic_network_signal_0.png
new file mode 100644
index 0000000..4cac9ed
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_network_signal_0.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_network_signal_1.png b/res/drawable-ldrtl-mdpi/ic_network_signal_1.png
new file mode 100644
index 0000000..9323a13
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_network_signal_1.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_network_signal_2.png b/res/drawable-ldrtl-mdpi/ic_network_signal_2.png
new file mode 100644
index 0000000..e2f38a9
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_network_signal_2.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_network_signal_3.png b/res/drawable-ldrtl-mdpi/ic_network_signal_3.png
new file mode 100644
index 0000000..b565289
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_network_signal_3.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_network_signal_4.png b/res/drawable-ldrtl-mdpi/ic_network_signal_4.png
new file mode 100644
index 0000000..f63a426
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_network_signal_4.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_settings_applications.png b/res/drawable-ldrtl-mdpi/ic_settings_applications.png
new file mode 100644
index 0000000..740e709
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_settings_applications.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_settings_display.png b/res/drawable-ldrtl-mdpi/ic_settings_display.png
new file mode 100644
index 0000000..b25e0a7
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_settings_display.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_settings_language.png b/res/drawable-ldrtl-mdpi/ic_settings_language.png
new file mode 100644
index 0000000..bb97a45
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_settings_language.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_settings_multiuser.png b/res/drawable-ldrtl-mdpi/ic_settings_multiuser.png
new file mode 100644
index 0000000..f538805
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_settings_multiuser.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_settings_sound.png b/res/drawable-ldrtl-mdpi/ic_settings_sound.png
new file mode 100644
index 0000000..419868f
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_settings_sound.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_tab_selected_running.png b/res/drawable-ldrtl-mdpi/ic_tab_selected_running.png
new file mode 100644
index 0000000..740e709
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_tab_selected_running.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_tab_unselected_running.png b/res/drawable-ldrtl-mdpi/ic_tab_unselected_running.png
new file mode 100644
index 0000000..740e709
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_tab_unselected_running.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_1.png b/res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_1.png
new file mode 100644
index 0000000..3f635f8
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_1.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_2.png b/res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_2.png
new file mode 100644
index 0000000..04aae2d
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_2.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_3.png b/res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_3.png
new file mode 100644
index 0000000..17609df
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_3.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_4.png b/res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_4.png
new file mode 100644
index 0000000..90a8e27
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_4.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/stat_sys_phone_call.png b/res/drawable-ldrtl-mdpi/stat_sys_phone_call.png
new file mode 100644
index 0000000..f566dad
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/stat_sys_phone_call.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_1.png b/res/drawable-ldrtl-xhdpi/avatar_default_1.png
new file mode 100644
index 0000000..1fdbd46
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/avatar_default_1.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_2.png b/res/drawable-ldrtl-xhdpi/avatar_default_2.png
new file mode 100644
index 0000000..9d3d693
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/avatar_default_2.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_3.png b/res/drawable-ldrtl-xhdpi/avatar_default_3.png
new file mode 100644
index 0000000..3778914
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/avatar_default_3.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_4.png b/res/drawable-ldrtl-xhdpi/avatar_default_4.png
new file mode 100644
index 0000000..a25b4f8
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/avatar_default_4.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_5.png b/res/drawable-ldrtl-xhdpi/avatar_default_5.png
new file mode 100644
index 0000000..2840f22
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/avatar_default_5.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_6.png b/res/drawable-ldrtl-xhdpi/avatar_default_6.png
new file mode 100644
index 0000000..d438170
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/avatar_default_6.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_7.png b/res/drawable-ldrtl-xhdpi/avatar_default_7.png
new file mode 100644
index 0000000..b155d9e
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/avatar_default_7.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_8.png b/res/drawable-ldrtl-xhdpi/avatar_default_8.png
new file mode 100644
index 0000000..a17e3a4
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/avatar_default_8.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_appwidget_settings_brightness_half_holo.png b/res/drawable-ldrtl-xhdpi/ic_appwidget_settings_brightness_half_holo.png
new file mode 100644
index 0000000..b06324e
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_appwidget_settings_brightness_half_holo.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_bt_cellphone.png b/res/drawable-ldrtl-xhdpi/ic_bt_cellphone.png
new file mode 100644
index 0000000..8b67b91
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_bt_cellphone.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_emergency.png b/res/drawable-ldrtl-xhdpi/ic_emergency.png
new file mode 100644
index 0000000..ddc2642
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_emergency.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_network_signal_0.png b/res/drawable-ldrtl-xhdpi/ic_network_signal_0.png
new file mode 100644
index 0000000..e4ec015
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_network_signal_0.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_network_signal_1.png b/res/drawable-ldrtl-xhdpi/ic_network_signal_1.png
new file mode 100644
index 0000000..712685a
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_network_signal_1.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_network_signal_2.png b/res/drawable-ldrtl-xhdpi/ic_network_signal_2.png
new file mode 100644
index 0000000..99fe1ac
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_network_signal_2.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_network_signal_3.png b/res/drawable-ldrtl-xhdpi/ic_network_signal_3.png
new file mode 100644
index 0000000..4ac2f10
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_network_signal_3.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_network_signal_4.png b/res/drawable-ldrtl-xhdpi/ic_network_signal_4.png
new file mode 100644
index 0000000..34608f1
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_network_signal_4.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_settings_applications.png b/res/drawable-ldrtl-xhdpi/ic_settings_applications.png
new file mode 100644
index 0000000..fcd6ab1
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_settings_applications.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_settings_display.png b/res/drawable-ldrtl-xhdpi/ic_settings_display.png
new file mode 100644
index 0000000..4184864
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_settings_display.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_settings_language.png b/res/drawable-ldrtl-xhdpi/ic_settings_language.png
new file mode 100644
index 0000000..3e0f3df
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_settings_language.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_settings_multiuser.png b/res/drawable-ldrtl-xhdpi/ic_settings_multiuser.png
new file mode 100644
index 0000000..a3c797c
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_settings_multiuser.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_settings_sound.png b/res/drawable-ldrtl-xhdpi/ic_settings_sound.png
new file mode 100644
index 0000000..8d04d42
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_settings_sound.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_tab_selected_running.png b/res/drawable-ldrtl-xhdpi/ic_tab_selected_running.png
new file mode 100644
index 0000000..fcd6ab1
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_tab_selected_running.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_tab_unselected_running.png b/res/drawable-ldrtl-xhdpi/ic_tab_unselected_running.png
new file mode 100644
index 0000000..fcd6ab1
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_tab_unselected_running.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_1.png b/res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_1.png
new file mode 100644
index 0000000..0e124bd
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_1.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_2.png b/res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_2.png
new file mode 100644
index 0000000..d97d5d4
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_2.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_3.png b/res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_3.png
new file mode 100644
index 0000000..99a8384
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_3.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_4.png b/res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_4.png
new file mode 100644
index 0000000..40307f8
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_4.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/stat_sys_phone_call.png b/res/drawable-ldrtl-xhdpi/stat_sys_phone_call.png
new file mode 100644
index 0000000..dce5d9a
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/stat_sys_phone_call.png
Binary files differ
diff --git a/res/layout/app_ops_item.xml b/res/layout/app_ops_item.xml
new file mode 100644
index 0000000..f42a8b9
--- /dev/null
+++ b/res/layout/app_ops_item.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 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.
+*/
+-->
+
+<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="?android:attr/listPreferredItemHeight"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+ android:paddingTop="8dip"
+ android:paddingBottom="8dip"
+ android:columnCount="3">
+
+ <ImageView
+ android:id="@+id/app_icon"
+ android:layout_width="@android:dimen/app_icon_size"
+ android:layout_height="@android:dimen/app_icon_size"
+ android:layout_rowSpan="2"
+ android:layout_marginEnd="8dip"
+ android:scaleType="centerInside"
+ android:contentDescription="@null" />
+
+ <TextView
+ android:id="@+id/app_name"
+ android:layout_width="0dip"
+ android:layout_columnSpan="2"
+ android:layout_gravity="fill_horizontal"
+ android:layout_marginTop="2dip"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textAlignment="viewStart" />
+
+ <TextView
+ android:id="@+id/op_name"
+ android:layout_width="0dip"
+ android:layout_gravity="fill_horizontal"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textAlignment="viewStart" />
+
+ <TextView
+ android:id="@+id/op_time"
+ android:layout_marginStart="8dip"
+ android:textAppearance="?android:attr/textAppearanceSmall" />
+
+</GridLayout>
diff --git a/res/layout/app_ops_summary.xml b/res/layout/app_ops_summary.xml
new file mode 100644
index 0000000..2073a00
--- /dev/null
+++ b/res/layout/app_ops_summary.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, 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.
+*/
+-->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <android.support.v4.view.ViewPager
+ android:id="@+id/pager"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1">
+ <android.support.v4.view.PagerTabStrip
+ android:id="@+id/tabs"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="top"
+ android:textAppearance="@style/TextAppearance.PagerTabs"
+ android:paddingLeft="@dimen/pager_tabs_padding"
+ android:paddingRight="@dimen/pager_tabs_padding">
+ </android.support.v4.view.PagerTabStrip>
+ </android.support.v4.view.ViewPager>
+
+</LinearLayout>
diff --git a/res/layout/wifi_dialog.xml b/res/layout/wifi_dialog.xml
index ff003c4..4824be6 100644
--- a/res/layout/wifi_dialog.xml
+++ b/res/layout/wifi_dialog.xml
@@ -142,7 +142,7 @@
</LinearLayout>
</LinearLayout>
- <LinearLayout
+ <LinearLayout android:id="@+id/password_layout"
style="@style/wifi_item" >
<TextView
style="@style/wifi_item_label"
@@ -154,7 +154,7 @@
android:password="true" />
</LinearLayout>
- <LinearLayout
+ <LinearLayout android:id="@+id/show_password_layout"
style="@style/wifi_item" >
<!-- Dummy to enable right-justification of checkbox -->
<TextView
diff --git a/res/values-af/arrays.xml b/res/values-af/arrays.xml
index e46ce09..7c8550a 100644
--- a/res/values-af/arrays.xml
+++ b/res/values-af/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Grafika)"</item>
<item msgid="1340692776955662664">"Belstapel op glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standaardlimiet"</item>
<item msgid="4071574792028999443">"Geen agtergrondprosesse"</item>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 8a1004d..f0c0650 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Stel op"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Kies \'n ander enjin"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Hierdie spraaksintese-enjin kan dalk al die teks versamel wat uitgespreek sal word, insluitend persoonlike data soos wagwoorde en kredietkaartnommers. Dit kom van die <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> enjin. Aktiveer die gebruik van hierdie spraaksintese-enjin?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Hierdie taal vereis \'n werkende netwerkverbinding vir teks-na-spraak-uitvoer."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Enjins"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> instellings"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> is geaktiveer"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Dwing 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Aktiveer 4x MSAA in OpenGL ES 2.0-programme"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profiel se GPU-lewering"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Meet leweringstyd in die adb-dop dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Vensteranimasieskaal"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Oorganganimasieskaal"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animator-tydsduurskaal"</string>
diff --git a/res/values-am/arrays.xml b/res/values-am/arrays.xml
index d4d49f2..b9bf71b 100644
--- a/res/values-am/arrays.xml
+++ b/res/values-am/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (ግራፊክስ)"</item>
<item msgid="1340692776955662664">"የጥሪ ቁልል በ glGetError ላይ"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"መደበኛ ወሰኖች"</item>
<item msgid="4071574792028999443">"ምንም የዳራ ሂደቶች የሉም"</item>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 45ba53e..bd14769 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"አዋቅር"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"ሌላ አንቀሳቃሽ ምረጥ"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"ይህ የንግግር ልምምድ አንቀሳቃሽ የሚነገረውን ፅሁፍ ሁሉ እንደ ይለፍ ቃል እና የዱቤ ካርድ ቁጥሮች፣ የግል ውሂብ ጨምሮ ለመሰብሰብ ይችል ይሆናል። ከ <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> አንቀሳቃሽ ይመጣል። የዚህን የንግግር ልምምድ አንቀሳቃሽ አጠቃቀም ይንቃ?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"ይህ ቋንቋ የጽሑፍ-ወደ-ንግግር ውጽዓት እንዲኖረው የሚሰራ የአውታረ መረብ ግንኙነት ያስፈልገዋል።"</string>
<string name="tts_engines_section" msgid="7515470972378742429">"አንቀሳቃሾች"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>ቅንብሮች"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> ተችሏል"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"4x MSAA አስገድድ"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"4x MSAA በ OpenGL ES 2.0 መተግበሪያዎች ውስጥ ያንቁ"</string>
<string name="track_frame_time" msgid="6146354853663863443">"የGPU ምላሽ መስጠት መዝግብ"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"ምላሽ ለመስጠት የወሰደው ጊዜ በadb shell dumpsys gfxinfo ለካ"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"የዊንዶው እነማ ልኬት ለውጥ"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"የእነማ ልኬት ለውጥ ሽግግር"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"እነማ አድራጊ ቆይታ መለኪያ"</string>
diff --git a/res/values-ar/arrays.xml b/res/values-ar/arrays.xml
index 6fd3fe9..943efa1 100644
--- a/res/values-ar/arrays.xml
+++ b/res/values-ar/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (رسومات)"</item>
<item msgid="1340692776955662664">"تكدس الاستدعاءات في دالة glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"الحد القياسي"</item>
<item msgid="4071574792028999443">"ليست هناك عمليات بالخلفية"</item>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 85f6ed0..c0ca43a 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"تهيئة"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"اختيار محرك آخر"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"ربما يمكن لمحرك اصطناع الحديث جمع كل النص التي سيتم نطقه، بما في ذلك البيانات الشخصية مثل كلمات المرور وأرقام بطاقة الائتمان. يتم إحضار ذلك من المحرك <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. هل تريد تمكين استخدام محرك اصطناع الحديث هذا؟"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"تتطلب هذه اللغة اتصال شبكة سليمًا لتحويل النص إلى كلام."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"المحركات"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"إعدادات <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"تم تمكين <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"فرض 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"تمكين 4x MSAA في تطبيقات OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"رسم مخطط لعرض GPU"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"قياس وقت العرض بـ adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"حجم الرسوم المتحركة للنافذة"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"حجم الرسوم المتحركة للنقل"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"طول مدة الرسوم المتحركة"</string>
diff --git a/res/values-be/arrays.xml b/res/values-be/arrays.xml
index b8a0de1..7f5526a 100644
--- a/res/values-be/arrays.xml
+++ b/res/values-be/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Graphics)"</item>
<item msgid="1340692776955662664">"Выклікаць стэк на glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Стандартны ліміт"</item>
<item msgid="4071574792028999443">"Няма фонавых працэсаў"</item>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 34a8360..0f8f79e 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Наладзіць"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Выбраць іншы модуль"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Гэты модуль сінтэзу гаворкі можа збіраць увесь тэкст, які будзе прамоўлены, у тым ліку асабістыя дадзеныя, напрыклад паролі і нумары крэдытных карт. Ён адносіцца да модуля <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Уключыць гэты модуль сінтэзу гаворкі?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Гэта мова патрабуе актыўнага падключэння да сеткі, каб выконваць функцыю прамаўлення тэксту."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Модулi"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Налады модулю <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"Модуль <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> уключаны"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Прымусовае выкананне 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Уключыць 4x MSAA у прыкладаннях з OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Апрацоўка профілю GPU"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Вымерыць час рэндэрынгу ў абалонцы adb dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Маштаб анімацыі акна"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Маштаб перадачы анімацыі"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Шкала працягласці анiматара"</string>
diff --git a/res/values-bg/arrays.xml b/res/values-bg/arrays.xml
index f203510..399a87b 100644
--- a/res/values-bg/arrays.xml
+++ b/res/values-bg/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Графика)"</item>
<item msgid="1340692776955662664">"Извикване на стека при glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Стандартно ограничение"</item>
<item msgid="4071574792028999443">"Няма процеси на заден план"</item>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 312bceb..dfd2313 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Конфигуриране"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Избор на друга машина"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Тази машина за синтезиране на реч може да събира всички изговорено от вас, включително лични данни като пароли и номера на кредитни карти. Тя произлиза от машината <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Искате ли да я активирате?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Този език изисква работеща връзка с мрежата за синтезирания говор."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Машини"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Настройки за <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> е активирано"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Задаване на 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Активиране на 4x MSAA в прилож. с OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Профилиране на GPU"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Измерване на времето за изобр. в adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Скала на аним.: Прозорец"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Скала на анимация: Преход"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Скала за Animator"</string>
diff --git a/res/values-ca/arrays.xml b/res/values-ca/arrays.xml
index f7536ba..ee02102 100644
--- a/res/values-ca/arrays.xml
+++ b/res/values-ca/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (gràfics)"</item>
<item msgid="1340692776955662664">"Pila de trucades de glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Límit estàndard"</item>
<item msgid="4071574792028999443">"Sense processos en segon pla"</item>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 3d4ac75..2ceada5 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -784,8 +784,7 @@
<string name="status_meid_number" msgid="1751442889111731088">"MEID"</string>
<string name="status_icc_id" msgid="943368755577172747">"ICCID"</string>
<string name="status_network_type" msgid="3279383550222116235">"Tipus de xarxa mòbil"</string>
- <!-- no translation found for status_latest_area_info (7222470836568238054) -->
- <skip />
+ <string name="status_latest_area_info" msgid="7222470836568238054">"Informació de l\'operador"</string>
<string name="status_data_state" msgid="5503181397066522950">"Estat de la xarxa mòbil"</string>
<string name="status_service_state" msgid="2323931627519429503">"Estat del servei"</string>
<string name="status_signal_strength" msgid="3732655254188304547">"Intensitat del senyal"</string>
@@ -1439,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Configura"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Selecciona un altre motor"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Pot ser que aquest motor de síntesi de la parla pugui recopilar tot el text que es dirà en veu alta, incloses les dades personals, com ara les contrasenyes i els números de les targetes de crèdit. Ve del motor <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Voleu activar l\'ús d\'aquest motor de síntesi de la parla?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Aquest idioma requereix una connexió activa a la xarxa per generar resultats de text a veu."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Motors"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Configuració de: <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> està activat"</string>
@@ -1658,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Força MSAA de 4x"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Activa MSAA de 4x a les aplicacions OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Representació GPU perfil"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Mesura temps representació a adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Escala d\'animació finestra"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Escala d\'animació transició"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Escala durada d\'animació"</string>
diff --git a/res/values-cs/arrays.xml b/res/values-cs/arrays.xml
index 67111d3..313e25e 100644
--- a/res/values-cs/arrays.xml
+++ b/res/values-cs/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"Zásobník volání funkce glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardní limit"</item>
<item msgid="4071574792028999443">"Procesy na pozadí deaktivovány"</item>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index ff60a1c..d0b9e63 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfigurovat"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Vyberte jiný modul"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Modul pro syntézu řeči může shromažďovat veškerý mluvený text, včetně osobních dat jako jsou hesla nebo čísla kreditních karet. Je založen na modulu <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Chcete modul pro syntézu řeči aktivovat?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Pro tento jazyk je k převodu textu na hlasový výstup potřeba připojení k síti."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Moduly"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Nastavení modulu <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"Položka <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> je aktivována"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Vynutit 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Povolit 4x MSAA v aplikacích OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profil – vykreslování GPU"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Měřit čas vykreslování v adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Měřítko animace okna"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Měřítko animace přeměny"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Měřítko délky animace"</string>
diff --git a/res/values-da/arrays.xml b/res/values-da/arrays.xml
index c3345b6..058bdbd 100644
--- a/res/values-da/arrays.xml
+++ b/res/values-da/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafik)"</item>
<item msgid="1340692776955662664">"Kaldestak på glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardgrænse"</item>
<item msgid="4071574792028999443">"Ingen baggrundsprocesser"</item>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index b9aef25..ddda58b 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfigurer"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Vælg en anden maskine"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Denne tale kan muligvis indsamle al den tekst, der udtales, inklusive personlige data som adgangskoder og kreditkortnumre. Den kommer fra <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>-maskinen. Aktivér brug af denne talesyntesemaskine?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Der kræves en aktiv netværksforbindelse, for at tekst-til-tale-output kan anvendes på dette sprog."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Maskiner"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>-indstillinger"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> er aktiveret"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Tving 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Aktivér 4x MSAA i apps med OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"GPU-profilgengivelse"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Mål gengivelsestiden i adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Animationsskala for vindue"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Overgangsanimationsskala"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animatorvarighedsskala"</string>
diff --git a/res/values-de/arrays.xml b/res/values-de/arrays.xml
index 03d0143..40eab69 100644
--- a/res/values-de/arrays.xml
+++ b/res/values-de/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Grafik)"</item>
<item msgid="1340692776955662664">"Aufrufliste für glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardlimit"</item>
<item msgid="4071574792028999443">"Keine Hintergrundprozesse"</item>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index f1ea62e..ae87bac 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -1439,6 +1439,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfigurieren"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Anderes Modul auswählen"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Dieses Sprachsynthesemodul kann den gesamten gesprochenen Text erfassen, einschließlich personenbezogener Daten wie Passwörter und Kreditkartennummern. Es ist Teil der App \"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>\". Möchten Sie dieses Sprachsynthesemodul aktivieren?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Für diese Sprache ist zur Text-in-Sprache-Ausgabe eine aktive Netzwerkverbindung erforderlich."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Module"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>-Einstellungen"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> ist aktiviert."</string>
@@ -1658,7 +1659,6 @@
<string name="force_msaa" msgid="7920323238677284387">"4x MSAA erzwingen"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"4x MSAA in OpenGL ES 2.0-Apps aktivieren"</string>
<string name="track_frame_time" msgid="6146354853663863443">"GPU-Rendering für Profil"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Rendering-Zeit in adb shell dumpsys gfxinfo messen"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Maßstab Fensteranimation"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Maßstab Übergangsanimation"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Maßstab für Animatorzeit"</string>
diff --git a/res/values-el/arrays.xml b/res/values-el/arrays.xml
index f59025a..f2ed440 100644
--- a/res/values-el/arrays.xml
+++ b/res/values-el/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Γραφικά)"</item>
<item msgid="1340692776955662664">"Κλήση στοίβας σε glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Τυπικό όριο"</item>
<item msgid="4071574792028999443">"Δεν υπάρχουν διεργασίες παρασκηνίου"</item>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index e8ed41a..e80c043 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Διαμόρφωση"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Επιλέξτε μια άλλη μηχανή"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Αυτή η μηχανή σύνθεσης ομιλίας μπορεί να συγκεντρώσει όλο το κείμενο που θα εκφωνηθεί, συμπεριλαμβανομένων προσωπικών δεδομένων όπως οι κωδικοί πρόσβασης και οι αριθμοί πιστωτικών καρτών. Προέρχεται από τη μηχανή <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Να ενεργοποιηθεί η μηχανή σύνθεσης ομιλίας;"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Αυτή η γλώσσα απαιτεί μια ενεργή σύνδεση δικτύου για τη μετατροπή κειμένου σε ομιλία."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Μηχανές"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Ρυθμίσεις <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"Η επιλογή <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> είναι ενεργοποιημένη"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Αναγκαστικά 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Ενεργοποίηση 4x MSAA σε εφαρμογές OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Απόδοση GPU προφίλ"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Μέτρ. χρόνου απόδοσης σε adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Κλίμακα κίνησης παραθύρου"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Κλίμακα κίνησης μετάβασης"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animator duration scale"</string>
diff --git a/res/values-en-rGB/arrays.xml b/res/values-en-rGB/arrays.xml
index 79ecf36..f262e69 100644
--- a/res/values-en-rGB/arrays.xml
+++ b/res/values-en-rGB/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Graphics)"</item>
<item msgid="1340692776955662664">"Call stack on glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standard limit"</item>
<item msgid="4071574792028999443">"No background processes"</item>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 60bf3e6..dcf48d4 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -665,14 +665,12 @@
<string name="musicfx_title" msgid="3415566786340790345">"Music effects"</string>
<string name="ring_volume_title" msgid="7938706566797464165">"Ringer volume"</string>
<string name="vibrate_in_silent_title" msgid="3897968069156767036">"Vibrate when silent"</string>
- <!-- no translation found for notification_sound_title (5137483249425507572) -->
- <skip />
+ <string name="notification_sound_title" msgid="5137483249425507572">"Default notification sound"</string>
<string name="notification_pulse_title" msgid="1247988024534030629">"Pulse notification light"</string>
<string name="incoming_call_volume_title" msgid="8073714801365904099">"Ringtone"</string>
<string name="notification_volume_title" msgid="2012640760341080408">"Notification"</string>
<string name="checkbox_notification_same_as_incoming_call" msgid="1073644356290338921">"Use incoming call volume for notifications"</string>
- <!-- no translation found for notification_sound_dialog_title (3805140135741385667) -->
- <skip />
+ <string name="notification_sound_dialog_title" msgid="3805140135741385667">"Default notification sound"</string>
<string name="media_volume_title" msgid="3576565767317118106">"Media"</string>
<string name="media_volume_summary" msgid="5363248930648849974">"Set volume for music and videos"</string>
<string name="alarm_volume_title" msgid="2285597478377758706">"Alarm"</string>
@@ -1440,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Configure"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Choose another engine"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"This speech synthesis engine may be able to collect all the text that will be spoken, including personal data like passwords and credit card numbers. It comes from the <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> engine. Enable the use of this speech synthesis engine?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"This language requires a working network connection for text-to-speech output."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Engines"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> Settings"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> is enabled"</string>
@@ -1659,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Force 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Enable 4x MSAA in OpenGL ES 2.0 apps"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profile GPU rendering"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Measure rendering time in adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Window animation scale"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Transition animation scale"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animator duration scale"</string>
diff --git a/res/values-es-rUS/arrays.xml b/res/values-es-rUS/arrays.xml
index 85b471f..fb81229 100644
--- a/res/values-es-rUS/arrays.xml
+++ b/res/values-es-rUS/arrays.xml
@@ -136,7 +136,7 @@
<item msgid="8151962652413645395">"2 minutos"</item>
<item msgid="8675215713017289017">"5 minutos"</item>
<item msgid="477015974247590543">"1 hora"</item>
- <item msgid="5198271470953124739">"Sin tiempo de espera"</item>
+ <item msgid="5198271470953124739">"Siempre visible"</item>
</string-array>
<string-array name="wifi_signal">
<item msgid="2245412278046491293">"Baja calidad"</item>
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (gráficos)"</item>
<item msgid="1340692776955662664">"Pila de llamadas en glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Límite estándar"</item>
<item msgid="4071574792028999443">"No hay procesos de fondo."</item>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 0de5080..52ab35b 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -114,7 +114,7 @@
<string name="bluetooth_is_discoverable_always" msgid="2849387702249327748">"Visible para todos los dispositivos Bluetooth cercanos"</string>
<string name="bluetooth_not_visible_to_other_devices" msgid="9120274591523391910">"No visible para otros dispositivos Bluetooth"</string>
<string name="bluetooth_only_visible_to_paired_devices" msgid="2049983392373296028">"Solo visible para los dispositivos sincronizados"</string>
- <string name="bluetooth_visibility_timeout" msgid="8002247464357005429">"Tiempo de visibilidad"</string>
+ <string name="bluetooth_visibility_timeout" msgid="8002247464357005429">"Definir visibilidad"</string>
<string name="bluetooth_lock_voice_dialing" msgid="3139322992062086225">"Bloquear marcación por voz"</string>
<string name="bluetooth_lock_voice_dialing_summary" msgid="4741338867496787042">"Impedir el uso de Bluetooth del dispositivo cuando la pantalla esté bloqueada."</string>
<string name="bluetooth_devices" msgid="1886018064039454227">"Dispositivos Bluetooth"</string>
@@ -265,10 +265,10 @@
<string name="settings_label" msgid="1626402585530130914">"Configuración"</string>
<string name="settings_label_launcher" msgid="8344735489639482340">"Configuración"</string>
<string name="settings_shortcut" msgid="3936651951364030415">"Configuración"</string>
- <string name="airplane_mode" msgid="8837269988154128601">"Modo de avión"</string>
+ <string name="airplane_mode" msgid="8837269988154128601">"Modo avión"</string>
<string name="radio_controls_title" msgid="6889937359495515769">"Más..."</string>
<string name="wireless_networks_settings_title" msgid="3643009077742794212">"Redes inalámbricas y redes"</string>
- <string name="radio_controls_summary" msgid="2998818677094465517">"Administrar Wi-Fi, Bluetooth, modo de avión, redes, móviles, & VPN"</string>
+ <string name="radio_controls_summary" msgid="2998818677094465517">"Administrar Wi-Fi, Bluetooth, modo avión, redes, móviles y VPN"</string>
<string name="roaming" msgid="3596055926335478572">"Roaming de datos"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Conectar a servicios de datos en roaming"</string>
<string name="roaming_disable" msgid="1295279574370898378">"Conectar a servicios de datos en roaming"</string>
@@ -534,7 +534,7 @@
<string name="wifi_starting" msgid="6716593470710880000">"Activando Wi-Fi..."</string>
<string name="wifi_stopping" msgid="244864762599017659">"Apagando Wi-Fi..."</string>
<string name="wifi_error" msgid="3207971103917128179">"Error"</string>
- <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"En modo de avión"</string>
+ <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"En modo avión"</string>
<string name="wifi_fail_to_scan" msgid="1265540342578081461">"No se pueden buscar las redes."</string>
<string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notificación de red"</string>
<string name="wifi_notify_open_networks_summary" msgid="3038290727701553612">"Notificarme cuando se encuentre disponible una red abierta"</string>
@@ -548,7 +548,7 @@
<string name="wifi_access_points" msgid="2664629396767022441">"Redes Wi-Fi"</string>
<string name="wifi_menu_wps_pbc" msgid="2668564692207863017">"Pulsador WPS"</string>
<string name="wifi_menu_more_options" msgid="2448097861752719396">"Más opciones"</string>
- <string name="wifi_menu_wps_pin" msgid="6426448256268695933">"Ingreso PIN WPS"</string>
+ <string name="wifi_menu_wps_pin" msgid="6426448256268695933">"Ingresar PIN WPS"</string>
<string name="wifi_menu_p2p" msgid="2575893749303670353">"Wi-Fi Direct"</string>
<string name="wifi_menu_scan" msgid="1470911530412095868">"Buscar"</string>
<string name="wifi_menu_advanced" msgid="7522252991919573664">"Avanzado"</string>
@@ -965,7 +965,7 @@
<string name="assisted_gps_enabled" msgid="8751899609589792803">"Utilizar el servidor para asistir el GPS (anular la selección para reducir el uso de la red)"</string>
<string name="assisted_gps_disabled" msgid="6982698333968010748">"Utilizar el servidor para asistir el GPS (anula la selección para mejorar el rendimiento del GPS)"</string>
<string name="use_location_title" msgid="5206937465504979977">"Búsqueda de Google y ubicación"</string>
- <string name="use_location_summary" msgid="3978805802386162520">"Permitir que Google utilice tu ubicación para aumentar los resultados de búsqueda y otros servicios"</string>
+ <string name="use_location_summary" msgid="3978805802386162520">"Permitir que Google utilice tu ubicación para mejorar los resultados de búsqueda y otros servicios"</string>
<string name="location_access_title" msgid="7064108942964081243">"Acceso a mi ubicación"</string>
<string name="location_access_summary" msgid="69031404093194341">"Permitir que las aplicaciones que solicitaron permiso usen la información de tu ubicación"</string>
<string name="location_sources_heading" msgid="1278732419851088319">"Fuentes de ubicación"</string>
@@ -1076,7 +1076,7 @@
<string name="show_background_processes" msgid="2009840211972293429">"Mostrar procesos almacenados en la memoria caché"</string>
<string name="reset_app_preferences" msgid="1321050641018356925">"Restablecer preferencias"</string>
<string name="reset_app_preferences_title" msgid="6093179367325336662">"¿Restablec. preferencias?"</string>
- <string name="reset_app_preferences_desc" msgid="1118129530999596317">"Se restablecerán las preferencias de:"\n\n" "<li>"aplicaciones desactivadas,"</li>\n" "<li>"notificaciones de aplicaciones desactivadas,"</li>\n" "<li>"aplicaciones predeterminadas para diferentes acciones,"</li>\n" "<li>"restricciones de datos de referencia para las aplicaciones."</li>\n\n" No perderás los datos de ninguna aplicación."</string>
+ <string name="reset_app_preferences_desc" msgid="1118129530999596317">"Se restablecerán las preferencias de:"\n\n" "<li>"aplicaciones desactivadas,"</li>\n" "<li>"notificaciones de aplicaciones desactivadas,"</li>\n" "<li>"aplicaciones predeterminadas para diferentes acciones,"</li>\n" "<li>"restricciones de datos en segundo plano para las aplicaciones."</li>\n\n" No perderás los datos de ninguna aplicación."</string>
<string name="reset_app_preferences_button" msgid="2559089511841281242">"Restablecer aplicaciones"</string>
<string name="manage_space_text" msgid="8852711522447794676">"Administrar el espacio"</string>
<string name="filter" msgid="2018011724373033887">"Filtro"</string>
@@ -1388,7 +1388,7 @@
<string name="battery_desc_standby" product="tablet" msgid="6284747418668280364">"La batería se utiliza cuando el tablet está inactivo"</string>
<string name="battery_desc_standby" product="default" msgid="3009080001948091424">"La batería se utiliza cuando el dispositivo está inactivo"</string>
<string name="battery_desc_radio" msgid="5479196477223185367">"La batería está siendo utilizada por la radio celular"</string>
- <string name="battery_sugg_radio" msgid="8211336978326295047">"Cambiar a modo de avión para ahorrar energía en áreas sin cobertura celular"</string>
+ <string name="battery_sugg_radio" msgid="8211336978326295047">"Cambiar a modo avión para ahorrar batería en áreas sin cobertura celular"</string>
<string name="battery_desc_display" msgid="5432795282958076557">"La batería está siendo utilizada por la pantalla y la luz de fondo"</string>
<string name="battery_sugg_display" msgid="3370202402045141760">"Reducir el brillo y el tiempo muerto de la pantalla"</string>
<string name="battery_desc_wifi" msgid="1702486494565080431">"La batería está siendo utilizada por Wi-Fi"</string>
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Configurar"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Elegir otro motor"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Es posible que este motor de síntesis de voz pueda recopilar todo el texto que se hablará, incluidos los datos personales como las contraseñas y los números de tarjetas de crédito. Proviene del motor <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. ¿Deseas activar el uso de este motor de síntesis de voz?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Este idioma necesita una conexión de red en funcionamiento para la salida de texto a voz."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Motores"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Configuración de <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> está habilitado."</string>
@@ -1465,7 +1466,7 @@
<string name="gadget_wifi" msgid="5960290421313061434">"Wi-Fi"</string>
<string name="gadget_bluetooth" msgid="8998572807378694410">"Bluetooth"</string>
<string name="gadget_gps" msgid="1558173602059236567">"GPS"</string>
- <string name="gadget_sync" msgid="858895763714222152">"Sincronización"</string>
+ <string name="gadget_sync" msgid="858895763714222152">"Sincronizar"</string>
<string name="gadget_brightness_template" msgid="930541920933123603">"Brillo <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="gadget_brightness_state_auto" msgid="6667967252426515446">"automático"</string>
<string name="gadget_brightness_state_full" msgid="6814570109772137631">"completo"</string>
@@ -1568,8 +1569,8 @@
<string name="add_account_label" msgid="7811707265834013767">"Agregar cuenta"</string>
<string name="background_data" msgid="5779592891375473817">"Datos de fondo"</string>
<string name="background_data_summary" msgid="8328521479872763452">"Las aplicaciones pueden sincronizar, enviar y recibir datos."</string>
- <string name="background_data_dialog_title" msgid="6059217698124786537">"¿Deseas desactivar los datos de referencia?"</string>
- <string name="background_data_dialog_message" msgid="6981661606680941633">"Si inhabilitas los datos de referencia, aumenta la duración de la batería y se reduce el uso de datos. Algunas aplicaciones tal vez sigan usando la conexión de datos de referencia."</string>
+ <string name="background_data_dialog_title" msgid="6059217698124786537">"¿Deseas desactivar los datos en segundo plano?"</string>
+ <string name="background_data_dialog_message" msgid="6981661606680941633">"Si inhabilitas los datos en segundo plano, aumenta la duración de la batería y se reduce el uso de datos. Algunas aplicaciones tal vez sigan usando la conexión de datos en segundo plano."</string>
<string name="sync_automatically" msgid="1682730255435062059">"Autosincronizar datos de aplic."</string>
<string name="sync_enabled" msgid="4551148952179416813">"Sincronización activada"</string>
<string name="sync_disabled" msgid="8511659877596511991">"Sincronización desactivada"</string>
@@ -1602,7 +1603,7 @@
<!-- no translation found for sync_item_title (4782834606909853006) -->
<skip />
<string name="cant_sync_dialog_title" msgid="8923508322291625282">"No se puede sincronizar manualmente"</string>
- <string name="cant_sync_dialog_message" msgid="1938380442159016449">"La sincronización de este elemento actualmente está desactivada. Para cambiar tu configuración, activa momentáneamente los datos de referencia y la sincronización automática."</string>
+ <string name="cant_sync_dialog_message" msgid="1938380442159016449">"La sincronización de este elemento actualmente está desactivada. Para cambiar tu configuración, activa momentáneamente los datos en segundo plano y la sincronización automática."</string>
<string name="wimax_settings" msgid="1574837328738396794">"Configuración de 4G"</string>
<string name="wimax_settings_summary" msgid="3207355006084135453">"Configurar & administrar red 4G y módem"</string>
<string name="status_wimax_mac_address" msgid="8390791848661413416">"Dirección MAC de 4G"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Forzar MSAA 4x"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Activar MSAA 4x en aplicaciones OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Represent. GPU del perfil"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Medir tiempo de repr. en adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Ventana de escala de animación"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Transición de escala de animación"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Escala duración animador"</string>
@@ -1671,7 +1671,7 @@
<string name="data_usage_summary_title" msgid="3804110657238092929">"Uso de datos"</string>
<string name="data_usage_cycle" msgid="5652529796195787949">"Ciclo de uso de datos"</string>
<string name="data_usage_menu_roaming" msgid="8042359966835203296">"Roaming de datos"</string>
- <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"Restringir datos de ref."</string>
+ <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"Restr. datos 2.° plano"</string>
<string name="data_usage_menu_split_4g" msgid="5322857680792601899">"Uso aparte de datos móviles 4G"</string>
<string name="data_usage_menu_show_wifi" msgid="8266875319417201085">"Mostrar el uso de Wi-Fi"</string>
<string name="data_usage_menu_show_ethernet" msgid="5181361208532314097">"Mostrar uso de Ethernet"</string>
@@ -1699,12 +1699,12 @@
<string name="data_usage_enable_3g" msgid="6304006671869578254">"Datos de 2 GB - 3 GB"</string>
<string name="data_usage_enable_4g" msgid="3635854097335036738">"Datos de 4 GB"</string>
<string name="data_usage_app_settings" msgid="8430240158135453271">"Ver config. de la aplicación"</string>
- <string name="data_usage_app_restrict_background" msgid="9149728936265100841">"Restringir los datos de referencia"</string>
+ <string name="data_usage_app_restrict_background" msgid="9149728936265100841">"Restringir datos en 2.° plano"</string>
<string name="data_usage_app_restrict_background_summary" msgid="518658001418490405">"Desactivar datos ref. en redes móviles (usará redes no móviles)"</string>
- <string name="data_usage_app_restrict_background_summary_disabled" msgid="7401927377070755054">"Para limitar datos de ref. de esta aplic., limita datos móviles."</string>
- <string name="data_usage_app_restrict_dialog_title" msgid="1613108390242737923">"¿Restringir el uso de datos de referencia?"</string>
- <string name="data_usage_app_restrict_dialog" msgid="1466689968707308512">"Esta función puede hacer que deje de funcionar una aplicación que tenga que utilizar datos de referencia cuando solo estén disponibles redes móviles."\n\n"Puedes encontrar controles de uso de datos más adecuados en las opciones de configuración disponibles en la aplicación."</string>
- <string name="data_usage_restrict_denied_dialog" msgid="7086969103661420799">"Solo se pueden restringir los datos de referencia si estableciste un límite de datos móviles."</string>
+ <string name="data_usage_app_restrict_background_summary_disabled" msgid="7401927377070755054">"Para restringir datos en 2.° plano aquí, limita datos móviles."</string>
+ <string name="data_usage_app_restrict_dialog_title" msgid="1613108390242737923">"¿Restringir el uso de datos en segundo plano?"</string>
+ <string name="data_usage_app_restrict_dialog" msgid="1466689968707308512">"Esta función puede hacer que deje de funcionar una aplicación que tenga que utilizar datos en segundo plano cuando solo estén disponibles redes móviles."\n\n"Puedes encontrar controles de uso de datos más adecuados en las opciones de configuración disponibles en la aplicación."</string>
+ <string name="data_usage_restrict_denied_dialog" msgid="7086969103661420799">"Solo se pueden restringir los datos en segundo plano si estableciste un límite de datos móviles."</string>
<string name="data_usage_auto_sync_on_dialog_title" msgid="2438617846762244389">"¿Activar sinc. automática?"</string>
<string name="data_usage_auto_sync_on_dialog" product="tablet" msgid="7312283529426636845">"Cualquier cambio que sufran tus cuentas en la Web se copiará automáticamente en tu tableta."\n\n"Algunas cuentas también pueden copiar automáticamente en la Web los cambios que sufre tu tableta. Una cuenta de Google funciona de esta manera."\n\n"Para elegir qué tipo de información sincronizar dentro de cada cuenta, ve a Configuración > Cuentas."</string>
<string name="data_usage_auto_sync_on_dialog" product="default" msgid="2374996799819303283">"Cualquier cambio que sufran tus cuentas en la Web se copiará automáticamente en tu dispositivo."\n\n"Algunas cuentas también pueden copiar automáticamente en la Web los cambios que sufre tu dispositivo. Una cuenta de Google funciona de esta manera."\n\n"Para elegir qué tipo de información sincronizar dentro de cada cuenta, ve a Configuración > Cuentas."</string>
@@ -1718,10 +1718,10 @@
<string name="data_usage_limit_dialog_title" msgid="3023111643632996097">"Limitar el uso de datos"</string>
<string name="data_usage_limit_dialog_mobile" product="tablet" msgid="3893348029612821262">"Tu conexión de datos móvil se desactivará cuando se alcance el límite especificado."\n\n"Debido a que el uso de datos medido por tu tableta puede diferir del cálculo de uso de tu proveedor, considera usar un límite prudente."</string>
<string name="data_usage_limit_dialog_mobile" product="default" msgid="7962145861903746827">"Tu conexión de datos móvil se desactivará cuando se alcance el límite especificado."\n\n"Debido a que el uso de datos medido por tu teléfono puede diferir del cálculo de uso de tu proveedor, considera usar un límite prudente."</string>
- <string name="data_usage_restrict_background_title" msgid="2201315502223035062">"¿Restringir el uso de datos de referencia?"</string>
- <string name="data_usage_restrict_background" msgid="6387252645350792955">"Si restringes los datos para celulares de referencia, algunas aplicaciones y servicios no funcionarán a menos que te conectes a una red Wi-Fi."</string>
- <string name="data_usage_restrict_background_multiuser" product="tablet" msgid="2609163428726042269">"Si restringes los datos móviles de referencia, algunos servicios y aplicaciones no funcionarán a menos que te conectes a una red Wi-Fi."\n\n"Esta configuración afecta a todos los usuarios de esta tableta."</string>
- <string name="data_usage_restrict_background_multiuser" product="default" msgid="8025473178302056174">"Si restringes los datos móviles de referencia, algunos servicios y aplicaciones no funcionarán a menos que te conectes a una red Wi-Fi."\n\n"Esta configuración afecta a todos los usuarios de este dispositivo."</string>
+ <string name="data_usage_restrict_background_title" msgid="2201315502223035062">"¿Restringir el uso de datos en segundo plano?"</string>
+ <string name="data_usage_restrict_background" msgid="6387252645350792955">"Si restringes los datos que usa tu celular en segundo plano, algunos servicios y aplicaciones no funcionarán a menos que estés conectado a una red Wi-Fi."</string>
+ <string name="data_usage_restrict_background_multiuser" product="tablet" msgid="2609163428726042269">"Si restringes los datos móviles que se usan en segundo plano, algunos servicios y aplicaciones no funcionarán a menos que estés conectado a una red Wi-Fi."\n\n"Esta configuración afecta a todos los usuarios de esta tableta."</string>
+ <string name="data_usage_restrict_background_multiuser" product="default" msgid="8025473178302056174">"Si restringes los datos que usa tu celular en segundo plano, algunos servicios y aplicaciones no funcionarán a menos que estés conectado a una red Wi-Fi."\n\n"Esta configuración afecta a todos los usuarios de este dispositivo."</string>
<string name="data_usage_sweep_warning" msgid="6387081852568846982"><font size="21">"<xliff:g id="NUMBER">^1</xliff:g>"</font><font size="9">"<xliff:g id="UNIT">^2</xliff:g>"</font>\n<font size="12">"advertencia"</font></string>
<string name="data_usage_sweep_limit" msgid="860566507375933039"><font size="21">"<xliff:g id="NUMBER">^1</xliff:g>"</font>" "<font size="9">"<xliff:g id="UNIT">^2</xliff:g>"</font>\n<font size="12">"límite"</font></string>
<string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Aplicaciones eliminadas"</string>
diff --git a/res/values-es/arrays.xml b/res/values-es/arrays.xml
index 564f631..7115de9 100644
--- a/res/values-es/arrays.xml
+++ b/res/values-es/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (gráficos)"</item>
<item msgid="1340692776955662664">"Pila de llamadas en glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Límite estándar"</item>
<item msgid="4071574792028999443">"Sin procesos en segundo plano"</item>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index d9c5f61..7332c77 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Configurar"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Seleccionar otro motor"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Es posible que este motor de síntesis de voz recopile todo el texto hablado, incluidos datos personales, como contraseñas y números de tarjeta de crédito. Procede del motor <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. ¿Quieres habilitar el uso de este motor de síntesis de voz?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Este idioma requiere una conexión de red activa para la salida de síntesis de voz."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Motores"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Ajustes de <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"Se ha habilitado <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>."</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Forzar MSAA 4x"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Habilitar MSAA 4x en aplicaciones de OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Representación GPU perfil"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Medir tiempo representación en adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Escala de animación ventana"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Escala de transición-animación"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Escala duración animador"</string>
diff --git a/res/values-et/arrays.xml b/res/values-et/arrays.xml
index 09c8cc5..146976d 100644
--- a/res/values-et/arrays.xml
+++ b/res/values-et/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (graafika)"</item>
<item msgid="1340692776955662664">"Helistamise virn glGetErrori kohta"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardpiir"</item>
<item msgid="4071574792028999443">"Taustaprotsessideta"</item>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index f54cc42..a58e688 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Seadista"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Vali teine mootor"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"See kõnesünteesimootor võib koguda kogu kõneldud teksti, sh isiklikke andmeid, nagu paroolid ja krediitkaardinumbrid. Selle aluseks on mootor <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Kas lubada kõnesünteesimootori kasutamine?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Selle keele puhul on kõnesünteesi väljundi jaoks vaja toimivat võrguühendust."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Mootorid"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Mootori <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> seaded"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> on lubatud"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Jõusta 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Luba 4x MSAA OpenGL ES 2.0 rakendustes"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profiili GPU renderdamine"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Mõõda renderdusaega adb-kestas: dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Akna animatsiooni skaala"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Ülemineku animats. skaala"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animaatori kestuse skaala"</string>
diff --git a/res/values-fa/arrays.xml b/res/values-fa/arrays.xml
index 0e1c59e..322ced3 100644
--- a/res/values-fa/arrays.xml
+++ b/res/values-fa/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (تصاویر گرافیکی)"</item>
<item msgid="1340692776955662664">"فراخوانی پشته در glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"حد استاندارد"</item>
<item msgid="4071574792028999443">"بدون پردازش در پسزمینه"</item>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 34f2617..ed611f4 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"پیکربندی"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"انتخاب یک موتور دیگر"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"این موتور ترکیب صوتی ممکن است بتواند تمام متن گفته شده را جمعآوری کند، از جمله اطلاعات شخصی مانند رمزهای ورود و شمارههای کارت اعتباری. این کارها توسط موتور<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> انجام میشود. استفاده از این موتور ترکیب صوتی را فعال میکنید؟"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"این زبان به یک اتصال شبکه فعال برای خروجی نوشتار به گفتار نیاز دارد."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"موتورها"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> تنظیمات"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> فعال است"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"تحمیل 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"فعال کردن 4X MSAA در برنامههای OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"اجرای GPU نمایه"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"اندازهگیری زمان اجرا در adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"مقیاس انیمیشن پنجره"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"مقیاس انیمیشن انتقال"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"مقیاس طول مدت انیماتور"</string>
diff --git a/res/values-fi/arrays.xml b/res/values-fi/arrays.xml
index 41dfd36..f06a5de 100644
--- a/res/values-fi/arrays.xml
+++ b/res/values-fi/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafiikka)"</item>
<item msgid="1340692776955662664">"Kutsu pinoa, jos glGetError tapaht."</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Vakioraja"</item>
<item msgid="4071574792028999443">"Ei taustaprosesseja"</item>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index d050119..099775c 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Määritä"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Valitse toinen moottori"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Tämä puhesynteesimoottori saattaa kerätä kaiken puhutun tekstin, mukaan lukien henkilökohtaiset tiedot kuten salasanat ja luottokorttinumerot. Se on lähtöisin moottorista <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Haluatko ottaa tämän puhesynteesimoottorin käyttöön?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Tämä kieli vaatii verkkoyhteyden, jotta tekstistä puheeksi muuntaminen toimii."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Moottorit"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>-asetukset"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> on käytössä"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Pakota 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Ota käyttöön 4x MSAA OpenGL ES 2.0 -sovelluksissa"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profiilin GPU-hahmonnus"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Mittaa hahmonnusaika: adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Ikkunan animaat. mittak."</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Siirtymän anim.asteikko"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animatorin keston mittakaava"</string>
diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml
index 0e963b3..ef82e67 100644
--- a/res/values-fr/arrays.xml
+++ b/res/values-fr/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (graphismes)"</item>
<item msgid="1340692776955662664">"Appeler une pile sur glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Limite standard"</item>
<item msgid="4071574792028999443">"Aucun processus en arrière-plan"</item>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index f2ee1b1..1451006 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Configurer"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Sélectionner un autre moteur"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Ce moteur de synthèse vocale est susceptible de collecter tout ce qui sera lu, y compris les données personnelles comme les mots de passe et les numéros de carte de paiement. Il provient du moteur <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Voulez-vous activer son utilisation ?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Une connexion réseau est nécessaire pour la synthèse vocale dans cette langue."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Moteurs"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Paramètres <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> est activé."</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Forcer MSAA 4x"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Activer MSAA 4x dans les applications OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Rendu GPU du profil"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Mesurer durée rendu dans adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Échelle animation fenêtres"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Échelle anim. transitions"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Échelle durée animation"</string>
diff --git a/res/values-hi/arrays.xml b/res/values-hi/arrays.xml
index c6c7aab..65faeed 100644
--- a/res/values-hi/arrays.xml
+++ b/res/values-hi/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (ग्राफ़िक)"</item>
<item msgid="1340692776955662664">"glGetError पर स्टैक कॉल करें"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"मानक सीमा"</item>
<item msgid="4071574792028999443">"कोई पृष्ठभूमि प्रक्रियाएं नहीं"</item>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index e2eb5e9..3b4792d 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"कॉन्फ़िगर करें"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"अन्य इंजन चुनें"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"यह वाक् संश्लेषण इंजन पासवर्ड और क्रेडिट कार्ड नंबर जैसे निजी डेटा समेत आपके द्वारा बोले जाने वाले सभी पाठ को एकत्र कर सकता है. यह <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> इंजन से आता है. इस वाक् संश्लेषण इंजन के उपयोग को सक्षम करें?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"पाठ-से-वाक् आउटपुट के लिए इस भाषा को क्रियाशील नेटवर्क कनेक्शन की आवश्यकता है."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"इंजन"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> सेटिंग"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> सक्षम किया गया है"</string>
@@ -1658,7 +1659,6 @@
<string name="force_msaa" msgid="7920323238677284387">"4x MSAA को बाध्य करें"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"OpenGL ES 2.0 एप्लिकेशन में 4x MSAA को सक्षम करें"</string>
<string name="track_frame_time" msgid="6146354853663863443">"प्रोफ़ाइल GPU रेंडरिंग"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"adb shell dumpsys gfxinfo में रेंडरिंग समय मापें"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"विंडो एनिमेशन स्केल"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"संक्रमण एनिमेशन स्केल"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"एनिमेटर अवधि स्केल"</string>
diff --git a/res/values-hr/arrays.xml b/res/values-hr/arrays.xml
index c36d6f2..02f2e3d 100644
--- a/res/values-hr/arrays.xml
+++ b/res/values-hr/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"Pozivni snop za funkciju glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardna granica"</item>
<item msgid="4071574792028999443">"Nema pozadinskih procesa"</item>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index f6828af8..64bfb8e 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfiguriraj"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Odaberite drugi alat"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Alat za sintezu govora može prikupljati izgovoreni sadržaj, uključujući osobne podatke kao što su zaporke i brojevi kreditnih kartica. To omogućuje alat <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Želite li omogućiti alat za sintezu govora?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Da bi se dobili izlazni podaci pretvaranja teksta u govor za taj jezik, potrebna je aktivna veza s mrežom."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Alati"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> postavke"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"Stavka <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> je onemogućena"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Nametni 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Omogući 4x MSAA u aplikacijama OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profil GPU prikazivanja"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Mjeri vrijeme prikaza u adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Razmjer animacije prozora"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Animacija prijelaza razmjera"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Razmjer duljine animatora"</string>
diff --git a/res/values-hu/arrays.xml b/res/values-hu/arrays.xml
index 1f4bdaa..dd1691c 100644
--- a/res/values-hu/arrays.xml
+++ b/res/values-hu/arrays.xml
@@ -146,12 +146,12 @@
</string-array>
<string-array name="wifi_sleep_policy_entries">
<item msgid="3269131034472904310">"Mindig"</item>
- <item msgid="844721238536786870">"Csak ha csatlakoztatva van"</item>
+ <item msgid="844721238536786870">"Csak ha töltőn van"</item>
<item msgid="2990218920631468642">"Soha (növeli az adatforgalmat)"</item>
</string-array>
<string-array name="wifi_sleep_policy_entries_wifi_only">
<item msgid="2124319326282651391">"Mindig"</item>
- <item msgid="7433294150916905997">"Csak ha csatlakoztatva van"</item>
+ <item msgid="7433294150916905997">"Csak ha töltőn van"</item>
<item msgid="1390404486722375028">"Soha"</item>
</string-array>
<string-array name="wifi_frequency_band_entries">
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"Verem meghívása glGetError esetén"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Normál korlátozás"</item>
<item msgid="4071574792028999443">"Nincsenek háttérfolyamatok"</item>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index a613ac8..5c6ba2f 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfigurálás"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Válasszon másik motort"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Ez a beviteli módszer alkalmas lehet az elhangzott szövegek -- köztük az olyan személyes adatok, mint a jelszavak és a hitelkártyaszámok -- összegyűjtésére. A(z) <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> motor kapcsolta be. Engedélyezi ennek a beszédszintetizáló motornak a használatát?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Ez a nyelv működő hálózati kapcsolatot igényel a szövegfelolvasáshoz."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Motorok"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> beállításai"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"A(z) <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> engedélyezve van"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"4x MSAA kényszerítése"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"A 4x MSAA engedélyezése az OpenGL ES 2.0-nál"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profil GPU-renderelésről"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Renderelési idő mérés ADB shell dumpsys gfxinfoban"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Ablakanimáció mérete"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Áttűnési animáció mérete"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animáció léptéke"</string>
diff --git a/res/values-in/arrays.xml b/res/values-in/arrays.xml
index 6d0ff16..d166e47 100644
--- a/res/values-in/arrays.xml
+++ b/res/values-in/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Grafis)"</item>
<item msgid="1340692776955662664">"Panggil tumpukan di glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Batas standar"</item>
<item msgid="4071574792028999443">"Tanpa proses latar belakang"</item>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 2427eea..80aeaf6 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfigurasikan"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Pilih mesin lain"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Mesin sintesis suara ini mungkin dapat mengumpulkan semua teks yang akan diucapkan, termasuk di antaranya data pribadi seperti sandi dan nomor kartu kredit. Berasal dari <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> aplikasi. Gunakan metode masukan ini?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Bahasa ini perlu sambungan jaringan yang bekerja untuk keluaran text-to-speech."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Mesin"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> setelan"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> diaktifkan"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Force 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Aktifkan 4x MSAA dalam aplikasi OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Penguraian GPU profil"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Ukur waktu penguraian di adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Skala animasi jendela"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Skala animasi transisi"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Skala durasi animator"</string>
diff --git a/res/values-it/arrays.xml b/res/values-it/arrays.xml
index 9ce958a..e3aecb8 100644
--- a/res/values-it/arrays.xml
+++ b/res/values-it/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafica)"</item>
<item msgid="1340692776955662664">"Stack di chiamate su glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Limite standard"</item>
<item msgid="4071574792028999443">"Nessun processo in background"</item>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 408abbe..340c2c8 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Configura"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Scegli un altro motore"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Questo motore di sintesi vocale potrebbe essere in grado di raccogliere tutto il testo pronunciato, inclusi dati personali come password e numeri di carte di credito. Deriva dal motore <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Abilitare l\'uso di questo motore di sintesi vocale?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Questa lingua richiede una connessione di rete funzionante per l\'output di sintesi vocale."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Motori"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Impostazioni di <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> è abilitato"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Forza MSAA 4x"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Attiva MSAA 4x in applicazioni OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Rendering GPU"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Misura tempi rendering in adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Scala animazione finestra"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Scala animazione transizione"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Scala durata animatore"</string>
diff --git a/res/values-iw/arrays.xml b/res/values-iw/arrays.xml
index 8a9f26f..2110c4b 100644
--- a/res/values-iw/arrays.xml
+++ b/res/values-iw/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (גרפיקה)"</item>
<item msgid="1340692776955662664">"Call Stack ב-glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"הגבלת תקן"</item>
<item msgid="4071574792028999443">"אין תהליכים ברקע"</item>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 5770106..bff8913 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"הגדר"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"בחר מנוע אחר"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"ייתכן שמנוע סינתזת דיבור זה יכול לאסוף את כל הטקסט המדובר, כולל נתונים אישיים כגון סיסמאות ומספרי כרטיסי אשראי. הוא מגיע מהמנוע <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. להפוך את השימוש במנוע סינתזת דיבור זה לפעיל?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"שפה זו דורשת חיבור רשת פעיל עבור פלט טקסט לדיבור."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"מנועים"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"הגדרות <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> מופעל"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"אלץ הפעלת 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"הפעל 4x MSAA ביישומי OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"עיבוד פרופיל ב-GPU"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"מדוד את משך העיבוד ב-adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"קנה מידה להנפשה של חלון"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"קנה מידה של הנפשת מעבר"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"קנה מידת משך זמן למנפיש"</string>
diff --git a/res/values-ja/arrays.xml b/res/values-ja/arrays.xml
index 2c2e94f..ea6d822 100644
--- a/res/values-ja/arrays.xml
+++ b/res/values-ja/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace(画像)"</item>
<item msgid="1340692776955662664">"glGetErrorでのスタック呼び出し"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"標準の上限"</item>
<item msgid="4071574792028999443">"バックグラウンドプロセスを使用しない"</item>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index e54f496..d64d92a 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -1440,6 +1440,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"設定"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"別のエンジンを選択"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"この音声合成エンジンを使用すると、読み上げるすべてのテキストの収集をエンジン(<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>)に許可することになります。これにはパスワードやクレジットカード番号などの個人情報も含まれます。この音声合成エンジンを有効にしますか?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"この言語でテキスト読み上げを出力するには、ネットワーク接続が正常に機能している必要があります。"</string>
<string name="tts_engines_section" msgid="7515470972378742429">"エンジン"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>の設定"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>は有効です"</string>
@@ -1663,7 +1664,6 @@
<string name="force_msaa" msgid="7920323238677284387">"4x MSAAを適用"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"OpenGL ES 2.0アプリで4x MSAAを有効にする"</string>
<string name="track_frame_time" msgid="6146354853663863443">"GPUレンダリングのプロフィール作成"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"adb shell dumpsys gfxinfoでレンダリング時間を測定"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"ウィンドウアニメスケール"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"トランジションアニメスケール"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animator再生時間スケール"</string>
diff --git a/res/values-ko/arrays.xml b/res/values-ko/arrays.xml
index 0c4828f..d25a028 100644
--- a/res/values-ko/arrays.xml
+++ b/res/values-ko/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace(그래픽)"</item>
<item msgid="1340692776955662664">"glGetError의 스택 호출"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"표준 제한"</item>
<item msgid="4071574792028999443">"백그라운드 프로세스 없음"</item>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 4fa2d65..ad20bcb 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"구성"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"다른 엔진 선택"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"이 음성 합성 엔진은 비밀번호와 신용카드 번호 등의 개인 데이터를 비롯한 모든 음성 데이터를 수집할 수 있습니다. 이것은 <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> 엔진의 기능입니다. 음성 합성 엔진을 사용하도록 설정하시겠습니까?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"이 언어로 TTS(Text-to-speech)를 출력하려면 네트워크 연결이 작동해야 합니다."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"엔진"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> 설정"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> 사용"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"4x MSAA 강제 사용"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"OpenGL ES 2.0 앱에서 4x MSAA 사용"</string>
<string name="track_frame_time" msgid="6146354853663863443">"프로필 GPU 렌더링"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"adb shell dumpsys gfxinfo에서 렌더링 시간 측정"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"창 애니메이션 배율"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"전환 애니메이션 배율"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animator 길이 배율"</string>
diff --git a/res/values-lt/arrays.xml b/res/values-lt/arrays.xml
index f58bca0..c1f97ff 100644
--- a/res/values-lt/arrays.xml
+++ b/res/values-lt/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"„Systrace“ (grafika)"</item>
<item msgid="1340692776955662664">"Kreipinių dėklas „glGetError“"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standartinis apribojimas"</item>
<item msgid="4071574792028999443">"Nėra fono procesų"</item>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 299f250..c603549 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfigūruoti"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Pasirinkite kitą variklį"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Šis kalbos sintezės variklis gali rinkti visą įvedamą tekstą, įskaitant asmeninius duomenis, pvz., kredito kortelės numerius, išskyrus slaptažodžius. Tai vyksta dėl variklio <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Įgalinti šio kalbos sintezės variklio naudojimą?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Pasirinkus šią kalbą, teksto vertimo kalba išvesčiai būtinas veikiantis tinklo ryšys."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Varikliai"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> nustatymai"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> įgalinta"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Priverst. vykdyti 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Įgalinti 4x MSAA „OpenGL ES 2.0“ programose"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profiliuotas GPU atvaizd."</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Skaič. atvaizd. laiką „adb shell dumpsys gfxinfo“"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Lango animacijos mast."</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Animuoto perėjimo mast."</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animator. trukmės skalė"</string>
diff --git a/res/values-lv/arrays.xml b/res/values-lv/arrays.xml
index f5e50a8..6b7cd52 100644
--- a/res/values-lv/arrays.xml
+++ b/res/values-lv/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"glGetError: zvanu kaskāde"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standarta ierobežojums"</item>
<item msgid="4071574792028999443">"Nav fona procesu"</item>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 9b2eaef..a4bc22b 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfigurēt"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Izvēlēties citu programmu"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Lietojot šo runas sintēzes programmu, var tikt apkopots viss ierunātais teksts, tostarp tāda personīgā informācija kā paroles un kredītkaršu numuri. Tā ir no <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> programmas. Vai iespējot šīs runas sintēzes programmas lietošanu?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Lai izmantotu teksta pārveidošanu runā šajā valodā, ir nepieciešams aktīvs tīkla savienojums."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Programmas"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> iestatījumi"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> ir iespējots"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"4x MSAA piespiedu palaiš."</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Iespējot 4x MSAA OpenGL ES 2.0 lietotnēs"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profila GPU atveide"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Mērīt atveides laiku: adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Loga animācijas mērogs"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Pārejas animācijas mērogs"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animācijas ilguma mērogs"</string>
diff --git a/res/values-ms/arrays.xml b/res/values-ms/arrays.xml
index d1ab68d..bbd8cfe 100644
--- a/res/values-ms/arrays.xml
+++ b/res/values-ms/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Grafik)"</item>
<item msgid="1340692776955662664">"Tindanan panggilan pada glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Had standard"</item>
<item msgid="4071574792028999443">"Tiada proses latar belakang"</item>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 137858b..1977178 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfigurasi"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Pilih enjin lain"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Enjin sintesis pertuturan ini mungkin boleh mengumpul semua teks yang akan dituturkan, termasuk data peribadi seperti kata laluan dan nombor kad kredit. Ia datang daripada enjin <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Dayakan penggunaan enjin sintesis pertuturan ini?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Bahasa ini memerlukan sambungan rangkaian yang berfungsi untuk output teks-ke-tutur."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Enjin"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Tetapan <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> didayakan"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Paksa 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Dayakan 4x MSAA dalam apl OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Penyerahan GPU profil"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Ukur masa penyerahan dalam adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Skala animasi tetingkap"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Skala animasi peralihan"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Skala tempoh juruanimasi"</string>
diff --git a/res/values-nb/arrays.xml b/res/values-nb/arrays.xml
index 8a0bc5b..af585cd 100644
--- a/res/values-nb/arrays.xml
+++ b/res/values-nb/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafikk)"</item>
<item msgid="1340692776955662664">"Ring stabel på glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standard grense"</item>
<item msgid="4071574792028999443">"Ingen bakgrunnsprosesser"</item>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 43802c3..6313ec0 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -1329,7 +1329,7 @@
<string name="accessibility_service_disable_warning_summary" msgid="625013894287895398">"Du stopper <xliff:g id="SERVICE">%1$s</xliff:g> ved å trykke på OK."</string>
<string name="accessibility_no_services_installed" msgid="7200948194639038807">"Ingen tjenester er installert"</string>
<string name="accessibility_service_no_apps_title" msgid="5124097563864109821">"Trenger du en skjermleser?"</string>
- <string name="accessibility_service_no_apps_message" msgid="7751662416377046539">"Talkback gir muntlig tilbakemelding for å hjelpe blinde og svaksynte brukere. Vil du installere denne appen gratis fra Android Market?"</string>
+ <string name="accessibility_service_no_apps_message" msgid="7751662416377046539">"Talkback gir muntlig tilbakemelding for å hjelpe blinde og svaksynte brukere. Vil du installere denne appen gratis fra Google Play?"</string>
<string name="accessibility_script_injection_security_warning_summary" msgid="7706858873495386310">"Vil du at appene skal installere skripter fra Google som kan bidra til å gjøre nettinnholdet deres mer tilgjengelig?"</string>
<string name="accessibility_service_default_description" msgid="1072730037861494125">"Beskrivelse ble ikke oppgitt."</string>
<string name="settings_button" msgid="3006713718908152930">"Innstillinger"</string>
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfigurer"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Velg en annen motor"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Denne talesyntesemotoren kan samle inn all uttalt tekst, herunder personlige opplysninger som for eksempel passord og kredittkortnumre. Den er basert på motoren <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Vil du aktivere bruk av denne talesyntesemotoren?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Du må ha en fungerende nettverkstilkobling for tekst-til-tale-utdata."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Motorer"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Innstillinger for <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> er aktivert"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Tving 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Aktiver 4x MSAA i OpenGL ES 2.0-apper"</string>
<string name="track_frame_time" msgid="6146354853663863443">"GPU-gjengivelse av profil"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Mål gjengivelsestid i adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Animasjonsskala for vindu"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Overgangsanimasjonsskala"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Varighetsskala, animatør"</string>
diff --git a/res/values-nl/arrays.xml b/res/values-nl/arrays.xml
index 04fc1a8..74ff989 100644
--- a/res/values-nl/arrays.xml
+++ b/res/values-nl/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (graphics)"</item>
<item msgid="1340692776955662664">"Oproepstack op glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standaardlimiet"</item>
<item msgid="4071574792028999443">"Geen achtergrondprocessen"</item>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index d6f0275..16a4dcf 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Configureren"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Een andere engine kiezen"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Deze engine voor spraaksynthese kan mogelijk alle tekst verzamelen die wordt gesproken, waaronder persoonlijke gegevens zoals wachtwoorden en creditcardnummers. Deze engine is afkomstig van de <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>-engine. Het gebruik van deze engine voor spraaksynthese inschakelen?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Deze taal heeft een werkende netwerkverbinding nodig voor tekst-naar-spraak-uitvoer."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Engines"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Instellingen voor <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> is ingeschakeld"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"4x MSAA forceren"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"4x MSAA inschakelen in OpenGL ES 2.0-apps"</string>
<string name="track_frame_time" msgid="6146354853663863443">"GPU-rendering van profiel"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Renderingtijd in adb shell dumpsys gfxinfo meten"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Vensteranimatieschaal"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Overgangsanimatieschaal"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Duur van animatieschaal"</string>
diff --git a/res/values-pl/arrays.xml b/res/values-pl/arrays.xml
index 3584b5f..39b4f13 100644
--- a/res/values-pl/arrays.xml
+++ b/res/values-pl/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"Stos wywołań funkcji glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardowy limit"</item>
<item msgid="4071574792028999443">"Brak procesów w tle"</item>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 6db0d54..3d95d97 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfiguruj"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Wybierz inny mechanizm"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Ten mechanizm syntezy mowy może gromadzić cały odczytywany tekst, w tym dane osobiste w postaci haseł i numerów kart kredytowych. Nazwa mechanizmu to <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Włączyć ten mechanizm syntezy mowy?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Do przetwarzania tekstu na mowę w tym języku wymagane jest działające połączenie sieciowe."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Mechanizmy"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Ustawienia <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"Mechanizm <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> jest włączony"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Wymuś 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Włącz 4x MSAA w aplikacjach OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profil renderowania GPU"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Mierz czas renderowania w adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Skala animacji okna"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Skala animacji przejścia"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Skala długości animacji"</string>
@@ -1671,7 +1671,7 @@
<string name="data_usage_summary_title" msgid="3804110657238092929">"Użycie danych"</string>
<string name="data_usage_cycle" msgid="5652529796195787949">"Cykl transmisji danych"</string>
<string name="data_usage_menu_roaming" msgid="8042359966835203296">"Dane w roamingu"</string>
- <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"Ogranicz przesył danych w tle"</string>
+ <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"Ogranicz dane w tle"</string>
<string name="data_usage_menu_split_4g" msgid="5322857680792601899">"Oddzielnie transmisja danych 4G"</string>
<string name="data_usage_menu_show_wifi" msgid="8266875319417201085">"Pokaż użycie Wi-Fi"</string>
<string name="data_usage_menu_show_ethernet" msgid="5181361208532314097">"Pokaż użycie sieci Ethernet"</string>
diff --git a/res/values-pt-rPT/arrays.xml b/res/values-pt-rPT/arrays.xml
index 7d82635..6ebb360 100644
--- a/res/values-pt-rPT/arrays.xml
+++ b/res/values-pt-rPT/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Gráficos)"</item>
<item msgid="1340692776955662664">"Pilha de chamadas em glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Limite padrão"</item>
<item msgid="4071574792028999443">"Sem processos em segundo plano"</item>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 18a49b1..5e10542 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Configurar"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Escolher outro motor"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Este motor de síntese de discurso pode permitir a recolha de todo o texto que será falado, incluindo dados pessoais, como palavras-passe e números de cartão de crédito. O serviço é fornecido com o motor <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Permitir a utilização deste motor de síntese de discurso?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Este idioma requer uma ligação de rede ativa para uma saída de síntese de voz."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Motores"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Definições de <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> está activado"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Forçar 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Ativar o 4x MSAA em aplicações OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Conversão GPU do perfil"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Medir tempo de conv. em adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Escala de anim. da janela"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Escala de anim. de trans."</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Esc. de duração do anim."</string>
@@ -1671,7 +1671,7 @@
<string name="data_usage_summary_title" msgid="3804110657238092929">"Utilização de dados"</string>
<string name="data_usage_cycle" msgid="5652529796195787949">"Ciclo de utiliz. de dados"</string>
<string name="data_usage_menu_roaming" msgid="8042359966835203296">"Roaming de dados"</string>
- <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"Restringir dados em 2º plano"</string>
+ <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"Restringir dados 2º plano"</string>
<string name="data_usage_menu_split_4g" msgid="5322857680792601899">"Separar utilização de 4G"</string>
<string name="data_usage_menu_show_wifi" msgid="8266875319417201085">"Mostrar utilização de Wi-Fi"</string>
<string name="data_usage_menu_show_ethernet" msgid="5181361208532314097">"Mostrar utilização de Ethernet"</string>
diff --git a/res/values-pt/arrays.xml b/res/values-pt/arrays.xml
index ea55f7b..70e34c6 100644
--- a/res/values-pt/arrays.xml
+++ b/res/values-pt/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (gráficos)"</item>
<item msgid="1340692776955662664">"Pilha de chamadas em glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Limite padrão"</item>
<item msgid="4071574792028999443">"Sem processos em segundo plano"</item>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index b0ee489..66e4861 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Configurar"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Selecione outro mecanismo"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Este mecanismo de síntese de fala pode coletar todo texto que será falado, inclusive dados pessoais como senhas e números de cartão de crédito. Ele é proveniente do mecanismo <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Deseja ativar o uso desse mecanismo de síntese de fala?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Este idioma requer uma conexão de rede ativa para a conversão de texto em voz."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Mecanismos"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Configurações de <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> foi ativado"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Forçar 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Ativar 4x MSAA em aplicativos OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Classific. render. GPU"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Medir tempo render. em adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Escala de anim. da janela"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Escala anim. de transição"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Escala de duração do Animator"</string>
diff --git a/res/values-rm/arrays.xml b/res/values-rm/arrays.xml
index dbfebfc..fe16624 100644
--- a/res/values-rm/arrays.xml
+++ b/res/values-rm/arrays.xml
@@ -186,6 +186,10 @@
<!-- no translation found for enable_opengl_traces_entries:1 (9089630089455370183) -->
<!-- no translation found for enable_opengl_traces_entries:2 (5397807424362304288) -->
<!-- no translation found for enable_opengl_traces_entries:3 (1340692776955662664) -->
+ <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<!-- no translation found for app_process_limit_entries:0 (3401625457385943795) -->
<!-- no translation found for app_process_limit_entries:1 (4071574792028999443) -->
<!-- no translation found for app_process_limit_entries:2 (4810006996171705398) -->
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 399f4f7..d9d4351 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -2193,6 +2193,8 @@
<!-- no translation found for tts_engine_error_reselect (2415399149293842112) -->
<skip />
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Quest modul da sintesa vocala è capabel da memorisar l\'entir text discurrì inclus datas persunalas sco pleds-clav e numers da cartas da credit. El deriva da l\'applicaziun <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Vulais Vus activar quest modul?"</string>
+ <!-- no translation found for tts_engine_network_required (1190837151485314743) -->
+ <skip />
<string name="tts_engines_section" msgid="7515470972378742429">"Moduls"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Parameters <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> è activà."</string>
@@ -2594,8 +2596,6 @@
<skip />
<!-- no translation found for track_frame_time (6146354853663863443) -->
<skip />
- <!-- no translation found for track_frame_time_summary (447577515813970287) -->
- <skip />
<!-- no translation found for window_animation_scale_title (6162587588166114700) -->
<skip />
<!-- no translation found for transition_animation_scale_title (387527540523595875) -->
diff --git a/res/values-ro/arrays.xml b/res/values-ro/arrays.xml
index f208e5e..ca32197 100644
--- a/res/values-ro/arrays.xml
+++ b/res/values-ro/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (imagini)"</item>
<item msgid="1340692776955662664">"Apelaţi stiva pentru glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Limita standard"</item>
<item msgid="4071574792028999443">"Nu există procese de fundal"</item>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index dfd4348..d21997d 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -1439,6 +1439,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Configuraţi"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Alegeţi alt motor"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Acest motor de sintetizare a vorbirii poate culege în întregime textul vorbit, inclusiv datele personale cum ar fi parolele şi numerele cărţilor de credit. Acesta provine de la motorul <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Permiteţi utilizarea acestui motor de sintetizare a vorbirii?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Pentru rezultatul transformării textului în vorbire pentru această limbă este necesară o conexiune de reţea care să funcţioneze."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Motoare"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Setări <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> este activat"</string>
@@ -1658,7 +1659,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Forţaţi MSAA 4x"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Activaţi MSAA 4x în aplicaţiile OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profil redare cu GPU"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Măsurare timp redare în adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Scara anim. în fereastră"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Scară pt. anim. cu tranz."</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Scară durată Animator"</string>
diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml
index c025ed0..29e4c32 100644
--- a/res/values-ru/arrays.xml
+++ b/res/values-ru/arrays.xml
@@ -147,7 +147,7 @@
<string-array name="wifi_sleep_policy_entries">
<item msgid="3269131034472904310">"Не выключать"</item>
<item msgid="844721238536786870">"Только при питании от сети"</item>
- <item msgid="2990218920631468642">"Всегда выключать (моб. трафик больше)"</item>
+ <item msgid="2990218920631468642">"Всегда выключать (увеличивает объем моб. трафика)"</item>
</string-array>
<string-array name="wifi_sleep_policy_entries_wifi_only">
<item msgid="2124319326282651391">"Не выключать"</item>
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (графика)"</item>
<item msgid="1340692776955662664">"Список вызовов в glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Стандартное ограничение"</item>
<item msgid="4071574792028999443">"Без фоновых процессов"</item>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 72cc057..8767df9 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Настроить"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Выбрать другую систему"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Данная система синтеза речи может записывать произносимые слова, включая личные данные, такие как пароли и номера кредитных карт. Это осуществляет система <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Разрешить использование этой системы синтеза речи?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Чтобы включить синтезатор речи для этого языка, необходимо подключение к Интернету."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Системы"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> вкл."</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Включить 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Включить 4x MSAA в приложениях OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Запись времени работы GPU"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Измерение времени для adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Окно: масштаб"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Переход: масштаб"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Скорость анимации"</string>
diff --git a/res/values-sk/arrays.xml b/res/values-sk/arrays.xml
index 0a5865c..50b8715 100644
--- a/res/values-sk/arrays.xml
+++ b/res/values-sk/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"Volať zásobník pri chybe glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Štandardný limit"</item>
<item msgid="4071574792028999443">"Žiadne procesy na pozadí"</item>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 0412b3f..78872c1 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfigurovať"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Zvoliť iný nástroj"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Nástroj na syntézu reči môže zhromažďovať všetok hovorený text, vrátane osobných údajov, ako sú heslá alebo čísla kreditných kariet. Je založený na nástroji <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Chcete aktivovať nástroj na syntézu reči?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"V prípade tohto jazyka je na prevod textu na rečový výstup potrebné pripojenie k sieti."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Moduly"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Nastavenia <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"Možnosť <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> je aktivovaná"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Vynútiť 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Povoliť 4x MSAA v aplikáciách OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profilové vykresľ. GPU"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Merať čas vykresľov. v adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Mierka animácie okna"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Mierka animácie premeny"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Mierka dĺžky animácie"</string>
diff --git a/res/values-sl/arrays.xml b/res/values-sl/arrays.xml
index f229d76..21c1a03 100644
--- a/res/values-sl/arrays.xml
+++ b/res/values-sl/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"Pri napaki glGetError kliči sklad"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardna omejitev"</item>
<item msgid="4071574792028999443">"Ni postopkov v ozadju"</item>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 8de6323..6a11f02 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfiguriraj"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Izberite drug mehanizem"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Ta mehanizem za sintezo govora bo morda lahko zbiral izgovorjeno besedilo, vključno z osebnimi podatki, kot so gesla in številke kreditnih kartic. Omogoča ga mehanizem <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Ali želite omogočiti uporabo tega mehanizma za sintezo govora?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Za pretvorbo besedila v govor potrebuje ta jezik delujočo omrežno povezavo."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Mehanizmi"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Nastavitve za <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"Mehanizem <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> je omogočen"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Vsili 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"V aplikacijah OpenGL ES 2.0 omogoči 4x MSAA"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Upod. profilov z GPU-jem"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Merjenje časa upodab. v dumpsys gfxinfo lupine adb"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Merilo animacije okna"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Merilo animacije prehoda"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Lestvica trajanja animacije"</string>
diff --git a/res/values-sr/arrays.xml b/res/values-sr/arrays.xml
index 36a9cfb..183262f 100644
--- a/res/values-sr/arrays.xml
+++ b/res/values-sr/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (графика)"</item>
<item msgid="1340692776955662664">"Групно позивање функције glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Стандардно ограничење"</item>
<item msgid="4071574792028999443">"Без позадинских процеса"</item>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 70b6d8b..09d6873 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Конфигуриши"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Изабери други уређај"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Ова технологија за синтезу говора можда може да прикупља сав текст који ће бити изговорен, укључујући личне податке као што су лозинке и бројеви кредитних картица. То потиче из технологије <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Желите ли да омогућите коришћење ове технологије за синтезу говора?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"За овај језик је потребна исправна мрежна веза за претварање језика у говор."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Машине"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> подешавања"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> је омогућено"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Наметни 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Омогући 4x MSAA у OpenGL ES 2.0 апликацијама"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Прикажи профил помоћу GPU"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Мери време приказивања у adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Размера анимације прозора"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Размера анимације прелаза"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animator размера трајања"</string>
@@ -1706,8 +1706,8 @@
<string name="data_usage_app_restrict_dialog" msgid="1466689968707308512">"Ова функција може да заустави апликацију која зависи од позадинских података када су доступне само мобилне мреже."\n\n"Адекватније контроле за коришћење података можете да пронађете у подешавањима доступним у оквиру апликације."</string>
<string name="data_usage_restrict_denied_dialog" msgid="7086969103661420799">"Ограничавање позадинских података је могуће само када будете подесили ограничење за мобилне податке."</string>
<string name="data_usage_auto_sync_on_dialog_title" msgid="2438617846762244389">"Укључити аутом. синх. података?"</string>
- <string name="data_usage_auto_sync_on_dialog" product="tablet" msgid="7312283529426636845">"Све промене које обавите на налозима на Вебу биће аутоматски копиране на таблет."\n\n"Неки налози могу и да аутоматски копирају на Веб све промене које обавите на таблету. Google налог функционише на овај начин."\n\n"Да бисте изабрали које ће се врсте информација синхронизовати између сваког налога, идите на Подешавања > Налози."</string>
- <string name="data_usage_auto_sync_on_dialog" product="default" msgid="2374996799819303283">"Све промене које обавите на налозима на Вебу биће аутоматски копиране на телефон."\n\n"Неки налози могу и да аутоматски копирају на Веб све промене које обавите на телефону. Google налог функционише на овај начин."\n\n"Да бисте изабрали које ће се врсте информација синхронизовати између сваког налога, идите на Подешавања > Налози."</string>
+ <string name="data_usage_auto_sync_on_dialog" product="tablet" msgid="7312283529426636845">"Све промене које обавите на налозима на вебу биће аутоматски копиране на таблет."\n\n"Неки налози могу и да аутоматски копирају на Веб све промене које обавите на таблету. Google налог функционише на овај начин."\n\n"Да бисте изабрали које ће се врсте информација синхронизовати између сваког налога, идите на Подешавања > Налози."</string>
+ <string name="data_usage_auto_sync_on_dialog" product="default" msgid="2374996799819303283">"Све промене које обавите на налозима на вебу биће аутоматски копиране на телефон."\n\n"Неки налози могу и да аутоматски копирају на Веб све промене које обавите на телефону. Google налог функционише на овај начин."\n\n"Да бисте изабрали које ће се врсте информација синхронизовати између сваког налога, идите на Подешавања > Налози."</string>
<string name="data_usage_auto_sync_off_dialog_title" msgid="9013139130490125793">"Искључити аутом. синх. података?"</string>
<string name="data_usage_auto_sync_off_dialog" msgid="4744145757533455623">"На овај начин ће се смањити потрошња података и батерије, али биће потребно да ручно синхронизујете сваки налог да бисте прикупили недавне информације. Нећете примати ни обавештења када дође до ажурирања."</string>
<string name="data_usage_cycle_editor_title" msgid="1373797281540188533">"Датум враћања циклуса потрошње на почетне вредности"</string>
diff --git a/res/values-sv/arrays.xml b/res/values-sv/arrays.xml
index 44ce64c..97bd583 100644
--- a/res/values-sv/arrays.xml
+++ b/res/values-sv/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafik)"</item>
<item msgid="1340692776955662664">"Anropsstacken på glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardgräns"</item>
<item msgid="4071574792028999443">"Inga bakgrundsprocesser"</item>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index a64386a..8f88fc9 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Konfigurera"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Välj en annan motor"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Talsyntesmotorn kan samla in all text som ska talas, inklusive personlig information som lösenord och kreditkortsnummer. Den kommer från <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>-motorn. Vill du använda den här talsyntesmotorn?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Det krävs en fungerande nätverksanslutning för att text-till-tal-utdata ska fungera för det här språket."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Motorer"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>-inställningar"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> är aktiverad"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Force 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Aktivera 4x MSAA i OpenGL ES 2.0-appar"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profilens GPU-rendering"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Mät tid för rendering i adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Skala, fönsteranimering"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Skala, övergångsanimering"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Längdskala för Animator"</string>
diff --git a/res/values-sw/arrays.xml b/res/values-sw/arrays.xml
index 3af195a..f3d64b8 100644
--- a/res/values-sw/arrays.xml
+++ b/res/values-sw/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Michoro)"</item>
<item msgid="1340692776955662664">"Simu imekwama kwenye glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Kiwango cha wastani"</item>
<item msgid="4071574792028999443">"Hakuna mchakato wa mandari nyuma"</item>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 1866849..f3dc54b 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -1053,7 +1053,7 @@
<string name="disable_text" msgid="6544054052049395202">"Lemaza"</string>
<string name="enable_text" msgid="9217362512327828987">"Wezesha"</string>
<string name="clear_user_data_text" msgid="5597622864770098388">"Futa data"</string>
- <string name="app_factory_reset" msgid="6635744722502563022">"Sanidua visasisho"</string>
+ <string name="app_factory_reset" msgid="6635744722502563022">"Sanidua Masasisho"</string>
<string name="auto_launch_enable_text" msgid="2652825923953591251">"Umechagua kuzindua programu hii kwa mbadala kwa baadhi ya vitendo."</string>
<string name="always_allow_bind_appwidgets_text" msgid="3368654672141202604">"Umechagua kuruhusu programu hii kuunda wijeti na kufikia data yao."</string>
<string name="auto_launch_disable_text" msgid="7800385822185540166">"Hakuna chaguo-misingi zilizowekwa."</string>
@@ -1092,7 +1092,7 @@
<string name="app_not_found_dlg_title" msgid="3127123411738434964"></string>
<string name="app_not_found_dlg_text" msgid="8333723538280257243">"Programu haikupatikana katika orodha ya programu za kompyuta zilizosakinishwa."</string>
<string name="clear_data_failed" msgid="1907582169616856698">"Haikuweza kufuta data ya programu."</string>
- <string name="app_factory_reset_dlg_title" msgid="7441012826373143593">"Sanidua visasisho?"</string>
+ <string name="app_factory_reset_dlg_title" msgid="7441012826373143593">"Unataka kusanidua masasisho?"</string>
<string name="app_factory_reset_dlg_text" msgid="6371247225487725860">"Usasisho zote kwa mfumo wa programu ya Android zitasakinishuliwa."</string>
<string name="clear_failed_dlg_title" msgid="2387060805294783175">"Futa data"</string>
<string name="clear_failed_dlg_text" msgid="1092177570631523106">"Haikuweza kufuta data ya programu."</string>
@@ -1182,7 +1182,7 @@
<string name="auto_caps_summary" msgid="6358102538315261466">"Sentensi zianze kwa herufi kubwa"</string>
<string name="auto_punctuate" msgid="4595367243950425833">"Akifisha kiotomaki"</string>
<string name="hardkeyboard_category" msgid="5957168411305769899">"Mipangilio ya kibodi halisi"</string>
- <string name="auto_punctuate_summary" msgid="4372126865670574837">"Bonyeza kibonye cha nafasi mara mbili ili uweke \".\""</string>
+ <string name="auto_punctuate_summary" msgid="4372126865670574837">"Bonyeza kibonye cha \'Space\' mara mbili ili uweke \".\""</string>
<string name="show_password" msgid="3001113966880559611">"Fanya manenosiri kuonekana"</string>
<string name="ime_security_warning" msgid="4135828934735934248">"Mbinu hii ya ingizo huenda ikaweza kukusanya maandishi yote unayoandika, pamoja na data ya kibinafsi kama vile nenosiri na nambari za kadi ya mkopo. Inatoka kwa programu <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g>. Tumia mbinu hii ya ingizo?"</string>
<string name="spellchecker_security_warning" msgid="9060897418527708922">"Kisasishaji hiki kinaweza kukusanya maandishi yote wakati unaangika, pamoja na data za kibinafsi kama nenosiri na namari za kadi ya mkopo. Inatoka kwa programu <xliff:g id="SPELLCHECKER_APPLICATION_NAME">%1$s</xliff:g>. Tumia kisasishaji hiki?"</string>
@@ -1430,6 +1430,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Sanidi"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Chagua injini nyingine"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Hotuba hii inawezesha injini huenda ikaweza kukusanya maandishi ambayo yatazungumziwa, ikijumlisha data ya kibinafsi ya nenosiri na namba ya kaddi ya mkopo. Inatoka kwa injini ya <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> Wezesha matumizi ya hotuba hii iliyowezeshwa ya injini?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Lugha hii inahitaji muunganisho wa mtandao unaofanya kazi kwa towe ya maandishi hadi sauti."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Injini"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> mipangilio"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> imewezeshwa"</string>
@@ -1649,7 +1650,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Lazimisha 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Wezesha 4x MSAA katika programu za OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Utungilizaji wa GPU ya wasifu"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Pima muda wa kutungiliza katika adp shell dumpys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Kipimo cha uhiani wa Window"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Mageuzi ya kipimo cha huiani"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Mizani ya muda wa uhuishaji"</string>
diff --git a/res/values-th/arrays.xml b/res/values-th/arrays.xml
index 16eb8e7..c7a195a 100644
--- a/res/values-th/arrays.xml
+++ b/res/values-th/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (กราฟิก)"</item>
<item msgid="1340692776955662664">"ชุดรายการเรียกใน glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"ขีดจำกัดมาตรฐาน"</item>
<item msgid="4071574792028999443">"ไม่มีกระบวนการพื้นหลัง"</item>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 71d0f92..7936477 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"กำหนดค่า"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"เลือกเครื่องมืออื่น"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"โปรแกรมสังเคราะห์เสียงนี้อาจเก็บข้อความทั้งหมดที่ได้ยิน รวมถึงข้อมูลส่วนบุคคล เช่น รหัสผ่านและหมายเลขบัตรเครดิต โปรแกรมนี้มาจากโปรแกรม <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> คุณต้องการเปิดใช้งานโปรแกรมสังเคราะห์เสียงนี้หรือไม่"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"ภาษานี้ต้องใช้การเชื่อมต่อเครือข่ายซึ่งใช้การได้สำหรับการแปลงข้อความเป็นเสียงพูด"</string>
<string name="tts_engines_section" msgid="7515470972378742429">"โปรแกรม"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"การตั้งค่า <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"เปิดใช้งาน <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> แล้ว"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"บังคับใช้ 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"เปิดใช้งาน 4x MSAA ในแอปพลิเคชัน OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"การแสดงผล GPU ตามโปรไฟล์"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"วัดเวลาที่ใช้แสดงผลใน adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"ขนาดหน้าต่างภาพเคลื่อนไหว"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"อัตราการสลับภาพเคลื่อนไหว"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"ความเร็วตามผู้สร้างกำหนด"</string>
diff --git a/res/values-tl/arrays.xml b/res/values-tl/arrays.xml
index 18568fd..508821a 100644
--- a/res/values-tl/arrays.xml
+++ b/res/values-tl/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Graphics)"</item>
<item msgid="1340692776955662664">"Stack ng tawag sa glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Karaniwang limitasyon"</item>
<item msgid="4071574792028999443">"Walang mga proseso sa background"</item>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 538a9b5..951d7fb 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"I-configure"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Pumili ng isa pang engine"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Maaaring makolekta ng speech synthesis engine na ito ang lahat ng teksto na sasabihin, kabilang ang personal na data tulad ng mga password at mga numero ng credit card. Nanggagaling ito mula sa <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> engine. Paganahin ang paggamit ng speech synthesis engine na ito?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Nangangailangan ang wikang ito ng gumaganang koneksyon sa network para sa text-to-speech na output."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Mga Engine"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> (na) setting"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"Pinagana ang <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Puwersahin ang 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Paganahin ang 4x MSAA sa OpenGL ES 2.0 na apps"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Pag-render GPU ng Profile"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Sukat oras pag-render sa adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Scale ng animation window"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Scale ng animation sa paglipat"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Scale tagal ng animator"</string>
diff --git a/res/values-tr/arrays.xml b/res/values-tr/arrays.xml
index c76985c..ef1d2c8 100644
--- a/res/values-tr/arrays.xml
+++ b/res/values-tr/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Grafik)"</item>
<item msgid="1340692776955662664">"glGetError\'da yığın çağır"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standart sınır"</item>
<item msgid="4071574792028999443">"Arka planda işlem yok"</item>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 3c03a19..3015b17 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Yapılandır"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Başka bir motor seç"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Bu konuşma sentezi motoru, şifreler ve kredi kartı numaraları gibi kişisel veriler de dahil konuşulan tüm metni toplayabilir. <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> motorundan gelmektedir. Bu konuşma sentezi motorunun kullanımı etkinleştirilsin mi?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Bu dil, metin-konuşma çıktısı için bir ağ bağlantısı gerektirir."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Motorlar"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> ayarları"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> etkinleştirildi"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"4x MSAA\'yı zorla"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"OpenGL ES 2.0 uygulamalarda 4x MSAA\'yı etkinleştir"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Profil GPU oluşturma"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Oluşturma süresini adb shell dumpsys gfxınfo içinde ölç"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Pencere animasyonu ölçeği"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Geçiş animasyonu ölçeği"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animatör süre ölçeği"</string>
diff --git a/res/values-uk/arrays.xml b/res/values-uk/arrays.xml
index 5a47d0d..11de9f9 100644
--- a/res/values-uk/arrays.xml
+++ b/res/values-uk/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (графіка)"</item>
<item msgid="1340692776955662664">"Стек викликів glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Стандартне обмеження"</item>
<item msgid="4071574792028999443">"Без фонових процесів"</item>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index aef2782..03b807f 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Налаштувати"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Вибрати іншу систему"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Ця система синтезу мовлення може збирати всі відтворювані тексти, зокрема особисті дані, такі як паролі та номери кредитних карток. Вона походить від системи <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Увімкнути використання цієї системи синтезу мовлення?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Для виходу синтезу мовлення цією мовою потрібно мати з’єднання з Інтернетом."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Системи"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Налашт-ня <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> увімкнено"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Примус. запустити 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Увімкнути 4x MSAA в програмах OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Запис часу роботи GPU"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Вимірювати час роботи в adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Ступінь анімації вікна"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Ступінь анімації переходу"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Тривалість анімації"</string>
diff --git a/res/values-vi/arrays.xml b/res/values-vi/arrays.xml
index 9ed2783..75566c1 100644
--- a/res/values-vi/arrays.xml
+++ b/res/values-vi/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Đồ họa)"</item>
<item msgid="1340692776955662664">"Chồng lệnh trên glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Giới hạn tiêu chuẩn"</item>
<item msgid="4071574792028999443">"Không có quá trình nền"</item>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index ea5eabb..c27c6f4 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Định cấu hình"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Chọn công cụ khác"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Công cụ tổng hợp tiếng nói này có thể thu thập tất cả nội dụng sẽ được nói, bao gồm dữ liệu cá nhân như mật khẩu và số thẻ tín dụng. Công cụ này xuất phát từ công cụ <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Cho phép sử dụng công cụ tổng hợp tiếng nói này?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Ngôn ngữ này yêu cầu phải có kết nối mạng hoạt động để có thể phát âm thanh được chuyển từ văn bản sang giọng nói."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Công cụ"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"Cài đặt <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> đã được bật"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Bắt buộc 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Bật 4x MSAA trong ứng dụng OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Kết xuất GPU cấu hình"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Đo thời gian kết xuất trong adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Tỷ lệ hình động của cửa sổ"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Tỷ lệ hình động chuyển đổi"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"T.lệ th.lượng tr.tạo h.đ"</string>
diff --git a/res/values-zh-rCN/arrays.xml b/res/values-zh-rCN/arrays.xml
index 3d38157..b2e206a 100644
--- a/res/values-zh-rCN/arrays.xml
+++ b/res/values-zh-rCN/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace(图形)"</item>
<item msgid="1340692776955662664">"glGetError 上的调用堆栈"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"标准限制"</item>
<item msgid="4071574792028999443">"不允许后台进程"</item>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 4478f15..12cdcd2 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"配置"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"选择其他引擎"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"此语音合成引擎能够收集语音中出现的所有信息,包括密码和信用卡号码之类的个人数据。此功能由 <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> 引擎提供。是否启用此语音合成引擎?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"您必须连接到网络才能使用文字转语音功能输出这种语言。"</string>
<string name="tts_engines_section" msgid="7515470972378742429">"引擎"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>设置"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"已启用 <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
@@ -1657,7 +1658,6 @@
<string name="force_msaa" msgid="7920323238677284387">"强制启用 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"在 OpenGL ES 2.0 应用中启用 4x MSAA"</string>
<string name="track_frame_time" msgid="6146354853663863443">"GPU 呈现模式分析"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"计算 adb shell dumpsys gfxinfo 中的呈现时间"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"窗口动画缩放"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"过渡动画缩放"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"动画程序时长调整"</string>
@@ -1671,7 +1671,7 @@
<string name="data_usage_summary_title" msgid="3804110657238092929">"流量使用情况"</string>
<string name="data_usage_cycle" msgid="5652529796195787949">"流量使用周期"</string>
<string name="data_usage_menu_roaming" msgid="8042359966835203296">"移动数据网络漫游"</string>
- <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"限制后台数据"</string>
+ <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"限制后台流量"</string>
<string name="data_usage_menu_split_4g" msgid="5322857680792601899">"单独显示 4G 流量"</string>
<string name="data_usage_menu_show_wifi" msgid="8266875319417201085">"显示 Wi-Fi 使用情况"</string>
<string name="data_usage_menu_show_ethernet" msgid="5181361208532314097">"显示以太网使用情况"</string>
diff --git a/res/values-zh-rTW/arrays.xml b/res/values-zh-rTW/arrays.xml
index 8fb20b6..381e3dc 100644
--- a/res/values-zh-rTW/arrays.xml
+++ b/res/values-zh-rTW/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"Systrace (圖片)"</item>
<item msgid="1340692776955662664">"glGetError 的呼叫堆疊"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"標準限制"</item>
<item msgid="4071574792028999443">"不執行背景處理程序"</item>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index cec4e1d..af2d387 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -377,7 +377,7 @@
<string name="lockpassword_pin_too_short" msgid="1677649103470518953">"PIN 碼最少要有 %d 位數字"</string>
<string name="lockpassword_press_continue" msgid="122706614386757182">"完成時請輕觸 [繼續]"</string>
<string name="lockpassword_continue_label" msgid="4602203784934526940">"繼續"</string>
- <string name="lockpassword_password_too_long" msgid="7016906583950201704">"密碼最多只能有 <xliff:g id="NUMBER">%d</xliff:g> 個字元。"</string>
+ <string name="lockpassword_password_too_long" msgid="7016906583950201704">"密碼必須少於 <xliff:g id="NUMBER">%d</xliff:g> 個字元。"</string>
<string name="lockpassword_pin_too_long" msgid="6419879099090294052">"PIN 最多只能有 <xliff:g id="NUMBER">%d</xliff:g> 個數字。"</string>
<string name="lockpassword_pin_contains_non_digits" msgid="1079053457942945709">"PIN 只能包含數字 0-9。"</string>
<string name="lockpassword_pin_recently_used" msgid="7909781183925861119">"裝置管理員不允許使用最近用過的 PIN。"</string>
@@ -1438,6 +1438,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"設定"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"選擇其他引擎"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"此語音合成引擎可能會收集您輸入的所有語音,包括密碼和信用卡號等個人資料。此引擎來自「<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>」引擎,是否要使用此語音合成引擎?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"您必須連上網路才能使用文字轉語音輸出功能。"</string>
<string name="tts_engines_section" msgid="7515470972378742429">"引擎"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>設定"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"已啟用 <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>"</string>
@@ -1661,7 +1662,6 @@
<string name="force_msaa" msgid="7920323238677284387">"強制 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"在 OpenGL ES 2.0 應用程式中啟用 4x MSAA"</string>
<string name="track_frame_time" msgid="6146354853663863443">"剖析 GPU 轉譯"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"測量「adb shell dumpsys gfxinfo」指令中的轉譯時間"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"視窗動畫比例"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"轉場動畫比例"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"動畫影片長度比例"</string>
diff --git a/res/values-zu/arrays.xml b/res/values-zu/arrays.xml
index 642d647..ae6efe6 100644
--- a/res/values-zu/arrays.xml
+++ b/res/values-zu/arrays.xml
@@ -266,6 +266,9 @@
<item msgid="5397807424362304288">"i-Systrace (izithombe)"</item>
<item msgid="1340692776955662664">"Isitaki socingo ku-glGetError"</item>
</string-array>
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Isilanganiso esivamile"</item>
<item msgid="4071574792028999443">"Azikho izinqubo zesizinda"</item>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 0b83faf..65595d9 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -1445,6 +1445,7 @@
<string name="tts_engine_error_config" msgid="5820525416624637313">"Misa"</string>
<string name="tts_engine_error_reselect" msgid="2415399149293842112">"Khetha enye injini"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Lenjini yokuqaphela amagama ingase ikwazi ukuqoqa wonke umbhalo ozokhulunywa, kuhlanganise idatha yomuntu siqu njengamaphasiwedi nezinombolo zekhadi lesikoloto. Iphuma <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> kwinjini. Vumela ukusebenzisa lenjini yokuqaphela amagama?"</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Lolu limi ludinga ukuxhumana okusebenzayo kwenethiwekhi ekukhishweni kokuthunyelwe njengombhalo kunkulumo."</string>
<string name="tts_engines_section" msgid="7515470972378742429">"Izinjini"</string>
<string name="tts_engine_name_settings" msgid="4974538563074395920">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> izilungiselelo"</string>
<string name="tts_engine_name_is_enabled_summary" msgid="4909484006804022115">"<xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> ivunyelwe"</string>
@@ -1664,7 +1665,6 @@
<string name="force_msaa" msgid="7920323238677284387">"Phoqelela i-4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Nika amandla i-4x MSAA ezinhlelweni zokusebenza ze-OpenGL ES 2.0"</string>
<string name="track_frame_time" msgid="6146354853663863443">"Iphrofayela ye-GPU iyasebenzeka"</string>
- <string name="track_frame_time_summary" msgid="447577515813970287">"Kala isikhathi sokusebenzeka ngama-adb shell dumpsys gfxinfo"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Iwindi yesilinganisi sesithombe esinyakazayo"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Isilinganiso sesithombe soku"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Isilinganiso sobude besikhathi somenzi womfanekiso onyakazayo"</string>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 14e1fc8..a8a371f 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -429,7 +429,14 @@
<item>PWD</item>
</string-array>
- <!-- Phase 2 options -->
+ <!-- Phase 2 options for PEAP -->
+ <string-array name="wifi_peap_phase2_entries">
+ <item>None</item>
+ <item>MSCHAPV2</item>
+ <item>GTC</item>
+ </string-array>
+
+ <!-- Phase 2 options for rest of EAP methods -->
<string-array name="wifi_phase2_entries">
<item>None</item>
<item>PAP</item>
@@ -548,6 +555,25 @@
<item>auto</item>
</string-array>
+ <!-- Names of categories of app ops tabs -->
+ <string-array name="app_ops_categories">
+ <item>Location</item>
+ <item>Personal</item>
+ <item>Device</item>
+ </string-array>
+
+ <!-- User display names for app ops codes -->
+ <string-array name="app_ops_names">
+ <item>Coarse location</item>
+ <item>Fine location</item>
+ <item>GPS</item>
+ <item>Vibrate</item>
+ <item>Read contacts</item>
+ <item>Write contacts</item>
+ <item>Read calls</item>
+ <item>Write calls</item>
+ </string-array>
+
<!-- Titles for the list of long press timeout options. -->
<string-array name="long_press_timeout_selector_titles">
<!-- A title for the option for short long-press timeout [CHAR LIMIT=25] -->
@@ -686,6 +712,22 @@
<item>error</item>
</string-array>
+ <!-- Titles for frame time tracking preference. [CHAR LIMIT=35] -->
+ <string-array name="track_frame_time_entries">
+ <item>Off</item>
+ <item>On screen as bars</item>
+ <item>On screen as lines</item>
+ <item>In adb shell dumpsys gfxinfo</item>
+ </string-array>
+
+ <!-- Values for frame time tracking preference. -->
+ <string-array name="track_frame_time_values" translatable="false" >
+ <item>false</item>
+ <item>visual_bars</item>
+ <item>visual_lines</item>
+ <item>true</item>
+ </string-array>
+
<!-- Titles for app process limit preference. [CHAR LIMIT=35] -->
<string-array name="app_process_limit_entries">
<item>Standard limit</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b5c04b0..419cb11 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1445,22 +1445,22 @@
<!-- Button label to dismiss the dialog -->
<string name="wifi_cancel">Cancel</string>
<!-- Button for skipping a step after having been warned of a potential concern [CHAR LIMIT=30] -->
- <string name="wifi_skip_anyway" msgid="5205612884736051138">Skip anyway</string>
+ <string name="wifi_skip_anyway">Skip anyway</string>
<!-- Button for going to the previous screen or step [CHAR LIMIT=20] -->
<string name="wifi_dont_skip">Don\'t skip</string>
<!-- Text warning about skipping Wi-Fi with a mobile connect (tablet) [CHAR LIMIT=NONE]-->
- <string name="wifi_skipped_message" product="tablet" msgid="6518433975501257341">WARNING: You may incur extra carrier data charges.\n\nTablet setup can require significant network activity.</string>
+ <string name="wifi_skipped_message" product="tablet">WARNING: You may incur extra carrier data charges.\n\nTablet setup can require significant network activity.</string>
<!-- Text warning about skipping Wi-Fi with a mobile connect (phone) [CHAR LIMIT=NONE]-->
- <string name="wifi_skipped_message" product="default" msgid="4376150150678208848">WARNING: You may incur extra carrier data charges.\n\nPhone setup can require significant network activity.</string>
+ <string name="wifi_skipped_message" product="default">WARNING: You may incur extra carrier data charges.\n\nPhone setup can require significant network activity.</string>
<!-- Text warning about skipping Wi-Fi without a mobile connect (tablet) [CHAR LIMIT=NONE] -->
- <string name="wifi_and_mobile_skipped_message" product="tablet" msgid="5647058314212144925">WARNING: The tablet won\'t be able to verify that your software is up to date.</string>
+ <string name="wifi_and_mobile_skipped_message" product="tablet">WARNING: Until you have an internet connection, the tablet won\'t be able to verify that your software is up to date.</string>
<!-- Text warning about skipping Wi-Fi without a mobile connect (phone) [CHAR LIMIT=NONE] -->
- <string name="wifi_and_mobile_skipped_message" product="default" msgid="1288483646141987070">WARNING: The phone won\'t be able to verify that your software is up to date.</string>
+ <string name="wifi_and_mobile_skipped_message" product="default">WARNING: Until you have an internet connection, the phone won\'t be able to verify that your software is up to date.</string>
<!-- Text alerting that Wi-Fi couldn't connect (tablet) [CHAR LIMIT=NONE] -->
- <string name="wifi_connect_failed_message" product="tablet" msgid="2006689630582761529">The tablet was unable to connect to this Wi-Fi network.</string>
+ <string name="wifi_connect_failed_message" product="tablet">The tablet was unable to connect to this Wi-Fi network.</string>
<!-- Text alerting that Wi-Fi couldn't connect (phone) [CHAR LIMIT=NONE] -->
- <string name="wifi_connect_failed_message" product="default" msgid="8220901976514642385">The phone was unable to connect to this Wi-Fi network.</string>
+ <string name="wifi_connect_failed_message" product="default">The phone was unable to connect to this Wi-Fi network.</string>
<!-- Wi-Fi Advanced Settings --> <skip />
<!-- Wi-Fi settings screen, advanced, settings section. This is a header shown above advanced wifi settings. -->
@@ -2565,6 +2565,8 @@
<!-- Text for filter option in ManageApps screen to display all installed
applications -->
<string name="filter_apps_all">All</string>
+ <!-- [CHAR LIMIT=NONE] Text for filter option in ManageApps screen to display disabled apps -->
+ <string name="filter_apps_disabled">Disabled</string>
<!-- Text for filter option in ManageApps screen to display third party
applications only -->
<string name="filter_apps_third_party">Downloaded</string>
@@ -2698,6 +2700,12 @@
If you turn off notifications for this app, you may miss important alerts and updates.
</string>
+ <!-- App Ops Settings --> <skip />
+ <!-- [CHAR LIMIT=NONE] App ops settings title, on main settings screen. If clicked, the user is taken to a settings screen for app operations -->
+ <string name="app_ops_settings">App ops</string>
+ <!-- [CHAR LIMIT=NONE] Time label for an operation that is currently running. -->
+ <string name="app_ops_running">Running</string>
+
<!-- [CHAR LIMIT=25] Services settings screen, setting option name for the user to go to the screen to view app storage use -->
<string name="storageuse_settings_title">Storage use</string>
<!-- Services settings screen, setting option summary for the user to go to the screen to app storage use -->
@@ -3411,6 +3419,9 @@
all the text that will be spoken, including personal data like passwords and credit
card numbers. It comes from the <xliff:g id="tts_plugin_engine_name">%s</xliff:g> engine.
Enable the use of this speech synthesis engine?</string>
+ <!-- Warning message about required internet conectivity for TTS synthesis, displayed as a dialog
+ message when the user selects to play an example for network only locale and there's no internet connectivity. -->
+ <string name="tts_engine_network_required">This language requires a working network connection for text-to-speech output.</string>
<!-- On main TTS Settings screen, text for divider under which all TTS engines are listed -->
<string name="tts_engines_section">Engines</string>
<!-- On main TTS Settings screen, text preceded by the TTS engine name, clicking this button will launch the engine settings -->
@@ -3917,18 +3928,6 @@
<!-- UI debug setting: disable use of overlays summary [CHAR LIMIT=50] -->
<string name="disable_overlays_summary">Always use GPU for screen compositing</string>
- <!-- UI debug setting: enable low-level traces? [CHAR LIMIT=25] -->
- <string name="enable_traces_title">Enable traces</string>
- <!-- UI debug setting: title for dialog to enable low-level traces [CHAR LIMIT=25] -->
- <string name="enable_traces_dialog_title">Select enabled traces</string>
-
- <!-- UI debug setting: enable low-level traces, none enabled summary [CHAR LIMIT=NONE] -->
- <string name="enable_traces_summary_none">No traces currently enabled</string>
- <!-- UI debug setting: enable low-level traces, some number enabled summary [CHAR LIMIT=NONE] -->
- <string name="enable_traces_summary_num"><xliff:g id="num">%1$d</xliff:g> traces currently enabled</string>
- <!-- UI debug setting: enable low-level traces, all enabled summary [CHAR LIMIT=NONE] -->
- <string name="enable_traces_summary_all">All traces currently enabled</string>
-
<!-- UI debug setting: enable various types of OpenGL traces [CHAR LIMIT=25] -->
<string name="enable_opengl_traces_title">Enable OpenGL traces</string>
@@ -3954,8 +3953,6 @@
<!-- UI debug setting: profile time taken by hardware acceleration to render apps [CHAR LIMIT=25] -->
<string name="track_frame_time">Profile GPU rendering</string>
- <!-- UI debug setting: profile hardware acceleration summary [CHAR LIMIT=50] -->
- <string name="track_frame_time_summary">Measure rendering time in adb shell dumpsys gfxinfo</string>
<!-- UI debug setting: scaling factor for window animations [CHAR LIMIT=25] -->
<string name="window_animation_scale_title">Window animation scale</string>
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index e67aad1..67473c2 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -183,10 +183,12 @@
android:title="@string/show_cpu_usage"
android:summary="@string/show_cpu_usage_summary"/>
- <CheckBoxPreference
+ <ListPreference
android:key="track_frame_time"
android:title="@string/track_frame_time"
- android:summary="@string/track_frame_time_summary"/>
+ android:persistent="false"
+ android:entries="@array/track_frame_time_entries"
+ android:entryValues="@array/track_frame_time_values" />
<ListPreference
android:key="enable_opengl_traces"
@@ -195,11 +197,6 @@
android:entries="@array/enable_opengl_traces_entries"
android:entryValues="@array/enable_opengl_traces_values" />
- <MultiCheckPreference
- android:key="enable_traces"
- android:title="@string/enable_traces_title"
- android:dialogTitle="@string/enable_traces_dialog_title" />
-
</PreferenceCategory>
<PreferenceCategory android:key="debug_applications_category"
diff --git a/src/com/android/settings/AccessibilitySettings.java b/src/com/android/settings/AccessibilitySettings.java
index b6556a9..44ef8f8 100644
--- a/src/com/android/settings/AccessibilitySettings.java
+++ b/src/com/android/settings/AccessibilitySettings.java
@@ -1024,7 +1024,7 @@
ToggleSwitch toggleSwitch = new ToggleSwitch(activity);
final int padding = activity.getResources().getDimensionPixelSize(
R.dimen.action_bar_switch_padding);
- toggleSwitch.setPadding(0, 0, padding, 0);
+ toggleSwitch.setPaddingRelative(0, 0, padding, 0);
activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM);
activity.getActionBar().setCustomView(toggleSwitch,
diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java
index ae67d3a..cc3fe31 100644
--- a/src/com/android/settings/DataUsageSummary.java
+++ b/src/com/android/settings/DataUsageSummary.java
@@ -335,7 +335,7 @@
if (mInsetSide > 0) {
// inset selector and divider drawables
insetListViewDrawables(mListView, mInsetSide);
- mHeader.setPadding(mInsetSide, 0, mInsetSide, 0);
+ mHeader.setPaddingRelative(mInsetSide, 0, mInsetSide, 0);
}
{
@@ -1564,7 +1564,7 @@
R.layout.data_usage_item, parent, false);
if (mInsetSide > 0) {
- convertView.setPadding(mInsetSide, 0, mInsetSide, 0);
+ convertView.setPaddingRelative(mInsetSide, 0, mInsetSide, 0);
}
}
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 5e7573f..d32307f 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -122,8 +122,6 @@
private static final String DEBUG_DEBUGGING_CATEGORY_KEY = "debug_debugging_category";
private static final String OPENGL_TRACES_KEY = "enable_opengl_traces";
- private static final String ENABLE_TRACES_KEY = "enable_traces";
-
private static final String IMMEDIATELY_DESTROY_ACTIVITIES_KEY
= "immediately_destroy_activities";
private static final String APP_PROCESS_LIMIT_KEY = "app_process_limit";
@@ -166,17 +164,16 @@
private CheckBoxPreference mShowCpuUsage;
private CheckBoxPreference mForceHardwareUi;
private CheckBoxPreference mForceMsaa;
- private CheckBoxPreference mTrackFrameTime;
private CheckBoxPreference mShowHwScreenUpdates;
private CheckBoxPreference mShowHwLayersUpdates;
private CheckBoxPreference mShowHwOverdraw;
private CheckBoxPreference mDebugLayout;
+ private ListPreference mTrackFrameTime;
private ListPreference mWindowAnimationScale;
private ListPreference mTransitionAnimationScale;
private ListPreference mAnimatorDurationScale;
private ListPreference mOverlayDisplayDevices;
private ListPreference mOpenGLTraces;
- private MultiCheckPreference mEnableTracesPref;
private CheckBoxPreference mImmediatelyDestroyActivities;
private ListPreference mAppProcessLimit;
@@ -240,7 +237,9 @@
mShowCpuUsage = findAndInitCheckboxPref(SHOW_CPU_USAGE_KEY);
mForceHardwareUi = findAndInitCheckboxPref(FORCE_HARDWARE_UI_KEY);
mForceMsaa = findAndInitCheckboxPref(FORCE_MSAA_KEY);
- mTrackFrameTime = findAndInitCheckboxPref(TRACK_FRAME_TIME_KEY);
+ mTrackFrameTime = (ListPreference) findPreference(TRACK_FRAME_TIME_KEY);
+ mAllPrefs.add(mTrackFrameTime);
+ mTrackFrameTime.setOnPreferenceChangeListener(this);
mShowHwScreenUpdates = findAndInitCheckboxPref(SHOW_HW_SCREEN_UPDATES_KEY);
mShowHwLayersUpdates = findAndInitCheckboxPref(SHOW_HW_LAYERS_UPDATES_KEY);
mShowHwOverdraw = findAndInitCheckboxPref(SHOW_HW_OVERDRAW_KEY);
@@ -260,15 +259,6 @@
mOpenGLTraces = (ListPreference) findPreference(OPENGL_TRACES_KEY);
mAllPrefs.add(mOpenGLTraces);
mOpenGLTraces.setOnPreferenceChangeListener(this);
- mEnableTracesPref = (MultiCheckPreference)findPreference(ENABLE_TRACES_KEY);
- String[] traceValues = new String[Trace.TRACE_TAGS.length];
- for (int i=Trace.TRACE_FLAGS_START_BIT; i<traceValues.length; i++) {
- traceValues[i] = Integer.toString(1<<i);
- }
- mEnableTracesPref.setEntries(Trace.TRACE_TAGS);
- mEnableTracesPref.setEntryValues(traceValues);
- mAllPrefs.add(mEnableTracesPref);
- mEnableTracesPref.setOnPreferenceChangeListener(this);
mImmediatelyDestroyActivities = (CheckBoxPreference) findPreference(
IMMEDIATELY_DESTROY_ACTIVITIES_KEY);
@@ -316,7 +306,7 @@
final int padding = activity.getResources().getDimensionPixelSize(
R.dimen.action_bar_switch_padding);
- mEnabledSwitch.setPadding(0, 0, padding, 0);
+ mEnabledSwitch.setPaddingRelative(0, 0, padding, 0);
mEnabledSwitch.setOnCheckedChangeListener(this);
}
@@ -428,7 +418,6 @@
updateAnimationScaleOptions();
updateOverlayDisplayDevicesOptions();
updateOpenGLTracesOptions();
- updateEnableTracesOptions();
updateImmediatelyDestroyActivitiesOptions();
updateAppProcessLimitOptions();
updateShowAllANRsOptions();
@@ -450,7 +439,6 @@
writeAnimationScaleOption(1, mTransitionAnimationScale, null);
writeAnimationScaleOption(2, mAnimatorDurationScale, null);
writeOverlayDisplayDevicesOptions(null);
- writeEnableTracesOptions(0);
writeAppProcessLimitOptions(null);
mHaveDebugSettings = false;
updateAllOptions();
@@ -708,14 +696,28 @@
}
private void updateTrackFrameTimeOptions() {
- updateCheckBox(mTrackFrameTime,
- SystemProperties.getBoolean(HardwareRenderer.PROFILE_PROPERTY, false));
+ String value = SystemProperties.get(HardwareRenderer.PROFILE_PROPERTY);
+ if (value == null) {
+ value = "";
+ }
+
+ CharSequence[] values = mTrackFrameTime.getEntryValues();
+ for (int i = 0; i < values.length; i++) {
+ if (value.contentEquals(values[i])) {
+ mTrackFrameTime.setValueIndex(i);
+ mTrackFrameTime.setSummary(mTrackFrameTime.getEntries()[i]);
+ return;
+ }
+ }
+ mTrackFrameTime.setValueIndex(0);
+ mTrackFrameTime.setSummary(mTrackFrameTime.getEntries()[0]);
}
- private void writeTrackFrameTimeOptions() {
+ private void writeTrackFrameTimeOptions(Object newValue) {
SystemProperties.set(HardwareRenderer.PROFILE_PROPERTY,
- mTrackFrameTime.isChecked() ? "true" : "false");
+ newValue == null ? "" : newValue.toString());
pokeSystemProperties();
+ updateTrackFrameTimeOptions();
}
private void updateShowHwScreenUpdatesOptions() {
@@ -919,47 +921,6 @@
getActivity().getContentResolver(), Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0);
}
- private void updateEnableTracesOptions() {
- long flags = SystemProperties.getLong(Trace.PROPERTY_TRACE_TAG_ENABLEFLAGS, 0);
- String[] values = mEnableTracesPref.getEntryValues();
- int numSet = 0;
- for (int i=Trace.TRACE_FLAGS_START_BIT; i<values.length; i++) {
- boolean set = (flags&(1<<i)) != 0;
- mEnableTracesPref.setValue(i-Trace.TRACE_FLAGS_START_BIT, set);
- if (set) {
- numSet++;
- }
- }
- if (numSet == 0) {
- mEnableTracesPref.setSummary(R.string.enable_traces_summary_none);
- } else if (numSet == values.length) {
- mHaveDebugSettings = true;
- mEnableTracesPref.setSummary(R.string.enable_traces_summary_all);
- } else {
- mHaveDebugSettings = true;
- mEnableTracesPref.setSummary(getString(R.string.enable_traces_summary_num, numSet));
- }
- }
-
- private void writeEnableTracesOptions() {
- long value = 0;
- String[] values = mEnableTracesPref.getEntryValues();
- for (int i=Trace.TRACE_FLAGS_START_BIT; i<values.length; i++) {
- if (mEnableTracesPref.getValue(i-Trace.TRACE_FLAGS_START_BIT)) {
- value |= 1<<i;
- }
- }
- writeEnableTracesOptions(value);
- // Make sure summary is updated.
- updateEnableTracesOptions();
- }
-
- private void writeEnableTracesOptions(long value) {
- SystemProperties.set(Trace.PROPERTY_TRACE_TAG_ENABLEFLAGS,
- "0x" + Long.toString(value, 16));
- pokeSystemProperties();
- }
-
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (buttonView == mEnabledSwitch) {
@@ -1071,8 +1032,6 @@
writeHardwareUiOptions();
} else if (preference == mForceMsaa) {
writeMsaaOptions();
- } else if (preference == mTrackFrameTime) {
- writeTrackFrameTimeOptions();
} else if (preference == mShowHwScreenUpdates) {
writeShowHwScreenUpdatesOptions();
} else if (preference == mShowHwLayersUpdates) {
@@ -1108,8 +1067,8 @@
} else if (preference == mOpenGLTraces) {
writeOpenGLTracesOptions(newValue);
return true;
- } else if (preference == mEnableTracesPref) {
- writeEnableTracesOptions();
+ } else if (preference == mTrackFrameTime) {
+ writeTrackFrameTimeOptions(newValue);
return true;
} else if (preference == mAppProcessLimit) {
writeAppProcessLimitOptions(newValue);
diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
index d2ff6db..ac74221 100644
--- a/src/com/android/settings/DeviceInfoSettings.java
+++ b/src/com/android/settings/DeviceInfoSettings.java
@@ -174,6 +174,9 @@
}
}
} else if (preference.getKey().equals(KEY_BUILD_NUMBER)) {
+ // Don't enable developer options for secondary users.
+ if (UserHandle.myUserId() != UserHandle.USER_OWNER) return true;
+
if (mDevHitCountdown > 0) {
mDevHitCountdown--;
if (mDevHitCountdown == 0) {
diff --git a/src/com/android/settings/DreamSettings.java b/src/com/android/settings/DreamSettings.java
index 23285c0..5c9f1cf 100644
--- a/src/com/android/settings/DreamSettings.java
+++ b/src/com/android/settings/DreamSettings.java
@@ -99,7 +99,7 @@
final int padding = activity.getResources().getDimensionPixelSize(
R.dimen.action_bar_switch_padding);
- mSwitch.setPadding(0, 0, padding, 0);
+ mSwitch.setPaddingRelative(0, 0, padding, 0);
activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM);
activity.getActionBar().setCustomView(mSwitch, new ActionBar.LayoutParams(
diff --git a/src/com/android/settings/ProxySelector.java b/src/com/android/settings/ProxySelector.java
index f521d6d..9bb6dca 100644
--- a/src/com/android/settings/ProxySelector.java
+++ b/src/com/android/settings/ProxySelector.java
@@ -58,12 +58,16 @@
Button mClearButton;
Button mDefaultButton;
+ // Allows underscore char to supports proxies that do not
+ // follow the spec
+ private static final String HC = "a-zA-Z0-9\\_";
+
// Matches blank input, ips, and domain names
private static final String HOSTNAME_REGEXP =
- "^$|^[a-zA-Z0-9]+(\\-[a-zA-Z0-9]+)*(\\.[a-zA-Z0-9]+(\\-[a-zA-Z0-9]+)*)*$";
+ "^$|^[" + HC + "]+(\\-[" + HC + "]+)*(\\.[" + HC + "]+(\\-[" + HC + "]+)*)*$";
private static final Pattern HOSTNAME_PATTERN;
private static final String EXCLUSION_REGEXP =
- "$|^[a-zA-Z0-9]+(\\-[a-zA-Z0-9]+)*(\\.[a-zA-Z0-9]+(\\-[a-zA-Z0-9]+)*)*$";
+ "$|^[" + HC + "]+(\\-[" + HC + "]+)*(\\.[" + HC + "]+(\\-[" + HC + "]+)*)*$";
private static final Pattern EXCLUSION_PATTERN;
static {
HOSTNAME_PATTERN = Pattern.compile(HOSTNAME_REGEXP);
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index a5e2005..149561d 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -16,19 +16,6 @@
package com.android.settings;
-import com.android.internal.util.ArrayUtils;
-import com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment;
-import com.android.settings.accounts.AccountSyncSettings;
-import com.android.settings.accounts.AuthenticatorHelper;
-import com.android.settings.accounts.ManageAccountsSettings;
-import com.android.settings.applications.InstalledAppDetails;
-import com.android.settings.applications.ManageApplications;
-import com.android.settings.bluetooth.BluetoothEnabler;
-import com.android.settings.deviceinfo.Memory;
-import com.android.settings.fuelgauge.PowerUsageSummary;
-import com.android.settings.vpn2.VpnSettings;
-import com.android.settings.wifi.WifiEnabler;
-
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.OnAccountsUpdateListener;
@@ -62,6 +49,17 @@
import android.widget.Switch;
import android.widget.TextView;
+import com.android.internal.util.ArrayUtils;
+import com.android.settings.AccessibilitySettings.ToggleAccessibilityServicePreferenceFragment;
+import com.android.settings.accounts.AccountSyncSettings;
+import com.android.settings.accounts.AuthenticatorHelper;
+import com.android.settings.accounts.ManageAccountsSettings;
+import com.android.settings.bluetooth.BluetoothEnabler;
+import com.android.settings.bluetooth.BluetoothSettings;
+import com.android.settings.wifi.WifiEnabler;
+import com.android.settings.wifi.WifiSettings;
+import com.android.settings.wifi.p2p.WifiP2pSettings;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -85,7 +83,7 @@
private static final String META_DATA_KEY_PARENT_FRAGMENT_CLASS =
"com.android.settings.PARENT_FRAGMENT_CLASS";
- private static final String EXTRA_CLEAR_UI_OPTIONS = "settings:remove_ui_options";
+ private static final String EXTRA_UI_OPTIONS = "settings:ui_options";
private static final String SAVE_KEY_CURRENT_HEADER = "com.android.settings.CURRENT_HEADER";
private static final String SAVE_KEY_PARENT_HEADER = "com.android.settings.PARENT_HEADER";
@@ -136,8 +134,8 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
- if (getIntent().getBooleanExtra(EXTRA_CLEAR_UI_OPTIONS, false)) {
- getWindow().setUiOptions(0);
+ if (getIntent().hasExtra(EXTRA_UI_OPTIONS)) {
+ getWindow().setUiOptions(getIntent().getIntExtra(EXTRA_UI_OPTIONS, 0));
}
mAuthenticatorHelper = new AuthenticatorHelper();
@@ -379,26 +377,14 @@
Intent intent = super.onBuildStartFragmentIntent(fragmentName, args,
titleRes, shortTitleRes);
- // some fragments want to avoid split actionbar
- if (DataUsageSummary.class.getName().equals(fragmentName) ||
- PowerUsageSummary.class.getName().equals(fragmentName) ||
- AccountSyncSettings.class.getName().equals(fragmentName) ||
- UserDictionarySettings.class.getName().equals(fragmentName) ||
- Memory.class.getName().equals(fragmentName) ||
- ManageApplications.class.getName().equals(fragmentName) ||
- WirelessSettings.class.getName().equals(fragmentName) ||
- SoundSettings.class.getName().equals(fragmentName) ||
- PrivacySettings.class.getName().equals(fragmentName) ||
- ManageAccountsSettings.class.getName().equals(fragmentName) ||
- VpnSettings.class.getName().equals(fragmentName) ||
- SecuritySettings.class.getName().equals(fragmentName) ||
- InstalledAppDetails.class.getName().equals(fragmentName) ||
- ChooseLockGenericFragment.class.getName().equals(fragmentName) ||
- TetherSettings.class.getName().equals(fragmentName) ||
- ApnSettings.class.getName().equals(fragmentName) ||
- LocationSettings.class.getName().equals(fragmentName) ||
- ZonePicker.class.getName().equals(fragmentName)) {
- intent.putExtra(EXTRA_CLEAR_UI_OPTIONS, true);
+ // Some fragments want split ActionBar; these should stay in sync with
+ // uiOptions for fragments also defined as activities in manifest.
+ if (WifiSettings.class.getName().equals(fragmentName) ||
+ WifiP2pSettings.class.getName().equals(fragmentName) ||
+ BluetoothSettings.class.getName().equals(fragmentName) ||
+ DreamSettings.class.getName().equals(fragmentName) ||
+ ToggleAccessibilityServicePreferenceFragment.class.getName().equals(fragmentName)) {
+ intent.putExtra(EXTRA_UI_OPTIONS, ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW);
}
intent.setClass(this, SubSettings.class);
@@ -819,6 +805,7 @@
public static class DeviceInfoSettingsActivity extends Settings { /* empty */ }
public static class ApplicationSettingsActivity extends Settings { /* empty */ }
public static class ManageApplicationsActivity extends Settings { /* empty */ }
+ public static class AppOpsSummaryActivity extends Settings { /* empty */ }
public static class StorageUseActivity extends Settings { /* empty */ }
public static class DevelopmentSettingsActivity extends Settings { /* empty */ }
public static class AccessibilitySettingsActivity extends Settings { /* empty */ }
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 8829825..f031f0a 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -449,7 +449,7 @@
com.android.internal.R.dimen.preference_fragment_padding_bottom);
final int effectivePaddingSide = ignoreSidePadding ? 0 : paddingSide;
- list.setPadding(effectivePaddingSide, 0, effectivePaddingSide, paddingBottom);
+ list.setPaddingRelative(effectivePaddingSide, 0, effectivePaddingSide, paddingBottom);
}
}
diff --git a/src/com/android/settings/applications/AppOpsCategory.java b/src/com/android/settings/applications/AppOpsCategory.java
new file mode 100644
index 0000000..1eafbbf
--- /dev/null
+++ b/src/com/android/settings/applications/AppOpsCategory.java
@@ -0,0 +1,330 @@
+/**
+ * Copyright (C) 2013 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.applications;
+
+import android.app.ListFragment;
+import android.app.LoaderManager;
+import android.content.AsyncTaskLoader;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.Loader;
+import android.content.pm.ActivityInfo;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.List;
+
+import com.android.settings.R;
+import com.android.settings.applications.AppOpsState.AppOpEntry;
+
+public class AppOpsCategory extends ListFragment implements
+ LoaderManager.LoaderCallbacks<List<AppOpEntry>> {
+
+ // This is the Adapter being used to display the list's data.
+ AppListAdapter mAdapter;
+
+ public AppOpsCategory() {
+ }
+
+ public AppOpsCategory(AppOpsState.OpsTemplate template) {
+ Bundle args = new Bundle();
+ args.putParcelable("template", template);
+ setArguments(args);
+ }
+
+ /**
+ * Helper for determining if the configuration has changed in an interesting
+ * way so we need to rebuild the app list.
+ */
+ public static class InterestingConfigChanges {
+ final Configuration mLastConfiguration = new Configuration();
+ int mLastDensity;
+
+ boolean applyNewConfig(Resources res) {
+ int configChanges = mLastConfiguration.updateFrom(res.getConfiguration());
+ boolean densityChanged = mLastDensity != res.getDisplayMetrics().densityDpi;
+ if (densityChanged || (configChanges&(ActivityInfo.CONFIG_LOCALE
+ |ActivityInfo.CONFIG_UI_MODE|ActivityInfo.CONFIG_SCREEN_LAYOUT)) != 0) {
+ mLastDensity = res.getDisplayMetrics().densityDpi;
+ return true;
+ }
+ return false;
+ }
+ }
+
+ /**
+ * Helper class to look for interesting changes to the installed apps
+ * so that the loader can be updated.
+ */
+ public static class PackageIntentReceiver extends BroadcastReceiver {
+ final AppListLoader mLoader;
+
+ public PackageIntentReceiver(AppListLoader loader) {
+ mLoader = loader;
+ IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
+ filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
+ filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
+ filter.addDataScheme("package");
+ mLoader.getContext().registerReceiver(this, filter);
+ // Register for events related to sdcard installation.
+ IntentFilter sdFilter = new IntentFilter();
+ sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE);
+ sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE);
+ mLoader.getContext().registerReceiver(this, sdFilter);
+ }
+
+ @Override public void onReceive(Context context, Intent intent) {
+ // Tell the loader about the change.
+ mLoader.onContentChanged();
+ }
+ }
+
+ /**
+ * A custom Loader that loads all of the installed applications.
+ */
+ public static class AppListLoader extends AsyncTaskLoader<List<AppOpEntry>> {
+ final InterestingConfigChanges mLastConfig = new InterestingConfigChanges();
+ final AppOpsState mState;
+ final AppOpsState.OpsTemplate mTemplate;
+
+ List<AppOpEntry> mApps;
+ PackageIntentReceiver mPackageObserver;
+
+ public AppListLoader(Context context, AppOpsState.OpsTemplate template) {
+ super(context);
+ mState = new AppOpsState(context);
+ mTemplate = template;
+ }
+
+ @Override public List<AppOpEntry> loadInBackground() {
+ return mState.buildState(mTemplate);
+ }
+
+ /**
+ * Called when there is new data to deliver to the client. The
+ * super class will take care of delivering it; the implementation
+ * here just adds a little more logic.
+ */
+ @Override public void deliverResult(List<AppOpEntry> apps) {
+ if (isReset()) {
+ // An async query came in while the loader is stopped. We
+ // don't need the result.
+ if (apps != null) {
+ onReleaseResources(apps);
+ }
+ }
+ List<AppOpEntry> oldApps = apps;
+ mApps = apps;
+
+ if (isStarted()) {
+ // If the Loader is currently started, we can immediately
+ // deliver its results.
+ super.deliverResult(apps);
+ }
+
+ // At this point we can release the resources associated with
+ // 'oldApps' if needed; now that the new result is delivered we
+ // know that it is no longer in use.
+ if (oldApps != null) {
+ onReleaseResources(oldApps);
+ }
+ }
+
+ /**
+ * Handles a request to start the Loader.
+ */
+ @Override protected void onStartLoading() {
+ if (mApps != null) {
+ // If we currently have a result available, deliver it
+ // immediately.
+ deliverResult(mApps);
+ }
+
+ // Start watching for changes in the app data.
+ if (mPackageObserver == null) {
+ mPackageObserver = new PackageIntentReceiver(this);
+ }
+
+ // Has something interesting in the configuration changed since we
+ // last built the app list?
+ boolean configChange = mLastConfig.applyNewConfig(getContext().getResources());
+
+ if (takeContentChanged() || mApps == null || configChange) {
+ // If the data has changed since the last time it was loaded
+ // or is not currently available, start a load.
+ forceLoad();
+ }
+ }
+
+ /**
+ * Handles a request to stop the Loader.
+ */
+ @Override protected void onStopLoading() {
+ // Attempt to cancel the current load task if possible.
+ cancelLoad();
+ }
+
+ /**
+ * Handles a request to cancel a load.
+ */
+ @Override public void onCanceled(List<AppOpEntry> apps) {
+ super.onCanceled(apps);
+
+ // At this point we can release the resources associated with 'apps'
+ // if needed.
+ onReleaseResources(apps);
+ }
+
+ /**
+ * Handles a request to completely reset the Loader.
+ */
+ @Override protected void onReset() {
+ super.onReset();
+
+ // Ensure the loader is stopped
+ onStopLoading();
+
+ // At this point we can release the resources associated with 'apps'
+ // if needed.
+ if (mApps != null) {
+ onReleaseResources(mApps);
+ mApps = null;
+ }
+
+ // Stop monitoring for changes.
+ if (mPackageObserver != null) {
+ getContext().unregisterReceiver(mPackageObserver);
+ mPackageObserver = null;
+ }
+ }
+
+ /**
+ * Helper function to take care of releasing resources associated
+ * with an actively loaded data set.
+ */
+ protected void onReleaseResources(List<AppOpEntry> apps) {
+ // For a simple List<> there is nothing to do. For something
+ // like a Cursor, we would close it here.
+ }
+ }
+
+ public static class AppListAdapter extends ArrayAdapter<AppOpEntry> {
+ private final Resources mResources;
+ private final LayoutInflater mInflater;
+ private final CharSequence[] mOpNames;
+
+ public AppListAdapter(Context context) {
+ super(context, android.R.layout.simple_list_item_2);
+ mResources = context.getResources();
+ mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ mOpNames = mResources.getTextArray(R.array.app_ops_names);
+ }
+
+ public void setData(List<AppOpEntry> data) {
+ clear();
+ if (data != null) {
+ addAll(data);
+ }
+ }
+
+ /**
+ * Populate new items in the list.
+ */
+ @Override public View getView(int position, View convertView, ViewGroup parent) {
+ View view;
+
+ if (convertView == null) {
+ view = mInflater.inflate(R.layout.app_ops_item, parent, false);
+ } else {
+ view = convertView;
+ }
+
+ AppOpEntry item = getItem(position);
+ ((ImageView)view.findViewById(R.id.app_icon)).setImageDrawable(
+ item.getAppEntry().getIcon());
+ ((TextView)view.findViewById(R.id.app_name)).setText(item.getAppEntry().getLabel());
+ ((TextView)view.findViewById(R.id.op_name)).setText(item.getLabelText(mOpNames));
+ ((TextView)view.findViewById(R.id.op_time)).setText(item.getTimeText(mResources));
+
+ return view;
+ }
+ }
+
+ @Override public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ // Give some text to display if there is no data. In a real
+ // application this would come from a resource.
+ setEmptyText("No applications");
+
+ // We have a menu item to show in action bar.
+ setHasOptionsMenu(true);
+
+ // Create an empty adapter we will use to display the loaded data.
+ mAdapter = new AppListAdapter(getActivity());
+ setListAdapter(mAdapter);
+
+ // Start out with a progress indicator.
+ setListShown(false);
+
+ // Prepare the loader. Either re-connect with an existing one,
+ // or start a new one.
+ getLoaderManager().initLoader(0, null, this);
+ }
+
+ @Override public void onListItemClick(ListView l, View v, int position, long id) {
+ // Insert desired behavior here.
+ Log.i("LoaderCustom", "Item clicked: " + id);
+ }
+
+ @Override public Loader<List<AppOpEntry>> onCreateLoader(int id, Bundle args) {
+ Bundle fargs = getArguments();
+ AppOpsState.OpsTemplate template = null;
+ if (fargs != null) {
+ template = (AppOpsState.OpsTemplate)fargs.getParcelable("template");
+ }
+ return new AppListLoader(getActivity(), template);
+ }
+
+ @Override public void onLoadFinished(Loader<List<AppOpEntry>> loader, List<AppOpEntry> data) {
+ // Set the new data in the adapter.
+ mAdapter.setData(data);
+
+ // The list should now be shown.
+ if (isResumed()) {
+ setListShown(true);
+ } else {
+ setListShownNoAnimation(true);
+ }
+ }
+
+ @Override public void onLoaderReset(Loader<List<AppOpEntry>> loader) {
+ // Clear the data in the adapter.
+ mAdapter.setData(null);
+ }
+}
diff --git a/src/com/android/settings/applications/AppOpsDetails.java b/src/com/android/settings/applications/AppOpsDetails.java
new file mode 100644
index 0000000..2a071f2
--- /dev/null
+++ b/src/com/android/settings/applications/AppOpsDetails.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (C) 2013 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.applications;
+
+import android.app.Fragment;
+
+public class AppOpsDetails extends Fragment {
+
+}
diff --git a/src/com/android/settings/applications/AppOpsState.java b/src/com/android/settings/applications/AppOpsState.java
new file mode 100644
index 0000000..2bd724b
--- /dev/null
+++ b/src/com/android/settings/applications/AppOpsState.java
@@ -0,0 +1,404 @@
+/**
+ * Copyright (C) 2013 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.applications;
+
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.text.format.DateUtils;
+
+import com.android.settings.R;
+
+import java.io.File;
+import java.text.Collator;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+
+public class AppOpsState {
+ final Context mContext;
+ final AppOpsManager mAppOps;
+ final PackageManager mPm;
+
+ List<AppOpEntry> mApps;
+
+ public AppOpsState(Context context) {
+ mContext = context;
+ mAppOps = (AppOpsManager)context.getSystemService(Context.APP_OPS_SERVICE);
+ mPm = context.getPackageManager();
+ }
+
+ public static class OpsTemplate implements Parcelable {
+ public final int[] ops;
+ public final String[] perms;
+ public final int[] permOps;
+
+ public OpsTemplate(int[] _ops, String[] _perms, int[] _permOps) {
+ ops = _ops;
+ perms = _perms;
+ permOps = _permOps;
+ }
+
+ OpsTemplate(Parcel src) {
+ ops = src.createIntArray();
+ perms = src.createStringArray();
+ permOps = src.createIntArray();
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeIntArray(ops);
+ dest.writeStringArray(perms);
+ dest.writeIntArray(permOps);
+ }
+
+ public static final Creator<OpsTemplate> CREATOR = new Creator<OpsTemplate>() {
+ @Override public OpsTemplate createFromParcel(Parcel source) {
+ return new OpsTemplate(source);
+ }
+
+ @Override public OpsTemplate[] newArray(int size) {
+ return new OpsTemplate[size];
+ }
+ };
+ }
+
+ public static final OpsTemplate LOCATION_TEMPLATE = new OpsTemplate(
+ new int[] { AppOpsManager.OP_COARSE_LOCATION,
+ AppOpsManager.OP_FINE_LOCATION,
+ AppOpsManager.OP_GPS },
+ new String[] { android.Manifest.permission.ACCESS_COARSE_LOCATION,
+ android.Manifest.permission.ACCESS_FINE_LOCATION },
+ new int[] { AppOpsManager.OP_COARSE_LOCATION,
+ AppOpsManager.OP_FINE_LOCATION }
+ );
+
+ public static final OpsTemplate PERSONAL_TEMPLATE = new OpsTemplate(
+ new int[] { AppOpsManager.OP_READ_CONTACTS,
+ AppOpsManager.OP_WRITE_CONTACTS,
+ AppOpsManager.OP_READ_CALL_LOG,
+ AppOpsManager.OP_WRITE_CALL_LOG },
+ new String[] { android.Manifest.permission.READ_CONTACTS,
+ android.Manifest.permission.WRITE_CONTACTS,
+ android.Manifest.permission.READ_CALL_LOG,
+ android.Manifest.permission.WRITE_CALL_LOG },
+ new int[] { AppOpsManager.OP_READ_CONTACTS,
+ AppOpsManager.OP_WRITE_CONTACTS,
+ AppOpsManager.OP_READ_CALL_LOG,
+ AppOpsManager.OP_WRITE_CALL_LOG }
+ );
+
+ public static final OpsTemplate DEVICE_TEMPLATE = new OpsTemplate(
+ new int[] { AppOpsManager.OP_VIBRATE },
+ new String[] { android.Manifest.permission.VIBRATE },
+ new int[] { AppOpsManager.OP_VIBRATE }
+ );
+
+ /**
+ * This class holds the per-item data in our Loader.
+ */
+ public static class AppEntry {
+ private final AppOpsState mState;
+ private final ApplicationInfo mInfo;
+ private final File mApkFile;
+ private String mLabel;
+ private Drawable mIcon;
+ private boolean mMounted;
+
+ public AppEntry(AppOpsState state, ApplicationInfo info) {
+ mState = state;
+ mInfo = info;
+ mApkFile = new File(info.sourceDir);
+ }
+
+ public ApplicationInfo getApplicationInfo() {
+ return mInfo;
+ }
+
+ public String getLabel() {
+ return mLabel;
+ }
+
+ public Drawable getIcon() {
+ if (mIcon == null) {
+ if (mApkFile.exists()) {
+ mIcon = mInfo.loadIcon(mState.mPm);
+ return mIcon;
+ } else {
+ mMounted = false;
+ }
+ } else if (!mMounted) {
+ // If the app wasn't mounted but is now mounted, reload
+ // its icon.
+ if (mApkFile.exists()) {
+ mMounted = true;
+ mIcon = mInfo.loadIcon(mState.mPm);
+ return mIcon;
+ }
+ } else {
+ return mIcon;
+ }
+
+ return mState.mContext.getResources().getDrawable(
+ android.R.drawable.sym_def_app_icon);
+ }
+
+ @Override public String toString() {
+ return mLabel;
+ }
+
+ void loadLabel(Context context) {
+ if (mLabel == null || !mMounted) {
+ if (!mApkFile.exists()) {
+ mMounted = false;
+ mLabel = mInfo.packageName;
+ } else {
+ mMounted = true;
+ CharSequence label = mInfo.loadLabel(context.getPackageManager());
+ mLabel = label != null ? label.toString() : mInfo.packageName;
+ }
+ }
+ }
+ }
+
+ /**
+ * This class holds the per-item data in our Loader.
+ */
+ public static class AppOpEntry {
+ private final AppOpsManager.PackageOps mPkgOps;
+ private final ArrayList<AppOpsManager.OpEntry> mOps
+ = new ArrayList<AppOpsManager.OpEntry>();
+ private final AppEntry mApp;
+
+ public AppOpEntry(AppOpsManager.PackageOps pkg, AppOpsManager.OpEntry op, AppEntry app) {
+ mPkgOps = pkg;
+ mOps.add(op);
+ mApp = app;
+ }
+
+ public void addOp(AppOpsManager.OpEntry op) {
+ for (int i=0; i<mOps.size(); i++) {
+ AppOpsManager.OpEntry pos = mOps.get(i);
+ if (pos.isRunning() != op.isRunning()) {
+ if (op.isRunning()) {
+ mOps.add(i, op);
+ return;
+ }
+ }
+ if (pos.getTime() > op.getTime()) {
+ mOps.add(i, op);
+ return;
+ }
+ }
+ mOps.add(op);
+ }
+
+ public AppEntry getAppEntry() {
+ return mApp;
+ }
+
+ public AppOpsManager.PackageOps getPackageOps() {
+ return mPkgOps;
+ }
+
+ public int getNumOpEntry() {
+ return mOps.size();
+ }
+
+ public AppOpsManager.OpEntry getOpEntry(int pos) {
+ return mOps.get(pos);
+ }
+
+ public CharSequence getLabelText(CharSequence opNames[]) {
+ if (getNumOpEntry() == 1) {
+ return opNames[getOpEntry(0).getOp()];
+ } else {
+ StringBuilder builder = new StringBuilder();
+ for (int i=0; i<getNumOpEntry(); i++) {
+ if (i > 0) {
+ builder.append(", ");
+ }
+ builder.append(opNames[getOpEntry(i).getOp()]);
+ }
+ return builder.toString();
+ }
+ }
+
+ public CharSequence getTimeText(Resources res) {
+ if (isRunning()) {
+ return res.getText(R.string.app_ops_running);
+ }
+ if (getTime() > 0) {
+ return DateUtils.getRelativeTimeSpanString(getTime(),
+ System.currentTimeMillis(),
+ DateUtils.MINUTE_IN_MILLIS,
+ DateUtils.FORMAT_ABBREV_RELATIVE);
+ }
+ return "";
+ }
+
+ public boolean isRunning() {
+ return mOps.get(0).isRunning();
+ }
+
+ public long getTime() {
+ return mOps.get(0).getTime();
+ }
+
+ @Override public String toString() {
+ return mApp.getLabel();
+ }
+ }
+
+ /**
+ * Perform alphabetical comparison of application entry objects.
+ */
+ public static final Comparator<AppOpEntry> APP_OP_COMPARATOR = new Comparator<AppOpEntry>() {
+ private final Collator sCollator = Collator.getInstance();
+ @Override
+ public int compare(AppOpEntry object1, AppOpEntry object2) {
+ if (object1.isRunning() != object2.isRunning()) {
+ // Currently running ops go first.
+ return object1.isRunning() ? -1 : 1;
+ }
+ if (object1.getTime() != object2.getTime()) {
+ // More recent times go first.
+ return object1.getTime() > object2.getTime() ? -1 : 1;
+ }
+ return sCollator.compare(object1.getAppEntry().getLabel(),
+ object2.getAppEntry().getLabel());
+ }
+ };
+
+ private void addOp(List<AppOpEntry> entries, AppOpsManager.PackageOps pkgOps,
+ AppEntry appEntry, AppOpsManager.OpEntry opEntry) {
+ if (entries.size() > 0) {
+ AppOpEntry last = entries.get(entries.size()-1);
+ if (last.getAppEntry() == appEntry) {
+ boolean lastExe = last.getTime() != 0;
+ boolean entryExe = opEntry.getTime() != 0;
+ if (lastExe == entryExe) {
+ last.addOp(opEntry);
+ return;
+ }
+ }
+ }
+ AppOpEntry entry = new AppOpEntry(pkgOps, opEntry, appEntry);
+ entries.add(entry);
+ }
+
+ public List<AppOpEntry> buildState(OpsTemplate tpl) {
+ return buildState(tpl, 0, null);
+ }
+
+ public List<AppOpEntry> buildState(OpsTemplate tpl, int uid, String packageName) {
+ final Context context = mContext;
+
+ final HashMap<String, AppEntry> appEntries = new HashMap<String, AppEntry>();
+
+ List<AppOpsManager.PackageOps> pkgs;
+ if (packageName != null) {
+ pkgs = mAppOps.getOpsForPackage(uid, packageName, tpl.ops);
+ } else {
+ pkgs = mAppOps.getPackagesForOps(tpl.ops);
+ }
+ List<AppOpEntry> entries = new ArrayList<AppOpEntry>(pkgs.size());
+ for (int i=0; i<pkgs.size(); i++) {
+ AppOpsManager.PackageOps pkgOps = pkgs.get(i);
+ AppEntry appEntry = appEntries.get(pkgOps.getPackageName());
+ if (appEntry == null) {
+ ApplicationInfo appInfo = null;
+ try {
+ appInfo = mPm.getApplicationInfo(pkgOps.getPackageName(),
+ PackageManager.GET_DISABLED_COMPONENTS
+ | PackageManager.GET_UNINSTALLED_PACKAGES);
+ } catch (PackageManager.NameNotFoundException e) {
+ }
+ appEntry = new AppEntry(this, appInfo);
+ appEntry.loadLabel(context);
+ appEntries.put(pkgOps.getPackageName(), appEntry);
+ }
+ for (int j=0; j<pkgOps.getOps().size(); j++) {
+ AppOpsManager.OpEntry opEntry = pkgOps.getOps().get(j);
+ addOp(entries, pkgOps, appEntry, opEntry);
+ }
+ }
+
+ if (tpl.perms != null) {
+ List<PackageInfo> apps;
+ if (packageName != null) {
+ apps = new ArrayList<PackageInfo>();
+ try {
+ PackageInfo pi = mPm.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS);
+ apps.add(pi);
+ } catch (NameNotFoundException e) {
+ }
+ } else {
+ apps = mPm.getPackagesHoldingPermissions(tpl.perms, 0);
+ }
+ for (int i=0; i<apps.size(); i++) {
+ PackageInfo appInfo = apps.get(i);
+ AppEntry appEntry = appEntries.get(appInfo.packageName);
+ if (appEntry == null) {
+ appEntry = new AppEntry(this, appInfo.applicationInfo);
+ appEntry.loadLabel(context);
+ appEntries.put(appInfo.packageName, appEntry);
+ List<AppOpsManager.OpEntry> dummyOps
+ = new ArrayList<AppOpsManager.OpEntry>();
+ AppOpsManager.PackageOps pkgOps = new AppOpsManager.PackageOps(
+ appInfo.packageName, appInfo.applicationInfo.uid, dummyOps);
+ for (int j=0; j<appInfo.requestedPermissions.length; j++) {
+ if (appInfo.requestedPermissionsFlags != null) {
+ if ((appInfo.requestedPermissionsFlags[j]
+ & PackageInfo.REQUESTED_PERMISSION_GRANTED) == 0) {
+ break;
+ }
+ }
+ for (int k=0; k<tpl.perms.length; k++) {
+ if (tpl.perms[k].equals(appInfo.requestedPermissions[j])) {
+ AppOpsManager.OpEntry opEntry = new AppOpsManager.OpEntry(
+ tpl.permOps[k], 0, 0);
+ dummyOps.add(opEntry);
+ addOp(entries, pkgOps, appEntry, opEntry);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // Sort the list.
+ Collections.sort(entries, APP_OP_COMPARATOR);
+
+ // Done!
+ return entries;
+ }
+}
diff --git a/src/com/android/settings/applications/AppOpsSummary.java b/src/com/android/settings/applications/AppOpsSummary.java
new file mode 100644
index 0000000..1e0cd41
--- /dev/null
+++ b/src/com/android/settings/applications/AppOpsSummary.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright (C) 2013 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.applications;
+
+import android.app.AppOpsManager;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.os.Bundle;
+import android.preference.PreferenceFrameLayout;
+import android.support.v13.app.FragmentPagerAdapter;
+import android.support.v4.view.PagerTabStrip;
+import android.support.v4.view.ViewPager;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.settings.R;
+
+public class AppOpsSummary extends Fragment {
+ // layout inflater object used to inflate views
+ private LayoutInflater mInflater;
+
+ private ViewGroup mContentContainer;
+ private View mRootView;
+ private ViewPager mViewPager;
+
+ CharSequence[] mPageNames;
+ static AppOpsState.OpsTemplate[] sPageTemplates = new AppOpsState.OpsTemplate[] {
+ AppOpsState.LOCATION_TEMPLATE,
+ AppOpsState.PERSONAL_TEMPLATE,
+ AppOpsState.DEVICE_TEMPLATE
+ };
+
+ int mCurPos;
+
+ class MyPagerAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener {
+
+ public MyPagerAdapter(FragmentManager fm) {
+ super(fm);
+ }
+
+ @Override
+ public Fragment getItem(int position) {
+ return new AppOpsCategory(sPageTemplates[position]);
+ }
+
+ @Override
+ public int getCount() {
+ return sPageTemplates.length;
+ }
+
+ @Override
+ public CharSequence getPageTitle(int position) {
+ return mPageNames[position];
+ }
+
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ mCurPos = position;
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+ if (state == ViewPager.SCROLL_STATE_IDLE) {
+ //updateCurrentTab(mCurPos);
+ }
+ }
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ // initialize the inflater
+ mInflater = inflater;
+
+ View rootView = mInflater.inflate(R.layout.app_ops_summary,
+ container, false);
+ mContentContainer = container;
+ mRootView = rootView;
+
+ mPageNames = getResources().getTextArray(R.array.app_ops_categories);
+
+ mViewPager = (ViewPager) rootView.findViewById(R.id.pager);
+ MyPagerAdapter adapter = new MyPagerAdapter(getChildFragmentManager());
+ mViewPager.setAdapter(adapter);
+ mViewPager.setOnPageChangeListener(adapter);
+ PagerTabStrip tabs = (PagerTabStrip) rootView.findViewById(R.id.tabs);
+ tabs.setTabIndicatorColorResource(android.R.color.holo_blue_light);
+
+ // We have to do this now because PreferenceFrameLayout looks at it
+ // only when the view is added.
+ if (container instanceof PreferenceFrameLayout) {
+ ((PreferenceFrameLayout.LayoutParams) rootView.getLayoutParams()).removeBorders = true;
+ }
+
+ return rootView;
+ }
+}
diff --git a/src/com/android/settings/applications/ApplicationsState.java b/src/com/android/settings/applications/ApplicationsState.java
index e87d7cf..94a0aa3 100644
--- a/src/com/android/settings/applications/ApplicationsState.java
+++ b/src/com/android/settings/applications/ApplicationsState.java
@@ -237,12 +237,39 @@
}
};
+ public static final AppFilter DISABLED_FILTER = new AppFilter() {
+ public void init() {
+ }
+
+ @Override
+ public boolean filterApp(ApplicationInfo info) {
+ if (!info.enabled) {
+ return true;
+ }
+ return false;
+ }
+ };
+
+ public static final AppFilter ALL_ENABLED_FILTER = new AppFilter() {
+ public void init() {
+ }
+
+ @Override
+ public boolean filterApp(ApplicationInfo info) {
+ if (info.enabled) {
+ return true;
+ }
+ return false;
+ }
+ };
+
final Context mContext;
final PackageManager mPm;
final int mRetrieveFlags;
PackageIntentReceiver mPackageIntentReceiver;
boolean mResumed;
+ boolean mHaveDisabledApps;
// Information about all applications. Synchronize on mEntriesMap
// to protect access to these.
@@ -617,15 +644,18 @@
}
}
+ mHaveDisabledApps = false;
for (int i=0; i<mApplications.size(); i++) {
final ApplicationInfo info = mApplications.get(i);
// Need to trim out any applications that are disabled by
// something different than the user.
- if (!info.enabled && info.enabledSetting
- != PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER) {
- mApplications.remove(i);
- i--;
- continue;
+ if (!info.enabled) {
+ if (info.enabledSetting != PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER) {
+ mApplications.remove(i);
+ i--;
+ continue;
+ }
+ mHaveDisabledApps = true;
}
final AppEntry entry = mEntriesMap.get(info.packageName);
if (entry != null) {
@@ -638,6 +668,10 @@
}
}
+ public boolean haveDisabledApps() {
+ return mHaveDisabledApps;
+ }
+
void doPauseIfNeededLocked() {
if (!mResumed) {
return;
@@ -732,6 +766,13 @@
return;
}
ApplicationInfo info = mPm.getApplicationInfo(pkgName, mRetrieveFlags);
+ if (!info.enabled) {
+ if (info.enabledSetting
+ != PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER) {
+ return;
+ }
+ mHaveDisabledApps = true;
+ }
mApplications.add(info);
if (!mBackgroundHandler.hasMessages(BackgroundHandler.MSG_LOAD_ENTRIES)) {
mBackgroundHandler.sendEmptyMessage(BackgroundHandler.MSG_LOAD_ENTRIES);
@@ -757,7 +798,17 @@
mEntriesMap.remove(pkgName);
mAppEntries.remove(entry);
}
+ ApplicationInfo info = mApplications.get(idx);
mApplications.remove(idx);
+ if (!info.enabled) {
+ mHaveDisabledApps = false;
+ for (int i=0; i<mApplications.size(); i++) {
+ if (!mApplications.get(i).enabled) {
+ mHaveDisabledApps = true;
+ break;
+ }
+ }
+ }
if (!mMainHandler.hasMessages(MainHandler.MSG_PACKAGE_LIST_CHANGED)) {
mMainHandler.sendEmptyMessage(MainHandler.MSG_PACKAGE_LIST_CHANGED);
}
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index 75c9485..565c585 100644
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -540,7 +540,7 @@
// Utility method to set applicaiton label and icon.
private void setAppLabelAndIcon(PackageInfo pkgInfo) {
final View appSnippet = mRootView.findViewById(R.id.app_snippet);
- appSnippet.setPadding(0, appSnippet.getPaddingTop(), 0, appSnippet.getPaddingBottom());
+ appSnippet.setPaddingRelative(0, appSnippet.getPaddingTop(), 0, appSnippet.getPaddingBottom());
ImageView icon = (ImageView) appSnippet.findViewById(R.id.app_icon);
mState.ensureIcon(mAppEntry);
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
index d4df397..c6a9792 100644
--- a/src/com/android/settings/applications/ManageApplications.java
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -161,6 +161,7 @@
public static final int FILTER_APPS_ALL = MENU_OPTIONS_BASE + 0;
public static final int FILTER_APPS_THIRD_PARTY = MENU_OPTIONS_BASE + 1;
public static final int FILTER_APPS_SDCARD = MENU_OPTIONS_BASE + 2;
+ public static final int FILTER_APPS_DISABLED = MENU_OPTIONS_BASE + 3;
public static final int SORT_ORDER_ALPHA = MENU_OPTIONS_BASE + 4;
public static final int SORT_ORDER_SIZE = MENU_OPTIONS_BASE + 5;
@@ -221,6 +222,7 @@
switch (listType) {
case LIST_TYPE_DOWNLOADED: mFilter = FILTER_APPS_THIRD_PARTY; break;
case LIST_TYPE_SDCARD: mFilter = FILTER_APPS_SDCARD; break;
+ case LIST_TYPE_DISABLED: mFilter = FILTER_APPS_DISABLED; break;
default: mFilter = FILTER_APPS_ALL; break;
}
mClickListener = clickListener;
@@ -427,6 +429,7 @@
}
}
private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();
+ private int mNumTabs;
TabInfo mCurTab = null;
// Size resource used for packages whose size computation failed for some reason
@@ -447,6 +450,7 @@
static final int LIST_TYPE_RUNNING = 1;
static final int LIST_TYPE_SDCARD = 2;
static final int LIST_TYPE_ALL = 3;
+ static final int LIST_TYPE_DISABLED = 4;
private boolean mShowBackground = false;
@@ -464,7 +468,7 @@
@Override
public int getCount() {
- return mTabs.size();
+ return mNumTabs;
}
@Override
@@ -472,6 +476,7 @@
TabInfo tab = mTabs.get(position);
View root = tab.build(mInflater, mContentContainer, mRootView);
container.addView(root);
+ root.setTag(R.id.name, tab);
return root;
}
@@ -486,6 +491,12 @@
}
@Override
+ public int getItemPosition(Object object) {
+ return super.getItemPosition(object);
+ //return ((TabInfo)((View)object).getTag(R.id.name)).mListType;
+ }
+
+ @Override
public CharSequence getPageTitle(int position) {
return mTabs.get(position).mLabel;
}
@@ -607,8 +618,11 @@
mWhichSize = SIZE_EXTERNAL;
}
break;
+ case FILTER_APPS_DISABLED:
+ filterObj = ApplicationsState.DISABLED_FILTER;
+ break;
default:
- filterObj = null;
+ filterObj = ApplicationsState.ALL_ENABLED_FILTER;
break;
}
switch (mLastSortMode) {
@@ -869,6 +883,13 @@
getActivity().getString(R.string.filter_apps_all),
LIST_TYPE_ALL, this, savedInstanceState);
mTabs.add(tab);
+
+ tab = new TabInfo(this, mApplicationsState,
+ getActivity().getString(R.string.filter_apps_disabled),
+ LIST_TYPE_DISABLED, this, savedInstanceState);
+ mTabs.add(tab);
+
+ mNumTabs = mTabs.size();
}
@@ -922,6 +943,7 @@
public void onResume() {
super.onResume();
mActivityResumed = true;
+ updateNumTabs();
updateCurrentTab(mViewPager.getCurrentItem());
updateOptionsMenu();
}
@@ -975,6 +997,16 @@
}
}
+ private void updateNumTabs() {
+ int newNum = mApplicationsState.haveDisabledApps() ? mTabs.size() : (mTabs.size()-1);
+ if (newNum != mNumTabs) {
+ mNumTabs = newNum;
+ if (mViewPager != null) {
+ mViewPager.getAdapter().notifyDataSetChanged();
+ }
+ }
+ }
+
TabInfo tabForType(int type) {
for (int i = 0; i < mTabs.size(); i++) {
TabInfo tab = mTabs.get(i);
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index e9ba39d..c0bfd32 100755
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -119,7 +119,7 @@
if (preferenceActivity.onIsHidingHeaders() || !preferenceActivity.onIsMultiPane()) {
final int padding = activity.getResources().getDimensionPixelSize(
R.dimen.action_bar_switch_padding);
- actionBarSwitch.setPadding(0, 0, padding, 0);
+ actionBarSwitch.setPaddingRelative(0, 0, padding, 0);
activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM);
activity.getActionBar().setCustomView(actionBarSwitch, new ActionBar.LayoutParams(
diff --git a/src/com/android/settings/deviceinfo/StorageMeasurement.java b/src/com/android/settings/deviceinfo/StorageMeasurement.java
index a22ba77..e39dd20 100644
--- a/src/com/android/settings/deviceinfo/StorageMeasurement.java
+++ b/src/com/android/settings/deviceinfo/StorageMeasurement.java
@@ -338,8 +338,8 @@
sendMessage(obtainMessage(MSG_CONNECTED, mDefaultContainer));
} else {
Intent service = new Intent().setComponent(DEFAULT_CONTAINER_COMPONENT);
- context.bindService(service, mDefContainerConn, Context.BIND_AUTO_CREATE,
- UserHandle.USER_OWNER);
+ context.bindServiceAsUser(service, mDefContainerConn, Context.BIND_AUTO_CREATE,
+ UserHandle.OWNER);
}
}
break;
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 0a6e2ab..128d3a3 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -129,6 +129,8 @@
String batterySummary = context.getResources().getString(
R.string.power_usage_level_and_status, batteryLevel, batteryStatus);
mBatteryStatusPref.setTitle(batterySummary);
+ mStats = null;
+ refreshStats();
}
}
};
diff --git a/src/com/android/settings/net/DataUsageMeteredSettings.java b/src/com/android/settings/net/DataUsageMeteredSettings.java
index ad12311..fb000db 100644
--- a/src/com/android/settings/net/DataUsageMeteredSettings.java
+++ b/src/com/android/settings/net/DataUsageMeteredSettings.java
@@ -101,10 +101,10 @@
}
private Preference buildWifiPref(Context context, WifiConfiguration config) {
- final String networkId = removeDoubleQuotes(config.SSID);
+ final String networkId = config.SSID;
final NetworkTemplate template = NetworkTemplate.buildTemplateWifi(networkId);
final MeteredPreference pref = new MeteredPreference(context, template);
- pref.setTitle(networkId);
+ pref.setTitle(removeDoubleQuotes(networkId));
return pref;
}
@@ -119,7 +119,7 @@
setPersistent(false);
mBinding = true;
- final NetworkPolicy policy = mPolicyEditor.getPolicy(template);
+ final NetworkPolicy policy = mPolicyEditor.getPolicyMaybeUnquoted(template);
if (policy != null) {
if (policy.limitBytes != LIMIT_DISABLED) {
setChecked(true);
diff --git a/src/com/android/settings/net/NetworkPolicyEditor.java b/src/com/android/settings/net/NetworkPolicyEditor.java
index 5fe4c06..bfdaf99 100644
--- a/src/com/android/settings/net/NetworkPolicyEditor.java
+++ b/src/com/android/settings/net/NetworkPolicyEditor.java
@@ -31,7 +31,9 @@
import android.net.NetworkPolicy;
import android.net.NetworkPolicyManager;
import android.net.NetworkTemplate;
+import android.net.wifi.WifiInfo;
import android.os.AsyncTask;
+import android.text.TextUtils;
import android.text.format.Time;
import com.android.internal.util.Objects;
@@ -125,6 +127,15 @@
return null;
}
+ public NetworkPolicy getPolicyMaybeUnquoted(NetworkTemplate template) {
+ NetworkPolicy policy = getPolicy(template);
+ if (policy != null) {
+ return policy;
+ } else {
+ return getPolicy(buildUnquotedNetworkTemplate(template));
+ }
+ }
+
@Deprecated
private static NetworkPolicy buildDefaultPolicy(NetworkTemplate template) {
// TODO: move this into framework to share with NetworkPolicyManagerService
@@ -186,7 +197,7 @@
}
public boolean getPolicyMetered(NetworkTemplate template) {
- final NetworkPolicy policy = getPolicy(template);
+ NetworkPolicy policy = getPolicy(template);
if (policy != null) {
return policy.metered;
} else {
@@ -221,6 +232,14 @@
}
}
+ // Remove legacy unquoted policies while we're here
+ final NetworkTemplate unquoted = buildUnquotedNetworkTemplate(template);
+ final NetworkPolicy unquotedPolicy = getPolicy(unquoted);
+ if (unquotedPolicy != null) {
+ mPolicies.remove(unquotedPolicy);
+ modified = true;
+ }
+
if (modified) writeAsync();
}
@@ -314,4 +333,21 @@
return false;
}
}
+
+ /**
+ * Build a revised {@link NetworkTemplate} that matches the same rule, but
+ * with an unquoted {@link NetworkTemplate#getNetworkId()}. Used to work
+ * around legacy bugs.
+ */
+ private static NetworkTemplate buildUnquotedNetworkTemplate(NetworkTemplate template) {
+ if (template == null) return null;
+ final String networkId = template.getNetworkId();
+ final String strippedNetworkId = WifiInfo.removeDoubleQuotes(networkId);
+ if (!TextUtils.equals(strippedNetworkId, networkId)) {
+ return new NetworkTemplate(
+ template.getMatchRule(), template.getSubscriberId(), strippedNetworkId);
+ } else {
+ return null;
+ }
+ }
}
diff --git a/src/com/android/settings/nfc/AndroidBeam.java b/src/com/android/settings/nfc/AndroidBeam.java
index 032681a..0641613 100644
--- a/src/com/android/settings/nfc/AndroidBeam.java
+++ b/src/com/android/settings/nfc/AndroidBeam.java
@@ -38,7 +38,6 @@
private ImageView mImageView;
private NfcAdapter mNfcAdapter;
private Switch mActionBarSwitch;
- private CharSequence mOldActivityTitle;
@Override
@@ -50,19 +49,18 @@
if (activity instanceof PreferenceActivity) {
PreferenceActivity preferenceActivity = (PreferenceActivity) activity;
+ if (preferenceActivity.onIsHidingHeaders() || !preferenceActivity.onIsMultiPane()) {
final int padding = activity.getResources().getDimensionPixelSize(
R.dimen.action_bar_switch_padding);
- mActionBarSwitch.setPadding(0, 0, padding, 0);
+ mActionBarSwitch.setPaddingRelative(0, 0, padding, 0);
activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM);
activity.getActionBar().setCustomView(mActionBarSwitch, new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT,
Gravity.CENTER_VERTICAL | Gravity.END));
- if (!preferenceActivity.onIsMultiPane() || preferenceActivity.onIsHidingHeaders()) {
- mOldActivityTitle = getActivity().getTitle();
- activity.getActionBar().setTitle(R.string.android_beam_settings_title);
- }
+ activity.getActionBar().setTitle(R.string.android_beam_settings_title);
+ }
}
mActionBarSwitch.setOnCheckedChangeListener(this);
@@ -78,14 +76,6 @@
initView(mView);
return mView;
}
- @Override
- public void onDestroyView() {
- getActivity().getActionBar().setCustomView(null);
- if (mOldActivityTitle != null) {
- getActivity().getActionBar().setTitle(mOldActivityTitle);
- }
- super.onDestroyView();
- }
private void initView(View view) {
mActionBarSwitch.setOnCheckedChangeListener(this);
diff --git a/src/com/android/settings/tts/TextToSpeechSettings.java b/src/com/android/settings/tts/TextToSpeechSettings.java
index 6718ab0..8f83bbc 100644
--- a/src/com/android/settings/tts/TextToSpeechSettings.java
+++ b/src/com/android/settings/tts/TextToSpeechSettings.java
@@ -26,7 +26,6 @@
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.ContentResolver;
-import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.preference.ListPreference;
@@ -36,14 +35,17 @@
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.speech.tts.TextToSpeech;
+import android.speech.tts.UtteranceProgressListener;
import android.speech.tts.TextToSpeech.EngineInfo;
import android.speech.tts.TtsEngines;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Checkable;
+import java.util.HashMap;
import java.util.List;
import java.util.Locale;
+import java.util.Set;
public class TextToSpeechSettings extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener,
@@ -137,9 +139,28 @@
mTts = new TextToSpeech(getActivity().getApplicationContext(), mInitListener);
mEnginesHelper = new TtsEngines(getActivity().getApplicationContext());
+ setTtsUtteranceProgressListener();
initSettings();
}
+ private void setTtsUtteranceProgressListener() {
+ if (mTts == null) {
+ return;
+ }
+ mTts.setOnUtteranceProgressListener(new UtteranceProgressListener() {
+ @Override
+ public void onStart(String utteranceId) {}
+
+ @Override
+ public void onDone(String utteranceId) {}
+
+ @Override
+ public void onError(String utteranceId) {
+ Log.e(TAG, "Error while trying to synthesize sample text");
+ }
+ });
+ }
+
@Override
public void onDestroy() {
super.onDestroy();
@@ -193,7 +214,13 @@
if (TextUtils.isEmpty(currentEngine)) currentEngine = mTts.getDefaultEngine();
- Locale currentLocale = mTts.getLanguage();
+
+ Locale defaultLocale = mTts.getDefaultLanguage();
+ if (defaultLocale == null) {
+ Log.e(TAG, "Failed to get default language from engine " + currentEngine);
+ return;
+ }
+ mTts.setLanguage(defaultLocale);
// TODO: This is currently a hidden private API. The intent extras
// and the intent action should be made public if we intend to make this
@@ -201,11 +228,9 @@
// doesn't work.
Intent intent = new Intent(TextToSpeech.Engine.ACTION_GET_SAMPLE_TEXT);
- if (currentLocale != null) {
- intent.putExtra("language", currentLocale.getLanguage());
- intent.putExtra("country", currentLocale.getCountry());
- intent.putExtra("variant", currentLocale.getVariant());
- }
+ intent.putExtra("language", defaultLocale.getLanguage());
+ intent.putExtra("country", defaultLocale.getCountry());
+ intent.putExtra("variant", defaultLocale.getVariant());
intent.setPackage(currentEngine);
try {
@@ -258,6 +283,12 @@
return null;
}
+ private boolean isNetworkRequiredForSynthesis() {
+ Set<String> features = mTts.getFeatures(mTts.getLanguage());
+ return features.contains(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS) &&
+ !features.contains(TextToSpeech.Engine.KEY_FEATURE_EMBEDDED_SYNTHESIS);
+ }
+
private void onSampleTextReceived(int resultCode, Intent data) {
String sample = getDefaultSampleString();
@@ -273,7 +304,18 @@
if (sample != null && mTts != null) {
// The engine is guaranteed to have been initialized here
// because this preference is not enabled otherwise.
- mTts.speak(sample, TextToSpeech.QUEUE_FLUSH, null);
+
+ final boolean networkRequired = isNetworkRequiredForSynthesis();
+ if (!networkRequired || networkRequired &&
+ (mTts.isLanguageAvailable(mTts.getLanguage()) >= TextToSpeech.LANG_AVAILABLE)) {
+ HashMap<String, String> params = new HashMap<String, String>();
+ params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "Sample");
+
+ mTts.speak(sample, TextToSpeech.QUEUE_FLUSH, params);
+ } else {
+ Log.w(TAG, "Network required for sample synthesis for requested language");
+ displayNetworkAlert();
+ }
} else {
// TODO: Display an error here to the user.
Log.e(TAG, "Did not have a sample string for the requested language");
@@ -319,22 +361,13 @@
mDefaultRatePref.setEnabled(enable);
}
- private void displayDataAlert(final String key) {
- Log.i(TAG, "Displaying data alert for :" + key);
+ private void displayNetworkAlert() {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(android.R.string.dialog_alert_title);
builder.setIconAttribute(android.R.attr.alertDialogIcon);
- builder.setMessage(getActivity().getString(
- R.string.tts_engine_security_warning, mEnginesHelper.getEngineInfo(key).label));
- builder.setCancelable(true);
- builder.setPositiveButton(android.R.string.ok,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- updateDefaultEngine(key);
- }
- });
- builder.setNegativeButton(android.R.string.cancel, null);
+ builder.setMessage(getActivity().getString(R.string.tts_engine_network_required));
+ builder.setCancelable(false);
+ builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
@@ -369,6 +402,7 @@
// the app binds successfully to the engine.
if (DBG) Log.d(TAG, "Updating engine : Attempting to connect to engine: " + engine);
mTts = new TextToSpeech(getActivity().getApplicationContext(), mUpdateListener, engine);
+ setTtsUtteranceProgressListener();
}
/*
@@ -390,6 +424,7 @@
// null if the previous bind to this engine failed.
mTts = new TextToSpeech(getActivity().getApplicationContext(), mInitListener,
mPreviousEngine);
+ setTtsUtteranceProgressListener();
}
mPreviousEngine = null;
}
@@ -443,11 +478,6 @@
updateWidgetState(true);
}
- private boolean shouldDisplayDataAlert(String engine) {
- final EngineInfo info = mEnginesHelper.getEngineInfo(engine);
- return !info.system;
- }
-
@Override
public Checkable getCurrentChecked() {
return mCurrentChecked;
@@ -466,11 +496,7 @@
@Override
public void setCurrentKey(String key) {
mCurrentEngine = key;
- if (shouldDisplayDataAlert(mCurrentEngine)) {
- displayDataAlert(mCurrentEngine);
- } else {
- updateDefaultEngine(mCurrentEngine);
- }
+ updateDefaultEngine(mCurrentEngine);
}
}
diff --git a/src/com/android/settings/tts/TtsEnginePreference.java b/src/com/android/settings/tts/TtsEnginePreference.java
index 21ef81d..486fdf8 100644
--- a/src/com/android/settings/tts/TtsEnginePreference.java
+++ b/src/com/android/settings/tts/TtsEnginePreference.java
@@ -16,12 +16,15 @@
package com.android.settings.tts;
+import android.app.AlertDialog;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.speech.tts.TextToSpeech.EngineInfo;
+import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Checkable;
@@ -35,6 +38,8 @@
public class TtsEnginePreference extends Preference {
+ private static final String TAG = "TtsEnginePreference";
+
/**
* Key for the name of the TTS engine passed in to the engine
* settings fragment {@link TtsEngineSettingsFragment}.
@@ -182,22 +187,69 @@
}
}
- private void onRadioButtonClicked(CompoundButton buttonView, boolean isChecked) {
+ private boolean shouldDisplayDataAlert() {
+ return !mEngineInfo.system;
+ }
+
+
+ private void displayDataAlert(
+ DialogInterface.OnClickListener positiveOnClickListener,
+ DialogInterface.OnClickListener negativeOnClickListener) {
+ Log.i(TAG, "Displaying data alert for :" + mEngineInfo.name);
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
+ builder.setTitle(android.R.string.dialog_alert_title);
+ builder.setIconAttribute(android.R.attr.alertDialogIcon);
+ builder.setMessage(getContext().getString(
+ R.string.tts_engine_security_warning, mEngineInfo.label));
+ builder.setCancelable(true);
+ builder.setPositiveButton(android.R.string.ok, positiveOnClickListener);
+ builder.setNegativeButton(android.R.string.cancel, negativeOnClickListener);
+
+ AlertDialog dialog = builder.create();
+ dialog.show();
+ }
+
+
+ private void onRadioButtonClicked(final CompoundButton buttonView,
+ boolean isChecked) {
if (mPreventRadioButtonCallbacks ||
(mSharedState.getCurrentChecked() == buttonView)) {
return;
}
if (isChecked) {
- if (mSharedState.getCurrentChecked() != null) {
- mSharedState.getCurrentChecked().setChecked(false);
+ // Should we alert user? if that's true, delay making engine current one.
+ if (shouldDisplayDataAlert()) {
+ displayDataAlert(new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ makeCurrentEngine(buttonView);
+ }
+ },new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ // Undo the click.
+ buttonView.setChecked(false);
+ }
+ });
+ } else {
+ // Privileged engine, set it current
+ makeCurrentEngine(buttonView);
}
- mSharedState.setCurrentChecked(buttonView);
- mSharedState.setCurrentKey(getKey());
- callChangeListener(mSharedState.getCurrentKey());
+ } else {
+ mSettingsIcon.setEnabled(false);
}
+ }
- mSettingsIcon.setEnabled(isChecked);
+ private void makeCurrentEngine(Checkable current) {
+ if (mSharedState.getCurrentChecked() != null) {
+ mSharedState.getCurrentChecked().setChecked(false);
+ }
+ mSharedState.setCurrentChecked(current);
+ mSharedState.setCurrentKey(getKey());
+ callChangeListener(mSharedState.getCurrentKey());
+ mSettingsIcon.setEnabled(true);
}
diff --git a/src/com/android/settings/wfd/WifiDisplaySettings.java b/src/com/android/settings/wfd/WifiDisplaySettings.java
index f1d0e70..60dd119 100755
--- a/src/com/android/settings/wfd/WifiDisplaySettings.java
+++ b/src/com/android/settings/wfd/WifiDisplaySettings.java
@@ -93,24 +93,19 @@
Activity activity = getActivity();
mActionBarSwitch = new Switch(activity);
- if (activity instanceof PreferenceActivity) {
- PreferenceActivity preferenceActivity = (PreferenceActivity) activity;
- if (preferenceActivity.onIsHidingHeaders() || !preferenceActivity.onIsMultiPane()) {
- final int padding = activity.getResources().getDimensionPixelSize(
- R.dimen.action_bar_switch_padding);
- mActionBarSwitch.setPadding(0, 0, padding, 0);
- activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
- ActionBar.DISPLAY_SHOW_CUSTOM);
- activity.getActionBar().setCustomView(mActionBarSwitch,
- new ActionBar.LayoutParams(
- ActionBar.LayoutParams.WRAP_CONTENT,
- ActionBar.LayoutParams.WRAP_CONTENT,
- Gravity.CENTER_VERTICAL | Gravity.END));
- }
- }
-
mActionBarSwitch.setOnCheckedChangeListener(mSwitchOnCheckedChangedListener);
+ final int padding = activity.getResources().getDimensionPixelSize(
+ R.dimen.action_bar_switch_padding);
+ mActionBarSwitch.setPaddingRelative(0, 0, padding, 0);
+ activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
+ ActionBar.DISPLAY_SHOW_CUSTOM);
+ activity.getActionBar().setCustomView(mActionBarSwitch,
+ new ActionBar.LayoutParams(
+ ActionBar.LayoutParams.WRAP_CONTENT,
+ ActionBar.LayoutParams.WRAP_CONTENT,
+ Gravity.CENTER_VERTICAL | Gravity.END));
+
mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
getListView().setEmptyView(mEmptyView);
diff --git a/src/com/android/settings/widget/SettingsAppWidgetProvider.java b/src/com/android/settings/widget/SettingsAppWidgetProvider.java
index a722818..75a83cc 100644
--- a/src/com/android/settings/widget/SettingsAppWidgetProvider.java
+++ b/src/com/android/settings/widget/SettingsAppWidgetProvider.java
@@ -24,8 +24,6 @@
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
-import android.content.SyncStorageEngine;
-import android.content.pm.PackageManager;
import android.database.ContentObserver;
import android.location.LocationManager;
import android.net.ConnectivityManager;
@@ -40,6 +38,7 @@
import android.provider.Settings;
import android.util.Log;
import android.widget.RemoteViews;
+
import com.android.settings.R;
import com.android.settings.bluetooth.LocalBluetoothAdapter;
import com.android.settings.bluetooth.LocalBluetoothManager;
@@ -776,8 +775,7 @@
sBluetoothState.onActualStateChange(context, intent);
} else if (LocationManager.PROVIDERS_CHANGED_ACTION.equals(action)) {
sGpsState.onActualStateChange(context, intent);
- } else if (SyncStorageEngine.SYNC_CONNECTION_SETTING_CHANGED_INTENT.getAction()
- .equals(action)) {
+ } else if (ContentResolver.ACTION_SYNC_CONN_STATUS_CHANGED.equals(action)) {
sSyncState.onActualStateChange(context, intent);
} else if (intent.hasCategory(Intent.CATEGORY_ALTERNATIVE)) {
Uri data = intent.getData();
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 2598a0e..373763d 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -31,7 +31,9 @@
import android.net.wifi.WifiConfiguration.IpAssignment;
import android.net.wifi.WifiConfiguration.KeyMgmt;
import android.net.wifi.WifiConfiguration.ProxySettings;
-import android.net.wifi.WifiConfiguration.Status;
+import android.net.wifi.WifiEnterpriseConfig;
+import android.net.wifi.WifiEnterpriseConfig.Eap;
+import android.net.wifi.WifiEnterpriseConfig.Phase2;
import android.net.wifi.WifiInfo;
import android.os.Handler;
import android.security.Credentials;
@@ -63,10 +65,6 @@
*/
public class WifiConfigController implements TextWatcher,
View.OnClickListener, AdapterView.OnItemSelectedListener {
- private static final String KEYSTORE_SPACE = WifiConfiguration.KEYSTORE_URI;
-
- private static final String PHASE2_PREFIX = "auth=";
-
private final WifiConfigUiBase mConfigUi;
private final View mView;
private final AccessPoint mAccessPoint;
@@ -79,10 +77,20 @@
private int mAccessPointSecurity;
private TextView mPasswordView;
+ private String unspecifiedCert = "unspecified";
+ private static final int unspecifiedCertIndex = 0;
+
+ /* Phase2 methods supported by PEAP are limited */
+ private final ArrayAdapter<String> PHASE2_PEAP_ADAPTER;
+ /* Full list of phase2 methods */
+ private final ArrayAdapter<String> PHASE2_FULL_ADAPTER;
+
private Spinner mSecuritySpinner;
private Spinner mEapMethodSpinner;
private Spinner mEapCaCertSpinner;
private Spinner mPhase2Spinner;
+ // Associated with mPhase2Spinner, one of PHASE2_FULL_ADAPTER or PHASE2_PEAP_ADAPTER
+ private ArrayAdapter<String> mPhase2Adapter;
private Spinner mEapUserCertSpinner;
private TextView mEapIdentityView;
private TextView mEapAnonymousView;
@@ -95,12 +103,17 @@
public static final int PROXY_NONE = 0;
public static final int PROXY_STATIC = 1;
- /* These values from from "wifi_eap_method" resource array */
+ /* These values come from "wifi_eap_method" resource array */
public static final int WIFI_EAP_METHOD_PEAP = 0;
public static final int WIFI_EAP_METHOD_TLS = 1;
public static final int WIFI_EAP_METHOD_TTLS = 2;
public static final int WIFI_EAP_METHOD_PWD = 3;
+ /* These values come from "wifi_peap_phase2_entries" resource array */
+ public static final int WIFI_PEAP_PHASE2_NONE = 0;
+ public static final int WIFI_PEAP_PHASE2_MSCHAPV2 = 1;
+ public static final int WIFI_PEAP_PHASE2_GTC = 2;
+
private static final String TAG = "WifiConfigController";
private Spinner mIpSettingsSpinner;
@@ -124,22 +137,6 @@
private final Handler mTextViewChangedHandler;
- static boolean requireKeyStore(WifiConfiguration config) {
- if (config == null) {
- return false;
- }
- if (!TextUtils.isEmpty(config.key_id.value())) {
- return true;
- }
- String values[] = { config.ca_cert.value(), config.client_cert.value() };
- for (String value : values) {
- if (value != null && value.startsWith(KEYSTORE_SPACE)) {
- return true;
- }
- }
- return false;
- }
-
public WifiConfigController(
WifiConfigUiBase parent, View view, AccessPoint accessPoint, boolean edit) {
mConfigUi = parent;
@@ -155,6 +152,17 @@
final Context context = mConfigUi.getContext();
final Resources resources = context.getResources();
+ PHASE2_PEAP_ADAPTER = new ArrayAdapter<String>(
+ context, android.R.layout.simple_spinner_item,
+ context.getResources().getStringArray(R.array.wifi_peap_phase2_entries));
+ PHASE2_PEAP_ADAPTER.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+
+ PHASE2_FULL_ADAPTER = new ArrayAdapter<String>(
+ context, android.R.layout.simple_spinner_item,
+ context.getResources().getStringArray(R.array.wifi_phase2_entries));
+ PHASE2_FULL_ADAPTER.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+
+ unspecifiedCert = context.getString(R.string.wifi_unspecified);
mIpSettingsSpinner = (Spinner) mView.findViewById(R.id.ip_settings);
mIpSettingsSpinner.setOnItemSelectedListener(this);
mProxySettingsSpinner = (Spinner) mView.findViewById(R.id.proxy_settings);
@@ -356,33 +364,58 @@
case AccessPoint.SECURITY_EAP:
config.allowedKeyManagement.set(KeyMgmt.WPA_EAP);
config.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
- config.eap.setValue((String) mEapMethodSpinner.getSelectedItem());
-
- config.phase2.setValue((mPhase2Spinner.getSelectedItemPosition() == 0) ? "" :
- PHASE2_PREFIX + mPhase2Spinner.getSelectedItem());
- config.ca_cert.setValue((mEapCaCertSpinner.getSelectedItemPosition() == 0) ? "" :
- KEYSTORE_SPACE + Credentials.CA_CERTIFICATE +
- (String) mEapCaCertSpinner.getSelectedItem());
- config.client_cert.setValue((mEapUserCertSpinner.getSelectedItemPosition() == 0) ?
- "" : KEYSTORE_SPACE + Credentials.USER_CERTIFICATE +
- (String) mEapUserCertSpinner.getSelectedItem());
- final boolean isEmptyKeyId = (mEapUserCertSpinner.getSelectedItemPosition() == 0);
- config.key_id.setValue(isEmptyKeyId ? "" : Credentials.USER_PRIVATE_KEY +
- (String) mEapUserCertSpinner.getSelectedItem());
- config.engine.setValue(isEmptyKeyId ? WifiConfiguration.ENGINE_DISABLE :
- WifiConfiguration.ENGINE_ENABLE);
- config.engine_id.setValue(isEmptyKeyId ? "" : WifiConfiguration.KEYSTORE_ENGINE_ID);
- config.identity.setValue((mEapIdentityView.length() == 0) ? "" :
- mEapIdentityView.getText().toString());
- config.anonymous_identity.setValue((mEapAnonymousView.length() == 0) ? "" :
+ config.enterpriseConfig = new WifiEnterpriseConfig();
+ int eapMethod = mEapMethodSpinner.getSelectedItemPosition();
+ int phase2Method = mPhase2Spinner.getSelectedItemPosition();
+ config.enterpriseConfig.setEapMethod(eapMethod);
+ switch (eapMethod) {
+ case Eap.PEAP:
+ // PEAP supports limited phase2 values
+ // Map the index from the PHASE2_PEAP_ADAPTER to the one used
+ // by the API which has the full list of PEAP methods.
+ switch(phase2Method) {
+ case WIFI_PEAP_PHASE2_NONE:
+ config.enterpriseConfig.setPhase2Method(Phase2.NONE);
+ break;
+ case WIFI_PEAP_PHASE2_MSCHAPV2:
+ config.enterpriseConfig.setPhase2Method(Phase2.MSCHAPV2);
+ break;
+ case WIFI_PEAP_PHASE2_GTC:
+ config.enterpriseConfig.setPhase2Method(Phase2.GTC);
+ break;
+ default:
+ Log.e(TAG, "Unknown phase2 method" + phase2Method);
+ break;
+ }
+ break;
+ default:
+ // The default index from PHASE2_FULL_ADAPTER maps to the API
+ config.enterpriseConfig.setPhase2Method(phase2Method);
+ break;
+ }
+ String caCert = (String) mEapCaCertSpinner.getSelectedItem();
+ if (caCert.equals(unspecifiedCert)) caCert = "";
+ config.enterpriseConfig.setCaCertificate(caCert);
+ String clientCert = (String) mEapUserCertSpinner.getSelectedItem();
+ if (clientCert.equals(unspecifiedCert)) clientCert = "";
+ config.enterpriseConfig.setClientCertificate(clientCert);
+ config.enterpriseConfig.setIdentity(mEapIdentityView.getText().toString());
+ config.enterpriseConfig.setAnonymousIdentity(
mEapAnonymousView.getText().toString());
- if (mPasswordView.length() != 0) {
- config.password.setValue(mPasswordView.getText().toString());
+
+ if (mPasswordView.isShown()) {
+ // For security reasons, a previous password is not displayed to user.
+ // Update only if it has been changed.
+ if (mPasswordView.length() > 0) {
+ config.enterpriseConfig.setPassword(mPasswordView.getText().toString());
+ }
+ } else {
+ // clear password
+ config.enterpriseConfig.setPassword(mPasswordView.getText().toString());
}
break;
-
default:
- return null;
+ return null;
}
config.proxySettings = mProxySettings;
@@ -547,42 +580,139 @@
loadCertificates(mEapCaCertSpinner, Credentials.CA_CERTIFICATE);
loadCertificates(mEapUserCertSpinner, Credentials.USER_PRIVATE_KEY);
+ // Modifying an existing network
if (mAccessPoint != null && mAccessPoint.networkId != INVALID_NETWORK_ID) {
WifiConfiguration config = mAccessPoint.getConfig();
- setSelection(mEapMethodSpinner, config.eap.value());
-
- final String phase2Method = config.phase2.value();
- if (phase2Method != null && phase2Method.startsWith(PHASE2_PREFIX)) {
- setSelection(mPhase2Spinner, phase2Method.substring(PHASE2_PREFIX.length()));
- } else {
- setSelection(mPhase2Spinner, phase2Method);
+ int eapMethod = config.enterpriseConfig.getEapMethod();
+ int phase2Method = config.enterpriseConfig.getPhase2Method();
+ mEapMethodSpinner.setSelection(eapMethod);
+ showEapFieldsByMethod(eapMethod);
+ switch (eapMethod) {
+ case Eap.PEAP:
+ switch (phase2Method) {
+ case Phase2.NONE:
+ mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_NONE);
+ break;
+ case Phase2.MSCHAPV2:
+ mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_MSCHAPV2);
+ break;
+ case Phase2.GTC:
+ mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_GTC);
+ break;
+ default:
+ Log.e(TAG, "Invalid phase 2 method " + phase2Method);
+ break;
+ }
+ break;
+ default:
+ mPhase2Spinner.setSelection(phase2Method);
+ break;
}
-
- setCertificate(mEapCaCertSpinner, KEYSTORE_SPACE + Credentials.CA_CERTIFICATE,
- config.ca_cert.value());
- setCertificate(mEapUserCertSpinner, Credentials.USER_PRIVATE_KEY,
- config.key_id.value());
- mEapIdentityView.setText(config.identity.value());
- mEapAnonymousView.setText(config.anonymous_identity.value());
+ setSelection(mEapCaCertSpinner, config.enterpriseConfig.getCaCertificate());
+ setSelection(mEapUserCertSpinner, config.enterpriseConfig.getClientCertificate());
+ mEapIdentityView.setText(config.enterpriseConfig.getIdentity());
+ mEapAnonymousView.setText(config.enterpriseConfig.getAnonymousIdentity());
}
+ } else {
+ showEapFieldsByMethod(mEapMethodSpinner.getSelectedItemPosition());
}
+ }
+ /**
+ * EAP-PWD valid fields include
+ * identity
+ * password
+ * EAP-PEAP valid fields include
+ * phase2: MSCHAPV2, GTC
+ * ca_cert
+ * identity
+ * anonymous_identity
+ * password
+ * EAP-TLS valid fields include
+ * user_cert
+ * ca_cert
+ * identity
+ * EAP-TTLS valid fields include
+ * phase2: PAP, MSCHAP, MSCHAPV2, GTC
+ * ca_cert
+ * identity
+ * anonymous_identity
+ * password
+ */
+ private void showEapFieldsByMethod(int eapMethod) {
+ // Common defaults
mView.findViewById(R.id.l_method).setVisibility(View.VISIBLE);
mView.findViewById(R.id.l_identity).setVisibility(View.VISIBLE);
- if (mEapMethodSpinner.getSelectedItemPosition() == WIFI_EAP_METHOD_PWD){
- mView.findViewById(R.id.l_phase2).setVisibility(View.GONE);
- mView.findViewById(R.id.l_ca_cert).setVisibility(View.GONE);
- mView.findViewById(R.id.l_user_cert).setVisibility(View.GONE);
- mView.findViewById(R.id.l_anonymous).setVisibility(View.GONE);
- } else {
- mView.findViewById(R.id.l_phase2).setVisibility(View.VISIBLE);
- mView.findViewById(R.id.l_ca_cert).setVisibility(View.VISIBLE);
- mView.findViewById(R.id.l_user_cert).setVisibility(View.VISIBLE);
- mView.findViewById(R.id.l_anonymous).setVisibility(View.VISIBLE);
+ // Defaults for most of the EAP methods and over-riden by
+ // by certain EAP methods
+ mView.findViewById(R.id.l_ca_cert).setVisibility(View.VISIBLE);
+ mView.findViewById(R.id.password_layout).setVisibility(View.VISIBLE);
+ mView.findViewById(R.id.show_password_layout).setVisibility(View.VISIBLE);
+
+ Context context = mConfigUi.getContext();
+ switch (eapMethod) {
+ case WIFI_EAP_METHOD_PWD:
+ setPhase2Invisible();
+ setCaCertInvisible();
+ setAnonymousIdentInvisible();
+ setUserCertInvisible();
+ break;
+ case WIFI_EAP_METHOD_TLS:
+ mView.findViewById(R.id.l_user_cert).setVisibility(View.VISIBLE);
+ setPhase2Invisible();
+ setAnonymousIdentInvisible();
+ setPasswordInvisible();
+ break;
+ case WIFI_EAP_METHOD_PEAP:
+ // Reset adapter if needed
+ if (mPhase2Adapter != PHASE2_PEAP_ADAPTER) {
+ mPhase2Adapter = PHASE2_PEAP_ADAPTER;
+ mPhase2Spinner.setAdapter(mPhase2Adapter);
+ }
+ mView.findViewById(R.id.l_phase2).setVisibility(View.VISIBLE);
+ mView.findViewById(R.id.l_anonymous).setVisibility(View.VISIBLE);
+ setUserCertInvisible();
+ break;
+ case WIFI_EAP_METHOD_TTLS:
+ // Reset adapter if needed
+ if (mPhase2Adapter != PHASE2_FULL_ADAPTER) {
+ mPhase2Adapter = PHASE2_FULL_ADAPTER;
+ mPhase2Spinner.setAdapter(mPhase2Adapter);
+ }
+ mView.findViewById(R.id.l_phase2).setVisibility(View.VISIBLE);
+ mView.findViewById(R.id.l_anonymous).setVisibility(View.VISIBLE);
+ setUserCertInvisible();
+ break;
}
}
+ private void setPhase2Invisible() {
+ mView.findViewById(R.id.l_phase2).setVisibility(View.GONE);
+ mPhase2Spinner.setSelection(Phase2.NONE);
+ }
+
+ private void setCaCertInvisible() {
+ mView.findViewById(R.id.l_ca_cert).setVisibility(View.GONE);
+ mEapCaCertSpinner.setSelection(unspecifiedCertIndex);
+ }
+
+ private void setUserCertInvisible() {
+ mView.findViewById(R.id.l_user_cert).setVisibility(View.GONE);
+ mEapUserCertSpinner.setSelection(unspecifiedCertIndex);
+ }
+
+ private void setAnonymousIdentInvisible() {
+ mView.findViewById(R.id.l_anonymous).setVisibility(View.GONE);
+ mEapAnonymousView.setText("");
+ }
+
+ private void setPasswordInvisible() {
+ mPasswordView.setText("");
+ mView.findViewById(R.id.password_layout).setVisibility(View.GONE);
+ mView.findViewById(R.id.show_password_layout).setVisibility(View.GONE);
+ }
+
private void showIpConfigFields() {
WifiConfiguration config = null;
@@ -675,14 +805,13 @@
private void loadCertificates(Spinner spinner, String prefix) {
final Context context = mConfigUi.getContext();
- final String unspecified = context.getString(R.string.wifi_unspecified);
String[] certs = KeyStore.getInstance().saw(prefix);
if (certs == null || certs.length == 0) {
- certs = new String[] {unspecified};
+ certs = new String[] {unspecifiedCert};
} else {
final String[] array = new String[certs.length + 1];
- array[0] = unspecified;
+ array[0] = unspecifiedCert;
System.arraycopy(certs, 0, array, 1, certs.length);
certs = array;
}
@@ -693,12 +822,6 @@
spinner.setAdapter(adapter);
}
- private void setCertificate(Spinner spinner, String prefix, String cert) {
- if (cert != null && cert.startsWith(prefix)) {
- setSelection(spinner, cert.substring(prefix.length()));
- }
- }
-
private void setSelection(Spinner spinner, String value) {
if (value != null) {
@SuppressWarnings("unchecked")
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index aedb79e..60f89b7 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -46,7 +46,6 @@
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.security.Credentials;
-import android.security.KeyStore;
import android.telephony.TelephonyManager;
import android.util.AttributeSet;
import android.util.Log;
@@ -135,8 +134,6 @@
private AtomicBoolean mConnected = new AtomicBoolean(false);
- private int mKeyStoreNetworkId = INVALID_NETWORK_ID;
-
private WifiDialog mDialog;
private TextView mEmptyView;
@@ -382,7 +379,7 @@
if (preferenceActivity.onIsHidingHeaders() || !preferenceActivity.onIsMultiPane()) {
final int padding = activity.getResources().getDimensionPixelSize(
R.dimen.action_bar_switch_padding);
- actionBarSwitch.setPadding(0, 0, padding, 0);
+ actionBarSwitch.setPaddingRelative(0, 0, padding, 0);
activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM);
activity.getActionBar().setCustomView(actionBarSwitch, new ActionBar.LayoutParams(
@@ -412,12 +409,6 @@
}
getActivity().registerReceiver(mReceiver, mFilter);
- if (mKeyStoreNetworkId != INVALID_NETWORK_ID &&
- KeyStore.getInstance().state() == KeyStore.State.UNLOCKED) {
- mWifiManager.connect(mKeyStoreNetworkId, mConnectListener);
- }
- mKeyStoreNetworkId = INVALID_NETWORK_ID;
-
updateAccessPoints();
}
@@ -560,10 +551,8 @@
switch (item.getItemId()) {
case MENU_ID_CONNECT: {
if (mSelectedAccessPoint.networkId != INVALID_NETWORK_ID) {
- if (!requireKeyStore(mSelectedAccessPoint.getConfig())) {
- mWifiManager.connect(mSelectedAccessPoint.networkId,
- mConnectListener);
- }
+ mWifiManager.connect(mSelectedAccessPoint.networkId,
+ mConnectListener);
} else if (mSelectedAccessPoint.security == AccessPoint.SECURITY_NONE) {
/** Bypass dialog for unsecured networks */
mSelectedAccessPoint.generateOpenNetworkConfig();
@@ -700,16 +689,6 @@
&& telephonyManager.getSimState() != TelephonyManager.SIM_STATE_UNKNOWN;
}
- private boolean requireKeyStore(WifiConfiguration config) {
- if (WifiConfigController.requireKeyStore(config) &&
- KeyStore.getInstance().state() != KeyStore.State.UNLOCKED) {
- mKeyStoreNetworkId = config.networkId;
- Credentials.getInstance().unlock(getActivity());
- return true;
- }
- return false;
- }
-
/**
* Shows the latest access points available with supplimental information like
* the strength of network and the security for it.
@@ -971,7 +950,6 @@
if (config == null) {
if (mSelectedAccessPoint != null
- && !requireKeyStore(mSelectedAccessPoint.getConfig())
&& mSelectedAccessPoint.networkId != INVALID_NETWORK_ID) {
mWifiManager.connect(mSelectedAccessPoint.networkId,
mConnectListener);
@@ -981,7 +959,7 @@
mWifiManager.save(config, mSaveListener);
}
} else {
- if (configController.isEdit() || requireKeyStore(config)) {
+ if (configController.isEdit()) {
mWifiManager.save(config, mSaveListener);
} else {
mWifiManager.connect(config, mConnectListener);
diff --git a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java
index 2496d8e..191260a 100644
--- a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java
+++ b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java
@@ -34,7 +34,6 @@
import android.net.wifi.p2p.WifiP2pGroupList;
import android.net.wifi.p2p.WifiP2pManager;
import android.net.wifi.p2p.WifiP2pManager.GroupInfoListener;
-import android.net.wifi.p2p.WifiP2pManager.PeerListListener;
import android.net.wifi.p2p.WifiP2pManager.PersistentGroupInfoListener;
import android.net.wifi.WpsInfo;
import android.os.Bundle;
@@ -66,7 +65,7 @@
* Displays Wi-fi p2p settings UI
*/
public class WifiP2pSettings extends SettingsPreferenceFragment
- implements PeerListListener, PersistentGroupInfoListener, GroupInfoListener {
+ implements PersistentGroupInfoListener, GroupInfoListener {
private static final String TAG = "WifiP2pSettings";
private static final boolean DBG = false;
@@ -116,9 +115,9 @@
WifiP2pManager.WIFI_P2P_STATE_DISABLED) == WifiP2pManager.WIFI_P2P_STATE_ENABLED;
handleP2pStateChanged();
} else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
- if (mWifiP2pManager != null) {
- mWifiP2pManager.requestPeers(mChannel, WifiP2pSettings.this);
- }
+ mPeers = (WifiP2pDeviceList) intent.getParcelableExtra(
+ WifiP2pManager.EXTRA_P2P_DEVICE_LIST);
+ handlePeersChanged();
} else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
if (mWifiP2pManager == null) return;
NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(
@@ -463,13 +462,13 @@
}
}
- public void onPeersAvailable(WifiP2pDeviceList peers) {
+ private void handlePeersChanged() {
mPeersGroup.removeAll();
- mPeers = peers;
mConnectedDevices = 0;
- for (WifiP2pDevice peer: peers.getDeviceList()) {
- if (DBG) Log.d(TAG, " peer " + peer);
+ if (DBG) Log.d(TAG, "List of available peers");
+ for (WifiP2pDevice peer: mPeers.getDeviceList()) {
+ if (DBG) Log.d(TAG, "-> " + peer);
mPeersGroup.addPreference(new WifiP2pPeer(getActivity(), peer));
if (peer.status == WifiP2pDevice.CONNECTED) mConnectedDevices++;
}
@@ -505,9 +504,6 @@
mPersistentGroup.setEnabled(true);
preferenceScreen.addPreference(mPersistentGroup);
-
- /* Request latest set of peers */
- mWifiP2pManager.requestPeers(mChannel, WifiP2pSettings.this);
}
}