diff options
author | Vinit Deshpande <vinitd@google.com> | 2015-03-16 00:55:25 -0700 |
---|---|---|
committer | Vinit Deshpande <vinitd@google.com> | 2015-03-16 00:55:25 -0700 |
commit | 3b84208212727833ccebea3fef03901331f5a12d (patch) | |
tree | 7e082b31b3140e3556a4ebeec0167ef3f847ac88 | |
parent | 66f1543690fbda646f413ff20256ba75ae6ac996 (diff) | |
parent | 736d29b87c495881bb50d4e3682aa82f5fcd708f (diff) | |
download | packages_apps_Settings-3b84208212727833ccebea3fef03901331f5a12d.tar.gz packages_apps_Settings-3b84208212727833ccebea3fef03901331f5a12d.tar.bz2 packages_apps_Settings-3b84208212727833ccebea3fef03901331f5a12d.zip |
Merge remote-tracking branch 'goog/mirror-m-wireless-internal-release'
Change-Id: I6c9de433a224925961b484b400a89edf9059d2bd
-rw-r--r-- | AndroidManifest.xml | 17 | ||||
-rw-r--r-- | res/layout/wifi_ap_dialog.xml | 25 | ||||
-rw-r--r-- | res/values-fr-rCA/strings.xml | 1 | ||||
-rw-r--r-- | res/values-ja/strings.xml | 4 | ||||
-rw-r--r-- | res/values-pl/strings.xml | 8 | ||||
-rw-r--r-- | res/values-ro/strings.xml | 2 | ||||
-rw-r--r-- | res/values-ru/strings.xml | 60 | ||||
-rw-r--r-- | res/values/strings.xml | 36 | ||||
-rw-r--r-- | res/xml/wifi_calling_settings.xml | 34 | ||||
-rw-r--r-- | res/xml/wireless_settings.xml | 6 | ||||
-rw-r--r-- | src/com/android/settings/Settings.java | 1 | ||||
-rw-r--r-- | src/com/android/settings/SettingsActivity.java | 3 | ||||
-rw-r--r-- | src/com/android/settings/WifiCallingSettings.java | 275 | ||||
-rw-r--r-- | src/com/android/settings/WirelessSettings.java | 17 | ||||
-rw-r--r-- | src/com/android/settings/search/Ranking.java | 2 | ||||
-rw-r--r-- | src/com/android/settings/search/SearchIndexableResources.java | 8 | ||||
-rw-r--r-- | src/com/android/settings/wifi/WifiApDialog.java | 45 |
17 files changed, 506 insertions, 38 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c582e6c46..8eccf9ec3 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 30043c46a..7a038cb1b 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 a0fb95d52..3955fc733 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 298e6a287..166c657e2 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 61fce2f1c..d5164a9df 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:<br><b><xliff:g id="DEVICE_NAME">%1$s</xliff:g></b>"</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 ce8f46daf..026422137 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 bfc49a5a1..0dbbe94ae 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. Изменить настройки можно в меню \"Дополнительно > Всегда искать сети\"."</string> + <string name="wifi_scan_notify_text_location_on" msgid="8135076005488914200">"Чтобы улучшить определение местоположения, а также для достижения других целей, Google и другие приложения могут выполнять поиск сетей поблизости, даже если сеть Wi-Fi отключена. Чтобы изменить эти настройки, перейдите в меню \"Дополнительно > Всегда искать сети\"."</string> <string name="wifi_scan_notify_text_location_off" msgid="6323983741393280935">"Приложения могут выполнять поиск сетей поблизости, даже если сеть Wi-Fi отключена. Чтобы изменить эти настройки, перейдите в меню \"Дополнительно > Всегда искать сети\"."</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 744cf0b6a..441034cff 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 000000000..37a2d285b --- /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 a5f722b87..7a4ed9a52 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 d41c38778..b16fe811d 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 8eacc329f..575fed455 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 000000000..dacdc7b0a --- /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 0bd6b29f9..71cd3229d 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 6abbc3d45..0022338c4 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 502480d8d..d7744695a 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 fb8026a9f..eee3db970 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); } } |