Compare commits
31 Commits
staging/cm
...
stable/cm-
Author | SHA1 | Date | |
---|---|---|---|
|
b9d25a1a24 | ||
|
b3a0f3f7ab | ||
|
3a92535654 | ||
|
ce9a742015 | ||
|
225b927bbd | ||
|
7dc922c743 | ||
|
3c37b0b69c | ||
|
2a98e6f6f6 | ||
|
3371e61bb8 | ||
|
218deb9952 | ||
|
de06181c7e | ||
|
cfc4a0db64 | ||
|
dd500a1f42 | ||
|
317a6cb891 | ||
|
f654deb217 | ||
|
bfd7ca0545 | ||
|
714be1a490 | ||
|
317a15e0eb | ||
|
e68543ad74 | ||
|
6d63e95342 | ||
|
e79aa7f0bf | ||
|
22df00177f | ||
|
645ffa8436 | ||
|
27457414c8 | ||
|
b00440ec27 | ||
|
76101714d7 | ||
|
2a01a24066 | ||
|
d0389e4e6e | ||
|
dbc1ceb8ca | ||
|
88aba00aa3 | ||
|
2104b3f5db |
@@ -17,9 +17,6 @@ LOCAL_STATIC_JAVA_LIBRARIES := \
|
||||
play \
|
||||
libphonenumber
|
||||
|
||||
LOCAL_JAVA_LIBRARIES := \
|
||||
telephony-common
|
||||
|
||||
# Include res dir from chips
|
||||
google_play_dir := ../../../external/google/google_play_services/libproject/google-play-services_lib/res
|
||||
res_dir := $(google_play_dir) res
|
||||
|
@@ -45,6 +45,7 @@
|
||||
<uses-permission android:name="android.permission.BACKUP" />
|
||||
<uses-permission android:name="org.whispersystems.whisperpush.permissions.REGISTER" />
|
||||
<uses-permission android:name="cyanogenmod.permission.FINISH_SETUP" />
|
||||
<uses-permission android:name="cyanogenmod.permission.LEGALESE" />
|
||||
<uses-permission android:name="com.cyngn.cmstats.SEND_ANALYTICS" />
|
||||
|
||||
<permission
|
||||
@@ -66,6 +67,7 @@
|
||||
<application android:label="@string/app_name"
|
||||
android:icon="@drawable/icon"
|
||||
android:theme="@style/Theme.Setup"
|
||||
android:uiOptions="none"
|
||||
android:name=".SetupWizardApp">
|
||||
|
||||
<meta-data android:name="com.google.android.gms.version"
|
||||
@@ -75,9 +77,9 @@
|
||||
android:label="@string/product_name"
|
||||
android:launchMode="singleInstance"
|
||||
android:excludeFromRecents="true"
|
||||
android:uiOptions="none"
|
||||
android:configChanges="themeChange|mcc|mnc"
|
||||
android:immersive="true">
|
||||
android:immersive="true"
|
||||
android:windowSoftInputMode="stateAlwaysHidden">
|
||||
|
||||
<intent-filter android:priority="9">
|
||||
|
||||
|
@@ -21,6 +21,13 @@
|
||||
|
||||
<include layout="@layout/header" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progress"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:indeterminateOnly="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="8dp" />
|
||||
|
||||
<FrameLayout android:id="@+id/page"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
@@ -35,7 +42,8 @@
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/PageContent">
|
||||
style="@style/PageContent"
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
|
@@ -21,6 +21,13 @@
|
||||
|
||||
<include layout="@layout/header" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progress"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:indeterminateOnly="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="8dp" />
|
||||
|
||||
<FrameLayout android:id="@+id/page"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
@@ -31,10 +38,12 @@
|
||||
android:fillViewport="true">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/page_view"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/PageContent">
|
||||
style="@style/PageContent"
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/mobile_data_summary"
|
||||
|
@@ -38,6 +38,7 @@
|
||||
<string name="choose_data_sim_summary" product="default">Watter SIM wil jy gebruik vir data? Die gekose SIM kan netwerk koste aangaan, dit sal gebruik word met die opstel van jou foon.</string>
|
||||
<string name="date_time_summary">Stel jou tydsone en pas huidige datum en tyd toe, indien nodig</string>
|
||||
<string name="backup_data_summary"><b>Rugsteun</b> program data, Wi-Fi wagwoorde en ander instellings na Google-bedieners</string>
|
||||
<string name="other_services_summary">Hierdie dienste word deur Google verskaf en jy kan dit aktiveer of deaktiveer op enige tyd. Data sal in ooreenstemming met Google se <xliff:g id="name" example="Privacy Policy">%s</xliff:g> gebruik word.</string>
|
||||
<string name="location_services_summary">Ligging dienste laat stelsel en ander 3rde party programme toe om data te gebruik soos jou benaderde ligging. Bv \'n program kan jou benaderde ligging gebruik om nabygeleë koffiewinkels op te spoor.</string>
|
||||
<string name="location_access_summary"><b>Laat programme toe wat jou toestemming gevra het</b> om jou ligging inligting te gebruik. Dit kan jou huidige ligging en plekke asook liggings en plekke uit die verlede insluit.</string>
|
||||
<string name="location_gps" product="tablet"><b>Verbeter ligging akkuraatheid</b> deur programme toe te laat om jou GPS te kan gebruik op jou tablet.</string>
|
||||
@@ -53,9 +54,14 @@
|
||||
<string name="yes">Ja</string>
|
||||
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
|
||||
<string name="emergency_call">Noodoproep</string>
|
||||
<string name="setup_services">Cyanogen funksies</string>
|
||||
<string name="services_explanation" product="tablet">Hierdie dienste werk vir jou om die vermoëns van jou tablet uit te brei. Data sal in ooreenkomstig gebruik word met Cyanogen\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
|
||||
<string name="services_explanation" product="default">Hierdie dienste werk vir jou om die vermoëns van jou foon uit te brei. Data sal in ooreenkomstig gebruik word met Cyanogen\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
|
||||
<string name="services_privacy_policy">Privaatheid beleid</string>
|
||||
<string name="services_help_improve_cm">Help verbeter <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> deur outomaties diagnostiese en gebruikers data te stuur na Cyanogen. Hierdie inligting kan nie gebruik word om jou te identifiseer nie en help spanne werk op dinge soos battery lewe, program werkverrigting en nuwe <xliff:g id="name" example="CyanogenMod">%s</xliff:g> funksies.</string>
|
||||
<string name="services_apply_theme">Pas <xliff:g id="name" example="Material">%s</xliff:g> tema toe</string>
|
||||
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> aktiveer unieke ikone, agtergronde en lettertipe.</string>
|
||||
<string name="services_os_nav_keys_label"><b>Gebruik skerm navigasie sleutels</b> in plaas van hardeware sleutels.</string>
|
||||
<string name="services_use_secure_sms">Maak gebruik van veilige SMS</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> om SMS gesprekke met ander gebruikers te enkripteer met behulp van veilige SMS op \'n <xliff:g id="name" example="CyanogenMod">%s</xliff:g> toestel.</string>
|
||||
|
@@ -18,10 +18,13 @@
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name">Quraşdırma Sehrbazı</string>
|
||||
<string name="next">Sonrakı</string>
|
||||
<string name="skip">Keç</string>
|
||||
<string name="skip">Ötür</string>
|
||||
<string name="setup_choose_data_sim">Verilənlər üçün bir SIM seçin</string>
|
||||
<string name="choose_data_sim_summary" product="tablet">Hansı SIM\'dən verilənlər üçün istifadə etmək istəyirsiz? Şəbəkə planşetinizin quraşdırılması üçün seçilən SIM\'ə görə ödəniş tətbiq edə bilər.</string>
|
||||
<string name="choose_data_sim_summary" product="default">Hansı SIM\'dən verilənlər üçün istifadə etmək istəyirsiz? Şəbəkə telefonunuzun quraşdırılması üçün seçilən SIM\'ə görə ödəniş tətbiq edə bilər.</string>
|
||||
<string name="backup_data_summary">Tətbiqetmə verilənlərini, Wi-Fi şifrələri və digər tənzimləmələri Google serverlərinə <b>nüsxələ</b></string>
|
||||
<string name="setup_mobile_data">Mobil verilənləri aç</string>
|
||||
<string name="setup_mobile_data_no_service">Xidmət yoxdur</string>
|
||||
<string name="enable_mobile_data_summary">Quraşdırma vaxtı mobil verilənlərdən istifadə etmək istəyirsiniz? Mobil verilənləri açmaq əlavə ödənişə səbəb ola bilər.</string>
|
||||
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
|
||||
</resources>
|
||||
|
@@ -59,7 +59,7 @@
|
||||
<string name="services_explanation" product="default">Tyto služby rozšiřují funkce vašeho telefonu. Data budou použita v souladu se zásadami ochrany osobních údajů Cyanogen <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
|
||||
<string name="services_privacy_policy">Zásady ochrany osobních údajů</string>
|
||||
<string name="services_help_improve_cm">Pomozte zlepšovat <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
|
||||
<string name="services_metrics_label"><b>Pomozte zlepšovat <xliff:g id="name" example="CyanogenMod">%s</xliff:g></b> automatickým odesíláním dat o používání do Cyanogenu. Tyto informace nebudou použity k vaší identifikaci, ale pomohou vývojářům v práci na věcech jako výdrž baterie, rychlost aplikací nebo vývoj nových <xliff:g id="name" example="CyanogenMod">%s</xliff:g> funkcí.</string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> automatickým odesíláním dat o používání. Tato data nelze použít pro Vaší identifikaci, ale pomohou vývojářskému týmu s informacemi o výdrži baterie, výkonu aplikací a vývoji nových vlastností <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
<string name="services_apply_theme">Použít motiv <xliff:g id="name" example="Material">%s</xliff:g></string>
|
||||
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> povolí unikátní ikony, tapety a písma.</string>
|
||||
<string name="services_os_nav_keys_label"><b>Použít navigační klávesy na obrazovce</b> namísto hw kláves.</string>
|
||||
|
@@ -54,11 +54,14 @@
|
||||
<string name="yes">Ja</string>
|
||||
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> – <xliff:g id="name">%s</xliff:g></string>
|
||||
<string name="emergency_call">Notruf</string>
|
||||
<string name="setup_services">Cyanogen-Funktionen</string>
|
||||
<string name="services_explanation" product="tablet">Diese Dienste werden verwendet, um die Funktionen Ihres Tablets zu erweitern. Die Daten werden in Übereinstimmung mit Cyanogens <xliff:g id="name" example="Privacy Policy">%s</xliff:g> verwendet.</string>
|
||||
<string name="services_explanation" product="default">Diese Dienste werden verwendet, um die Funktionen Ihres Telefons zu erweitern. Die Daten werden in Übereinstimmung mit Cyanogens <xliff:g id="name" example="Privacy Policy">%s</xliff:g> verwendet.</string>
|
||||
<string name="services_privacy_policy">Datenschutzbestimmungen</string>
|
||||
<string name="services_help_improve_cm">Helfen Sie <xliff:g id="name" example="CyanogenMod">%s</xliff:g> zu verbessern</string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> indem Sie automatisch Diagnose- und Nutzungsdaten an CyanogenMod senden. Diese Information können nicht verwendet werden, um Sie zu identifizieren. Es hilft unseren Teams, die an Dingen wie Akkulaufzeit, App-Leistung oder an neuen <xliff:g id="name" example="CyanogenMod">%s</xliff:g>-Funktionen arbeiten.</string>
|
||||
<string name="services_apply_theme"><xliff:g id="name" example="Material">%s</xliff:g>-Design anwenden</string>
|
||||
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g>, um spezifische Symbole, Hintergrundbilder und Schriftarten zu aktivieren.</string>
|
||||
<string name="services_os_nav_keys_label"><b>Bildschirm-Navigationstasten</b> statt Hardwaretasten verwenden.</string>
|
||||
<string name="services_use_secure_sms">Sichere SMS verwenden</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g>, um SMS-Konversationen mit anderen Nutzern auf einem <xliff:g id="name" example="CyanogenMod">%s</xliff:g>-Gerät zu verschlüsseln.</string>
|
||||
|
68
res/values-en-rAU/strings.xml
Normal file
68
res/values-en-rAU/strings.xml
Normal file
@@ -0,0 +1,68 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.com-->
|
||||
<!--
|
||||
Copyright (C) 2013-2015 The CyanogenMod 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.
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name">Setup Wizard</string>
|
||||
<string name="next">Next</string>
|
||||
<string name="skip">Skip</string>
|
||||
<string name="start">Start</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="loading">Just a sec\u2026</string>
|
||||
<string name="setup_complete">Setup is complete</string>
|
||||
<string name="setup_welcome">Welcome</string>
|
||||
<string name="setup_wifi">Select Wi-Fi</string>
|
||||
<string name="setup_sim_missing">SIM card missing</string>
|
||||
<string name="setup_choose_data_sim">Choose a SIM for data</string>
|
||||
<string name="setup_location">Location services</string>
|
||||
<string name="setup_other">Other services</string>
|
||||
<string name="setup_datetime">Date & time</string>
|
||||
<string name="setup_current_date">Current date</string>
|
||||
<string name="setup_current_time">Current time</string>
|
||||
<string name="sim_missing_summary" product="tablet">A SIM card has not been detected in your tablet. To insert a SIM card, read the instructions that came with your device.</string>
|
||||
<string name="sim_missing_summary" product="default">A SIM card has not been detected in your phone. To insert a SIM card, read the instructions that came with your device.</string>
|
||||
<string name="choose_data_sim_summary" product="tablet">Which SIM do you want to use for data? The selected SIM may incur network charges as it will be used to set up your tablet.</string>
|
||||
<string name="choose_data_sim_summary" product="default">Which SIM do you want to use for data? The selected SIM may incur network charges as it will be used to set up your phone.</string>
|
||||
<string name="date_time_summary">Set your time zone and adjust current date and time if needed</string>
|
||||
<string name="backup_data_summary"><b>Back up</b> app data, Wi-Fi passwords, and other settings to Google servers</string>
|
||||
<string name="other_services_summary">These services put Google to work for you, and you can turn them on or off at any time. Data will be used in accordance with Google\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
|
||||
<string name="location_services_summary">Location services allows system and third party apps to gather and use data such as your approximate location. For example, an app may use your approximate location to locate nearby coffee shops.</string>
|
||||
<string name="location_access_summary"><b>Allow apps that have asked your permission</b> to use your location information. This may include your current location and past locations.</string>
|
||||
<string name="location_gps" product="tablet"><b>Improve location accuracy</b> by allowing apps to use the GPS on your tablet.</string>
|
||||
<string name="location_gps" product="default"><b>Improve location accuracy</b> by allowing apps to use the GPS on your phone.</string>
|
||||
<string name="location_network"><b>Use Wi-Fi</b> to help apps determine your location.</string>
|
||||
<string name="location_network_telephony"><b>Use Wi-Fi and mobile networks</b> to help apps determine your location.</string>
|
||||
<string name="location_network_gms"><b>Use Google\'s location service</b> to help apps determine your location. This means sending anonymous location data to Google, even when no apps are running.</string>
|
||||
<string name="setup_mobile_data">Turn on mobile data</string>
|
||||
<string name="setup_mobile_data_no_service">No service</string>
|
||||
<string name="setup_mobile_data_emergency_only">Emergency calls only</string>
|
||||
<string name="enable_mobile_data_summary">Do you want to use mobile data during setup? Turning on mobile data may be subject to data charges.</string>
|
||||
<string name="no">No</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
|
||||
<string name="emergency_call">Emergency call</string>
|
||||
<string name="setup_services">Cyanogen features</string>
|
||||
<string name="services_explanation" product="tablet">These services work for you to extend the capabilities of your tablet. Data will be used in accordance with Cyanogen\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
|
||||
<string name="services_explanation" product="default">These services work for you to extend the capabilities of your phone. Data will be used in accordance with Cyanogen\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
|
||||
<string name="services_privacy_policy">Privacy Policy</string>
|
||||
<string name="services_help_improve_cm">Help improve <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> by automatically sending diagnostic and usage data to Cyanogen. This information can’t be used to identify you and lends a hand to teams working on things like battery life, app performance, and new <xliff:g id="name" example="CyanogenMod">%s</xliff:g> features.</string>
|
||||
<string name="services_apply_theme">Apply the <xliff:g id="name" example="Material">%s</xliff:g> theme</string>
|
||||
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> enabling unique icons, wallpapers, and fonts.</string>
|
||||
<string name="services_os_nav_keys_label"><b>Use on screen navigation keys</b> instead of hardware keys.</string>
|
||||
<string name="services_use_secure_sms">Use secure SMS</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> to encrypt SMS conversations with other users using secure SMS on a <xliff:g id="name" example="CyanogenMod">%s</xliff:g> device.</string>
|
||||
</resources>
|
68
res/values-en-rIN/strings.xml
Normal file
68
res/values-en-rIN/strings.xml
Normal file
@@ -0,0 +1,68 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.com-->
|
||||
<!--
|
||||
Copyright (C) 2013-2015 The CyanogenMod 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.
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name">Setup Wizard</string>
|
||||
<string name="next">Next</string>
|
||||
<string name="skip">Skip</string>
|
||||
<string name="start">Start</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="loading">Just a sec\u2026</string>
|
||||
<string name="setup_complete">Setup is complete</string>
|
||||
<string name="setup_welcome">Welcome</string>
|
||||
<string name="setup_wifi">Select Wi-Fi</string>
|
||||
<string name="setup_sim_missing">SIM card missing</string>
|
||||
<string name="setup_choose_data_sim">Choose a SIM for data</string>
|
||||
<string name="setup_location">Location services</string>
|
||||
<string name="setup_other">Other services</string>
|
||||
<string name="setup_datetime">Date & time</string>
|
||||
<string name="setup_current_date">Current date</string>
|
||||
<string name="setup_current_time">Current time</string>
|
||||
<string name="sim_missing_summary" product="tablet">A SIM card has not been detected in your tablet. To insert a SIM card, read the instructions that came with your device.</string>
|
||||
<string name="sim_missing_summary" product="default">A SIM card has not been detected in your phone. To insert a SIM card, read the instructions that came with your device.</string>
|
||||
<string name="choose_data_sim_summary" product="tablet">Which SIM do you want to use for data? The selected SIM may incur network charges as it will be used to set up your tablet.</string>
|
||||
<string name="choose_data_sim_summary" product="default">Which SIM do you want to use for data? The selected SIM may incur network charges as it will be used to set up your phone.</string>
|
||||
<string name="date_time_summary">Set your time zone and adjust current date and time if needed</string>
|
||||
<string name="backup_data_summary"><b>Back up</b> app data, Wi-Fi passwords, and other settings to Google servers</string>
|
||||
<string name="other_services_summary">These services put Google to work for you, and you can turn them on or off at any time. Data will be used in accordance with Google\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
|
||||
<string name="location_services_summary">Location services allows system and third party apps to gather and use data such as your approximate location. For example, an app may use your approximate location to locate nearby coffee shops.</string>
|
||||
<string name="location_access_summary"><b>Allow apps that have asked your permission</b> to use your location information. This may include your current location and past locations.</string>
|
||||
<string name="location_gps" product="tablet"><b>Improve location accuracy</b> by allowing apps to use the GPS on your tablet.</string>
|
||||
<string name="location_gps" product="default"><b>Improve location accuracy</b> by allowing apps to use the GPS on your phone.</string>
|
||||
<string name="location_network"><b>Use Wi-Fi</b> to help apps determine your location.</string>
|
||||
<string name="location_network_telephony"><b>Use Wi-Fi and mobile networks</b> to help apps determine your location.</string>
|
||||
<string name="location_network_gms"><b>Use Google\'s location service</b> to help apps determine your location. This means sending anonymous location data to Google, even when no apps are running.</string>
|
||||
<string name="setup_mobile_data">Turn on mobile data</string>
|
||||
<string name="setup_mobile_data_no_service">No service</string>
|
||||
<string name="setup_mobile_data_emergency_only">Emergency calls only</string>
|
||||
<string name="enable_mobile_data_summary">Do you want to use mobile data during setup? Turning on mobile data may be subject to data charges.</string>
|
||||
<string name="no">No</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
|
||||
<string name="emergency_call">Emergency call</string>
|
||||
<string name="setup_services">Cyanogen features</string>
|
||||
<string name="services_explanation" product="tablet">These services work for you to extend the capabilities of your tablet. Data will be used in accordance with Cyanogen\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
|
||||
<string name="services_explanation" product="default">These services work for you to extend the capabilities of your phone. Data will be used in accordance with Cyanogen\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
|
||||
<string name="services_privacy_policy">Privacy Policy</string>
|
||||
<string name="services_help_improve_cm">Help improve <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> by automatically sending diagnostic and usage data to Cyanogen. This information can’t be used to identify you and lends a hand to teams working on things like battery life, app performance, and new <xliff:g id="name" example="CyanogenMod">%s</xliff:g> features.</string>
|
||||
<string name="services_apply_theme">Apply the <xliff:g id="name" example="Material">%s</xliff:g> theme</string>
|
||||
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> enabling unique icons, wallpapers, and fonts.</string>
|
||||
<string name="services_os_nav_keys_label"><b>Use on screen navigation keys</b> instead of hardware keys.</string>
|
||||
<string name="services_use_secure_sms">Use secure SMS</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> to encrypt SMS conversations with other users using secure SMS on a <xliff:g id="name" example="CyanogenMod">%s</xliff:g> device.</string>
|
||||
</resources>
|
@@ -27,7 +27,7 @@
|
||||
<string name="setup_wifi">Selecciona una red Wi-Fi</string>
|
||||
<string name="setup_sim_missing">Falta la tarjeta SIM</string>
|
||||
<string name="setup_choose_data_sim">Elige una SIM para datos</string>
|
||||
<string name="setup_location">Servicios de localizacion</string>
|
||||
<string name="setup_location">Servicios de ubicación</string>
|
||||
<string name="setup_other">Otros servicios</string>
|
||||
<string name="setup_datetime">Fecha y hora</string>
|
||||
<string name="setup_current_date">Fecha actual</string>
|
||||
|
21
res/values-eu-rES/strings.xml
Normal file
21
res/values-eu-rES/strings.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.com-->
|
||||
<!--
|
||||
Copyright (C) 2013-2015 The CyanogenMod 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.
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="backup_data_summary">Aplikazio datuen, Wi-Fi pasahitzen, eta bestelako ezarpenen <b>segurtasun kopia</b> egin Google zerbitzarietan</string>
|
||||
<string name="other_services_summary">Zerbitzu hauek Google zure mesedetan lanean jartzen dute, edozein unetan piztu edo itzali ditzakezu. Datuak Google <xliff:g id="name" example="Privacy Policy">%s</xliff:g> arabera erabiliko dira.</string>
|
||||
</resources>
|
@@ -38,7 +38,7 @@
|
||||
<string name="choose_data_sim_summary" product="default">Mitä SIM-korttia haluat käyttää mobiilitiedonsiirtoon? Mobiilidatan käyttö voi aiheuttaa tiedonsiirtokuluja.</string>
|
||||
<string name="date_time_summary">Valitse aikavyöhyke ja määritä aika ja päivämäärä tarvittaessa</string>
|
||||
<string name="backup_data_summary"><b>Varmuuskopioi</b> sovellusten tiedot, Wi-FI-salasanat ja muut asetukset Googlen palvelimille</string>
|
||||
<string name="other_services_summary">Tämä ottaa Googlen palvelut käyttöön, ja voit ottaa ne käyttöön tai poistaa käytöstä milloin tahansa. Tietoja käytetään Googlen <xliff:g id="name" example="Privacy Policy">%s</xliff:g>n mukaisesti.</string>
|
||||
<string name="other_services_summary">Tämä ottaa Googlen palvelut käyttöön, ja voit ottaa ne käyttöön tai poistaa käytöstä milloin tahansa. Tietoja käytetään Googlen <xliff:g id="name" example="Privacy Policy">%s</xliff:g> mukaisesti.</string>
|
||||
<string name="location_services_summary">Sijaintipalvelut sallii järjestelmän ja muiden sovellusten kerätä ja käyttää tietoja kuten likimääräinen sijaintisi. Esimerkiksi sovellus voi paikantaa sinut ja etsiä lähistöllä olevia kahviloita.</string>
|
||||
<string name="location_access_summary"><b>Salli sovellusten, jotka ovat kysyneet sinulta lupaa</b> käyttää sijaintitietojasi. Tämä saattaa sisältää nykyisen sijaintisi ja aiemmat sijaintisi.</string>
|
||||
<string name="location_gps" product="tablet"><b>Paranna paikannuksen tarkkuutta</b> sallimalla sovellusten käyttää GPS:ää tabletissasi.</string>
|
||||
|
@@ -54,9 +54,14 @@
|
||||
<string name="yes">Oui</string>
|
||||
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
|
||||
<string name="emergency_call">Appel d\'urgence</string>
|
||||
<string name="setup_services">Fonctionnalités Cyanogen</string>
|
||||
<string name="services_explanation" product="tablet">Ces services fonctionnent pour étendre les fonctionnalités de votre tablette. Les données seront utilisées conformément à la <xliff:g id="name" example="Politique de confidentialité">%s</xliff:g> de Cyanogen.</string>
|
||||
<string name="services_explanation" product="default">Ces services fonctionnent pour étendre les fonctionnalités de votre téléphone. Les données seront utilisées conformément à la <xliff:g id="name" example="Politique de confidentialité">%s</xliff:g> de Cyanogen.</string>
|
||||
<string name="services_privacy_policy">Politique de confidentialité</string>
|
||||
<string name="services_help_improve_cm">Aider à améliorer <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> en envoyant automatiquement des données de diagnostics et d\'utilisation à Cyanogen. Ces informations ne peuvent pas être utilisées pour vous identifier et elles pourront aider les équipes qui travaillent sur des choses telles que la durée de vie de la batterie, les performances des applications et les nouvelles fonctionnalités <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
<string name="services_apply_theme">Appliquer le thème <xliff:g id="name" example="Material">%s</xliff:g></string>
|
||||
<string name="services_apply_theme_label"><xliff:g id="name" example="Appliquer le thème Material">%s</xliff:g> active les icônes uniques, fonds d\'écran, et polices.</string>
|
||||
<string name="services_os_nav_keys_label"><b>Utilisation des touches de navigation de l\'écran</b> au lieu des touches physiques.</string>
|
||||
<string name="services_use_secure_sms">Utiliser les SMS sécurisés</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> pour crypter les conversations SMS avec les autres utilisateurs utilisant les SMS sécurisés sur leurs appareils <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
|
20
res/values-fy-rNL/strings.xml
Normal file
20
res/values-fy-rNL/strings.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.com-->
|
||||
<!--
|
||||
Copyright (C) 2013-2015 The CyanogenMod 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.
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="ok">OK</string>
|
||||
</resources>
|
68
res/values-hi/strings.xml
Normal file
68
res/values-hi/strings.xml
Normal file
@@ -0,0 +1,68 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.com-->
|
||||
<!--
|
||||
Copyright (C) 2013-2015 The CyanogenMod 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.
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name">सेटअप विज़ार्ड</string>
|
||||
<string name="next">अगला</string>
|
||||
<string name="skip">छोड़ें</string>
|
||||
<string name="start">शुरू करें</string>
|
||||
<string name="ok">ठीक है</string>
|
||||
<string name="loading">एक सेकंड\u2026</string>
|
||||
<string name="setup_complete">सेटअप पूरा हो गया</string>
|
||||
<string name="setup_welcome">स्वागत</string>
|
||||
<string name="setup_wifi">वाई-फाई चुनें</string>
|
||||
<string name="setup_sim_missing">सिम कार्ड नहीं है</string>
|
||||
<string name="setup_choose_data_sim">डेटा के लिए सिम कार्ड चुनें</string>
|
||||
<string name="setup_location">स्थान सेवाएँ</string>
|
||||
<string name="setup_other">अन्य सेवाएँ</string>
|
||||
<string name="setup_datetime">तिथि और समय</string>
|
||||
<string name="setup_current_date">वर्तमान तिथि</string>
|
||||
<string name="setup_current_time">वर्तमान समय</string>
|
||||
<string name="sim_missing_summary" product="tablet">आपके टैब्लेट के लिए सिम कार्ड पहचाना नहीं जा सका है। सिम कार्ड डालने के लिए अपने उपकरण के साथ आए निर्देशों को देखें।</string>
|
||||
<string name="sim_missing_summary" product="default">आपके फ़ोन के लिए सिम कार्ड पहचाना नहीं जा सका है। सिम कार्ड डालने के लिए अपने उपकरण के साथ आए निर्देशों को देखें।</string>
|
||||
<string name="choose_data_sim_summary" product="tablet">डेटा के लिए आप किस सिम का उपयोग करना चाहते हैं? चयनित सिम कार्ड के लिए नेटवर्क शुल्क लग सकते हैं क्योंकि उसका उपयोग आपके टैब्लेट को सेटअप करने के लिए किया जाएगा।</string>
|
||||
<string name="choose_data_sim_summary" product="default">डेटा के लिए आप किस सिम का उपयोग करना चाहते हैं? चयनित सिम कार्ड के लिए नेटवर्क शुल्क लग सकते हैं क्योंकि उसका उपयोग आपके फ़ोन को सेटअप करने के लिए किया जाएगा।</string>
|
||||
<string name="date_time_summary">अपना समय क्षेत्र सेटअप करें और यदि आवश्यक हो तो वर्तमान तिथि और समय को समायोजित करें</string>
|
||||
<string name="backup_data_summary">ऐप डेटा, वाई-फ़ाई पासवर्ड, और अन्य सेटिंगि का गूगल सर्वरों में <b>बैकअप लें</b></string>
|
||||
<string name="other_services_summary">इन सेवाओं के लिए गूगल से लाभ लिया जाता है, और आप उन्हें किसी भी समय बंद या चालू कर सकते हैं। डेटा का उपयोग गूगल की <xliff:g id="name" example="गोपनीयता नीति">%s</xliff:g> के अनुसार किया जाएगा।</string>
|
||||
<string name="location_services_summary">स्थान सेवाएँ आपके सिस्टम को तृतीय पक्षीय ऐपों का उपयोग करके डेटा संग्रहण करने और डेटा उपयोग करने देती हैं ताकि आपके स्थान का अंदाज़ा लगाया जा सके। उदाहरण के लिए, कोई ऐप आपके स्थान के अनुमान का उपयोग निकट के कॉफ़ी शॉपों का पता करने के लिए कर सकता है।</string>
|
||||
<string name="location_access_summary"><b>जिन ऐपों ने आपसे अनुमति ले ली है</b> उन्हें आपके स्थान संबंधी जानकारी का उपयोग करने दें। इस जानकारी में आपका वर्तमान स्थान और पहले के स्थान शामिल हो सकते हैं।</string>
|
||||
<string name="location_gps" product="tablet">अपने टैब्लेट में ऐपों को जीपीएस का उपयोग करने देकर <b>स्थान सटीकता बढ़ाएँ</b>।</string>
|
||||
<string name="location_gps" product="default">अपने फ़ोन में ऐपों को जीपीएस का उपयोग करने देकर <b>स्थान सटीकता बढ़ाएँ</b>।</string>
|
||||
<string name="location_network">अपने स्थान को निर्धारित करने में ऐपों की मदद करने के लिए <b>वाई-फ़ाई</b> का उपयोग करें।</string>
|
||||
<string name="location_network_telephony">ऐपों को आपके स्थान का निर्धारण करने में मदद करने के लिए <b>वाई-फ़ाई और मोबाइल नेटवर्कों का उपयोग करें।</b></string>
|
||||
<string name="location_network_gms">ऐपों को अपने स्थान का निर्धारण करने में मदद करने के लिए <b>गूगल की स्थान सेवा का उपयोग करें।</b> इसका मतलब है कि गूगल को गुमनाम स्थान डेटा तब भी भेजा जाएगा जब कोई भी ऐप नहीं चल रहा हो।</string>
|
||||
<string name="setup_mobile_data">मोबाइल डेटा को चालू करें</string>
|
||||
<string name="setup_mobile_data_no_service">कोई सेवा नहीं है</string>
|
||||
<string name="setup_mobile_data_emergency_only">केवल आपातकालीन कॉल</string>
|
||||
<string name="enable_mobile_data_summary">क्या आप सेटअप के दौरान मोबाइल डेटा का उपयोग करना चाहते हैं? मोबाइल डेटा को चालू करने पर डेटा शुल्क लग सकते हैं।</string>
|
||||
<string name="no">नहीं</string>
|
||||
<string name="yes">हाँ</string>
|
||||
<string name="data_sim_name">सिम <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
|
||||
<string name="emergency_call">आपातकालीन कॉल</string>
|
||||
<string name="setup_services">सियानोजेन सुविधाएँ</string>
|
||||
<string name="services_explanation" product="tablet">ये सेवाएँ आपके टैब्लेट की क्षमताओं को बढ़ाती हैं। डेटा का उपयोग सियानोजेन की <xliff:g id="name" example="Privacy Policy">%s</xliff:g> के अनुसार किया जाएगा।</string>
|
||||
<string name="services_explanation" product="default">ये सेवाएँ आपके फ़ोन की क्षमताओं को बढ़ाती हैं। डेटा का उपयोग सियानोजेन की <xliff:g id="name" example="Privacy Policy">%s</xliff:g> के अनुसार किया जाएगा।</string>
|
||||
<string name="services_privacy_policy">गोपनीयता नीति</string>
|
||||
<string name="services_help_improve_cm"><xliff:g id="name" example="CyanogenMod">%s</xliff:g> को सुधारने में मदद करें</string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> - सियानोजेन को अपने आप ही निदानात्मक और उपयोग से संबंधित डेटा भेजें। इस जानकारी का उपयोग आपको पहचानने के लिए नहीं हो सकता है। वह केवल बैटरी की आयु, ऐप के निष्पादन और नए <xliff:g id="name" example="CyanogenMod">%s</xliff:g> प्रकार्यों पर काम करने वाली टीमों की मदद के लिए है।</string>
|
||||
<string name="services_apply_theme"><xliff:g id="name" example="Material">%s</xliff:g> थीम को लागू करें</string>
|
||||
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> जो अद्वितीय आइकन, वॉलपेपर, और फ़ॉन्टों को सक्षम करता है।</string>
|
||||
<string name="services_os_nav_keys_label">हार्डवेयर कुंजियों की जगह <b>स्क्रीन पर मौजूद नेविगेशन कुंजियों का उपयोग करें।</b></string>
|
||||
<string name="services_use_secure_sms">सुरक्षित एसएमएस का उपयोग करें</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> का उपयोग करके सुरक्षित एसएमएस का उपयोग करने वाले अन्य उपयोगकर्ताओं के साथ के एसएमएस वार्तालापों को <xliff:g id="name" example="CyanogenMod">%s</xliff:g> उपकरण में कूटलेखित करें।</string>
|
||||
</resources>
|
@@ -30,9 +30,12 @@
|
||||
<string name="date_time_summary">Atur zona waktu dan sesuaikan tanggal dan waktu jika diperlukan</string>
|
||||
<string name="location_access_summary"><b>Izinkan aplikasi yang telah meminta izin Anda</b> menggunakan informasi lokasi Anda. Ini mungkin termasuk lokasi Anda saat ini dan lokasi terakhir.</string>
|
||||
<string name="location_gps" product="default"><b>Meningkatkan akurasi lokasi</b> dengan mengizinkan aplikasi untuk menggunakan GPS pada ponsel Anda.</string>
|
||||
<string name="setup_mobile_data">Aktifkan data seluler</string>
|
||||
<string name="setup_mobile_data_no_service">Tidak ada layanan</string>
|
||||
<string name="setup_mobile_data_emergency_only">Panggilan darurat saja</string>
|
||||
<string name="enable_mobile_data_summary">Apakah Anda ingin menggunakan mobile data selama setup? Menyalakan mobile data mungkin akan dikenakan biaya data.</string>
|
||||
<string name="no">Tidak</string>
|
||||
<string name="yes">Ya</string>
|
||||
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
|
||||
<string name="services_privacy_policy">Kebijakan privasi</string>
|
||||
</resources>
|
||||
|
@@ -17,30 +17,30 @@
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name">Installazione guidata</string>
|
||||
<string name="next">Avanti</string>
|
||||
<string name="next">Prossimo</string>
|
||||
<string name="skip">Salta</string>
|
||||
<string name="start">Cominciamo</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="start">Inizio</string>
|
||||
<string name="ok">Ok</string>
|
||||
<string name="loading">Solo un secondo\u2026</string>
|
||||
<string name="setup_complete">Il setup è completo</string>
|
||||
<string name="setup_complete">Installazione completata</string>
|
||||
<string name="setup_welcome">Benvenuto</string>
|
||||
<string name="setup_wifi">Seleziona Wi-Fi</string>
|
||||
<string name="setup_sim_missing">Scheda SIM non inserita</string>
|
||||
<string name="setup_choose_data_sim">Scegli una SIM per la connessione dati</string>
|
||||
<string name="setup_location">Servizi di localizzazione</string>
|
||||
<string name="setup_other">Altri servizi</string>
|
||||
<string name="setup_datetime">Data & Ora</string>
|
||||
<string name="setup_datetime">Data & ora</string>
|
||||
<string name="setup_current_date">Data corrente</string>
|
||||
<string name="setup_current_time">Ora corrente</string>
|
||||
<string name="sim_missing_summary" product="tablet">Non è stata riconosciuta alcuna scheda SIM nel tuo tablet. Per inserire una scheda SIM, leggi le istruzioni comprese col tuo dispositivo.</string>
|
||||
<string name="sim_missing_summary" product="default">Non è stata rilevata alcuna scheda SIM nel tuo cellulare. Per inserire una scheda SIM, leggi le istruzioni comprese col tuo dispositivo.</string>
|
||||
<string name="choose_data_sim_summary" product="tablet">Quale SIM vuoi utilizzare per la connessione dati? La SIM selezionata può incorrere in costi di rete durante la configurazione del dispositivo.</string>
|
||||
<string name="choose_data_sim_summary" product="default">Quale SIM vuoi utilizzare per la connessione dati? La SIM selezionata può incorrere in costi di rete durante la configurazione del dispositivo.</string>
|
||||
<string name="date_time_summary">Imposta il fuso orario e se necessario regola ora e data corrente</string>
|
||||
<string name="date_time_summary">Imposta il fuso orario e se necessario regola data e ora corrente</string>
|
||||
<string name="backup_data_summary"><b>Esegui il Back-up</b> dei dati delle app, password Wi-Fi e altre impostazioni sui server di Google</string>
|
||||
<string name="other_services_summary">Questi servizi consentono a Google di lavorare per te, ed è possibile attivarli o disattivarli in qualsiasi momento. I dati saranno utilizzati in conformità con la <xliff:g id="name" example="Privacy Policy">%s</xliff:g> di Google.</string>
|
||||
<string name="location_services_summary">I servizi di localizzazione permettono a Maps e ad altre applicazioni di raccogliere ed utilizzare dati come la tua posizione. Ad esempio, Maps potrebbe utilizzare la tua posizione per individuare negozi di caffè nelle tue vicinanze.</string>
|
||||
<string name="location_access_summary"><b>Consenti alle applicazioni che hanno chiesto la tua autorizzazione</b> ad utilizzare informazioni sulla tua posizione. Ciò può includere la tua posizione attuale e quelle precedenti.</string>
|
||||
<string name="location_access_summary"><b>Consenti alle applicazioni che hanno chiesto la tua autorizzazione</b> di utilizzare informazioni sulla tua posizione. Ciò può includere la tua posizione attuale e quelle precedenti.</string>
|
||||
<string name="location_gps" product="tablet"><b>Migliora l\'accuratezza della localizzazione</b> consentendo alle app di usare il GPS sul tuo tablet.</string>
|
||||
<string name="location_gps" product="default"><b>Migliora l\'accuratezza della localizzazione</b> permettendo alle applicazioni di utilizzare il GPS sul tuo telefono.</string>
|
||||
<string name="location_network"><b>Usa il Wi-Fi</b> per aiutare le app a determinare la tua posizione.</string>
|
||||
@@ -57,7 +57,7 @@
|
||||
<string name="setup_services">Funzioni di Cyanogenmod</string>
|
||||
<string name="services_explanation" product="tablet">Questi servizi funzionano per estendere le funzioni del tablet. I dati saranno utilizzati in accordo con <xliff:g id="name" example="Privacy Policy">%s</xliff:g>di Cyanogen.</string>
|
||||
<string name="services_explanation" product="default">Questi servizi funzionano per estendere le funzioni del telefono. I dati saranno utilizzati in accordo con <xliff:g id="name" example="Privacy Policy">%s</xliff:g>di Cyanogen.</string>
|
||||
<string name="services_privacy_policy">Condizioni sulla Privacy</string>
|
||||
<string name="services_privacy_policy">Informativa sulla privacy</string>
|
||||
<string name="services_help_improve_cm">Aiuta a migliorare <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> inviando automaticamente dati di diagnostica e sull\'utilizzo a Cyanogen. Queste informazioni non possono essere utilizzate per identificarti e servono ad aiutare i team che lavorano sulla durata della batteria, sulle prestazioni delle app, e su nuove funzionalità <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
<string name="services_apply_theme">Applica il tema<xliff:g id="name" example="Material">%s</xliff:g></string>
|
||||
|
@@ -25,7 +25,7 @@
|
||||
<string name="setup_complete">ההגדרה הושלמה</string>
|
||||
<string name="setup_welcome">ברוך הבא</string>
|
||||
<string name="setup_wifi">בחר רשת Wi-Fi</string>
|
||||
<string name="setup_sim_missing">חסר כרטיס SIM</string>
|
||||
<string name="setup_sim_missing">כרטיס SIM חסר</string>
|
||||
<string name="setup_choose_data_sim">בחר כרטיס SIM עבור נתונים</string>
|
||||
<string name="setup_location">שירותי מיקום</string>
|
||||
<string name="setup_other">שירותים אחרים</string>
|
||||
@@ -35,17 +35,17 @@
|
||||
<string name="sim_missing_summary" product="tablet">לא זוהה כרטיס SIM בטאבלט שלך. כדי להכניס כרטיס SIM, קרא את הוראות ההפעלה שהגיעו יחד עם מכשירך.</string>
|
||||
<string name="sim_missing_summary" product="default">לא זוהה כרטיס SIM במכשיר. כדי להכניס כרטיס SIM, קרא את הוראות ההפעלה שהגיעו יחד עם מכשירך.</string>
|
||||
<string name="choose_data_sim_summary" product="tablet">באיזה כרטיס SIM הנך מעוניין להשתמש עבור אינטרנט סלולרי? יתכן ויחולו חיובי רשת ב-SIM הנבחר בעקבות שימוש באינטרנט במהלך הגדרת הטאבלט שלך.</string>
|
||||
<string name="choose_data_sim_summary" product="default">באיזה כרטיס SIM הנך מעוניין להשתמש עבור אינטרנט סלולרי? יתכן ויחולו חיובי רשת ב-SIM הנבחר בעקבות שימוש באינטרנט במהלך הגדרת המכשיר.</string>
|
||||
<string name="choose_data_sim_summary" product="default">באיזה כרטיס SIM הנך מעוניין להשתמש עבור אינטרנט סלולרי? יתכן ויחולו חיובי רשת ב-SIM הנבחר בעקבות שימוש באינטרנט במהלך הגדרת מכשירך.</string>
|
||||
<string name="date_time_summary">הגדר את אזור הזמן שלך והתאם את התאריך ואת השעה הנוכחיים במידת הצורך</string>
|
||||
<string name="backup_data_summary"><b>גבה</b> נתוני יישומים, סיסמאות Wi-Fi והגדרות אחרות לשרתי Google</string>
|
||||
<string name="other_services_summary">שירותים אלו נותנים ל-Google לעבוד בשבילך, ואתה יכול לכבות/להדליק אותם בכל זמן. מידע ישומש בכפוף ל<xliff:g id="name" example="Privacy Policy">%s</xliff:g> של Google.</string>
|
||||
<string name="location_services_summary">שירותי מיקום מאפשרים ליישום המפות וליישומים אחרים להשתמש במיקומך. לדוגמא, יישום המפות עשוי להשתמש במידע זה על מנת להציג לך בתי קפה הנמצאים בקרבתך.</string>
|
||||
<string name="location_access_summary"><b>אפשר ליישומים שביקשו את אישורך</b> להשתמש במידע על מיקומך.</string>
|
||||
<string name="location_gps" product="tablet"><b>שפר דיוק מיקום</b> ע\"י נתינת הרשאה ליישומים להשתמש ב-GPS בטאבלט.</string>
|
||||
<string name="location_gps" product="default"><b>שפר דיוק מיקום</b> ע\"י נתינת הרשאה ליישומים להשתמש ב-GPS בטלפון.</string>
|
||||
<string name="location_network"><b>השתמש ב-Wi-Fi</b> כדי לסייע לאפליקציות לקבוע את מיקומך.</string>
|
||||
<string name="location_network_telephony"><b>השתמש ב-Wi-Fi וברשתות סלולריות</b> כדי לסייע לאפליקציות לקבוע את מיקומך.</string>
|
||||
<string name="location_network_gms"><b>השתמש בשירותי המיקום של Google</b> כדי לשלוח נתוני מיקום אנונימיים ל-Google, גם כשיישומים לא פועלים.</string>
|
||||
<string name="location_access_summary"><b>אפשר ליישומים שביקשו את רשותך</b> להשתמש במידע על מיקומך. הדבר עלול לכלול את מיקומך הנוכחי ומיקומים קודמים.</string>
|
||||
<string name="location_gps" product="tablet"><b>שפר דיוק מיקום</b> על-ידי נתינת הרשאה ליישומים להשתמש ב-GPS בטאבלט.</string>
|
||||
<string name="location_gps" product="default"><b>שפר דיוק מיקום</b> על-ידי נתינת הרשאה ליישומים להשתמש ב-GPS במכשירך.</string>
|
||||
<string name="location_network"><b>השתמש ב-Wi-Fi</b> כדי לסייע ליישומים לקבוע את מיקומך.</string>
|
||||
<string name="location_network_telephony"><b>השתמש ב-Wi-Fi וברשתות סלולריות</b> כדי לסייע ליישומים לקבוע את מיקומך.</string>
|
||||
<string name="location_network_gms"><b>השתמש בשירותי המיקום של Google</b> כדי לשלוח נתוני מיקום אנונימיים ל-Google, גם כאשר אין יישומים פועלים.</string>
|
||||
<string name="setup_mobile_data">הפעל נתונים ניידים</string>
|
||||
<string name="setup_mobile_data_no_service">אין שירות</string>
|
||||
<string name="setup_mobile_data_emergency_only">שיחות חירום בלבד</string>
|
||||
@@ -54,9 +54,14 @@
|
||||
<string name="yes">כן</string>
|
||||
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
|
||||
<string name="emergency_call">שיחת חירום</string>
|
||||
<string name="setup_services">תכונות Cyanogen</string>
|
||||
<string name="services_explanation" product="tablet">שירותים אלה עובדים בשבילך כדי להרחיב את יכולותיו של הטאבלט שלך. מידע ישומש בכפוף ל<xliff:g id="name" example="Privacy Policy">%s</xliff:g> של Cyanogen.</string>
|
||||
<string name="services_explanation" product="default">שירותים אלה עובדים בשבילך כדי להרחיב את יכולותיו של מכשירך. מידע ישומש בכפוף ל<xliff:g id="name" example="Privacy Policy">%s</xliff:g> של Cyanogen.</string>
|
||||
<string name="services_privacy_policy">מדיניות הפרטיות</string>
|
||||
<string name="services_help_improve_cm">עזור לשפר את <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> על ידי שליחת נתוני אבחון ושימוש למפתחים. מידע זה לא יוכל לשמש כדי לזהות אותך והוא תורם לצוותים העובדים על דברים כמו חיי סוללה, ביצועים ותכונות חדשות ל-<xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> על-ידי שליחת נתוני אבחון ושימוש למפתחים. מידע זה לא יוכל לשמש כדי לזהות אותך והוא תורם לצוותים העובדים על דברים כמו חיי סוללה, ביצועים ותכונות חדשות ל-<xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
<string name="services_apply_theme">החל את ערכת העיצוב <xliff:g id="name" example="Material">%s</xliff:g></string>
|
||||
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> הופך לזמין סמלים ייחודיים, טפטים וגופנים.</string>
|
||||
<string name="services_os_nav_keys_label"><b>השתמש במקשי הניווט במסך</b> במקום במקשים הפיזיים.</string>
|
||||
<string name="services_use_secure_sms">השתמש ב-SMS מאובטח</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> להצפנת שיחות SMS עם משתמשים אחרים באמצעות SMS מאובטח במכשיר <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
|
@@ -53,7 +53,9 @@
|
||||
<string name="yes">Jo</string>
|
||||
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
|
||||
<string name="emergency_call">Noutruff</string>
|
||||
<string name="setup_services">Cyanogen-Funktiounen</string>
|
||||
<string name="services_privacy_policy">Dateschutzerklärung</string>
|
||||
<string name="services_help_improve_cm">Hëllef <xliff:g id="name" example="CyanogenMod">%s</xliff:g> ze verbesseren</string>
|
||||
<string name="services_apply_theme">Den Design <xliff:g id="name" example="Material">%s</xliff:g> applizéieren</string>
|
||||
<string name="services_use_secure_sms">Sécher SMSe benotzen</string>
|
||||
</resources>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name">Sąrankos vedlys</string>
|
||||
<string name="app_name">Sąrankos vediklis</string>
|
||||
<string name="next">Kitas</string>
|
||||
<string name="skip">Praleisti</string>
|
||||
<string name="start">Pradėti</string>
|
||||
@@ -45,7 +45,7 @@
|
||||
<string name="location_gps" product="default"><b>Pagerinti vietos tikslumą</b> leidžiant programoms naudotis GPS jūsų telefone.</string>
|
||||
<string name="location_network"><b>Naudoti „Wi-Fi“</b> , kad padėti programoms nustatyti jūsų buvimo vietą.</string>
|
||||
<string name="location_network_telephony"><b>Naudoti „Wi-Fi“ ir mobiliuosius duomenis</b> , kad padėti programoms nustatyti jūsų buvimo vietą.</string>
|
||||
<string name="location_network_gms"><b>Naudoti „Google“ vietos paslaugą</b>, kad padėtumėte programoms nustatyti jūsų buvimo vietą. Tai reiškia, anoniminių vietos duomenų siuntimą į „Google“, net tada, kai neveikia jokios programos.</string>
|
||||
<string name="location_network_gms"><b>Naudoti „Google“ vietos paslaugą</b>, kad padėti programoms nustatyti jūsų buvimo vietą. Tai reiškia, anoniminių vietos duomenų siuntimą į „Google“, net tada, kai neveikia jokios programos.</string>
|
||||
<string name="setup_mobile_data">Įjungti mobiliuosius duomenis</string>
|
||||
<string name="setup_mobile_data_no_service">Nėra paslaugos</string>
|
||||
<string name="setup_mobile_data_emergency_only">Tik pagalbos skambučiai</string>
|
||||
@@ -58,11 +58,11 @@
|
||||
<string name="services_explanation" product="tablet">Šios paslaugos dirba už jus, kad išplėstu jūsų planšetinio kompiuterio galimybes. Duomenys bus naudojami pagal „Cyanogen\'s“ <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
|
||||
<string name="services_explanation" product="default">Šios paslaugos dirba už jus, kad išplėstu jūsų telefono galimybes. Duomenys bus naudojami pagal „Cyanogen\'s“ <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
|
||||
<string name="services_privacy_policy">Privatumo politika</string>
|
||||
<string name="services_help_improve_cm">Padėti tobulinti <xliff:g id="name" example="„CyanogenMod“">%s</xliff:g></string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Padėti tobulinti „CyanogenMod“">%s</xliff:g> automatiškai siunčiant diagnostikos ir naudojimo duomenis „Cyanogen“. Ši informacija negali būti naudojama jūsų identifikavimui, pateikti duomenys padės komandoms dirbančioms prie akumuliatoriaus veikimo laiko, programų našumo ir naujų <xliff:g id="name" example="„CyanogenMod“">%s</xliff:g> funkcijų.</string>
|
||||
<string name="services_help_improve_cm">Padėti tobulinti <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> automatiškai siunčiant diagnostikos ir naudojimo duomenis „Cyanogen“. Ši informacija negali būti naudojama jūsų identifikavimui, pateikti duomenys padės komandoms dirbančioms prie akumuliatoriaus veikimo laiko, programų našumo ir naujų <xliff:g id="name" example="CyanogenMod">%s</xliff:g> funkcijų.</string>
|
||||
<string name="services_apply_theme">Taikyti <xliff:g id="name" example="Material">%s</xliff:g> temą</string>
|
||||
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> įgalina unikalias piktogramas, ekrano fonus ir šriftus.</string>
|
||||
<string name="services_os_nav_keys_label"><b>Naudokite ekrane rodomus naršymo klavišus</b> vietoj aparatūrinių klavišų.</string>
|
||||
<string name="services_use_secure_sms">Naudoti saugius SMS</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Naudoti saugius SMS">%s</xliff:g>, kad užšifruoti SMS pokalbius su kitais vartotojais, naudojančiais saugius SMS <xliff:g id="name" example="„CyanogenMod“">%s</xliff:g> įrenginyje.</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g>, kad užšifruoti SMS pokalbius su kitais vartotojais, naudojančiais saugius SMS <xliff:g id="name" example="CyanogenMod">%s</xliff:g> įrenginyje.</string>
|
||||
</resources>
|
||||
|
@@ -37,7 +37,7 @@
|
||||
<string name="choose_data_sim_summary" product="tablet">Qual o cartão SIM que quer usar para os dados? O SIM selecionado pode incorrer em custos de rede adicionais, pois será usado para configurar o seu tablet.</string>
|
||||
<string name="choose_data_sim_summary" product="default">Qual o cartão SIM que quer usar para os dados? O SIM selecionado pode incorrer em custos de rede adicionais, pois será usado para configurar o seu telefone.</string>
|
||||
<string name="date_time_summary">Defina o fuso horário e ajuste a hora e a data atual, se necessário</string>
|
||||
<string name="backup_data_summary">Efetuar uma <b>cópia de segurança</b> dos dados das aplicações, senhas de acesso de redes sem fios e outras definições para os servidores da Google</string>
|
||||
<string name="backup_data_summary">Efetuar uma <b>cópia de segurança</b> dos dados das aplicações, palavras-passe de acesso de redes sem fios e outras definições para os servidores da Google</string>
|
||||
<string name="other_services_summary">Estes serviços colocam o Google a trabalhar para si, e pode ligá-los ou desligá-los a qualquer momento. Os dados serão utilizados em conformidade com a <xliff:g id="name" example="Privacy Policy">%s</xliff:g> do Google.</string>
|
||||
<string name="location_services_summary">Os serviços de localização permitem às aplicações de sistema e de terceiros reunir e utilizar dados tais como a sua localização aproximada. Por exemplo, uma aplicação pode usar a sua localização aproximada para localizar cafés ou bares nas proximidades.</string>
|
||||
<string name="location_access_summary"><b>Permitir às aplicações que pediram a sua permissão</b> para usar as suas informações de localização. Isso pode incluir a sua localização atual bem como localizações anteriores.</string>
|
||||
|
@@ -17,13 +17,20 @@
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name">Expert de instalare</string>
|
||||
<string name="skip">Omite</string>
|
||||
<string name="start">Pornire</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="loading">Doar o secundă\u2026</string>
|
||||
<string name="setup_complete">Configurarea este completă</string>
|
||||
<string name="setup_welcome">Bine ați venit</string>
|
||||
<string name="setup_wifi">Selectaţi Wi-Fi</string>
|
||||
<string name="setup_sim_missing">Lipsă card SIM</string>
|
||||
<string name="setup_location">Servicii de localizare</string>
|
||||
<string name="setup_other">Alte servicii</string>
|
||||
<string name="setup_datetime">Dată & oră</string>
|
||||
<string name="setup_current_date">Data curentă</string>
|
||||
<string name="setup_current_time">Ora curentă</string>
|
||||
<string name="setup_mobile_data">Porniți datele mobile</string>
|
||||
<string name="setup_mobile_data_emergency_only">Numai apeluri de urgenţă</string>
|
||||
<string name="no">Nu</string>
|
||||
<string name="yes">Da</string>
|
||||
|
@@ -16,12 +16,23 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name">Installationsguide</string>
|
||||
<string name="next">Nästa</string>
|
||||
<string name="skip">Hoppa över</string>
|
||||
<string name="start">Start</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="setup_welcome">Välkommen</string>
|
||||
<string name="setup_wifi">Välj Wi-Fi</string>
|
||||
<string name="setup_sim_missing">SIM-kort saknas</string>
|
||||
<string name="setup_location">Platstjänster</string>
|
||||
<string name="setup_other">Andra tjänster</string>
|
||||
<string name="setup_datetime">Datum & tid</string>
|
||||
<string name="setup_current_date">Aktuellt datum</string>
|
||||
<string name="setup_current_time">Aktuell tid</string>
|
||||
<string name="setup_mobile_data_no_service">Ingen service</string>
|
||||
<string name="setup_mobile_data_emergency_only">Endast nödsamtal</string>
|
||||
<string name="no">Nej</string>
|
||||
<string name="yes">Ja</string>
|
||||
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
|
||||
<string name="emergency_call">Nödsamtal</string>
|
||||
</resources>
|
||||
|
@@ -54,9 +54,14 @@
|
||||
<string name="yes">Так</string>
|
||||
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
|
||||
<string name="emergency_call">Екстрений виклик</string>
|
||||
<string name="setup_services">Особливості Cyanogen</string>
|
||||
<string name="services_explanation" product="tablet">Ці послуги створено, щоб розширити можливості Вашого пристрою. Особисті дані буде використано у відповідності до <xliff:g id="name" example="Privacy Policy">%s </xliff:g>.</string>
|
||||
<string name="services_explanation" product="default">Ці послуги створено, щоб розширити можливості Вашого пристрою. Особисті дані буде використано у відповідності до <xliff:g id="name" example="Privacy Policy">%s </xliff:g>.</string>
|
||||
<string name="services_privacy_policy">Політика Конфіденційності</string>
|
||||
<string name="services_help_improve_cm">Допомогти поліпшити <xliff:g id="name" example="CyanogenMod">%s </xliff:g></string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> автоматично надсилаючи дані, щодо використання та диагностики у Cyanogen. Ця інформація не може бути використована для ідентифікації користувача, але дуже допоможе розробникам, що працюють над такими речами, як: час праці батареї, продуктивність додатків і нові функції <xliff:g id="name" example="CyanogenMod"> %s </xliff:g>.</string>
|
||||
<string name="services_apply_theme">Застосувати тему <xliff:g id="name" example="Material">%s </xliff:g></string>
|
||||
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s </xliff:g> дає можливість використовувати унікальні іконки, шпалери і шрифти.</string>
|
||||
<string name="services_os_nav_keys_label"><b>Використовувати навігаційні кнопки на екрані
|
||||
</b> замість апаратних.</string>
|
||||
<string name="services_use_secure_sms">Використовувати безпечні SMS</string>
|
||||
|
@@ -20,6 +20,8 @@ package com.cyanogenmod.setupwizard;
|
||||
import android.app.Application;
|
||||
import android.app.StatusBarManager;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Handler;
|
||||
import android.provider.Settings;
|
||||
|
||||
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
|
||||
@@ -35,6 +37,7 @@ public class SetupWizardApp extends Application {
|
||||
public static final String ACCOUNT_TYPE_GMS = "com.google";
|
||||
|
||||
public static final String ACTION_SETUP_WIFI = "com.android.net.wifi.SETUP_WIFI_NETWORK";
|
||||
public static final String ACTION_VIEW_LEGAL = "cyanogenmod.intent.action.LEGALESE";
|
||||
|
||||
public static final String EXTRA_FIRST_RUN = "firstRun";
|
||||
public static final String EXTRA_ALLOW_SKIP = "allowSkip";
|
||||
@@ -46,14 +49,34 @@ public class SetupWizardApp extends Application {
|
||||
|
||||
private static final String KEY_DETECT_CAPTIVE_PORTAL = "captive_portal_detection_enabled";
|
||||
|
||||
private static final String[] THEME_PACKAGES = {
|
||||
"org.cyanogenmod.theme.chooser",
|
||||
"com.cyngn.theme.chooser",
|
||||
"com.cyngn.themestore"
|
||||
};
|
||||
|
||||
public static final int REQUEST_CODE_SETUP_WIFI = 0;
|
||||
public static final int REQUEST_CODE_SETUP_GMS= 1;
|
||||
public static final int REQUEST_CODE_RESTORE_GMS= 2;
|
||||
public static final int REQUEST_CODE_SETUP_CYANOGEN= 3;
|
||||
public static final int REQUEST_CODE_SETUP_CAPTIVE_PORTAL= 4;
|
||||
public static final int REQUEST_CODE_SETUP_BLUETOOTH= 5;
|
||||
|
||||
public static final int RADIO_READY_TIMEOUT = 10 * 1000;
|
||||
|
||||
private boolean mIsRadioReady = false;
|
||||
|
||||
private StatusBarManager mStatusBarManager;
|
||||
|
||||
private final Handler mHandler = new Handler();
|
||||
|
||||
private final Runnable mRadioTimeoutRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mIsRadioReady = true;
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
@@ -61,11 +84,15 @@ public class SetupWizardApp extends Application {
|
||||
try {
|
||||
// Since this is a new component, we need to disable here if the user
|
||||
// has already been through setup on a previous version.
|
||||
if (!SetupWizardUtils.isOwner()
|
||||
final boolean isOwner = SetupWizardUtils.isOwner();
|
||||
if (!isOwner
|
||||
|| Settings.Secure.getInt(getContentResolver(),
|
||||
Settings.Secure.USER_SETUP_COMPLETE) == 1) {
|
||||
SetupWizardUtils.disableGMSSetupWizard(this);
|
||||
SetupWizardUtils.disableSetupWizard(this);
|
||||
if (!isOwner) {
|
||||
disableThemeComponentsForSecondaryUser();
|
||||
}
|
||||
} else {
|
||||
disableCaptivePortalDetection();
|
||||
}
|
||||
@@ -73,7 +100,18 @@ public class SetupWizardApp extends Application {
|
||||
// Continue with setup
|
||||
disableCaptivePortalDetection();
|
||||
}
|
||||
mHandler.postDelayed(mRadioTimeoutRunnable, SetupWizardApp.RADIO_READY_TIMEOUT);
|
||||
}
|
||||
|
||||
public boolean isRadioReady() {
|
||||
return mIsRadioReady;
|
||||
}
|
||||
|
||||
public void setRadioReady(boolean radioReady) {
|
||||
if (!mIsRadioReady && radioReady) {
|
||||
mHandler.removeCallbacks(mRadioTimeoutRunnable);
|
||||
}
|
||||
mIsRadioReady = radioReady;
|
||||
}
|
||||
|
||||
public void disableStatusBar() {
|
||||
@@ -93,4 +131,17 @@ public class SetupWizardApp extends Application {
|
||||
public void enableCaptivePortalDetection() {
|
||||
Settings.Global.putInt(getContentResolver(), KEY_DETECT_CAPTIVE_PORTAL, 1);
|
||||
}
|
||||
|
||||
private void disableThemeComponentsForSecondaryUser() {
|
||||
PackageManager pm = getPackageManager();
|
||||
for(String pkgName : THEME_PACKAGES) {
|
||||
try {
|
||||
pm.getApplicationInfo(pkgName, 0);
|
||||
pm.setApplicationEnabledSetting(pkgName,
|
||||
PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER, 0);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
// don't care
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -28,8 +28,8 @@ public class SetupStats {
|
||||
|
||||
private static final String TAG = SetupStats.class.getSimpleName();
|
||||
|
||||
private static final String ANALYTIC_INTENT = "com.cyngn.cmstats.action.SEND_ANALYTIC_EVENT";
|
||||
private static final String ANALYTIC_PERMISSION = "com.cyngn.cmstats.RECEIVE_ANALYTICS";
|
||||
private static final String ANALYTIC_INTENT = "com.cyngn.stats.action.SEND_ANALYTIC_EVENT";
|
||||
private static final String ANALYTIC_PERMISSION = "com.cyngn.stats.SEND_ANALYTICS";
|
||||
|
||||
public static final String TRACKING_ID = "tracking_id";
|
||||
|
||||
@@ -146,6 +146,7 @@ public class SetupStats {
|
||||
public static final String LOCALE = "local";
|
||||
public static final String RESULT = "result";
|
||||
public static final String WIFI_SETUP = "wifi_setup";
|
||||
public static final String BLUETOOTH_SETUP = "bluetooth_setup";
|
||||
public static final String CYANOGEN_ACCOUNT = "cyanogen_account_setup";
|
||||
public static final String CAPTIVE_PORTAL_LOGIN = "captive_portal_login";
|
||||
public static final String EMERGENCY_CALL = "emergency_call";
|
||||
|
@@ -18,12 +18,13 @@
|
||||
package com.cyanogenmod.setupwizard.cmstats;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.provider.Settings;
|
||||
|
||||
public class StatsUtils {
|
||||
private static final String STATS_PACKAGE = "com.cyngn.cmstats";
|
||||
private static final String STATS_PACKAGE = "com.cyngn.stats";
|
||||
|
||||
public static boolean isStatsCollectionEnabled(Context context) {
|
||||
return Settings.Secure.getInt(context.getContentResolver(),
|
||||
@@ -33,7 +34,8 @@ public class StatsUtils {
|
||||
public static boolean isStatsPackageInstalled(Context context) {
|
||||
try {
|
||||
PackageInfo pi = context.getPackageManager().getPackageInfo(STATS_PACKAGE, 0);
|
||||
return pi.applicationInfo.enabled;
|
||||
return pi.applicationInfo.enabled
|
||||
&& ((pi.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
return false;
|
||||
}
|
||||
|
120
src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java
Normal file
120
src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java
Normal file
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
* Copyright (C) 2015 The CyanogenMod 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.cyanogenmod.setupwizard.setup;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.ActivityOptions;
|
||||
import android.app.FragmentManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
|
||||
import com.cyanogenmod.setupwizard.R;
|
||||
import com.cyanogenmod.setupwizard.SetupWizardApp;
|
||||
import com.cyanogenmod.setupwizard.cmstats.SetupStats;
|
||||
import com.cyanogenmod.setupwizard.ui.LoadingFragment;
|
||||
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
|
||||
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
public class BluetoothSetupPage extends SetupPage {
|
||||
|
||||
public static final String TAG = "BluetoothSetupPage";
|
||||
|
||||
private static final String ACTION_CONNECT_INPUT =
|
||||
"com.google.android.intent.action.CONNECT_INPUT";
|
||||
|
||||
private static final String INTENT_EXTRA_NO_INPUT_MODE = "no_input_mode";
|
||||
|
||||
private LoadingFragment mLoadingFragment;
|
||||
|
||||
public BluetoothSetupPage(Context context, SetupDataCallbacks callbacks) {
|
||||
super(context, callbacks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SetupPageFragment getFragment(FragmentManager fragmentManager, int action) {
|
||||
mLoadingFragment = (LoadingFragment)fragmentManager.findFragmentByTag(getKey());
|
||||
if (mLoadingFragment == null) {
|
||||
Bundle args = new Bundle();
|
||||
args.putString(Page.KEY_PAGE_ARGUMENT, getKey());
|
||||
args.putInt(Page.KEY_PAGE_ACTION, action);
|
||||
mLoadingFragment = new LoadingFragment();
|
||||
mLoadingFragment.setArguments(args);
|
||||
}
|
||||
return mLoadingFragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNextButtonTitleResId() {
|
||||
return R.string.skip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTitleResId() {
|
||||
return R.string.loading;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void doLoadAction(FragmentManager fragmentManager, int action) {
|
||||
super.doLoadAction(fragmentManager, action);
|
||||
launchConnectInput();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_BLUETOOTH) {
|
||||
SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
|
||||
SetupStats.Action.EXTERNAL_PAGE_RESULT,
|
||||
SetupStats.Label.BLUETOOTH_SETUP, "success");
|
||||
getCallbacks().onNextPage();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void launchConnectInput() {
|
||||
Intent intent = new Intent();
|
||||
intent.setComponent(SetupWizardUtils.mTvAddAccessorySettingsActivity);
|
||||
intent.setAction(ACTION_CONNECT_INPUT);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
intent.putExtra(INTENT_EXTRA_NO_INPUT_MODE, true);
|
||||
ActivityOptions options =
|
||||
ActivityOptions.makeCustomAnimation(mContext,
|
||||
android.R.anim.fade_in,
|
||||
android.R.anim.fade_out);
|
||||
SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
|
||||
SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
|
||||
SetupStats.Label.PAGE, SetupStats.Label.BLUETOOTH_SETUP);
|
||||
mLoadingFragment.startActivityForResult(intent,
|
||||
SetupWizardApp.REQUEST_CODE_SETUP_BLUETOOTH, options.toBundle());
|
||||
}
|
||||
}
|
@@ -20,6 +20,8 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.os.SystemProperties;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
|
||||
import com.android.internal.telephony.TelephonyIntents;
|
||||
@@ -33,6 +35,8 @@ public class CMSetupWizardData extends AbstractSetupData {
|
||||
|
||||
private boolean mTimeSet = false;
|
||||
private boolean mTimeZoneSet = false;
|
||||
private boolean mMobileDataEnabled = SystemProperties
|
||||
.getBoolean("ro.com.android.mobiledata", true);
|
||||
|
||||
public CMSetupWizardData(Context context) {
|
||||
super(context);
|
||||
@@ -41,22 +45,29 @@ public class CMSetupWizardData extends AbstractSetupData {
|
||||
@Override
|
||||
protected PageList onNewPageList() {
|
||||
ArrayList<Page> pages = new ArrayList<Page>();
|
||||
if (SetupWizardUtils.hasLeanback(mContext)) {
|
||||
pages.add(new BluetoothSetupPage(mContext, this));
|
||||
}
|
||||
pages.add(new WelcomePage(mContext, this));
|
||||
pages.add(new WifiSetupPage(mContext, this));
|
||||
if (SetupWizardUtils.hasTelephony(mContext)) {
|
||||
pages.add(new SimCardMissingPage(mContext, this).setHidden(isSimInserted()));
|
||||
pages.add(new SimCardMissingPage(mContext, this)
|
||||
.setHidden(isSimInserted()));
|
||||
}
|
||||
if (SetupWizardUtils.isMultiSimDevice(mContext)) {
|
||||
pages.add(new ChooseDataSimPage(mContext, this).setHidden(!allSimsInserted()));
|
||||
pages.add(new ChooseDataSimPage(mContext, this)
|
||||
.setHidden(!allSimsInserted()));
|
||||
}
|
||||
if (SetupWizardUtils.hasTelephony(mContext)) {
|
||||
pages.add(new MobileDataPage(mContext, this)
|
||||
.setHidden(!isSimInserted() || SetupWizardUtils.isMobileDataEnabled(mContext)));
|
||||
.setHidden(!isSimInserted() || mMobileDataEnabled));
|
||||
}
|
||||
if (SetupWizardUtils.hasGMS(mContext)) {
|
||||
pages.add(new GmsAccountPage(mContext, this).setHidden(true));
|
||||
}
|
||||
pages.add(new CyanogenServicesPage(mContext, this).setHidden(true));
|
||||
if (!SetupWizardUtils.hasLeanback(mContext)) {
|
||||
pages.add(new CyanogenServicesPage(mContext, this).setHidden(true));
|
||||
}
|
||||
pages.add(new CyanogenSettingsPage(mContext, this));
|
||||
pages.add(new OtherSettingsPage(mContext, this));
|
||||
pages.add(new DateTimePage(mContext, this));
|
||||
@@ -68,24 +79,14 @@ public class CMSetupWizardData extends AbstractSetupData {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if (intent.getAction().equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) {
|
||||
ChooseDataSimPage chooseDataSimPage =
|
||||
(ChooseDataSimPage) getPage(ChooseDataSimPage.TAG);
|
||||
if (chooseDataSimPage != null) {
|
||||
chooseDataSimPage.setHidden(!allSimsInserted());
|
||||
}
|
||||
SimCardMissingPage simCardMissingPage =
|
||||
(SimCardMissingPage) getPage(SimCardMissingPage.TAG);
|
||||
if (simCardMissingPage != null) {
|
||||
simCardMissingPage.setHidden(isSimInserted());
|
||||
if (isCurrentPage(simCardMissingPage)) {
|
||||
onNextPage();
|
||||
}
|
||||
}
|
||||
showHideDataSimPage();
|
||||
showHideSimMissingPage();
|
||||
showHideMobileDataPage();
|
||||
} else if (intent.getAction()
|
||||
.equals(ConnectivityManager.CONNECTIVITY_ACTION) ||
|
||||
intent.getAction()
|
||||
.equals(ConnectivityManager.CONNECTIVITY_ACTION_IMMEDIATE)) {
|
||||
showHideMobileDataPage();
|
||||
showHideAccountPages();
|
||||
} else if (intent.getAction()
|
||||
.equals(TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED)) {
|
||||
@@ -116,12 +117,30 @@ public class CMSetupWizardData extends AbstractSetupData {
|
||||
}
|
||||
}
|
||||
|
||||
private void showHideSimMissingPage() {
|
||||
SimCardMissingPage simCardMissingPage =
|
||||
(SimCardMissingPage) getPage(SimCardMissingPage.TAG);
|
||||
if (simCardMissingPage != null && isSimInserted()) {
|
||||
simCardMissingPage.setHidden(true);
|
||||
if (isCurrentPage(simCardMissingPage)) {
|
||||
onNextPage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void showHideDataSimPage() {
|
||||
ChooseDataSimPage chooseDataSimPage =
|
||||
(ChooseDataSimPage) getPage(ChooseDataSimPage.TAG);
|
||||
if (chooseDataSimPage != null) {
|
||||
chooseDataSimPage.setHidden(!allSimsInserted());
|
||||
}
|
||||
}
|
||||
|
||||
private void showHideMobileDataPage() {
|
||||
MobileDataPage mobileDataPage =
|
||||
(MobileDataPage) getPage(MobileDataPage.TAG);
|
||||
if (mobileDataPage != null) {
|
||||
mobileDataPage.setHidden(!isSimInserted() ||
|
||||
SetupWizardUtils.isMobileDataEnabled(mContext));
|
||||
mobileDataPage.setHidden(!isSimInserted() || mMobileDataEnabled);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,7 +190,7 @@ public class CMSetupWizardData extends AbstractSetupData {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return simSlotCount == SubscriptionManager.from(mContext).getActiveSubscriptionInfoCount();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -20,6 +20,7 @@ import android.app.Fragment;
|
||||
import android.app.FragmentManager;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.telephony.PhoneStateListener;
|
||||
import android.telephony.ServiceState;
|
||||
import android.telephony.SignalStrength;
|
||||
@@ -31,15 +32,17 @@ import android.util.SparseArray;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.android.internal.telephony.SubscriptionController;
|
||||
|
||||
import com.cyanogenmod.setupwizard.R;
|
||||
import com.cyanogenmod.setupwizard.SetupWizardApp;
|
||||
import com.cyanogenmod.setupwizard.cmstats.SetupStats;
|
||||
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
|
||||
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -47,11 +50,8 @@ public class ChooseDataSimPage extends SetupPage {
|
||||
|
||||
public static final String TAG = "ChooseDataSimPage";
|
||||
|
||||
private SubscriptionManager mSubscriptionManager;
|
||||
|
||||
public ChooseDataSimPage(Context context, SetupDataCallbacks callbacks) {
|
||||
super(context, callbacks);
|
||||
mSubscriptionManager = SubscriptionManager.from(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -78,28 +78,40 @@ public class ChooseDataSimPage extends SetupPage {
|
||||
}
|
||||
|
||||
|
||||
public class ChooseDataSimFragment extends SetupPageFragment {
|
||||
public static class ChooseDataSimFragment extends SetupPageFragment {
|
||||
|
||||
private ViewGroup mPageView;
|
||||
private ProgressBar mProgressBar;
|
||||
private SparseArray<TextView> mNameViews;
|
||||
private SparseArray<ImageView> mSignalViews;
|
||||
private SparseArray<CheckBox> mCheckBoxes;
|
||||
|
||||
private TelephonyManager mPhone;
|
||||
private List<SubscriptionInfo> mSubInfoRecords;
|
||||
private SparseArray<SubscriptionInfo> mSubInfoRecords;
|
||||
private SparseArray<SignalStrength> mSignalStrengths;
|
||||
private SparseArray<ServiceState> mServiceStates;
|
||||
private SparseArray<PhoneStateListener> mPhoneStateListeners;
|
||||
|
||||
private boolean mIsAttached = false;
|
||||
|
||||
private Context mContext;
|
||||
private SubscriptionManager mSubscriptionManager;
|
||||
|
||||
private final Handler mHandler = new Handler();
|
||||
|
||||
private final Runnable mRadioReadyRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
hideWaitForRadio();
|
||||
}
|
||||
};
|
||||
|
||||
private View.OnClickListener mSetDataSimClickListener = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
SubscriptionInfo subInfoRecord = (SubscriptionInfo)view.getTag();
|
||||
if (subInfoRecord != null) {
|
||||
SubscriptionController.getInstance()
|
||||
.setDefaultDataSubId(subInfoRecord.getSubscriptionId());
|
||||
mSubscriptionManager.setDefaultDataSubId(subInfoRecord.getSubscriptionId());
|
||||
setDataSubChecked(subInfoRecord);
|
||||
}
|
||||
}
|
||||
@@ -108,8 +120,14 @@ public class ChooseDataSimPage extends SetupPage {
|
||||
@Override
|
||||
protected void initializePage() {
|
||||
mPageView = (ViewGroup)mRootView.findViewById(R.id.page_view);
|
||||
mSubInfoRecords = mSubscriptionManager.getActiveSubscriptionInfoList();
|
||||
int simCount = mSubInfoRecords.size();
|
||||
mProgressBar = (ProgressBar) mRootView.findViewById(R.id.progress);
|
||||
List<SubscriptionInfo> subInfoRecords = mSubscriptionManager.getActiveSubscriptionInfoList();
|
||||
int simCount =
|
||||
subInfoRecords != null ? subInfoRecords.size() : 0;
|
||||
mSubInfoRecords = new SparseArray<SubscriptionInfo>(simCount);
|
||||
for (SubscriptionInfo subInfoRecord : subInfoRecords) {
|
||||
mSubInfoRecords.put(subInfoRecord.getSimSlotIndex(), subInfoRecord);
|
||||
}
|
||||
mNameViews = new SparseArray<TextView>(simCount);
|
||||
mSignalViews = new SparseArray<ImageView>(simCount);
|
||||
mCheckBoxes = new SparseArray<CheckBox>(simCount);
|
||||
@@ -120,13 +138,14 @@ public class ChooseDataSimPage extends SetupPage {
|
||||
for (int i = 0; i < simCount; i++) {
|
||||
View simRow = inflater.inflate(R.layout.data_sim_row, null);
|
||||
mPageView.addView(simRow);
|
||||
SubscriptionInfo subInfoRecord = mSubInfoRecords.get(i);
|
||||
SubscriptionInfo subInfoRecord = mSubInfoRecords.valueAt(i);
|
||||
simRow.setTag(subInfoRecord);
|
||||
simRow.setOnClickListener(mSetDataSimClickListener);
|
||||
mNameViews.put(i, (TextView) simRow.findViewById(R.id.sim_title));
|
||||
mSignalViews.put(i, (ImageView) simRow.findViewById(R.id.signal));
|
||||
mCheckBoxes.put(i, (CheckBox) simRow.findViewById(R.id.enable_check));
|
||||
mPhoneStateListeners.put(i, createPhoneStateListener(subInfoRecord));
|
||||
int slot = subInfoRecord.getSimSlotIndex();
|
||||
mNameViews.put(slot, (TextView) simRow.findViewById(R.id.sim_title));
|
||||
mSignalViews.put(slot, (ImageView) simRow.findViewById(R.id.signal));
|
||||
mCheckBoxes.put(slot, (CheckBox) simRow.findViewById(R.id.enable_check));
|
||||
mPhoneStateListeners.put(slot, createPhoneStateListener(subInfoRecord));
|
||||
mPageView.addView(inflater.inflate(R.layout.divider, null));
|
||||
}
|
||||
updateSignalStrengths();
|
||||
@@ -138,18 +157,31 @@ public class ChooseDataSimPage extends SetupPage {
|
||||
return R.layout.choose_data_sim_page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mContext = getActivity().getApplicationContext();
|
||||
mSubscriptionManager = SubscriptionManager.from(mContext);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
mIsAttached = true;
|
||||
mPhone = (TelephonyManager)getActivity().getSystemService(Context.TELEPHONY_SERVICE);
|
||||
for (int i = 0; i < mPhoneStateListeners.size(); i++) {
|
||||
mPhone.listen(mPhoneStateListeners.get(i),
|
||||
mPhone.listen(mPhoneStateListeners.valueAt(i),
|
||||
PhoneStateListener.LISTEN_SERVICE_STATE
|
||||
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
|
||||
}
|
||||
updateSignalStrengths();
|
||||
updateCurrentDataSub();
|
||||
if (SetupWizardUtils.isRadioReady(mContext, null)) {
|
||||
hideWaitForRadio();
|
||||
} else if (mTitleView != null) {
|
||||
mTitleView.setText(R.string.loading);
|
||||
mHandler.postDelayed(mRadioReadyRunnable, SetupWizardApp.RADIO_READY_TIMEOUT);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -157,7 +189,7 @@ public class ChooseDataSimPage extends SetupPage {
|
||||
super.onPause();
|
||||
mIsAttached = false;
|
||||
for (int i = 0; i < mPhoneStateListeners.size(); i++) {
|
||||
mPhone.listen(mPhoneStateListeners.get(i), PhoneStateListener.LISTEN_NONE);
|
||||
mPhone.listen(mPhoneStateListeners.valueAt(i), PhoneStateListener.LISTEN_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,26 +198,38 @@ public class ChooseDataSimPage extends SetupPage {
|
||||
|
||||
@Override
|
||||
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
|
||||
if (mIsAttached) {
|
||||
mSignalStrengths.put(subInfoRecord.getSimSlotIndex(), signalStrength);
|
||||
updateSignalStrength(subInfoRecord);
|
||||
}
|
||||
mSignalStrengths.put(subInfoRecord.getSimSlotIndex(), signalStrength);
|
||||
updateSignalStrength(subInfoRecord);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceStateChanged(ServiceState state) {
|
||||
if (mIsAttached) {
|
||||
mServiceStates.put(subInfoRecord.getSimSlotIndex(), state);
|
||||
updateSignalStrength(subInfoRecord);
|
||||
if (SetupWizardUtils.isRadioReady(mContext, state)) {
|
||||
hideWaitForRadio();
|
||||
}
|
||||
mServiceStates.put(subInfoRecord.getSimSlotIndex(), state);
|
||||
updateSignalStrength(subInfoRecord);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void hideWaitForRadio() {
|
||||
if (getUserVisibleHint() && mProgressBar.isShown()) {
|
||||
mHandler.removeCallbacks(mRadioReadyRunnable);
|
||||
if (mTitleView != null) {
|
||||
mTitleView.setText(mPage.getTitleResId());
|
||||
}
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
mPageView.setVisibility(View.VISIBLE);
|
||||
mPageView.startAnimation(
|
||||
AnimationUtils.loadAnimation(getActivity(), R.anim.translucent_enter));
|
||||
}
|
||||
}
|
||||
|
||||
private void updateSignalStrengths() {
|
||||
if (mIsAttached) {
|
||||
for (int i = 0; i < mSubInfoRecords.size(); i++) {
|
||||
updateSignalStrength(mSubInfoRecords.get(i));
|
||||
updateSignalStrength(mSubInfoRecords.valueAt(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -209,10 +253,9 @@ public class ChooseDataSimPage extends SetupPage {
|
||||
private void updateCurrentDataSub() {
|
||||
if (mIsAttached) {
|
||||
for (int i = 0; i < mSubInfoRecords.size(); i++) {
|
||||
SubscriptionInfo subInfoRecord = mSubInfoRecords.get(i);
|
||||
mCheckBoxes.get(i).setChecked(SubscriptionManager.getDefaultDataSubId()
|
||||
SubscriptionInfo subInfoRecord = mSubInfoRecords.valueAt(i);
|
||||
mCheckBoxes.get(i).setChecked(mSubscriptionManager.getDefaultDataPhoneId()
|
||||
== subInfoRecord.getSimSlotIndex());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -28,6 +28,7 @@ import android.app.FragmentManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import com.cyanogenmod.setupwizard.R;
|
||||
import com.cyanogenmod.setupwizard.SetupWizardApp;
|
||||
@@ -83,17 +84,13 @@ public class CyanogenServicesPage extends SetupPage {
|
||||
if (!SetupWizardUtils.accountExists(mContext,
|
||||
mContext.getString(R.string.cm_account_type))) {
|
||||
super.doLoadAction(fragmentManager, action);
|
||||
launchCyanogenAccountSetup();
|
||||
} else {
|
||||
getCallbacks().onNextPage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFragmentReady() {
|
||||
launchCyanogenAccountSetup();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_CYANOGEN) {
|
||||
@@ -127,6 +124,7 @@ public class CyanogenServicesPage extends SetupPage {
|
||||
null, new AccountManagerCallback<Bundle>() {
|
||||
@Override
|
||||
public void run(AccountManagerFuture<Bundle> future) {
|
||||
boolean error = false;
|
||||
try {
|
||||
Bundle result = future.getResult();
|
||||
Intent intent = result
|
||||
@@ -135,24 +133,26 @@ public class CyanogenServicesPage extends SetupPage {
|
||||
ActivityOptions.makeCustomAnimation(mContext,
|
||||
android.R.anim.fade_in,
|
||||
android.R.anim.fade_out);
|
||||
if (!mFragment.isDetached()) {
|
||||
SetupStats
|
||||
.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
|
||||
SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
|
||||
SetupStats.Label.PAGE,
|
||||
SetupStats.Label.CYANOGEN_ACCOUNT);
|
||||
mFragment.startActivityForResult(intent,
|
||||
SetupWizardApp.REQUEST_CODE_SETUP_CYANOGEN,
|
||||
options.toBundle());
|
||||
} else {
|
||||
if (getCallbacks().
|
||||
isCurrentPage(CyanogenServicesPage.this)) {
|
||||
getCallbacks().onNextPage();
|
||||
}
|
||||
}
|
||||
SetupStats
|
||||
.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
|
||||
SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
|
||||
SetupStats.Label.PAGE,
|
||||
SetupStats.Label.CYANOGEN_ACCOUNT);
|
||||
mFragment.startActivityForResult(intent,
|
||||
SetupWizardApp.REQUEST_CODE_SETUP_CYANOGEN,
|
||||
options.toBundle());
|
||||
} catch (OperationCanceledException e) {
|
||||
error = true;
|
||||
} catch (IOException e) {
|
||||
error = true;
|
||||
} catch (AuthenticatorException e) {
|
||||
Log.e(TAG, "Error launching cm account", e);
|
||||
error = true;
|
||||
} finally {
|
||||
if (error && getCallbacks().
|
||||
isCurrentPage(CyanogenServicesPage.this)) {
|
||||
getCallbacks().onNextPage();
|
||||
}
|
||||
}
|
||||
}
|
||||
}, null);
|
||||
|
@@ -18,12 +18,15 @@ package com.cyanogenmod.setupwizard.setup;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.app.FragmentManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.ThemeUtils;
|
||||
import android.content.res.ThemeConfig;
|
||||
import android.content.res.ThemeManager;
|
||||
import android.hardware.CmHardwareManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.RemoteException;
|
||||
import android.preference.PreferenceManager;
|
||||
@@ -42,6 +45,7 @@ import android.widget.CheckBox;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.cyanogenmod.setupwizard.R;
|
||||
import com.cyanogenmod.setupwizard.SetupWizardApp;
|
||||
import com.cyanogenmod.setupwizard.cmstats.SetupStats;
|
||||
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
|
||||
import com.cyanogenmod.setupwizard.ui.WebViewDialogFragment;
|
||||
@@ -203,7 +207,7 @@ public class CyanogenSettingsPage extends SetupPage {
|
||||
SetupWizardUtils.isSimMissing(context));
|
||||
}
|
||||
|
||||
protected static boolean hideThemeSwitch(Context context) {
|
||||
private static boolean hideThemeSwitch(Context context) {
|
||||
return ThemeUtils.getDefaultThemePackageName(context).equals(ThemeConfig.SYSTEM_DEFAULT);
|
||||
}
|
||||
|
||||
@@ -218,6 +222,10 @@ public class CyanogenSettingsPage extends SetupPage {
|
||||
private CheckBox mNavKeys;
|
||||
private CheckBox mSecureSms;
|
||||
|
||||
private boolean mHideNavKeysRow = false;
|
||||
private boolean mHideThemeRow = false;
|
||||
private boolean mHideSmsRow = false;
|
||||
|
||||
|
||||
private View.OnClickListener mMetricsClickListener = new View.OnClickListener() {
|
||||
@Override
|
||||
@@ -257,16 +265,19 @@ public class CyanogenSettingsPage extends SetupPage {
|
||||
|
||||
@Override
|
||||
protected void initializePage() {
|
||||
final Bundle myPageBundle = mPage.getData();
|
||||
String privacy_policy = getString(R.string.services_privacy_policy);
|
||||
String policySummary = getString(R.string.services_explanation, privacy_policy);
|
||||
SpannableString ss = new SpannableString(policySummary);
|
||||
ClickableSpan clickableSpan = new ClickableSpan() {
|
||||
@Override
|
||||
public void onClick(View textView) {
|
||||
WebViewDialogFragment.newInstance()
|
||||
.setUri(PRIVACY_POLICY_URI)
|
||||
.show(getActivity().getFragmentManager(), WebViewDialogFragment.TAG);
|
||||
final Intent intent = new Intent(SetupWizardApp.ACTION_VIEW_LEGAL);
|
||||
intent.setData(Uri.parse(PRIVACY_POLICY_URI));
|
||||
try {
|
||||
getActivity().startActivity(intent);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Unable to start activity " + intent.toString(), e);
|
||||
}
|
||||
}
|
||||
};
|
||||
ss.setSpan(clickableSpan,
|
||||
@@ -288,14 +299,10 @@ public class CyanogenSettingsPage extends SetupPage {
|
||||
TextView metrics = (TextView) mRootView.findViewById(R.id.enable_metrics_summary);
|
||||
metrics.setText(metricsSpan);
|
||||
mMetrics = (CheckBox) mRootView.findViewById(R.id.enable_metrics_checkbox);
|
||||
boolean metricsChecked =
|
||||
!myPageBundle.containsKey(KEY_SEND_METRICS) || myPageBundle
|
||||
.getBoolean(KEY_SEND_METRICS);
|
||||
mMetrics.setChecked(metricsChecked);
|
||||
myPageBundle.putBoolean(KEY_SEND_METRICS, metricsChecked);
|
||||
|
||||
mDefaultThemeRow = mRootView.findViewById(R.id.theme);
|
||||
if (hideThemeSwitch(getActivity())) {
|
||||
mHideThemeRow = hideThemeSwitch(getActivity());
|
||||
if (mHideThemeRow) {
|
||||
mDefaultThemeRow.setVisibility(View.GONE);
|
||||
} else {
|
||||
mDefaultThemeRow.setOnClickListener(mDefaultThemeClickListener);
|
||||
@@ -311,11 +318,6 @@ public class CyanogenSettingsPage extends SetupPage {
|
||||
TextView theme = (TextView) mRootView.findViewById(R.id.enable_theme_summary);
|
||||
theme.setText(themeSpan);
|
||||
mDefaultTheme = (CheckBox) mRootView.findViewById(R.id.enable_theme_checkbox);
|
||||
boolean themesChecked =
|
||||
!myPageBundle.containsKey(KEY_APPLY_DEFAULT_THEME) || myPageBundle
|
||||
.getBoolean(KEY_APPLY_DEFAULT_THEME);
|
||||
mDefaultTheme.setChecked(themesChecked);
|
||||
myPageBundle.putBoolean(KEY_APPLY_DEFAULT_THEME, themesChecked);
|
||||
}
|
||||
|
||||
mNavKeysRow = mRootView.findViewById(R.id.nav_keys);
|
||||
@@ -327,7 +329,8 @@ public class CyanogenSettingsPage extends SetupPage {
|
||||
needsNavBar = windowManager.needsNavigationBar();
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
if (hideKeyDisabler(getActivity()) || needsNavBar) {
|
||||
mHideNavKeysRow = hideKeyDisabler(getActivity());
|
||||
if (mHideNavKeysRow || needsNavBar) {
|
||||
mNavKeysRow.setVisibility(View.GONE);
|
||||
} else {
|
||||
boolean navKeysDisabled =
|
||||
@@ -346,15 +349,11 @@ public class CyanogenSettingsPage extends SetupPage {
|
||||
0, useSecureSms.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
TextView secureSms = (TextView) mRootView.findViewById(R.id.secure_sms_summary);
|
||||
secureSms.setText(secureSmsSpan);
|
||||
if (hideWhisperPush(getActivity())) {
|
||||
mHideSmsRow = hideWhisperPush(getActivity());
|
||||
if (mHideSmsRow) {
|
||||
mSecureSmsRow.setVisibility(View.GONE);
|
||||
}
|
||||
mSecureSms = (CheckBox) mRootView.findViewById(R.id.secure_sms_checkbox);
|
||||
boolean smsChecked = myPageBundle.containsKey(KEY_REGISTER_WHISPERPUSH) ?
|
||||
myPageBundle.getBoolean(KEY_REGISTER_WHISPERPUSH) :
|
||||
false;
|
||||
mSecureSms.setChecked(smsChecked);
|
||||
myPageBundle.putBoolean(KEY_REGISTER_WHISPERPUSH, smsChecked);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -366,15 +365,53 @@ public class CyanogenSettingsPage extends SetupPage {
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
updateDisableNavkeysOption();
|
||||
updateMetricsOption();
|
||||
updateThemeOption();
|
||||
updateSmsOption();
|
||||
}
|
||||
|
||||
private void updateMetricsOption() {
|
||||
final Bundle myPageBundle = mPage.getData();
|
||||
boolean metricsChecked =
|
||||
!myPageBundle.containsKey(KEY_SEND_METRICS) || myPageBundle
|
||||
.getBoolean(KEY_SEND_METRICS);
|
||||
mMetrics.setChecked(metricsChecked);
|
||||
myPageBundle.putBoolean(KEY_SEND_METRICS, metricsChecked);
|
||||
}
|
||||
|
||||
private void updateThemeOption() {
|
||||
if (!mHideThemeRow) {
|
||||
final Bundle myPageBundle = mPage.getData();
|
||||
boolean themesChecked =
|
||||
!myPageBundle.containsKey(KEY_APPLY_DEFAULT_THEME) || myPageBundle
|
||||
.getBoolean(KEY_APPLY_DEFAULT_THEME);
|
||||
mDefaultTheme.setChecked(themesChecked);
|
||||
myPageBundle.putBoolean(KEY_APPLY_DEFAULT_THEME, themesChecked);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateSmsOption() {
|
||||
if (!mHideSmsRow) {
|
||||
final Bundle myPageBundle = mPage.getData();
|
||||
boolean smsChecked = myPageBundle.containsKey(KEY_REGISTER_WHISPERPUSH) ?
|
||||
myPageBundle.getBoolean(KEY_REGISTER_WHISPERPUSH) :
|
||||
false;
|
||||
mSecureSms.setChecked(smsChecked);
|
||||
myPageBundle.putBoolean(KEY_REGISTER_WHISPERPUSH, smsChecked);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateDisableNavkeysOption() {
|
||||
boolean enabled = Settings.Secure.getInt(getActivity().getContentResolver(),
|
||||
Settings.Secure.DEV_FORCE_SHOW_NAVBAR, 0) != 0;
|
||||
boolean checked = mPage.getData().containsKey(KEY_ENABLE_NAV_KEYS) ?
|
||||
mPage.getData().getBoolean(KEY_ENABLE_NAV_KEYS) :
|
||||
enabled;
|
||||
mNavKeys.setChecked(checked);
|
||||
if (!mHideNavKeysRow) {
|
||||
final Bundle myPageBundle = mPage.getData();
|
||||
boolean enabled = Settings.Secure.getInt(getActivity().getContentResolver(),
|
||||
Settings.Secure.DEV_FORCE_SHOW_NAVBAR, 0) != 0;
|
||||
boolean checked = myPageBundle.containsKey(KEY_ENABLE_NAV_KEYS) ?
|
||||
myPageBundle.getBoolean(KEY_ENABLE_NAV_KEYS) :
|
||||
enabled;
|
||||
mNavKeys.setChecked(checked);
|
||||
myPageBundle.putBoolean(KEY_ENABLE_NAV_KEYS, checked);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -114,14 +114,10 @@ public class GmsAccountPage extends SetupPage {
|
||||
getCallbacks().onPreviousPage();
|
||||
} else {
|
||||
super.doLoadAction(fragmentManager, action);
|
||||
launchGmsAccountSetup();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFragmentReady() {
|
||||
launchGmsAccountSetup();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS) {
|
||||
@@ -180,31 +176,33 @@ public class GmsAccountPage extends SetupPage {
|
||||
private void launchGmsRestorePage() {
|
||||
try {
|
||||
// GMS can disable this after logging in sometimes
|
||||
SetupWizardUtils.enableGMSSetupWizard(mContext);
|
||||
Intent intent = new Intent(ACTION_RESTORE);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_ALLOW_SKIP, true);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_USE_IMMERSIVE, true);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_FIRST_RUN, true);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_THEME, SetupWizardApp.EXTRA_MATERIAL_LIGHT);
|
||||
// XXX: Fool G's setup wizard into thinking it is their setup wizard.
|
||||
// This is necessary to get the material theme on the restore page.
|
||||
intent.putExtra("scriptUri", RESTORE_WIZARD_SCRIPT);
|
||||
ActivityOptions options =
|
||||
ActivityOptions.makeCustomAnimation(mContext,
|
||||
android.R.anim.fade_in,
|
||||
android.R.anim.fade_out);
|
||||
SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
|
||||
SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
|
||||
SetupStats.Label.PAGE, SetupStats.Label.RESTORE);
|
||||
mFragment.startActivityForResult(
|
||||
intent,
|
||||
SetupWizardApp.REQUEST_CODE_RESTORE_GMS, options.toBundle());
|
||||
if (SetupWizardUtils.enableGMSSetupWizard(mContext)) {
|
||||
Intent intent = new Intent(ACTION_RESTORE);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_ALLOW_SKIP, true);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_USE_IMMERSIVE, true);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_FIRST_RUN, true);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_THEME, SetupWizardApp.EXTRA_MATERIAL_LIGHT);
|
||||
// XXX: Fool G's setup wizard into thinking it is their setup wizard.
|
||||
// This is necessary to get the material theme on the restore page.
|
||||
intent.putExtra("scriptUri", RESTORE_WIZARD_SCRIPT);
|
||||
ActivityOptions options =
|
||||
ActivityOptions.makeCustomAnimation(mContext,
|
||||
android.R.anim.fade_in,
|
||||
android.R.anim.fade_out);
|
||||
SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
|
||||
SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
|
||||
SetupStats.Label.PAGE, SetupStats.Label.RESTORE);
|
||||
mFragment.startActivityForResult(
|
||||
intent,
|
||||
SetupWizardApp.REQUEST_CODE_RESTORE_GMS, options.toBundle());
|
||||
return;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
// XXX: In open source, we don't know what gms version a user has.
|
||||
// Bail if the restore activity is not found.
|
||||
getCallbacks().onNextPage();
|
||||
}
|
||||
getCallbacks().onNextPage();
|
||||
}
|
||||
|
||||
private void launchGmsAccountSetup() {
|
||||
@@ -217,6 +215,7 @@ public class GmsAccountPage extends SetupPage {
|
||||
bundle, null, new AccountManagerCallback<Bundle>() {
|
||||
@Override
|
||||
public void run(AccountManagerFuture<Bundle> future) {
|
||||
boolean error = false;
|
||||
try {
|
||||
Bundle result = future.getResult();
|
||||
Intent intent = result
|
||||
@@ -225,20 +224,23 @@ public class GmsAccountPage extends SetupPage {
|
||||
ActivityOptions.makeCustomAnimation(mContext,
|
||||
android.R.anim.fade_in,
|
||||
android.R.anim.fade_out);
|
||||
if (!mFragment.isDetached()) {
|
||||
SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
|
||||
SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
|
||||
SetupStats.Label.PAGE, SetupStats.Label.GMS_ACCOUNT);
|
||||
mFragment.startActivityForResult(intent,
|
||||
SetupWizardApp.REQUEST_CODE_SETUP_GMS, options.toBundle());
|
||||
} else {
|
||||
if (getCallbacks().isCurrentPage(GmsAccountPage.this)) {
|
||||
getCallbacks().onNextPage();
|
||||
}
|
||||
}
|
||||
SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
|
||||
SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
|
||||
SetupStats.Label.PAGE, SetupStats.Label.GMS_ACCOUNT);
|
||||
mFragment.startActivityForResult(intent,
|
||||
SetupWizardApp.REQUEST_CODE_SETUP_GMS, options.toBundle());
|
||||
} catch (OperationCanceledException e) {
|
||||
error = true;
|
||||
} catch (IOException e) {
|
||||
error = true;
|
||||
} catch (AuthenticatorException e) {
|
||||
Log.e(TAG, "Error launching gms account", e);
|
||||
error = true;
|
||||
} finally {
|
||||
if (error && getCallbacks().
|
||||
isCurrentPage(GmsAccountPage.this)) {
|
||||
getCallbacks().onNextPage();
|
||||
}
|
||||
}
|
||||
}
|
||||
}, null);
|
||||
|
@@ -20,6 +20,7 @@ import android.app.Fragment;
|
||||
import android.app.FragmentManager;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.telephony.PhoneStateListener;
|
||||
import android.telephony.ServiceState;
|
||||
import android.telephony.SignalStrength;
|
||||
@@ -27,11 +28,15 @@ import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.Switch;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.cyanogenmod.setupwizard.R;
|
||||
import com.cyanogenmod.setupwizard.SetupWizardApp;
|
||||
import com.cyanogenmod.setupwizard.cmstats.SetupStats;
|
||||
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
|
||||
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
|
||||
@@ -69,6 +74,8 @@ public class MobileDataPage extends SetupPage {
|
||||
|
||||
public static class MobileDataFragment extends SetupPageFragment {
|
||||
|
||||
private ViewGroup mPageView;
|
||||
private ProgressBar mProgressBar;
|
||||
private View mEnableDataRow;
|
||||
private Switch mEnableMobileData;
|
||||
private ImageView mSignalView;
|
||||
@@ -80,26 +87,36 @@ public class MobileDataPage extends SetupPage {
|
||||
|
||||
private boolean mIsAttached = false;
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private final Handler mHandler = new Handler();
|
||||
|
||||
private final Runnable mRadioReadyRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
hideWaitForRadio();
|
||||
}
|
||||
};
|
||||
|
||||
private PhoneStateListener mPhoneStateListener =
|
||||
new PhoneStateListener(SubscriptionManager.getDefaultDataSubId()) {
|
||||
|
||||
@Override
|
||||
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
|
||||
if (mIsAttached) {
|
||||
mSignalStrength = signalStrength;
|
||||
updateSignalStrength();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
|
||||
mSignalStrength = signalStrength;
|
||||
updateSignalStrength();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceStateChanged(ServiceState state) {
|
||||
if (mIsAttached) {
|
||||
mServiceState = state;
|
||||
updateSignalStrength();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onServiceStateChanged(ServiceState state) {
|
||||
if (SetupWizardUtils.isRadioReady(mContext, state)) {
|
||||
hideWaitForRadio();
|
||||
}
|
||||
mServiceState = state;
|
||||
updateSignalStrength();
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
private View.OnClickListener mEnableDataClickListener = new View.OnClickListener() {
|
||||
@Override
|
||||
@@ -115,6 +132,8 @@ public class MobileDataPage extends SetupPage {
|
||||
|
||||
@Override
|
||||
protected void initializePage() {
|
||||
mPageView = (ViewGroup)mRootView.findViewById(R.id.page_view);
|
||||
mProgressBar = (ProgressBar) mRootView.findViewById(R.id.progress);
|
||||
mEnableDataRow = mRootView.findViewById(R.id.data);
|
||||
mEnableDataRow.setOnClickListener(mEnableDataClickListener);
|
||||
mEnableMobileData = (Switch) mRootView.findViewById(R.id.data_switch);
|
||||
@@ -133,12 +152,19 @@ public class MobileDataPage extends SetupPage {
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
mIsAttached = true;
|
||||
mContext = getActivity().getApplicationContext();
|
||||
mPhone = (TelephonyManager)getActivity().getSystemService(Context.TELEPHONY_SERVICE);
|
||||
mPhone.listen(mPhoneStateListener,
|
||||
PhoneStateListener.LISTEN_SERVICE_STATE
|
||||
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
|
||||
updateDataConnectionStatus();
|
||||
updateSignalStrength();
|
||||
if (SetupWizardUtils.isRadioReady(mContext, null)) {
|
||||
hideWaitForRadio();
|
||||
} else if (mTitleView != null) {
|
||||
mTitleView.setText(R.string.loading);
|
||||
mHandler.postDelayed(mRadioReadyRunnable, SetupWizardApp.RADIO_READY_TIMEOUT);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -148,6 +174,19 @@ public class MobileDataPage extends SetupPage {
|
||||
mPhone.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
|
||||
}
|
||||
|
||||
private void hideWaitForRadio() {
|
||||
if (getUserVisibleHint() && mProgressBar.isShown()) {
|
||||
mHandler.removeCallbacks(mRadioReadyRunnable);
|
||||
if (mTitleView != null) {
|
||||
mTitleView.setText(mPage.getTitleResId());
|
||||
}
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
mPageView.setVisibility(View.VISIBLE);
|
||||
mPageView.startAnimation(
|
||||
AnimationUtils.loadAnimation(getActivity(), R.anim.translucent_enter));
|
||||
}
|
||||
}
|
||||
|
||||
private void updateCarrierText() {
|
||||
if (mIsAttached) {
|
||||
String name =
|
||||
|
@@ -19,11 +19,14 @@ package com.cyanogenmod.setupwizard.setup;
|
||||
import android.app.Fragment;
|
||||
import android.app.FragmentManager;
|
||||
import android.app.backup.IBackupManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.ContentQueryMap;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.location.LocationManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
@@ -32,6 +35,7 @@ import android.text.SpannableString;
|
||||
import android.text.Spanned;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.text.style.ClickableSpan;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.TextView;
|
||||
@@ -136,18 +140,13 @@ public class OtherSettingsPage extends SetupPage {
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
mContentResolver = getActivity().getContentResolver();
|
||||
mBackupManager = IBackupManager.Stub.asInterface(
|
||||
ServiceManager.getService(Context.BACKUP_SERVICE));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initializePage() {
|
||||
final boolean hasGms = SetupWizardUtils.hasGMS(getActivity());
|
||||
final boolean hasTelephony = SetupWizardUtils.hasTelephony(getActivity());
|
||||
mContentResolver = getActivity().getContentResolver();
|
||||
mBackupManager = IBackupManager.Stub.asInterface(
|
||||
ServiceManager.getService(Context.BACKUP_SERVICE));
|
||||
TextView summaryView = (TextView) mRootView.findViewById(android.R.id.summary);
|
||||
if (hasGms) {
|
||||
String privacy_policy = getString(R.string.services_privacy_policy);
|
||||
@@ -156,10 +155,13 @@ public class OtherSettingsPage extends SetupPage {
|
||||
ClickableSpan clickableSpan = new ClickableSpan() {
|
||||
@Override
|
||||
public void onClick(View textView) {
|
||||
WebViewDialogFragment.newInstance()
|
||||
.setUri(PRIVACY_POLICY_URI)
|
||||
.show(getActivity().getFragmentManager(),
|
||||
WebViewDialogFragment.TAG);
|
||||
final Intent intent = new Intent(SetupWizardApp.ACTION_VIEW_LEGAL);
|
||||
intent.setData(Uri.parse(PRIVACY_POLICY_URI));
|
||||
try {
|
||||
getActivity().startActivity(intent);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Unable to start activity " + intent.toString());
|
||||
}
|
||||
}
|
||||
};
|
||||
ss.setSpan(clickableSpan,
|
||||
@@ -275,6 +277,10 @@ public class OtherSettingsPage extends SetupPage {
|
||||
SetupStats.Action.ENABLE_NETWORK_LOCATION,
|
||||
SetupStats.Label.CHECKED, String.valueOf(networkEnabled));
|
||||
mLocationAccess.setChecked(gpsEnabled || networkEnabled);
|
||||
mGps.setEnabled(gpsEnabled || networkEnabled);
|
||||
mGpsRow.setEnabled(gpsEnabled || networkEnabled);
|
||||
mNetwork.setEnabled(gpsEnabled || networkEnabled);
|
||||
mNetworkRow.setEnabled(gpsEnabled || networkEnabled);
|
||||
}
|
||||
|
||||
private void onToggleLocationAccess(boolean checked) {
|
||||
|
@@ -43,7 +43,6 @@ public interface Page {
|
||||
public boolean doPreviousAction();
|
||||
public boolean doNextAction();
|
||||
public void doLoadAction(FragmentManager fragmentManager, int action);
|
||||
public void onFragmentReady();
|
||||
public void onFinishSetup();
|
||||
public boolean onActivityResult(int requestCode, int resultCode, Intent data);
|
||||
public SetupDataCallbacks getCallbacks();
|
||||
|
@@ -96,9 +96,6 @@ public abstract class SetupPage implements Page {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFragmentReady(){}
|
||||
|
||||
@Override
|
||||
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
return false;
|
||||
|
@@ -136,8 +136,10 @@ public class WifiSetupPage extends SetupPage {
|
||||
return R.string.loading;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onFragmentReady() {
|
||||
public void doLoadAction(FragmentManager fragmentManager, int action) {
|
||||
super.doLoadAction(fragmentManager, action);
|
||||
launchWifiSetup();
|
||||
}
|
||||
|
||||
@@ -220,6 +222,9 @@ public class WifiSetupPage extends SetupPage {
|
||||
private void launchWifiSetup() {
|
||||
SetupWizardUtils.tryEnablingWifi(mContext);
|
||||
Intent intent = new Intent(SetupWizardApp.ACTION_SETUP_WIFI);
|
||||
if (SetupWizardUtils.hasLeanback(mContext)) {
|
||||
intent.setComponent(SetupWizardUtils.mTvwifisettingsActivity);
|
||||
}
|
||||
intent.putExtra(SetupWizardApp.EXTRA_FIRST_RUN, true);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_ALLOW_SKIP, true);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_USE_IMMERSIVE, true);
|
||||
|
@@ -16,9 +16,39 @@
|
||||
|
||||
package com.cyanogenmod.setupwizard.ui;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.cyanogenmod.setupwizard.R;
|
||||
|
||||
public class LoadingFragment extends SetupPageFragment {
|
||||
|
||||
private StartActivityForResultRunnable mStartActivityForResultRunnable;
|
||||
|
||||
@Override
|
||||
public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
|
||||
if (isResumed()) {
|
||||
super.startActivityForResult(intent, requestCode, options);
|
||||
} else {
|
||||
mStartActivityForResultRunnable =
|
||||
new StartActivityForResultRunnable(this, intent, requestCode, options);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (mStartActivityForResultRunnable != null) {
|
||||
mStartActivityForResultRunnable.run();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
mStartActivityForResultRunnable = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initializePage() {}
|
||||
|
||||
@@ -26,4 +56,26 @@ public class LoadingFragment extends SetupPageFragment {
|
||||
protected int getLayoutResource() {
|
||||
return R.layout.setup_loading_page;
|
||||
}
|
||||
|
||||
private static class StartActivityForResultRunnable implements Runnable {
|
||||
|
||||
private final LoadingFragment mLoadingFragment;
|
||||
private final Intent mIntent;
|
||||
private final int mRequestCode;
|
||||
private final Bundle mOptions;
|
||||
|
||||
private StartActivityForResultRunnable(LoadingFragment loadingFragment,
|
||||
Intent intent, int requestCode, Bundle options) {
|
||||
mLoadingFragment = loadingFragment;
|
||||
mIntent = intent;
|
||||
mRequestCode = requestCode;
|
||||
mOptions = options;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
mLoadingFragment.startActivityForResult(mIntent, mRequestCode, mOptions);
|
||||
mLoadingFragment.mStartActivityForResultRunnable = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -43,11 +43,6 @@ public abstract class SetupPageFragment extends Fragment {
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setRetainInstance(true);
|
||||
Bundle args = getArguments();
|
||||
mKey = args.getString(Page.KEY_PAGE_ARGUMENT);
|
||||
if (mKey == null) {
|
||||
throw new IllegalArgumentException("No KEY_PAGE_ARGUMENT given");
|
||||
}
|
||||
SetupStats.addEvent(SetupStats.Categories.PAGE_LOAD, SetupStats.Action.PAGE_LOADED,
|
||||
mKey, String.valueOf(System.currentTimeMillis()));
|
||||
}
|
||||
@@ -58,25 +53,18 @@ public abstract class SetupPageFragment extends Fragment {
|
||||
mRootView = inflater.inflate(getLayoutResource(), container, false);
|
||||
mTitleView = (TextView) mRootView.findViewById(android.R.id.title);
|
||||
mHeaderView = (ViewGroup ) mRootView.findViewById(R.id.header);
|
||||
getActivity().startPostponedEnterTransition();
|
||||
return mRootView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
mPage = mCallbacks.getPage(mKey);
|
||||
if (mTitleView != null) {
|
||||
mTitleView.setText(mPage.getTitleResId());
|
||||
}
|
||||
initializePage();
|
||||
mPage.onFragmentReady();
|
||||
mCallbacks.onPageLoaded(mPage);
|
||||
return mRootView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Activity activity) {
|
||||
super.onAttach(activity);
|
||||
Bundle args = getArguments();
|
||||
mKey = args.getString(Page.KEY_PAGE_ARGUMENT);
|
||||
if (mKey == null) {
|
||||
throw new IllegalArgumentException("No KEY_PAGE_ARGUMENT given");
|
||||
}
|
||||
if (!(activity instanceof SetupDataCallbacks)) {
|
||||
throw new ClassCastException("Activity implement SetupDataCallbacks");
|
||||
}
|
||||
@@ -89,8 +77,24 @@ public abstract class SetupPageFragment extends Fragment {
|
||||
mCallbacks = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
mPage = mCallbacks.getPage(mKey);
|
||||
if (mTitleView != null) {
|
||||
mTitleView.setText(mPage.getTitleResId());
|
||||
}
|
||||
mCallbacks.onPageLoaded(mPage);
|
||||
getActivity().startPostponedEnterTransition();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
// On low mem devices, this fragment might get destroyed by
|
||||
// fragment manager while we are in another activity.
|
||||
if (mPage == null) {
|
||||
mPage = mCallbacks.getPage(mKey);
|
||||
}
|
||||
mPage.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
||||
|
@@ -56,6 +56,12 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
|
||||
|
||||
private static final String TAG = SetupWizardActivity.class.getSimpleName();
|
||||
|
||||
private static final int UI_FLAGS = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_IMMERSIVE
|
||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
|
||||
|
||||
private View mRootView;
|
||||
private View mButtonBar;
|
||||
private Button mNextButton;
|
||||
@@ -77,12 +83,25 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
|
||||
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
final View decorView = getWindow().getDecorView();
|
||||
decorView.setSystemUiVisibility(UI_FLAGS);
|
||||
decorView.setOnSystemUiVisibilityChangeListener(
|
||||
new View.OnSystemUiVisibilityChangeListener() {
|
||||
|
||||
@Override
|
||||
public void onSystemUiVisibilityChange(int visibility) {
|
||||
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
|
||||
decorView.setSystemUiVisibility(UI_FLAGS);
|
||||
}
|
||||
}
|
||||
});
|
||||
if (sLaunchTime == 0) {
|
||||
SetupStats.addEvent(SetupStats.Categories.APP_LAUNCH, TAG);
|
||||
sLaunchTime = System.nanoTime();
|
||||
}
|
||||
setContentView(R.layout.setup_main);
|
||||
mRootView = findViewById(R.id.root);
|
||||
mRootView.setSystemUiVisibility(UI_FLAGS);
|
||||
mReveal = (ImageView)mRootView.findViewById(R.id.reveal);
|
||||
mButtonBar = findViewById(R.id.button_bar);
|
||||
mFinishingProgressBar = (ProgressBar)findViewById(R.id.finishing_bar);
|
||||
@@ -124,7 +143,9 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
|
||||
mRootView.setOnTouchListener(new View.OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
return mEnableAccessibilityController.onInterceptTouchEvent(event);
|
||||
return
|
||||
mEnableAccessibilityController.onInterceptTouchEvent(event) &
|
||||
mEnableAccessibilityController.onTouchEvent(event);
|
||||
}
|
||||
});
|
||||
registerReceiver(mSetupData, mSetupData.getIntentFilter());
|
||||
@@ -132,10 +153,8 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_IMMERSIVE
|
||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
|
||||
final View decorView = getWindow().getDecorView();
|
||||
decorView.setSystemUiVisibility(UI_FLAGS);
|
||||
super.onResume();
|
||||
if (mSetupData.isFinished()) {
|
||||
mHandler.postDelayed(new Runnable() {
|
||||
@@ -273,7 +292,7 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
|
||||
|
||||
@Override
|
||||
public void onFinish() {
|
||||
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
|
||||
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
|
||||
Animation fadeOut = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
|
||||
mNextButton.startAnimation(fadeOut);
|
||||
mNextButton.setVisibility(View.INVISIBLE);
|
||||
|
@@ -47,8 +47,8 @@ import java.util.List;
|
||||
|
||||
public class EnableAccessibilityController {
|
||||
|
||||
private static final int SPEAK_WARNING_DELAY_MILLIS = 2000;
|
||||
private static final int ENABLE_ACCESSIBILITY_DELAY_MILLIS = 6000;
|
||||
private static final int SPEAK_WARNING_DELAY_MILLIS = 5000;
|
||||
private static final int ENABLE_ACCESSIBILITY_DELAY_MILLIS = 12000;
|
||||
|
||||
public static final int MESSAGE_SPEAK_WARNING = 1;
|
||||
public static final int MESSAGE_SPEAK_ENABLE_CANCELED = 2;
|
||||
@@ -130,7 +130,7 @@ public class EnableAccessibilityController {
|
||||
// accessibility service, then we have nothing to do.
|
||||
if (accessibilityManager.isEnabled()
|
||||
&& !accessibilityManager.getEnabledAccessibilityServiceList(
|
||||
AccessibilityServiceInfo.FEEDBACK_SPOKEN).isEmpty()) {
|
||||
AccessibilityServiceInfo.FEEDBACK_SPOKEN).isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ public class EnableAccessibilityController {
|
||||
mHandler.sendEmptyMessageDelayed(MESSAGE_SPEAK_WARNING,
|
||||
SPEAK_WARNING_DELAY_MILLIS);
|
||||
mHandler.sendEmptyMessageDelayed(MESSAGE_ENABLE_ACCESSIBILITY,
|
||||
ENABLE_ACCESSIBILITY_DELAY_MILLIS);
|
||||
ENABLE_ACCESSIBILITY_DELAY_MILLIS);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -188,8 +188,14 @@ public class EnableAccessibilityController {
|
||||
if (pointerCount > 2) {
|
||||
cancel();
|
||||
}
|
||||
} break;
|
||||
}
|
||||
break;
|
||||
case MotionEvent.ACTION_MOVE: {
|
||||
//We only care about a 2 fingered move
|
||||
if (pointerCount < 2) {
|
||||
cancel();
|
||||
return false;
|
||||
}
|
||||
final float firstPointerMove = MathUtils.dist(event.getX(0),
|
||||
event.getY(0), mFirstPointerDownX, mFirstPointerDownY);
|
||||
if (Math.abs(firstPointerMove) > mTouchSlop) {
|
||||
@@ -200,11 +206,13 @@ public class EnableAccessibilityController {
|
||||
if (Math.abs(secondPointerMove) > mTouchSlop) {
|
||||
cancel();
|
||||
}
|
||||
} break;
|
||||
}
|
||||
break;
|
||||
case MotionEvent.ACTION_POINTER_UP:
|
||||
case MotionEvent.ACTION_CANCEL: {
|
||||
cancel();
|
||||
} break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -287,4 +295,4 @@ public class EnableAccessibilityController {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -27,12 +27,12 @@ import android.net.NetworkInfo;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
import android.telephony.ServiceState;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.internal.telephony.SubscriptionController;
|
||||
import com.cyanogenmod.setupwizard.SetupWizardApp;
|
||||
|
||||
import com.google.android.gms.common.ConnectionResult;
|
||||
import com.google.android.gms.common.GooglePlayServicesUtil;
|
||||
@@ -113,20 +113,30 @@ public class SetupWizardUtils {
|
||||
public static boolean isSimMissing(Context context) {
|
||||
TelephonyManager tm =
|
||||
(TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
SubscriptionController subscriptionController = SubscriptionController.getInstance();
|
||||
if (subscriptionController != null) {
|
||||
int simCount = subscriptionController.getActiveSubInfoCount();
|
||||
for (int i = 0; i < simCount; i++) {
|
||||
int simState = tm.getSimState(i);
|
||||
if (simState != TelephonyManager.SIM_STATE_ABSENT &&
|
||||
simState != TelephonyManager.SIM_STATE_UNKNOWN) {
|
||||
return false;
|
||||
}
|
||||
int simCount = SubscriptionManager.from(context).getDefaultDataPhoneId();
|
||||
for (int i = 0; i < simCount; i++) {
|
||||
int simState = tm.getSimState(i);
|
||||
if (simState != TelephonyManager.SIM_STATE_ABSENT &&
|
||||
simState != TelephonyManager.SIM_STATE_UNKNOWN) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean isRadioReady(Context context, ServiceState state) {
|
||||
final SetupWizardApp setupWizardApp = (SetupWizardApp)context.getApplicationContext();
|
||||
if (setupWizardApp.isRadioReady()) {
|
||||
return true;
|
||||
} else {
|
||||
final boolean ready = state != null
|
||||
&& state.getState() != ServiceState.STATE_POWER_OFF;
|
||||
setupWizardApp.setRadioReady(ready);
|
||||
return ready;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static boolean isGuestUser(Context context) {
|
||||
UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
|
||||
return userManager.isGuestUser();
|
||||
@@ -164,7 +174,7 @@ public class SetupWizardUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static void enableGMSSetupWizard(Context context) {
|
||||
public static boolean enableGMSSetupWizard(Context context) {
|
||||
try {
|
||||
PackageInfo packageInfo = context.getPackageManager()
|
||||
.getPackageInfo(GOOGLE_SETUPWIZARD_PACKAGE,
|
||||
@@ -173,8 +183,10 @@ public class SetupWizardUtils {
|
||||
enableComponentArray(context, packageInfo.activities);
|
||||
enableComponentArray(context, packageInfo.services);
|
||||
enableComponentArray(context, packageInfo.receivers);
|
||||
return true;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
Log.e(TAG, "Unable to disable GMS");
|
||||
Log.e(TAG, "Unable to enable GMS");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,4 +225,17 @@ public class SetupWizardUtils {
|
||||
context.getPackageManager().setComponentEnabledSetting(component,
|
||||
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
|
||||
}
|
||||
|
||||
public static boolean hasLeanback(Context context) {
|
||||
PackageManager packageManager = context.getPackageManager();
|
||||
return packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK);
|
||||
}
|
||||
|
||||
public static final ComponentName mTvwifisettingsActivity =
|
||||
new ComponentName("com.android.tv.settings",
|
||||
"com.android.tv.settings.connectivity.setup.WifiSetupActivity");
|
||||
|
||||
public static final ComponentName mTvAddAccessorySettingsActivity =
|
||||
new ComponentName("com.android.tv.settings",
|
||||
"com.android.tv.settings.accessories.AddAccessoryActivity");
|
||||
}
|
||||
|
Reference in New Issue
Block a user