summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml17
-rw-r--r--res/layout/wifi_ap_dialog.xml25
-rw-r--r--res/values-fr-rCA/strings.xml1
-rw-r--r--res/values-ja/strings.xml4
-rw-r--r--res/values-pl/strings.xml8
-rw-r--r--res/values-ro/strings.xml2
-rw-r--r--res/values-ru/strings.xml60
-rw-r--r--res/values/strings.xml36
-rw-r--r--res/xml/wifi_calling_settings.xml34
-rw-r--r--res/xml/wireless_settings.xml6
-rw-r--r--src/com/android/settings/Settings.java1
-rw-r--r--src/com/android/settings/SettingsActivity.java3
-rw-r--r--src/com/android/settings/WifiCallingSettings.java275
-rw-r--r--src/com/android/settings/WirelessSettings.java17
-rw-r--r--src/com/android/settings/search/Ranking.java2
-rw-r--r--src/com/android/settings/search/SearchIndexableResources.java8
-rw-r--r--src/com/android/settings/wifi/WifiApDialog.java45
17 files changed, 506 insertions, 38 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c582e6c..8eccf9e 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2180,6 +2180,23 @@
</intent-filter>
</activity>
+ <activity android:name="Settings$WifiCallingSettingsActivity"
+ android:label="@string/wifi_calling_settings_title"
+ android:taskAffinity="">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <action android:name="android.settings.WIFI_CALLING_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.VOICE_LAUNCH" />
+ </intent-filter>
+ <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+ android:value="com.android.settings.WifiCallingSettings" />
+ <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+ android:value="true" />
+ <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+ android:resource="@id/wireless_settings" />
+ </activity>
+
<provider
android:name=".search.SettingsSearchIndexablesProvider"
android:authorities="com.android.settings"
diff --git a/res/layout/wifi_ap_dialog.xml b/res/layout/wifi_ap_dialog.xml
index 30043c4..7a038cb 100644
--- a/res/layout/wifi_ap_dialog.xml
+++ b/res/layout/wifi_ap_dialog.xml
@@ -66,6 +66,31 @@
style="@style/wifi_item_content"
android:prompt="@string/wifi_security"
android:entries="@array/wifi_ap_security" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="@style/wifi_item_label"
+ android:layout_marginTop="8dip"
+ android:text="@string/wifi_ap_band_config" />
+
+ <RadioGroup android:id = "@+id/choose_channel"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <RadioButton android:id="@+id/ap_2G_band"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/wifi_ap_choose_2G"
+ android:layout_marginTop="8dip"/>
+
+ <RadioButton android:id="@+id/ap_5G_band"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/wifi_ap_choose_5G"
+ android:layout_marginTop="8dip"/>
+ </RadioGroup>
</LinearLayout>
<LinearLayout android:id="@+id/fields"
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index a0fb95d..3955fc7 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -544,6 +544,7 @@
<string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Pour la musique et le multimédia"</string>
<string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Mémoriser ces paramètres"</string>
<string name="wifi_assistant_title" msgid="2553267316621598101">"Assistant Wi‑Fi"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Connecté à l\'aide de l\'assistant Wi-Fi"</string>
<string name="wifi_display_settings_title" msgid="2925465988657380522">"Diffuser l\'écran"</string>
<string name="wifi_display_enable_menu_item" msgid="4883036464138167674">"Activer l\'affichage sans fil"</string>
<string name="wifi_display_no_devices_found" msgid="1382012407154143453">"Aucun appareil détecté à proximité."</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 298e6a2..166c657 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -476,8 +476,8 @@
<string name="lockpattern_tutorial_continue_label" msgid="3559793618653400434">"次へ"</string>
<string name="lock_setup" msgid="3355847066343753943">"設定が完了しました。"</string>
<string name="device_admin_title" msgid="3562216873644263804">"デバイス管理"</string>
- <string name="manage_device_admin" msgid="5059296715271077278">"端末管理アプリ"</string>
- <string name="manage_device_admin_summary" msgid="7672709110988761075">"端末管理アプリを表示または無効にする"</string>
+ <string name="manage_device_admin" msgid="5059296715271077278">"端末管理者"</string>
+ <string name="manage_device_admin_summary" msgid="7672709110988761075">"端末管理者を表示または無効にする"</string>
<string name="manage_trust_agents" msgid="4629279457536987768">"信頼できるエージェント"</string>
<string name="disabled_because_no_backup_security" msgid="6877660253409580377">"使用するには、まず画面ロックを設定してください"</string>
<string name="manage_trust_agents_summary" msgid="6804319935640148441">"信頼できるエージェントを表示または無効にする"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 61fce2f..d5164a9 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -134,7 +134,7 @@
<string name="bluetooth_disconnect_title" msgid="6026705382020027966">"Rozłączyć?"</string>
<string name="bluetooth_disconnect_all_profiles" msgid="9148530542956217908">"Spowoduje to zakończenie połączenia z urządzeniem:&lt;br&gt;&lt;b&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/b&gt;"</string>
<string name="bluetooth_empty_list_user_restricted" msgid="1185354873716211496">"Nie masz uprawnień, by zmienić ustawienia Bluetootha."</string>
- <string name="bluetooth_is_visible_message" msgid="6222396240776971862">"Urządzenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g> jest widoczne dla urządzeń w pobliżu, gdy ustawienia Bluetooth są otwarte."</string>
+ <string name="bluetooth_is_visible_message" msgid="6222396240776971862">"Urządzenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g> jest widoczne dla urządzeń w pobliżu, gdy są otwarte ustawienia Bluetooth."</string>
<string name="bluetooth_is_disconnect_question" msgid="5334933802445256306">"Odłączyć urządzenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
<string name="bluetooth_broadcasting" msgid="16583128958125247">"Transmisja"</string>
<string name="bluetooth_disable_profile_title" msgid="5916643979709342557">"Wyłączyć profil?"</string>
@@ -538,7 +538,7 @@
<string name="bluetooth_device_context_connect_advanced" msgid="2643129703569788771">"Opcje…"</string>
<string name="bluetooth_menu_advanced" msgid="8572178316357220524">"Zaawansowane"</string>
<string name="bluetooth_advanced_titlebar" msgid="2142159726881547669">"Bluetooth – zaawansowane"</string>
- <string name="bluetooth_empty_list_bluetooth_off" msgid="6351930724051893423">"Po włączeniu Bluetootha urządzenie może komunikować się z innymi urządzeniami Bluetooth w pobliżu."</string>
+ <string name="bluetooth_empty_list_bluetooth_off" msgid="6351930724051893423">"Po włączeniu Bluetootha urządzenie może komunikować się z urządzeniami Bluetooth w pobliżu."</string>
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Połącz z siecią…"</string>
<string name="bluetooth_disconnect_a2dp_profile" msgid="3524648279150937177">"Urządzenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g> zostanie odłączone od funkcji audio multimediów."</string>
<string name="bluetooth_disconnect_headset_profile" msgid="8635908811168780720">"Urządzenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g> zostanie odłączone od zestawu głośnomówiącego."</string>
@@ -695,7 +695,7 @@
<string name="wifi_skipped_message" product="default" msgid="6084295135297772350">"OSTRZEŻENIE: jeśli nie dodasz sieci Wi‑Fi, telefon będzie pobierać oprogramowanie i aktualizację tylko przez sieć komórkową. Aby uniknąć opłat za przesył danych, połącz się z Wi-Fi."</string>
<string name="wifi_and_mobile_skipped_message" product="tablet" msgid="5872240361944591105">"Jeśli pominiesz Wi‑Fi:\n\nTablet nie będzie mieć połączenia z internetem.\n\nNie będzie można pobrać aktualizacji oprogramowania, dopóki nie połączysz się z internetem.\n\nNie możesz obecnie włączyć funkcji ochrony urządzenia."</string>
<string name="wifi_and_mobile_skipped_message" product="device" msgid="1013689568018268332">"Jeśli pominiesz Wi‑Fi:\n\nUrządzenie nie będzie mieć połączenia z internetem.\n\nNie będzie można pobrać aktualizacji oprogramowania, dopóki nie połączysz się z internetem.\n\nNie możesz obecnie włączyć funkcji ochrony urządzenia."</string>
- <string name="wifi_and_mobile_skipped_message" product="default" msgid="5245835374169369770">"Jeśli nie wybierzesz sieci Wi‑Fi:\n\nTelefon nie będzie mieć połączenia z internetem.\n\nNie będzie można pobrać aktualizacji oprogramowania, dopóki nie połączysz się z internetem.\n\nNie będzie można włączyć funkcji ochrony urządzenia."</string>
+ <string name="wifi_and_mobile_skipped_message" product="default" msgid="5245835374169369770">"Jeśli pominiesz Wi‑Fi:\n\nTelefon nie będzie mieć połączenia z internetem.\n\nNie będzie można pobrać aktualizacji oprogramowania, dopóki nie połączysz się z internetem.\n\nNie możesz obecnie włączyć funkcji ochrony urządzenia."</string>
<string name="wifi_connect_failed_message" product="tablet" msgid="4474691090681670156">"Tablet nie może nawiązać połączenia z tą siecią Wi-Fi."</string>
<string name="wifi_connect_failed_message" product="device" msgid="8870885845666880869">"Urządzenie nie może połączyć się z tą siecią Wi-Fi."</string>
<string name="wifi_connect_failed_message" product="default" msgid="2185803140161396572">"Telefon nie może nawiązać połączenia z tą siecią Wi-Fi."</string>
@@ -746,7 +746,7 @@
<string name="wifi_hotspot_configure_ap_text_summary" msgid="5618031116920832182">"Przenośny hotspot Wi‑Fi AndroidAP WPA2 PSK"</string>
<string name="wifi_tether_configure_subtext" msgid="7957547035983257748">"Przenośny hotspot Wi-Fi <xliff:g id="NETWORK_SSID">%1$s</xliff:g> <xliff:g id="NETWORK_SECURITY">%2$s</xliff:g>"</string>
<string name="wifi_tether_configure_ssid_default" msgid="8467525402622138547">"Punkt dostępu Android"</string>
- <string name="home_settings" msgid="212375129455718176">"Ekran główny"</string>
+ <string name="home_settings" msgid="212375129455718176">"Strona główna"</string>
<string name="display_settings_title" msgid="1708697328627382561">"Wyświetlacz"</string>
<string name="sound_settings" msgid="5534671337768745343">"Dźwięk"</string>
<string name="ringtone_summary" msgid="2630023412632683493"></string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index ce8f46d..0264221 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -2202,7 +2202,7 @@
<string name="user_cannot_manage_message" product="tablet" msgid="8440449301994432789">"Numai proprietarul tabletei poate gestiona utilizatorii."</string>
<string name="user_cannot_manage_message" product="default" msgid="1133251987818014757">"Numai proprietarul telefonului poate gestiona utilizatorii."</string>
<string name="user_cannot_add_accounts_message" msgid="5116692653439737050">"Profilurile cu permisiuni limitate nu pot adăuga conturi"</string>
- <string name="user_remove_user_menu" msgid="6897150520686691355">"Ștergeţi <xliff:g id="USER_NAME">%1$s</xliff:g> de pe dispoz."</string>
+ <string name="user_remove_user_menu" msgid="6897150520686691355">"Ștergeţi <xliff:g id="USER_NAME">%1$s</xliff:g> de pe gadget"</string>
<string name="user_add_on_lockscreen_menu" msgid="3025132738715222247">"Adăug. utiliz. pe disp. blocat"</string>
<string name="user_new_user_name" msgid="369856859816028856">"Utilizator nou"</string>
<string name="user_new_profile_name" msgid="2632088404952119900">"Profil nou"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index bfc49a5..0dbbe94 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -384,8 +384,8 @@
<string name="crypt_keeper_dialog_need_password_message" msgid="4071395977297369642">"Перед шифрованием необходимо задать PIN-код или пароль блокировки экрана."</string>
<string name="crypt_keeper_confirm_encrypt" msgid="736289627726831055">"Чтобы зашифровать данные на устройстве, введите графический ключ."</string>
<string name="crypt_keeper_confirm_title" msgid="5100339496381875522">"Выполнить шифрование?"</string>
- <string name="crypt_keeper_final_desc" product="tablet" msgid="4453629424172409792">"Если прервать шифрование, данные будут потеряны. Операция займет не менее часа. Устройство будет перезагружено несколько раз."</string>
- <string name="crypt_keeper_final_desc" product="default" msgid="5682944380460921880">"Если прервать шифрование, данные будут потеряны. Операция займет не менее часа. Устройство будет перезагружено несколько раз."</string>
+ <string name="crypt_keeper_final_desc" product="tablet" msgid="4453629424172409792">"Если прервать шифрование, данные будут потеряны. Операция займет не менее часа, в течение которого устройство будет перезагружено несколько раз."</string>
+ <string name="crypt_keeper_final_desc" product="default" msgid="5682944380460921880">"Если прервать шифрование, данные будут потеряны. Операция займет не менее часа, в течение которого устройство будет перезагружено несколько раз."</string>
<string name="crypt_keeper_setup_title" msgid="1783951453124244969">"Шифрование"</string>
<string name="crypt_keeper_setup_description" product="tablet" msgid="6689952371032099350">"Дождитесь завершения шифрования планшета. Выполнено: <xliff:g id="PERCENT">^1</xliff:g>%."</string>
<string name="crypt_keeper_setup_description" product="default" msgid="951918761585534875">"Дождитесь завершения шифрования телефона. Выполнено: <xliff:g id="PERCENT">^1</xliff:g>%."</string>
@@ -491,7 +491,7 @@
<string name="lock_setup" msgid="3355847066343753943">"Блокировка настроена."</string>
<string name="device_admin_title" msgid="3562216873644263804">"Администрирование устройства"</string>
<string name="manage_device_admin" msgid="5059296715271077278">"Администраторы устройства"</string>
- <string name="manage_device_admin_summary" msgid="7672709110988761075">"Просмотр/отключение администраторов"</string>
+ <string name="manage_device_admin_summary" msgid="7672709110988761075">"Просмотрите или отключите администраторов устройств"</string>
<string name="manage_trust_agents" msgid="4629279457536987768">"Агенты доверия"</string>
<string name="disabled_because_no_backup_security" msgid="6877660253409580377">"Сначала необходимо настроить блокировку экрана"</string>
<string name="manage_trust_agents_summary" msgid="6804319935640148441">"Посмотреть или отключить агенты доверия"</string>
@@ -549,7 +549,7 @@
<string name="bluetooth_device_advanced_title" msgid="6066342531927499308">"Тип подключения"</string>
<string name="bluetooth_device_advanced_online_mode_title" msgid="3689050071425683114">"Подключить"</string>
<string name="bluetooth_device_advanced_online_mode_summary" msgid="1204424107263248336">"Подключиться к устройству Bluetooth"</string>
- <string name="bluetooth_device_advanced_profile_header_title" msgid="102745381968579605">"Использование"</string>
+ <string name="bluetooth_device_advanced_profile_header_title" msgid="102745381968579605">"Использовать для"</string>
<string name="bluetooth_device_advanced_rename_device" msgid="5148578059584955791">"Переименовать"</string>
<string name="bluetooth_device_advanced_enable_opp_title" msgid="8222550640371627365">"Разрешить получение файлов"</string>
<string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Используется интернет-подключение другого устройства"</string>
@@ -607,7 +607,7 @@
<string name="wifi_automatically_connect_summary" msgid="6722194413023965902">"Разрешить ассистенту Wi-Fi автоматически подключаться к проверенным открытым сетям"</string>
<string name="wifi_select_assistant_dialog_title" msgid="4014645210955009439">"Выбор ассистента Wi-Fi"</string>
<string name="wifi_install_credentials" msgid="3551143317298272860">"Установка сертификатов"</string>
- <string name="wifi_scan_notify_text_location_on" msgid="8135076005488914200">"Чтобы точнее определять местоположение, а также и в других целях, приложение Google и другие приложения могут искать доступные сети даже при отключенном Wi-Fi. Изменить настройки можно в меню \"Дополнительно &gt; Всегда искать сети\"."</string>
+ <string name="wifi_scan_notify_text_location_on" msgid="8135076005488914200">"Чтобы улучшить определение местоположения, а также для достижения других целей, Google и другие приложения могут выполнять поиск сетей поблизости, даже если сеть Wi-Fi отключена. Чтобы изменить эти настройки, перейдите в меню \"Дополнительно &gt; Всегда искать сети\"."</string>
<string name="wifi_scan_notify_text_location_off" msgid="6323983741393280935">"Приложения могут выполнять поиск сетей поблизости, даже если сеть Wi-Fi отключена. Чтобы изменить эти настройки, перейдите в меню \"Дополнительно &gt; Всегда искать сети\"."</string>
<string name="wifi_scan_notify_remember_choice" msgid="5340097010842405981">"Больше не показывать"</string>
<string name="wifi_setting_sleep_policy_title" msgid="5149574280392680092">"Wi-Fi в спящем режиме"</string>
@@ -701,7 +701,7 @@
<string name="wifi_connect_failed_message" product="default" msgid="2185803140161396572">"Не удалось подключиться к сети Wi-Fi."</string>
<string name="wifi_saved_access_points_titlebar" msgid="2996149477240134064">"Сохраненные сети"</string>
<string name="wifi_advanced_titlebar" msgid="4485841401774142908">"Дополнительные функции"</string>
- <string name="wifi_setting_frequency_band_title" msgid="3655327399028584656">"Диапазон частот Wi-Fi"</string>
+ <string name="wifi_setting_frequency_band_title" msgid="3655327399028584656">"Полоса частот Wi-Fi"</string>
<string name="wifi_setting_frequency_band_summary" msgid="3250740757118009784">"Укажите рабочий диапазон частот"</string>
<string name="wifi_setting_frequency_band_error" msgid="837281974489794378">"При настройке полосы частот возникла неполадка."</string>
<string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"MAC-адрес"</string>
@@ -825,7 +825,7 @@
<string name="screensaver_settings_summary_sleep" msgid="9086186698140423493">"Во время зарядки"</string>
<string name="screensaver_settings_summary_dock" msgid="2072657401664633283">"В док-станции"</string>
<string name="screensaver_settings_summary_off" msgid="2481581696365146473">"Выкл."</string>
- <string name="screensaver_settings_disabled_prompt" msgid="3857507943322777651">"Чтобы настроить поведение телефона при подключении к док-станции и в спящем режиме, включите заставку."</string>
+ <string name="screensaver_settings_disabled_prompt" msgid="3857507943322777651">"Чтобы знать, что происходит с телефоном, когда он подключен к док-станции или находится в спящем режиме, включите заставку."</string>
<string name="screensaver_settings_when_to_dream" msgid="8352267826043957746">"Когда включать"</string>
<string name="screensaver_settings_dream_start" msgid="4998187847985120168">"Включить"</string>
<string name="screensaver_settings_button" msgid="7292214707625717013">"Настройки"</string>
@@ -919,11 +919,11 @@
<string name="memory_available_read_only" msgid="6497534390167920206">"Доступно (только для чтения)"</string>
<string name="memory_size" msgid="6629067715017232195">"Всего места"</string>
<string name="memory_calculating_size" msgid="2188358544203768588">"Идет подсчет..."</string>
- <string name="memory_apps_usage" msgid="2348501997988663688">"Данные приложений и мультимедиа"</string>
+ <string name="memory_apps_usage" msgid="2348501997988663688">"Данные приложений и файлы мультимедиа"</string>
<string name="memory_media_usage" msgid="3738830697707880405">"Мультимедиа"</string>
<string name="memory_downloads_usage" msgid="3755173051677533027">"Загрузки"</string>
<string name="memory_dcim_usage" msgid="558887013613822577">"Изображения и видео"</string>
- <string name="memory_music_usage" msgid="1363785144783011606">"Аудио (музыка, рингтоны и т. п.)"</string>
+ <string name="memory_music_usage" msgid="1363785144783011606">"Аудио (музыка, рингтоны, подкасты и т. п.)"</string>
<string name="memory_media_misc_usage" msgid="235452944021647124">"Прочее"</string>
<string name="memory_media_cache_usage" msgid="6704293333141177910">"Данные кеша"</string>
<string name="sd_eject" product="nosdcard" msgid="4988563376492400073">"Безопасное извлечение"</string>
@@ -941,7 +941,7 @@
<string name="sd_format_summary" product="nosdcard" msgid="6331905044907914603">"Удаление с внутреннего USB-накопителя телефона всех данных, включая музыку и фотографии."</string>
<string name="sd_format_summary" product="default" msgid="212703692181793109">"Удаляет все данные с SD-карты, например музыку и фотографии"</string>
<string name="memory_clear_cache_title" msgid="5423840272171286191">"Очистить кеш?"</string>
- <string name="memory_clear_cache_message" msgid="4550262490807415948">"Будут удалены кешированные данные всех приложений."</string>
+ <string name="memory_clear_cache_message" msgid="4550262490807415948">"Будут удалены данные всех приложений."</string>
<string name="mtp_ptp_mode_summary" msgid="3710436114807789270">"Функция MTP или PTP активирована"</string>
<string name="dlg_confirm_unmount_title" product="nosdcard" msgid="3077285629197874055">"Отключить USB-накопитель?"</string>
<string name="dlg_confirm_unmount_title" product="default" msgid="3634502237262534381">"Отключить SD-карту?"</string>
@@ -995,7 +995,7 @@
<string name="carrier_enabled" msgid="407655861175280806">"Включить/выключить APN"</string>
<string name="carrier_enabled_summaryOn" msgid="6338915271908057531">"APN вкл."</string>
<string name="carrier_enabled_summaryOff" msgid="4300790190221203756">"APN выкл."</string>
- <string name="bearer" msgid="594270280031923558">"Канал"</string>
+ <string name="bearer" msgid="594270280031923558">"Владелец"</string>
<string name="mvno_type" msgid="2543253857818336421">"Тип MVNO"</string>
<string name="mvno_match_data" msgid="4560671695220540466">"Значение MVNO"</string>
<string name="menu_delete" msgid="6981294422841124659">"Удалить APN"</string>
@@ -1003,12 +1003,12 @@
<string name="menu_save" msgid="8109345640668285399">"Сохранить"</string>
<string name="menu_cancel" msgid="2194502410474697474">"Отменить"</string>
<string name="error_title" msgid="7631322303341024692"></string>
- <string name="error_name_empty" msgid="8418502878620394756">"Необходимо указать имя."</string>
+ <string name="error_name_empty" msgid="8418502878620394756">"Необходимо указать название."</string>
<string name="error_apn_empty" msgid="6056233831214537267">"Необходимо указать APN."</string>
<string name="error_mcc_not3" msgid="4560171714156251661">"Поле MCC должно содержать 3 цифры."</string>
<string name="error_mnc_not23" msgid="8418177072458379439">"Поле MNC должно содержать 2 или 3 цифры."</string>
- <string name="restore_default_apn" msgid="8178010218751639581">"Восстановление настроек APN по умолчанию..."</string>
- <string name="menu_restore" msgid="8260067415075573273">"Сбросить настройки"</string>
+ <string name="restore_default_apn" msgid="8178010218751639581">"Восстановление настроек APN по умолчанию."</string>
+ <string name="menu_restore" msgid="8260067415075573273">"Восстановить настройки по умолчанию"</string>
<string name="restore_default_apn_completed" msgid="2824775307377604897">"Настройки по умолчанию восстановлены."</string>
<string name="device_reset_title" msgid="2384019005638768076">"Сбросить настройки"</string>
<string name="master_clear_title" msgid="5907939616087039756">"Сброс настроек"</string>
@@ -1227,7 +1227,7 @@
<string name="ask_compatibility" msgid="7225195569089607846">"Спрашивать при запуске"</string>
<string name="enable_compatibility" msgid="5806819252068617811">"Масштабировать приложения"</string>
<string name="unknown" msgid="1592123443519355854">"Неизвестно"</string>
- <string name="sort_order_alpha" msgid="1410278099123670628">"Упорядочить по названию"</string>
+ <string name="sort_order_alpha" msgid="1410278099123670628">"Упорядочить по именам"</string>
<string name="sort_order_size" msgid="7024513286636502362">"Упорядочить по размеру"</string>
<string name="show_running_services" msgid="5736278767975544570">"Показать активные службы"</string>
<string name="show_background_processes" msgid="2009840211972293429">"Показать процессы в кеше"</string>
@@ -1626,7 +1626,7 @@
<string name="details_title" msgid="3792801565213935385">"Расход батареи"</string>
<string name="details_subtitle" msgid="32593908269911734">"Расход батареи"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Режим энергопотребления"</string>
- <string name="packages_subtitle" msgid="4736416171658062768">"Пакеты"</string>
+ <string name="packages_subtitle" msgid="4736416171658062768">"Вложенные пакеты"</string>
<string name="power_screen" msgid="3023346080675904613">"Экран"</string>
<string name="power_flashlight" msgid="7794409781003567614">"Фонарик"</string>
<string name="power_wifi" msgid="1135085252964054957">"Wi-Fi"</string>
@@ -1675,7 +1675,7 @@
<string name="battery_desc_bluetooth" msgid="8069070756186680367">"Использование батареи модулем Bluetooth"</string>
<string name="battery_sugg_bluetooth_basic" msgid="1942935021750897422">"Отключите канал Bluetooth, если он не используется"</string>
<string name="battery_sugg_bluetooth_headset" msgid="4071352514714259230">"Попробуйте подключиться к другому Bluetooth-устройству"</string>
- <string name="battery_desc_apps" msgid="8530418792605735226">"Использование батареи приложением"</string>
+ <string name="battery_desc_apps" msgid="8530418792605735226">"Использование батареи приложениями"</string>
<string name="battery_sugg_apps_info" msgid="6907588126789841231">"Остановите или удалите приложение"</string>
<string name="battery_sugg_apps_gps" msgid="5959067516281866135">"Выберите режим экономии заряда батареи"</string>
<string name="battery_sugg_apps_settings" msgid="3974902365643634514">"В программе могут быть настройки режима энергосбережения"</string>
@@ -1810,9 +1810,9 @@
<string name="gadget_brightness_state_off" msgid="946382262872753084">"минимум"</string>
<string name="vpn_settings_title" msgid="5662579425832406705">"VPN"</string>
<string name="credentials_title" msgid="4446234003860769883">"Хранилище учетных данных"</string>
- <string name="credentials_install" product="nosdcard" msgid="466093273825150847">"Установить"</string>
+ <string name="credentials_install" product="nosdcard" msgid="466093273825150847">"Установить с карты памяти"</string>
<string name="credentials_install" product="default" msgid="953914549998062317">"Установка с SD-карты"</string>
- <string name="credentials_install_summary" product="nosdcard" msgid="4220422806818210676">"Установить сертификаты"</string>
+ <string name="credentials_install_summary" product="nosdcard" msgid="4220422806818210676">"Установить сертификаты с карты памяти"</string>
<string name="credentials_install_summary" product="default" msgid="5737658257407822713">"Установить сертификаты с SD-карты"</string>
<string name="credentials_reset" msgid="3239382277144980418">"Очистить учетные данные"</string>
<string name="credentials_reset_summary" msgid="3369361230171260282">"Удалить все сертификаты"</string>
@@ -1827,7 +1827,7 @@
<string name="credentials_unlock" msgid="385427939577366499"></string>
<string name="credentials_unlock_hint" msgid="2301301378040499348">"Введите пароль для хранилища учетных данных."</string>
<string name="credentials_old_password" msgid="7553393815538684028">"Текущий пароль:"</string>
- <string name="credentials_reset_hint" msgid="6297256880896133631">"Удалить все содержимое?"</string>
+ <string name="credentials_reset_hint" msgid="6297256880896133631">"Удалить весь контент?"</string>
<string name="credentials_password_too_short" msgid="7502749986405522663">"В пароле должно быть не менее 8 символов."</string>
<string name="credentials_wrong_password" msgid="2541932597104054807">"Неправильный пароль."</string>
<string name="credentials_reset_warning" msgid="5320653011511797600">"Неверный пароль. У вас осталась одна попытка, после которой хранилище регистрационных данных будет очищено."</string>
@@ -1970,7 +1970,7 @@
<string name="starting_android" msgid="8581493237458496835">"Запуск Android…"</string>
<string name="delete" msgid="4219243412325163003">"Удалить"</string>
<string name="misc_files" msgid="6720680815969643497">"Разное"</string>
- <string name="misc_files_selected_count" msgid="4647048020823912088">"Выбрано: <xliff:g id="NUMBER">%1$d</xliff:g> из <xliff:g id="TOTAL">%2$d</xliff:g>"</string>
+ <string name="misc_files_selected_count" msgid="4647048020823912088">"выбрано <xliff:g id="NUMBER">%1$d</xliff:g> из <xliff:g id="TOTAL">%2$d</xliff:g>"</string>
<string name="misc_files_selected_count_bytes" msgid="2876232009069114352">"<xliff:g id="NUMBER">%1$s</xliff:g> из <xliff:g id="TOTAL">%2$s</xliff:g>"</string>
<string name="select_all" msgid="1562774643280376715">"Выбрать все"</string>
<string name="hdcp_checking_title" msgid="8605478913544273282">"Проверка HDCP"</string>
@@ -2146,7 +2146,7 @@
<string name="vpn_save" msgid="4233484051644764510">"Сохранить"</string>
<string name="vpn_connect" msgid="8469608541746132301">"Подключиться"</string>
<string name="vpn_edit" msgid="8647191407179996943">"Изменение профиля VPN"</string>
- <string name="vpn_connect_to" msgid="5965299358485793260">"Подключение к <xliff:g id="PROFILE">%s</xliff:g>"</string>
+ <string name="vpn_connect_to" msgid="5965299358485793260">"Подключение к профилю \"<xliff:g id="PROFILE">%s</xliff:g>\""</string>
<string name="vpn_title" msgid="6317731879966640551">"Настройки VPN"</string>
<string name="vpn_create" msgid="5628219087569761496">"Добавить профиль VPN"</string>
<string name="vpn_menu_edit" msgid="408275284159243490">"Изменить профиль"</string>
@@ -2155,7 +2155,7 @@
<string name="vpn_lockdown_summary" msgid="2200032066376720339">"Выберите постоянную сеть VPN: трафик будет разрешен только при подключении к этой сети."</string>
<string name="vpn_lockdown_none" msgid="9214462857336483711">"Сеть не выбрана"</string>
<string name="vpn_lockdown_config_error" msgid="3898576754914217248">"Укажите IP-адрес для сервера и DNS."</string>
- <string name="vpn_no_network" msgid="3050233675132726155">"Нет подключения к сети. Повторите попытку позже."</string>
+ <string name="vpn_no_network" msgid="3050233675132726155">"Отсутствует сетевое соединение. Повторите попытку позже."</string>
<string name="vpn_missing_cert" msgid="7972907102570411501">"Отсутствует сертификат. Измените профиль."</string>
<string name="trusted_credentials_system_tab" msgid="3984284264816924534">"Система"</string>
<string name="trusted_credentials_user_tab" msgid="2244732111398939475">"Пользователь"</string>
@@ -2379,7 +2379,7 @@
<string name="keywords_users" msgid="4673901601478559100">"ограничение ограничить ограничено"</string>
<string name="keywords_keyboard_and_ime" msgid="5251531893531063855">"текст исправление автокоррекция звук вибрация авто язык жест подсказка тема неприемлемый слово ввод эмодзи смайлик интернациональный"</string>
<string name="keywords_lockscreen" msgid="4806191868723291541">"провести пальцем по экрану пароль графический ключ PIN-код"</string>
- <string name="setup_wifi_nfc_tag" msgid="9028353016222911016">"Настройка NFC-метки"</string>
+ <string name="setup_wifi_nfc_tag" msgid="9028353016222911016">"NFC-метка для настройки Wi-Fi"</string>
<string name="write_tag" msgid="8571858602896222537">"Записать"</string>
<string name="status_awaiting_tap" msgid="2130145523773160617">"Нажмите на метку, чтобы начать запись..."</string>
<string name="status_invalid_password" msgid="2575271864572897406">"Неверный пароль. Повторите попытку."</string>
@@ -2446,7 +2446,7 @@
<string name="app_notification_block_title" msgid="172237877395761371">"Заблокировать"</string>
<string name="app_notification_block_summary" msgid="9049487483231233726">"Не показывать уведомления из этого приложения"</string>
<string name="app_notification_priority_title" msgid="1967189807102076587">"Важные"</string>
- <string name="app_notification_priority_summary" msgid="7513344552201639232">"Показывать уведомления в верхней части списка, в том числе когда разрешено получение только важных оповещений"</string>
+ <string name="app_notification_priority_summary" msgid="7513344552201639232">"Показывать уведомления в верхней части списка, в том числе когда разрешено получение только приоритетных уведомлений"</string>
<string name="app_notification_sensitive_title" msgid="7707233094233553192">"Конфиденциальные"</string>
<string name="app_notification_sensitive_summary" msgid="2505314249332316395">"Не показывать конфиденциальные данные в уведомлениях этого приложения, когда устройство заблокировано"</string>
<string name="app_notification_row_banned" msgid="5983655258784814773">"Заблокированные"</string>
@@ -2458,8 +2458,8 @@
<string name="zen_mode_downtime_category" msgid="2654477732333340290">"Режим оповещения"</string>
<string name="zen_mode_downtime_days" msgid="3361856902633311616">"Дни"</string>
<string name="zen_mode_downtime_days_none" msgid="8454857121193391322">"–"</string>
- <string name="zen_mode_downtime_mode_title" msgid="7249388756365079715">"Оповещения"</string>
- <string name="zen_mode_downtime_mode_priority" msgid="1599184173608032994">"Только важные"</string>
+ <string name="zen_mode_downtime_mode_title" msgid="7249388756365079715">"Все оповещения"</string>
+ <string name="zen_mode_downtime_mode_priority" msgid="1599184173608032994">"Только важные оповещения"</string>
<string name="zen_mode_downtime_mode_none" msgid="8572229891146527069">"Не оповещать"</string>
<string name="zen_mode_automation_category" msgid="4653551005950835761">"Автоматизация"</string>
<string name="zen_mode_entry_conditions_title" msgid="8467976490601914289">"Включать автоматически"</string>
@@ -2496,9 +2496,9 @@
<string name="screen_pinning_unlock_none" msgid="3814188275713871856">"Блокировать устройство при откл. блокировки в приложении"</string>
<string name="managed_user_title" msgid="8101244883654409696">"Рабочий профиль"</string>
<string name="experimental_preference" msgid="7083015446690681376">"(экспериментальная настройка)"</string>
- <string name="display_auto_rotate_title" msgid="6176450657107806043">"При повороте устройства"</string>
- <string name="display_auto_rotate_rotate" msgid="4544299861233497728">"Поворачивать изображение"</string>
- <string name="display_auto_rotate_stay_in_portrait" msgid="292745182318093651">"Сохранять вертикальную ориентацию"</string>
+ <string name="display_auto_rotate_title" msgid="6176450657107806043">"Поворот экрана"</string>
+ <string name="display_auto_rotate_rotate" msgid="4544299861233497728">"Поворот экрана"</string>
+ <string name="display_auto_rotate_stay_in_portrait" msgid="292745182318093651">"Зафиксировать в вертикальной ориентации"</string>
<string name="display_auto_rotate_stay_in_landscape" msgid="3804752830204062162">"Зафиксировать в горизонтальной ориентации"</string>
<string name="display_auto_rotate_stay_in_current" msgid="317932372686498096">"Зафиксировать в текущей ориентации"</string>
<string name="imei_information_title" msgid="8499085421609752290">"Данные IMEI-кода"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 744cf0b..441034c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1553,6 +1553,12 @@
<string name="wifi_password">Password</string>
<!-- Label for the check box to show password -->
<string name="wifi_show_password">Show password</string>
+ <!-- Label for the RadioGroup to choose wifi ap band -->
+ <string name="wifi_ap_band_config">Config AP Band</string>
+ <!-- Label for the radio button to choose wifi ap 2.4 GHz band -->
+ <string name="wifi_ap_choose_2G">2.4 GHz Band</string>
+ <!-- Label for the radio button to choose wifi ap 5GHz band -->
+ <string name="wifi_ap_choose_5G">5 GHz Band</string>
<!-- Label for the spinner to show ip settings [CHAR LIMIT=25] -->
<string name="wifi_ip_settings">IP settings</string>
<!-- Hint for unchanged fields -->
@@ -1811,6 +1817,35 @@
Label on Wifi Configuration screen-->
<string name="config_list_label" translatable="false">Configured networks</string>
+ <!-- Wireless networks, item title to go into the WFC settings [CHAR LIMIT=30] -->
+ <string name="wifi_calling_settings_title">Wi-Fi calling</string>
+ <!-- WFC mode [CHAR LIMIT=30] -->
+ <string name="wifi_calling_mode_title">Wi-Fi calling mode</string>
+ <!-- WFC mode dialog [CHAR LIMIT=30] -->
+ <string name="wifi_calling_mode_dialog_title">Wi-Fi calling mode</string>
+ <string-array name="wifi_calling_mode_choices">
+ <item>Wi-Fi preferred</item>
+ <item>Cellular preferred</item>
+ <item>Wi-Fi only</item>
+ </string-array>
+ <string-array name="wifi_calling_mode_values">
+ <item>"2"</item>
+ <item>"1"</item>
+ <item>"0"</item>
+ </string-array>
+ <!-- WFC, summary for Disabled [CHAR LIMIT=100] -->
+ <string name="wifi_calling_off_summary">Off</string>
+ <!-- WFC, summary for Wi-Fi Preferred [CHAR LIMIT=100] -->
+ <string name="wfc_mode_wifi_preferred_summary">Wi-Fi preferred (Uses cell network only if Wi-Fi isn\'t available)</string>
+ <!-- WFC, summary for Cellular Preferred [CHAR LIMIT=100] -->
+ <string name="wfc_mode_cellular_preferred_summary">Cellular preferred (Uses Wi-Fi only if cell network isn\'t available)</string>
+ <!-- WFC, summary for Wi-Fi Only [CHAR LIMIT=100] -->
+ <string name="wfc_mode_wifi_only_summary">Wi-Fi only (Never uses cell network. Can\'t make or receive calls if Wi-Fi isn\'t available)</string>
+ <!-- WFC roam enable/disable [CHAR LIMIT=30] -->
+ <string name="wifi_calling_roam_title">WFC handoff while roaming</string>
+ <!-- WFC roam summary [CHAR LIMIT=80] -->
+ <string name="wifi_calling_roam_summary">Allow Wi-Fi voice calls handoff to cell network when roaming</string>
+
<!-- Sound and alerts settings -->
<skip/>
<!-- Main Settings screen setting option name to go into the display settings screen -->
@@ -5555,6 +5590,7 @@
<string name="keywords_wifi">wifi wi-fi network connection</string>
<string name="keywords_more_default_sms_app">text message texting messages messaging</string>
<string name="keywords_more_mobile_networks">cellular cell carrier wireless data 4g 3g 2g lte</string>
+ <string name="keywords_wifi_calling">wifi wi-fi call calling roaming handoff</string>
<string name="keywords_home">launcher</string>
<string name="keywords_display">screen touchscreen</string>
<string name="keywords_display_brightness_level">dim screen touchscreen battery</string>
diff --git a/res/xml/wifi_calling_settings.xml b/res/xml/wifi_calling_settings.xml
new file mode 100644
index 0000000..37a2d28
--- /dev/null
+++ b/res/xml/wifi_calling_settings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ android:key="wifi_calling_settings"
+ android:title="@string/wifi_calling_settings_title">
+
+ <ListPreference
+ android:key="wifi_calling_mode"
+ android:title="@string/wifi_calling_mode_title"
+ android:summary="@string/wifi_calling_mode_title"
+ android:entries="@array/wifi_calling_mode_choices"
+ android:entryValues="@array/wifi_calling_mode_values"
+ android:dialogTitle="@string/wifi_calling_mode_dialog_title" />
+
+ <SwitchPreference
+ android:key="wifi_calling_roam"
+ android:title="@string/wifi_calling_roam_title"
+ android:persistent="false"/>
+
+</PreferenceScreen>
diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml
index a5f722b..7a4ed9a 100644
--- a/res/xml/wireless_settings.xml
+++ b/res/xml/wireless_settings.xml
@@ -63,6 +63,12 @@
android:targetClass="com.android.phone.MobileNetworkSettings" />
</PreferenceScreen>
+ <PreferenceScreen
+ android:key="wifi_calling_settings"
+ android:title="@string/wifi_calling_settings_title"
+ settings:keywords="@string/keywords_wifi_calling"
+ android:fragment="com.android.settings.WifiCallingSettings" />
+
<Preference
android:key="manage_mobile_plan"
android:title="@string/manage_mobile_plan_title"
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index d41c387..b16fe81 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -100,5 +100,6 @@ public class Settings extends SettingsActivity {
public static class TopLevelSettings extends SettingsActivity { /* empty */ }
public static class ApnSettingsActivity extends SettingsActivity { /* empty */ }
+ public static class WifiCallingSettingsActivity extends SettingsActivity { /* empty */ }
}
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 8eacc32..575fed4 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -112,6 +112,7 @@ import com.android.settings.wifi.AdvancedWifiSettings;
import com.android.settings.wifi.SavedAccessPointsWifiSettings;
import com.android.settings.wifi.WifiSettings;
import com.android.settings.wifi.p2p.WifiP2pSettings;
+import com.android.settings.WifiCallingSettings;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -302,6 +303,8 @@ public class SettingsActivity extends Activity
AppNotificationSettings.class.getName(),
OtherSoundSettings.class.getName(),
ApnSettings.class.getName()
+ QuickLaunchSettings.class.getName(),
+ WifiCallingSettings.class.getName()
};
diff --git a/src/com/android/settings/WifiCallingSettings.java b/src/com/android/settings/WifiCallingSettings.java
new file mode 100644
index 0000000..dacdc7b
--- /dev/null
+++ b/src/com/android/settings/WifiCallingSettings.java
@@ -0,0 +1,275 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.SwitchPreference;
+import android.telephony.PhoneStateListener;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+import android.widget.Switch;
+
+import com.android.ims.ImsConfig;
+import com.android.ims.ImsManager;
+import com.android.internal.telephony.imsphone.ImsPhone;
+import com.android.settings.widget.SwitchBar;
+
+/**
+ * "Wi-Fi Calling settings" screen. This preference screen lets you
+ * enable/disable Wi-Fi Calling, change mode, enable/disable
+ * handover while on roaming.
+ */
+public class WifiCallingSettings extends SettingsPreferenceFragment
+ implements SwitchBar.OnSwitchChangeListener,
+ Preference.OnPreferenceChangeListener {
+
+ private static final String TAG = "WifiCallingSettings";
+
+ //String keys for preference lookup
+ private static final String BUTTON_WFC_MODE = "wifi_calling_mode";
+ private static final String BUTTON_WFC_ROAM = "wifi_calling_roam";
+
+ //UI objects
+ private SwitchBar mSwitchBar;
+ private Switch mSwitch;
+ private ListPreference mButtonWfcMode;
+ private SwitchPreference mButtonWfcRoam;
+
+ private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
+ /*
+ * Enable/disable controls when in/out of a call and depending on
+ * TTY mode and TTY support over VoLTE.
+ * @see android.telephony.PhoneStateListener#onCallStateChanged(int,
+ * java.lang.String)
+ */
+ @Override
+ public void onCallStateChanged(int state, String incomingNumber) {
+ final SettingsActivity activity = (SettingsActivity) getActivity();
+ boolean isNonTtyOrTtyOnVolteEnabled = ImsManager
+ .isNonTtyOrTtyOnVolteEnabled(activity);
+ final SwitchBar switchBar = activity.getSwitchBar();
+ boolean isWfcEnabled = switchBar.getSwitch().isChecked()
+ && isNonTtyOrTtyOnVolteEnabled;
+
+ switchBar.setEnabled((state == TelephonyManager.CALL_STATE_IDLE)
+ && isNonTtyOrTtyOnVolteEnabled);
+
+ Preference pref = getPreferenceScreen().findPreference(BUTTON_WFC_MODE);
+ int wfcMode = ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY;
+ if (pref != null) {
+ pref.setEnabled(isWfcEnabled
+ && (state == TelephonyManager.CALL_STATE_IDLE));
+ ListPreference prefWfcMode = (ListPreference) pref;
+ wfcMode = Integer.valueOf(prefWfcMode.getValue()).intValue();
+ }
+ pref = getPreferenceScreen().findPreference(BUTTON_WFC_ROAM);
+ if (pref != null) {
+ pref.setEnabled(isWfcEnabled
+ && (wfcMode != ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY)
+ && (state == TelephonyManager.CALL_STATE_IDLE));
+ }
+ }
+ };
+
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ final SettingsActivity activity = (SettingsActivity) getActivity();
+
+ mSwitchBar = activity.getSwitchBar();
+ mSwitch = mSwitchBar.getSwitch();
+ mSwitchBar.show();
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ mSwitchBar.hide();
+ }
+
+ private void showAlert(Intent intent) {
+ Context context = getActivity();
+
+ CharSequence title = intent.getCharSequenceExtra(ImsPhone.EXTRA_KEY_ALERT_TITLE);
+ CharSequence message = intent.getCharSequenceExtra(ImsPhone.EXTRA_KEY_ALERT_MESSAGE);
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ builder.setMessage(message)
+ .setTitle(title)
+ .setIcon(android.R.drawable.stat_sys_warning)
+ .setPositiveButton(android.R.string.ok, null);
+ AlertDialog dialog = builder.create();
+ dialog.show();
+ }
+
+ private IntentFilter mIntentFilter;
+
+ private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (action.equals(ImsPhone.REGISTRATION_ERROR)) {
+ // If this fragment is active then we are immediately
+ // showing alert on screen. There is no need to add
+ // notification in this case.
+ //
+ // In order to communicate to ImsPhone that it should
+ // not show notification, we are changing result code here.
+ setResultCode(Activity.RESULT_CANCELED);
+
+ showAlert(intent);
+ }
+ }
+ };
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ addPreferencesFromResource(R.xml.wifi_calling_settings);
+
+ mButtonWfcMode = (ListPreference) findPreference(BUTTON_WFC_MODE);
+ mButtonWfcMode.setOnPreferenceChangeListener(this);
+
+ mButtonWfcRoam = (SwitchPreference) findPreference(BUTTON_WFC_ROAM);
+ mButtonWfcRoam.setOnPreferenceChangeListener(this);
+
+ mIntentFilter = new IntentFilter();
+ mIntentFilter.addAction(ImsPhone.REGISTRATION_ERROR);
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+
+ final Context context = getActivity();
+
+ if (ImsManager.isWfcEnabledByPlatform(context)) {
+ TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+ tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
+
+ mSwitchBar.addOnSwitchChangeListener(this);
+ }
+
+ // NOTE: Buttons will be enabled/disabled in mPhoneStateListener
+ boolean wfcEnabled = ImsManager.isWfcEnabledByUser(context)
+ && ImsManager.isNonTtyOrTtyOnVolteEnabled(context);
+ mSwitch.setChecked(wfcEnabled);
+
+ int wfcMode = ImsManager.getWfcMode(context);
+ mButtonWfcMode.setValue(Integer.toString(wfcMode));
+ mButtonWfcMode.setSummary(getWfcModeSummary(context, wfcMode));
+
+ mButtonWfcRoam.setChecked(wfcEnabled
+ && (wfcMode != ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY)
+ && ImsManager.isWfcRoamingEnabledByUser(context));
+
+ context.registerReceiver(mIntentReceiver, mIntentFilter);
+
+ Intent intent = getActivity().getIntent();
+ if (intent.getBooleanExtra(ImsPhone.EXTRA_KEY_ALERT_SHOW, false)) {
+ showAlert(intent);
+ }
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+
+ final Context context = getActivity();
+
+ if (ImsManager.isWfcEnabledByPlatform(getActivity())) {
+ TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+ tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
+
+ mSwitchBar.removeOnSwitchChangeListener(this);
+ }
+
+ context.unregisterReceiver(mIntentReceiver);
+ }
+
+ /**
+ * Listens to the state change of the switch.
+ */
+ @Override
+ public void onSwitchChanged(Switch switchView, boolean isChecked) {
+ final Context context = getActivity();
+
+ ImsManager.setWfcSetting(context, isChecked);
+
+ int wfcMode = ImsManager.getWfcMode(context);
+ mButtonWfcMode.setSummary(getWfcModeSummary(context, wfcMode));
+ mButtonWfcMode.setEnabled(isChecked);
+ boolean wfcHandoffEnabled = (wfcMode != ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY);
+ mButtonWfcRoam.setEnabled(isChecked && wfcHandoffEnabled);
+ mButtonWfcRoam.setChecked(isChecked && wfcHandoffEnabled
+ && ImsManager.isWfcRoamingEnabledByUser(context));
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ final Context context = getActivity();
+ if (preference == mButtonWfcMode) {
+ mButtonWfcMode.setValue((String) newValue);
+ int buttonMode = Integer.valueOf((String) newValue);
+ int currentMode = ImsManager.getWfcMode(context);
+ if (buttonMode != currentMode) {
+ ImsManager.setWfcMode(context, buttonMode);
+ mButtonWfcMode.setSummary(getWfcModeSummary(context, buttonMode));
+ }
+ boolean wfcHandoffEnabled =
+ (buttonMode != ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY);
+ mButtonWfcRoam.setEnabled(wfcHandoffEnabled);
+ mButtonWfcRoam.setChecked(wfcHandoffEnabled &&
+ ImsManager.isWfcRoamingEnabledByUser(context));
+ } else if (preference == mButtonWfcRoam) {
+ SwitchPreference wfcRoamPref = (SwitchPreference) preference;
+ wfcRoamPref.setChecked(!wfcRoamPref.isChecked());
+ ImsManager.setWfcRoamingSetting(context, wfcRoamPref.isChecked());
+ }
+ return true;
+ }
+
+ static int getWfcModeSummary(Context context, int wfcMode) {
+ int resId = R.string.wifi_calling_off_summary;
+ if (ImsManager.isWfcEnabledByUser(context)) {
+ switch (wfcMode) {
+ case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
+ resId = R.string.wfc_mode_wifi_only_summary;
+ break;
+ case ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED:
+ resId = R.string.wfc_mode_cellular_preferred_summary;
+ break;
+ case ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED:
+ resId = R.string.wfc_mode_wifi_preferred_summary;
+ break;
+ default:
+ Log.e(TAG, "Unexpected WFC mode value: " + wfcMode);
+ }
+ }
+ return resId;
+ }
+}
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 0bd6b29..71cd322 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -47,6 +47,8 @@ import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
+import com.android.ims.ImsConfig;
+import com.android.ims.ImsManager;
import com.android.internal.telephony.SmsApplication;
import com.android.internal.telephony.SmsApplication.SmsApplicationData;
import com.android.internal.telephony.TelephonyIntents;
@@ -54,6 +56,7 @@ import com.android.internal.telephony.TelephonyProperties;
import com.android.settings.nfc.NfcEnabler;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
+import com.android.settings.WifiCallingSettings;
import java.util.ArrayList;
import java.util.Arrays;
@@ -76,6 +79,7 @@ public class WirelessSettings extends SettingsPreferenceFragment
private static final String KEY_SMS_APPLICATION = "sms_application";
private static final String KEY_TOGGLE_NSD = "toggle_nsd"; //network service discovery
private static final String KEY_CELL_BROADCAST_SETTINGS = "cell_broadcast_settings";
+ private static final String KEY_WFC_SETTINGS = "wifi_calling_settings";
public static final String EXIT_ECM_RESULT = "exit_ecm_result";
public static final int REQUEST_CODE_EXIT_ECM = 1;
@@ -95,6 +99,7 @@ public class WirelessSettings extends SettingsPreferenceFragment
private static final String SAVED_MANAGE_MOBILE_PLAN_MSG = "mManageMobilePlanMessage";
private AppListPreference mSmsApplicationPreference;
+ private PreferenceScreen mButtonWfc;
/**
* Invoked on each preference click in this hierarchy, overrides
@@ -272,6 +277,12 @@ public class WirelessSettings extends SettingsPreferenceFragment
initSmsApplicationSetting();
}
+ if (ImsManager.isWfcEnabledByPlatform(activity)) {
+ mButtonWfc = (PreferenceScreen) findPreference(KEY_WFC_SETTINGS);
+ } else {
+ removePreference(KEY_WFC_SETTINGS);
+ }
+
// Remove NSD checkbox by default
getPreferenceScreen().removePreference(nsd);
//mNsdEnabler = new NsdEnabler(activity, nsd);
@@ -413,6 +424,12 @@ public class WirelessSettings extends SettingsPreferenceFragment
if (mNsdEnabler != null) {
mNsdEnabler.resume();
}
+
+ final Context context = getActivity();
+ if (ImsManager.isWfcEnabledByPlatform(context)) {
+ mButtonWfc.setSummary(WifiCallingSettings.getWfcModeSummary(
+ context, ImsManager.getWfcMode(context)));
+ }
}
@Override
diff --git a/src/com/android/settings/search/Ranking.java b/src/com/android/settings/search/Ranking.java
index 6abbc3d..0022338 100644
--- a/src/com/android/settings/search/Ranking.java
+++ b/src/com/android/settings/search/Ranking.java
@@ -47,6 +47,7 @@ import com.android.settings.voice.VoiceInputSettings;
import com.android.settings.wifi.AdvancedWifiSettings;
import com.android.settings.wifi.SavedAccessPointsWifiSettings;
import com.android.settings.wifi.WifiSettings;
+import com.android.settings.WifiCallingSettings;
import java.util.HashMap;
@@ -104,6 +105,7 @@ public final class Ranking {
// Other wireless settinfs
sRankMap.put(WirelessSettings.class.getName(), RANK_WIRELESS);
+ sRankMap.put(WifiCallingSettings.class.getName(), RANK_WIRELESS);
// Home
sRankMap.put(HomeSettings.class.getName(), RANK_HOME);
diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java
index 502480d..d774469 100644
--- a/src/com/android/settings/search/SearchIndexableResources.java
+++ b/src/com/android/settings/search/SearchIndexableResources.java
@@ -49,6 +49,7 @@ import com.android.settings.voice.VoiceInputSettings;
import com.android.settings.wifi.AdvancedWifiSettings;
import com.android.settings.wifi.SavedAccessPointsWifiSettings;
import com.android.settings.wifi.WifiSettings;
+import com.android.settings.WifiCallingSettings;
import java.util.Collection;
import java.util.HashMap;
@@ -270,6 +271,13 @@ public final class SearchIndexableResources {
NO_DATA_RES_ID,
DeviceInfoSettings.class.getName(),
R.drawable.ic_settings_about));
+
+ sResMap.put(WifiCallingSettings.class.getName(),
+ new SearchIndexableResource(
+ Ranking.getRankForClassName(WifiCallingSettings.class.getName()),
+ R.xml.wifi_calling_settings,
+ WifiCallingSettings.class.getName(),
+ R.drawable.ic_settings_wireless));
}
private SearchIndexableResources() {
diff --git a/src/com/android/settings/wifi/WifiApDialog.java b/src/com/android/settings/wifi/WifiApDialog.java
index fb8026a..eee3db9 100644
--- a/src/com/android/settings/wifi/WifiApDialog.java
+++ b/src/com/android/settings/wifi/WifiApDialog.java
@@ -22,6 +22,7 @@ import android.content.DialogInterface;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiConfiguration.AuthAlgorithm;
import android.net.wifi.WifiConfiguration.KeyMgmt;
+import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputType;
@@ -32,9 +33,13 @@ import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
+import android.widget.RadioGroup;
+import android.widget.RadioButton;
import com.android.settings.R;
+import android.util.Log;
+
/**
* Dialog to configure the SSID and security settings
* for Access Point operation
@@ -53,8 +58,14 @@ public class WifiApDialog extends AlertDialog implements View.OnClickListener,
private TextView mSsid;
private int mSecurityTypeIndex = OPEN_INDEX;
private EditText mPassword;
+ private RadioGroup mChannel;
+ private RadioButton mChannel2G;
+ private RadioButton mChannel5G;
WifiConfiguration mWifiConfig;
+ WifiManager mWifiManager;
+
+ private static final String TAG = "WifiApDialog";
public WifiApDialog(Context context, DialogInterface.OnClickListener listener,
WifiConfiguration wifiConfig) {
@@ -64,6 +75,7 @@ public class WifiApDialog extends AlertDialog implements View.OnClickListener,
if (wifiConfig != null) {
mSecurityTypeIndex = getSecurityTypeIndex(wifiConfig);
}
+ mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
}
public static int getSecurityTypeIndex(WifiConfiguration wifiConfig) {
@@ -85,6 +97,16 @@ public class WifiApDialog extends AlertDialog implements View.OnClickListener,
*/
config.SSID = mSsid.getText().toString();
+ //obtain the band configure
+ if (mChannel2G.isChecked()) {
+ config.apBand = 0;
+ } else if(mChannel5G.isChecked()) {
+ config.apBand = 1;
+ } else {
+ Log.e("TAG", "AP band configure error!");
+ return null;
+ }
+
switch (mSecurityTypeIndex) {
case OPEN_INDEX:
config.allowedKeyManagement.set(KeyMgmt.NONE);
@@ -118,15 +140,36 @@ public class WifiApDialog extends AlertDialog implements View.OnClickListener,
mSsid = (TextView) mView.findViewById(R.id.ssid);
mPassword = (EditText) mView.findViewById(R.id.password);
+ mChannel = (RadioGroup) mView.findViewById(R.id.choose_channel);
+ mChannel2G = (RadioButton) mView.findViewById(R.id.ap_2G_band);
+ mChannel5G = (RadioButton) mView.findViewById(R.id.ap_5G_band);
+
+ String countryCode = mWifiManager.getCountryCode();
+ if (!mWifiManager.is5GHzBandSupported() || countryCode == null) {
+ //If no country code, 5GHz AP is forbidden
+ Log.e(TAG," NO country code, forbid 5GHz");
+ mChannel5G.setVisibility(View.INVISIBLE);
+ mWifiConfig.apBand = 0;
+ } else {
+ mChannel5G.setVisibility(View.VISIBLE);
+ }
+
+
setButton(BUTTON_SUBMIT, context.getString(R.string.wifi_save), mListener);
setButton(DialogInterface.BUTTON_NEGATIVE,
context.getString(R.string.wifi_cancel), mListener);
if (mWifiConfig != null) {
mSsid.setText(mWifiConfig.SSID);
+ if (mWifiConfig.apBand == 0) {
+ mChannel2G.setChecked(true);
+ } else {
+ mChannel5G.setChecked(true);
+ }
+
mSecurity.setSelection(mSecurityTypeIndex);
if (mSecurityTypeIndex == WPA2_INDEX) {
- mPassword.setText(mWifiConfig.preSharedKey);
+ mPassword.setText(mWifiConfig.preSharedKey);
}
}