Compare commits
47 Commits
cm-12.0
...
staging/fp
Author | SHA1 | Date | |
---|---|---|---|
|
9f21ed5e28 | ||
|
616db63139 | ||
|
497ddd6b71 | ||
|
ffc0dbd2fb | ||
|
c5e926d67f | ||
|
1fc47a0a79 | ||
|
761381fd01 | ||
|
b7c51828ed | ||
|
82bbed9d9c | ||
|
b94d4434d5 | ||
|
a9d0039761 | ||
|
b2ceb1f8bb | ||
|
3d884cef0e | ||
|
bfd3abd0c7 | ||
|
7710855b72 | ||
|
4d08b90df3 | ||
|
b076a55991 | ||
|
ac84dc0fce | ||
|
676081a4ad | ||
|
9dd952e3f6 | ||
|
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 | ||
|
98b5eb9958 | ||
|
c225cd58f7 |
@@ -15,6 +15,7 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
package="com.cyanogenmod.setupwizard"
|
||||
android:versionCode="3"
|
||||
android:sharedUserId="android.uid.system">
|
||||
@@ -45,7 +46,9 @@
|
||||
<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" />
|
||||
<uses-permission android:name="com.cyanogen.permission.REQUEST_KILL_SWITCH_OP" />
|
||||
|
||||
<permission
|
||||
android:name="cyanogenmod.permission.PROTECTED_APP"
|
||||
@@ -53,7 +56,8 @@
|
||||
|
||||
<permission
|
||||
android:name="cyanogenmod.permission.FINISH_SETUP"
|
||||
android:protectionLevel="signatureOrSystem" />
|
||||
android:protectionLevel="signatureOrSystem"
|
||||
androidprv:allowViaWhitelist="true" />
|
||||
|
||||
<permission android:name="org.whispersystems.whisperpush.permissions.REGISTER"
|
||||
android:protectionLevel="signature" />
|
||||
@@ -66,6 +70,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 +80,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">
|
||||
|
||||
@@ -88,5 +93,12 @@
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<receiver android:name=".setup.FinishSetupReceiver"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="com.cyanogenmod.setupwizard.ACTION_FINISH_SETUPWIZARD" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
</application>
|
||||
</manifest>
|
||||
|
BIN
res/drawable-hdpi/cross.png
Executable file
After Width: | Height: | Size: 346 B |
BIN
res/drawable-hdpi/tick.png
Executable file
After Width: | Height: | Size: 312 B |
BIN
res/drawable-mdpi/cross.png
Executable file
After Width: | Height: | Size: 253 B |
BIN
res/drawable-mdpi/tick.png
Executable file
After Width: | Height: | Size: 236 B |
BIN
res/drawable-xhdpi/cross.png
Executable file
After Width: | Height: | Size: 422 B |
BIN
res/drawable-xhdpi/tick.png
Executable file
After Width: | Height: | Size: 371 B |
BIN
res/drawable-xxhdpi/cross.png
Executable file
After Width: | Height: | Size: 554 B |
BIN
res/drawable-xxhdpi/tick.png
Executable file
After Width: | Height: | Size: 477 B |
BIN
res/drawable-xxxhdpi/cross.png
Executable file
After Width: | Height: | Size: 692 B |
BIN
res/drawable-xxxhdpi/tick.png
Executable file
After Width: | Height: | Size: 572 B |
26
res/drawable/ic_check_mark.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="#7ED321"
|
||||
android:pathData="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z" />
|
||||
</vector>
|
@@ -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"
|
||||
|
@@ -50,6 +50,58 @@
|
||||
android:text="@string/services_explanation"
|
||||
android:clickable="true"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/killswitch"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="@dimen/location_margin_left"
|
||||
android:paddingRight="@dimen/content_margin_right"
|
||||
android:background="?android:attr/selectableItemBackground">
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/killswitch_check"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="@dimen/location_text_margin_left"
|
||||
android:layout_gravity="center|top"
|
||||
android:src="@drawable/tick"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0px"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="top"
|
||||
android:layout_marginLeft="@dimen/location_text_margin_left"
|
||||
android:layout_marginRight="@dimen/location_text_margin_right"
|
||||
android:paddingBottom="@dimen/content_margin_bottom">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/killswitch_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="15sp"
|
||||
android:lineSpacingExtra="@dimen/setup_line_spacing"
|
||||
android:fadingEdge="horizontal"
|
||||
android:text="@string/setup_require_cyanogen_label"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/killswitch_summary"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/killswitch_title"
|
||||
android:layout_alignStart="@+id/killswitch_title"
|
||||
android:textSize="15sp"
|
||||
android:lineSpacingExtra="@dimen/setup_line_spacing"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:text="@string/setup_device_locked_instructions"/>
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Whether or not to enable metrics -->
|
||||
<LinearLayout
|
||||
android:id="@+id/metrics"
|
||||
|
90
res/layout/setup_fingerprint.xml
Normal file
@@ -0,0 +1,90 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<include layout="@layout/header" />
|
||||
|
||||
<FrameLayout android:id="@+id/page"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1">
|
||||
|
||||
<ScrollView android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fillViewport="true">
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/PageContent">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/PageSummaryText"
|
||||
android:textSize="16sp"
|
||||
android:paddingLeft="@dimen/content_margin_left"
|
||||
android:layout_marginBottom="@dimen/summary_margin_bottom"
|
||||
android:paddingRight="@dimen/location_text_margin_right"
|
||||
android:text="@string/fingerprint_setup_summary" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:paddingLeft="@dimen/content_margin_left"
|
||||
android:paddingRight="@dimen/location_text_margin_right"
|
||||
android:drawableStart="@drawable/ic_check_mark"
|
||||
android:drawablePadding="24dp"
|
||||
android:gravity="center_vertical"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:text="@string/fingerprint_setup_backup_lock_method"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:paddingLeft="@dimen/content_margin_left"
|
||||
android:paddingRight="@dimen/location_text_margin_right"
|
||||
android:drawableStart="@drawable/ic_check_mark"
|
||||
android:drawablePadding="24dp"
|
||||
android:gravity="center_vertical"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:text="@string/fingerprint_setup_add_fingerprint"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/setup_fingerprint"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="@dimen/content_margin_left"
|
||||
android:paddingRight="@dimen/location_text_margin_right"
|
||||
android:gravity="center_vertical"
|
||||
android:textSize="16sp"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="@color/fingerprint_setup_text_color"
|
||||
android:text="@string/fingerprint_setup_screen_lock_setup"/>
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
@@ -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,10 +54,20 @@
|
||||
<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>
|
||||
<string name="setup_unlock">Ontsluit</string>
|
||||
<string name="setup_device_locked">Die toestel is gesluit deur die gebruiker.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Benodig jou Cyanogen wagwoord</b> om jou toestel te gebruik, selfs nadat \'n fabriek herstel gedoen is.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Om hierdie funksie te aan/af te skakel, gaan asseblief na Instellings > Sekuriteit</i></string>
|
||||
<string name="setup_warning_skip_anyway">Sonder \'n Cyanogen bedryfstelsel rekening, sal jy nie in staat wees om:\n\nOm jou toestel met nuwe ikone, agtergronde en meer in die Temas program te verpersoonlik nie\n\nJou toestel te vind of op te spoor indien dit verlore gaan nie</string>
|
||||
</resources>
|
||||
|
@@ -54,9 +54,14 @@
|
||||
<string name="yes">Sí</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">Llamada d\'emerxencia</string>
|
||||
<string name="setup_services">Carauterístiques de Cyanogen</string>
|
||||
<string name="services_explanation" product="tablet">Estos servicios furrulen por ti pa estender les capacidaes de la tableta. Los datos usaránse acordies cola <xliff:g id="name" example="Privacy Policy">%s</xliff:g> de Cyanogen.</string>
|
||||
<string name="services_explanation" product="default">Estos servicios furrulen por ti pa estender les capacidaes del móvil. Los datos usaránse acordies cola <xliff:g id="name" example="Privacy Policy">%s</xliff:g> de Cyanogen.</string>
|
||||
<string name="services_privacy_policy">Política de privacidá</string>
|
||||
<string name="services_help_improve_cm">Ayudar a ameyorar <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> unviando automáticamente diagnósticos y usu de datos a Cyanogen. Esta información nun s\'usa pa indentificate y écha-yos un gabitu a los equipos pa trabayar en coses como\'l consumu de batería, el rindimientu d\'aplicaciones, y les nueves carauterístiques <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
<string name="services_apply_theme">Aplicar el tema <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> habilitando iconos, fondos de pantalla y fontes únicos.</string>
|
||||
<string name="services_os_nav_keys_label"><b>Usar tecles de navegación na pantalla</b> en cuantes de tecles físiques.</string>
|
||||
<string name="services_use_secure_sms">Usar SMS seguru</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> pa cifrar conversaciones SMS con otros usuarios usando SMS seguru nun preséu <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</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>
|
||||
|
@@ -39,13 +39,13 @@
|
||||
<string name="date_time_summary">Estableix el teu fus horari i ajusta la data i hora actual si és necessari</string>
|
||||
<string name="backup_data_summary"><b>Fes una còpia de seguretat</b> de les dades de les app, contrasenyes Wi-Fi, i altres ajustaments als servidors de Google</string>
|
||||
<string name="other_services_summary">Aquests serveis posen a Google a treballar per a tu, i pots activar-los o desactivar-los en qualsevol moment. Les dades s\'utilitzaran d\'acord amb la <xliff:g id="name" example="Privacy Policy">%s</xliff:g> de Google.</string>
|
||||
<string name="location_services_summary">Els serveis d\'ubicació permeten al sistema i a apps de tercers recopilar i utilitzar dades com la teva ubicació aproximada. Per exemple, una app pot utilitzar la teva ubicació aproximada per localitzar cafeteries als voltants.</string>
|
||||
<string name="location_access_summary"><b>Permet a les apps que han demanat el teu permís</b> utilitzar la teva informació d\'ubicació. Això pot incloure la teva ubicació i ubicacions anteriors.</string>
|
||||
<string name="location_gps" product="tablet"><b>Millora la precisió de la ubicació</b> permetent a les apps utilitzar el GPS de la teva tauleta.</string>
|
||||
<string name="location_gps" product="default"><b>Millora la precisió de la ubicació</b> permetent a les apps utilitzar el GPS del teu telèfon.</string>
|
||||
<string name="location_network"><b>Utilitza Wi-Fi</b> per ajudar a les apps a determinar la teva ubicació.</string>
|
||||
<string name="location_network_telephony"><b>Utilitza Wi-Fi i les xarxes mòbils</b> per ajudar a les apps a determinar la teva ubicació.</string>
|
||||
<string name="location_network_gms"><b>Utilitza el servei d\'ubicació de Google</b> per ajudar a les apps a determinar la teva ubicació. Això implica l\'enviament de dades anònimes d\'ubicació a Google, fins i tot quan no hi ha apps en execució.</string>
|
||||
<string name="location_services_summary">Els serveis d\'ubicació permeten al sistema i a aplicacions de tercers recopilar i utilitzar dades com la teva ubicació aproximada. Per exemple, una aplicació pot utilitzar la teva ubicació aproximada per localitzar cafeteries als voltants.</string>
|
||||
<string name="location_access_summary"><b>Permet a les aplicacions que han demanat el teu permís</b> utilitzar la teva informació d\'ubicació. Això pot incloure la teva ubicació i ubicacions anteriors.</string>
|
||||
<string name="location_gps" product="tablet"><b>Millora la precisió de la ubicació</b> permetent a les aplicacions utilitzar el GPS de la teva tauleta.</string>
|
||||
<string name="location_gps" product="default"><b>Millora la precisió de la ubicació</b> permetent a les aplicacions utilitzar el GPS del teu telèfon.</string>
|
||||
<string name="location_network"><b>Utilitza Wi-Fi</b> per ajudar a les aplicacions a determinar la teva ubicació.</string>
|
||||
<string name="location_network_telephony"><b>Utilitza Wi-Fi i les xarxes mòbils</b> per ajudar a les aplicacions a determinar la teva ubicació.</string>
|
||||
<string name="location_network_gms"><b>Utilitza el servei d\'ubicació de Google</b> per ajudar a les aplicacions a determinar la teva ubicació. Això implica l\'enviament de dades anònimes d\'ubicació a Google, fins i tot quan no hi ha aplicacions en execució.</string>
|
||||
<string name="setup_mobile_data">Activa les dades mòbils</string>
|
||||
<string name="setup_mobile_data_no_service">Sense servei</string>
|
||||
<string name="setup_mobile_data_emergency_only">Només trucades d\'emergència</string>
|
||||
@@ -65,4 +65,9 @@
|
||||
<string name="services_os_nav_keys_label"><b>Utilitza les tecles de navegació en pantalla</b> enlloc de les tecles físiques.</string>
|
||||
<string name="services_use_secure_sms">Utilitza SMS segurs</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> per xifrarr les converses SMS amb altres usuaris mitjançant SMS segurs en un dispositiu <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
<string name="setup_unlock">Desbloqueja</string>
|
||||
<string name="setup_device_locked">Aquest dispositiu ha estat bloquejat per l\'usuari.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Demana la contrasenya del teu compte Cyanogen OS</b> per utilitzar el teu dispositiu, fins i tot després de restaurar als ajustaments de fàbrica.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Per activar/desactivar aquesta característica, si us plau ves a Configuració > Seguretat</i></string>
|
||||
<string name="setup_warning_skip_anyway">Sense un compte Cyanogen OS, no podràs:\n\nPersonalitzar el teu telèfon amb noves icones, fons de pantalla i més en l\'aplicació de Temes\n\nLocalitzar o esborrar remotament el teu telèfon si el perds</string>
|
||||
</resources>
|
||||
|
@@ -59,10 +59,15 @@
|
||||
<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>
|
||||
<string name="services_use_secure_sms">Použít zabezpečené SMS</string>
|
||||
<string name="services_secure_sms_label">Použijte aplikaci <xliff:g id="name" example="Use secure SMS">%s</xliff:g> pro šifrované SMS a zabezpečenou komunikaci na zařízení <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
<string name="setup_unlock">Odemknout</string>
|
||||
<string name="setup_device_locked">Toto zařízení bylo uzamčeno uživatelem.</string>
|
||||
<string name="setup_require_cyanogen_label">Po obnovení továrního nastavení bude <b>vyžadováno heslo k Vašemu účtu Cyanogen OS</b>.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Pro zapnutí/vypnutí této funkce, přejděte do nastavení > Zabezpečení</i></string>
|
||||
<string name="setup_warning_skip_anyway">Bez účtu Cyanogen nebudete schopni:\n\nPřizpůsobit svůj telefon novými ikonami, tapetami a dalším z aplikace Motivy\n\nVzdáleně vyhledat nebo vymazat telefon v případě ztráty</string>
|
||||
</resources>
|
||||
|
@@ -65,4 +65,9 @@
|
||||
<string name="services_os_nav_keys_label"><b>Brug navigationstaster på skærmen</b> i stedet for fysiske knapper.</string>
|
||||
<string name="services_use_secure_sms">Brug sikker SMS</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> til at kryptere SMS-samtaler med andre brugere ved hjælp af sikker SMS på en <xliff:g id="name" example="CyanogenMod">%s</xliff:g> enhed.</string>
|
||||
<string name="setup_unlock">Lås op</string>
|
||||
<string name="setup_device_locked">Denne enhed er blevet låst af brugeren.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Kræver adgangskoden til din Cyanogen konto</b> for at bruge enheden, selv efter en nulstilling til fabriksindstillinger.</string>
|
||||
<string name="setup_device_locked_instructions"><i>For at slå denne funktion til/fra, skal du gå til Indstillinger > Sikkerhed</i></string>
|
||||
<string name="setup_warning_skip_anyway">Uden en Cyanogen konto kan du ikke:\n\nTilpasse din telefon med nye ikoner, tapeter og meget mere i Tema app\'en\n\nFinde eller slette din telefon, hvis du mister den</string>
|
||||
</resources>
|
||||
|
@@ -54,12 +54,20 @@
|
||||
<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>
|
||||
<string name="setup_unlock">Entsperren</string>
|
||||
<string name="setup_device_locked">Dieses Gerät wurde durch den Benutzer gesperrt.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Ihr Cyanogen OS-Konto-Passwort</b> wird auch nach einem Zurücksetzen auf Werkseinstellungen benötigt.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Um diese Funktion zu aktivieren/deaktivieren, gehen Sie zu Einstellungen > Sicherheit</i></string>
|
||||
<string name="setup_warning_skip_anyway">Ohne ein Cyanogen OS-Konto können Sie ihr Telefon nicht:\n\nMit neuen Symbolen, Hintergründen und mehr in der Design-App anpassen\n\nLokalisieren oder löschen, falls Sie es verloren haben</string>
|
||||
</resources>
|
||||
|
@@ -65,4 +65,9 @@
|
||||
<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>
|
||||
<string name="setup_unlock">Ξεκλείδωμα</string>
|
||||
<string name="setup_device_locked">Αυτή η συσκευή έχει κλειδωθεί από το χρήστη.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Απαίτηση του κωδικού πρόσβασης του λογαριασμού σας Cyanogen OS</b> για να χρησιμοποιήσετε τη συσκευή σας, ακόμα και μετά από επαναφορά εργοστασιακών ρυθμίσεων.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Για να ενεργοποιήσετε/απενεργοποιήσετε αυτή τη λειτουργία, παρακαλώ πηγαίνετε στις Ρυθμίσεις > Ασφάλεια</i></string>
|
||||
<string name="setup_warning_skip_anyway">Χωρίς ένα λογαριασμό Cyanogen OS, δεν θα είστε σε θέση να:\n\nΠροσαρμόσετε το τηλέφωνό σας με νέα εικονίδια, ταπετσαρίες και πολλά άλλα στην εφαρμογή Θεμάτων\n\nΕντοπίσετε ή διαγράψετε εξ αποστάσεως το τηλέφωνό σας εάν το χάσετε</string>
|
||||
</resources>
|
||||
|
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
@@ -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>
|
25
res/values-eo/strings.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?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="next">Sekvonta</string>
|
||||
<string name="start">Lanĉi</string>
|
||||
<string name="ok">Konfirmi</string>
|
||||
<string name="setup_welcome">Bonvenon</string>
|
||||
<string name="no">Ne</string>
|
||||
<string name="yes">Jes</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>
|
||||
@@ -65,4 +65,9 @@
|
||||
<string name="services_os_nav_keys_label"><b>Usar las teclas de navegación en pantalla</b> en vez de las teclas físicas.</string>
|
||||
<string name="services_use_secure_sms">Usar SMS seguros</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Usar SMS seguro">%s</xliff:g> para cifrar conversaciones SMS con otros usuarios usando SMS seguros en tu dispositivo <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
<string name="setup_unlock">Desbloquear</string>
|
||||
<string name="setup_device_locked">Este dispositivo ha sido bloqueado por el usuario.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Se requiere la contraseña de tu cuenta Cyanogen OS</b> para poder utilizar el dispositivo incluso después de un restablecimiento de fábrica.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Para activar o desactivar esta función, ve a Ajustes > Seguridad</i></string>
|
||||
<string name="setup_warning_skip_anyway">Sin una cuenta de Cyanogen OS no podrás:\n\nPersonalizar tu teléfono con nuevos iconos, fondos de pantalla y mucho más a través de la aplicación de temas\n\nBorrar tu teléfono localmente o de manera remota si se ha perdido</string>
|
||||
</resources>
|
||||
|
73
res/values-eu-rES/strings.xml
Normal file
@@ -0,0 +1,73 @@
|
||||
<?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">Ezarpen laguntzailea</string>
|
||||
<string name="next">Hurrengoa</string>
|
||||
<string name="skip">Saltatu</string>
|
||||
<string name="start">Hasi</string>
|
||||
<string name="ok">Ados</string>
|
||||
<string name="loading">Une bat\u2026</string>
|
||||
<string name="setup_complete">Ezarpena burutu da</string>
|
||||
<string name="setup_welcome">Ongi etorri</string>
|
||||
<string name="setup_wifi">Hautatu Wi-Fia</string>
|
||||
<string name="setup_sim_missing">SIM txartela falta da</string>
|
||||
<string name="setup_choose_data_sim">Aukeratu datuetarako SIM txartela</string>
|
||||
<string name="setup_location">Kokaleku zerbitzuak</string>
|
||||
<string name="setup_other">Bestelako zerbitzuak</string>
|
||||
<string name="setup_datetime">Data eta ordua</string>
|
||||
<string name="setup_current_date">Uneko data</string>
|
||||
<string name="setup_current_time">Uneko ordua</string>
|
||||
<string name="sim_missing_summary" product="tablet">Ez da SIM txartelik antzeman zure tabletan. SIM txartel bat sartzeko jarraitu zure gailuarekin zetozen argibideak.</string>
|
||||
<string name="sim_missing_summary" product="default">Ez da SIM txartelik antzeman zure telefonoan. SIM txartel bat sartzeko jarraitu zure gailuarekin zetozen argibideak.</string>
|
||||
<string name="choose_data_sim_summary" product="tablet">Zein SIM erabili nahi duzu datu mugikorretarako? Hautatutako SIM txartelean gastuak sor litzake zure tableta ezartzeko erabiliko baita.</string>
|
||||
<string name="choose_data_sim_summary" product="default">Zein SIM erabili nahi duzu datu mugikorretarako? Hautatutako SIM txartelean gastuak sor litzake zure telefonoa ezartzeko erabiliko baita.</string>
|
||||
<string name="date_time_summary">Ezarri zure ordu zonaldea eta doitu oraingo data beharrezkoa bada</string>
|
||||
<string name="backup_data_summary">Aplikazio datuen, Wi-Fi pasahitzen, eta bestelako ezarpenen <b>babeskopia</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>
|
||||
<string name="location_services_summary">Kokaleku zerbitzuek zure kokalekua bezalako datuak eskuratzea ahalbidetzen diete sistemako eta instalatutako aplikazioei. Adibidez, aplikazio batek zure kokalekua erabili lezake inguruko kafetegiak aurkitzeko.</string>
|
||||
<string name="location_access_summary"><b>Baimena eskatu dizuten aplikazioei</b> zure kokaleku informazioa erabiltzea ahalbidetu. Uneko zein iraganeko kokalekuak barne.</string>
|
||||
<string name="location_gps" product="tablet"><b>hobetu kokalekuaren zehaztasuna</b> aplikazioei tabletako GPS-a erabiltzea baimenduz.</string>
|
||||
<string name="location_gps" product="default"><b>hobetu kokalekuaren zehaztasuna</b> aplikazioei telefonoaren GPS-a erabiltzea baimenduz.</string>
|
||||
<string name="location_network"><b>Erabili Wi-Fia</b> aplikazioei zure kokalekua zehazten laguntzeko.</string>
|
||||
<string name="location_network_telephony"><b>Erabili Wi-Fi eta sare mugikorrak</b> aplikazioei zure kokalekua zehazten laguntzeko.</string>
|
||||
<string name="location_network_gms"><b>Erabili Google kokaleku zerbitzua</b> aplikazioei zure kokalekua zehazten laguntzeko. Honek Google-i kokaleku informazio anonimoa bidaltzea dakar, aplikaziorik erabiltzen ez duzunean ere.</string>
|
||||
<string name="setup_mobile_data">Piztu datu mugikorrak</string>
|
||||
<string name="setup_mobile_data_no_service">Zerbitzurik ez</string>
|
||||
<string name="setup_mobile_data_emergency_only">Larrialdi deiak besterik ez</string>
|
||||
<string name="enable_mobile_data_summary">Datu mugikorrak erabili nahi dituzu ezarpenean? Datu mugikorrak pizteak gastuak ekar ditzake.</string>
|
||||
<string name="no">Ez</string>
|
||||
<string name="yes">Bai</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">Larrialdi deia</string>
|
||||
<string name="setup_services">Cyanogen ezaugarriak</string>
|
||||
<string name="services_explanation" product="tablet">Zerbitzu hauek tabletaren gaitasunak hobetzeko zure mesedetan egiten dute lan. Datuak Cyanogen <xliff:g id="name" example="Privacy Policy">%s</xliff:g> arabera erabiliko dira.</string>
|
||||
<string name="services_explanation" product="default">Zerbitzu hauek telefonoaren gaitasunak hobetzeko zure mesedetan egiten dute lan. Datuak Cyanogen <xliff:g id="name" example="Privacy Policy">%s</xliff:g> arabera erabiliko dira.</string>
|
||||
<string name="services_privacy_policy">Pribatutasun politika</string>
|
||||
<string name="services_help_improve_cm">Lagundu <xliff:g id="name" example="CyanogenMod">%s</xliff:g> hobetzen</string>
|
||||
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> automatikoki diagnostiko eta erabilera datuak bidaliz Cyanogeni. Informazio hau ezin da erabili zu identifikatzeko eta bateriaren iraupena, aplikazioen errendimendua, eta <xliff:g id="name" example="CyanogenMod">%s</xliff:g> ezaugarri berrietan lanean dabilen taldearentzat lagungarria da.</string>
|
||||
<string name="services_apply_theme">Aplikatu <xliff:g id="name" example="Material">%s</xliff:g> gaia</string>
|
||||
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> aparteko ikono, horma-paper eta letra-tipoak gaitzen.</string>
|
||||
<string name="services_os_nav_keys_label"><b>Erabili pantailako nabigazio teklak</b> hardware teklen ordez.</string>
|
||||
<string name="services_use_secure_sms">Erabili SMS segurua</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> gailu batean SMS segurua erabiltzen duten beste erabiltzaileekin dituzun SMS elkarrizketak zifratzeko.</string>
|
||||
<string name="setup_unlock">Desblokeatu</string>
|
||||
<string name="setup_device_locked">Erabiltzaileak gailu hau blokeatu du.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Eskatu zure Cyanogen OS kontuaren pasahitza</b> gailua erabiltzeko lantegiko jatorrizko ezarpenetara berrezarri eta gero.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Ezaugarri hau gaitu edo ezgaitzeko zoaz hona: Ezarpenak > Segurtasuna</i></string>
|
||||
<string name="setup_warning_skip_anyway">Cyanogen OS kontu bat gabe, ezin izango duzu:\n\nZure telefonoa ikono horma-irudi eta gai berriekin pertsonalizatu Gai aplikazioan\n\n.Telefonoa aurkitu eta ezabatu galtzen baduzu</string>
|
||||
</resources>
|
58
res/values-fa/strings.xml
Normal file
@@ -0,0 +1,58 @@
|
||||
<?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">از دادههای برنامهها، گذرواژه وایفای و دیگر تنظیمات در سرورهای گوگل پشتیبان بگیر</string>
|
||||
<string name="other_services_summary">این خدمات گوگل را برای شما تنظیم میکنند، و شما میتوانید هر زمان آنها را روشن یا خاموش کنید. داده مطابق با <xliff:g id="name" example="Privacy Policy">%s</xliff:g> گوگل استفاده خواهد شد.</string>
|
||||
<string name="location_services_summary">سرویسهای مکان به نقشهها و برنامههای دیگر برای جمعآوری و استفاده از داده مانند محل تقریبی شما اجازه میدهند. به عنوان مثال، برنامهای ممکن است از مکان تقریبی شما برای یافتن کافیشاپهای نزدیکتان استفاده کند.</string>
|
||||
<string name="location_gps" product="tablet"><b>دقت مکان</b> را با اجازه دادن به برنامهها به استفاده از جیپیاس در تبلتتان، بهبود بخشید.</string>
|
||||
<string name="location_gps" product="default"><b>دقت مکان</b> را با اجازه دادن به برنامهها به استفاده از جیپیاس در تلفنتان، بهبود بخشید.</string>
|
||||
<string name="location_network">برای کمک به برنامهها در تعیین مکانتان از وایفای استفاده کنید.</string>
|
||||
<string name="location_network_telephony">برای کمک به برنامهها در تعیین مکانتان از وایفای وشبکههای همراه استفاده کنید.</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="no">خیر</string>
|
||||
<string name="yes">بله</string>
|
||||
<string name="emergency_call">تماس اضطراری</string>
|
||||
<string name="setup_services">ویژگیهای سایانوژن</string>
|
||||
<string name="services_privacy_policy">سیاست حفظ حریم خصوصی</string>
|
||||
<string name="services_use_secure_sms">استفاده از پیامک امن</string>
|
||||
<string name="setup_unlock">بازگشایی</string>
|
||||
<string name="setup_device_locked">این دستگاه توسط کاربر قفل شده است.</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>
|
||||
@@ -65,4 +65,9 @@
|
||||
<string name="services_os_nav_keys_label"><b>Käytä näytön navigointipalkkia</b> fyysisten näppäinten sijaan.</string>
|
||||
<string name="services_use_secure_sms">Käytä turvallisia tekstiviestejä</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> salataksesi tekstiviestikeskustelut muiden turvallisia tekstiviestejä ja <xliff:g id="name" example="CyanogenMod">%s</xliff:g>ia käyttävien henkilöiden kanssa.</string>
|
||||
<string name="setup_unlock">Avaa lukitus</string>
|
||||
<string name="setup_device_locked">Käyttäjä on lukinnut laitteen.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Vaadi Cyanogen OS-tilin salasana</b> käyttääksesi laitetta myös tehdasasetusten palautuksen jälkeen.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Poistaaksesi tämän ominaisuuden käytöstä/ottaaksesi käyttöön, mene Asetukset > Suojaus</i></string>
|
||||
<string name="setup_warning_skip_anyway">Ilman Cyanogen OS-tiliä, et voi:\n\nMukauttaa puhelintasi uusilla kuvakkeilla, taustakuvilla tai muilla käyttämällä Teemat-sovellusta\n\nPaikantaa tai etätyhjentää kadonnutta puhelintasi</string>
|
||||
</resources>
|
||||
|
@@ -54,10 +54,20 @@
|
||||
<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>
|
||||
<string name="setup_unlock">Déverrouiller</string>
|
||||
<string name="setup_device_locked">Cet appareil a été verrouillé par l\'utilisateur.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Nécessite votre mot de passe du compte Cyanogen OS</b> afin d\'utiliser votre appareil même après une réinitialisation d\'usine.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Pour activer/désactiver cette fonction, veuillez vous rendre dans Paramètres > Sécurité</i></string>
|
||||
<string name="setup_warning_skip_anyway">Sans un compte Cyanogen OS, vous ne serez pas en mesure de :\n\nPersonnaliser votre téléphone avec de nouvelles icônes, fonds d\'écran et plus encore dans l\'application Thèmes\n\nLocaliser ou réinitialiser votre téléphone à distance s\'il est perdu</string>
|
||||
</resources>
|
||||
|
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
@@ -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>
|
@@ -65,4 +65,9 @@
|
||||
<string name="services_os_nav_keys_label"><b>A képernyő navigációs gombjainak használata</b> a hardveres gombok helyett.</string>
|
||||
<string name="services_use_secure_sms">Biztonságos SMS használata</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> az SMS beszélgetések titkosításához más olyan felhasználókkal, akik szintén biztonságos SMS-t használnak <xliff:g id="name" example="CyanogenMod">%s</xliff:g> eszközön.</string>
|
||||
<string name="setup_unlock">Feloldás</string>
|
||||
<string name="setup_device_locked">Ezt az eszközt a felhasználó zárolta.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Cyanogen OS fiókjának jelszava szükséges</b> a készülék használatához, még a gyári beállítások visszaállítása után is.</string>
|
||||
<string name="setup_device_locked_instructions"><i>A szolgáltatás ki/be kapcsolásához, kérjük menjen ide: Beállítások > Biztonság</i></string>
|
||||
<string name="setup_warning_skip_anyway">Cyanogen OS fiók nélkül nem fog hozzáférni a következőkhöz:\n\nTelefon testreszabása új ikonokkal, háttérképekkel és egyebekkel a Téma kezelő alkalmazáson keresztül\n\nTelefon helyének maghatározása, vagy távolról való törlése, ha elveszett</string>
|
||||
</resources>
|
||||
|
@@ -21,18 +21,48 @@
|
||||
<string name="skip">Lewati</string>
|
||||
<string name="start">Mulai</string>
|
||||
<string name="ok">OKE</string>
|
||||
<string name="loading">Hanya sec\u2026</string>
|
||||
<string name="setup_complete">Setup selesai</string>
|
||||
<string name="setup_welcome">Selamat datang</string>
|
||||
<string name="setup_wifi">Pilih Wi-Fi</string>
|
||||
<string name="setup_sim_missing">SIM kartu hilang</string>
|
||||
<string name="setup_choose_data_sim">Pilih SIM untuk Data</string>
|
||||
<string name="setup_location">Layanan lokasi</string>
|
||||
<string name="setup_other">Layanan lainnya</string>
|
||||
<string name="setup_datetime">Tanggal & waktu</string>
|
||||
<string name="setup_current_date">Tanggal sekarang</string>
|
||||
<string name="setup_current_time">Waktu saat ini</string>
|
||||
<string name="sim_missing_summary" product="tablet">Kartu SIM tidak terdeteksi pada perangkat anda. Untuk menyisipkan kartu SIM, baca petunjuk yang datang dengan perangkat Anda.</string>
|
||||
<string name="sim_missing_summary" product="default">Kartu SIM tidak terdeteksi pada perangkat anda. Untuk menyisipkan kartu SIM, baca petunjuk yang datang dengan perangkat Anda.</string>
|
||||
<string name="choose_data_sim_summary" product="tablet">Manakah SIM yang ingin Anda gunakan untuk data? SIM yang dipilih dapat dikenakan biaya jaringan karena akan digunakan untuk menyiapkan perangkat Anda.</string>
|
||||
<string name="choose_data_sim_summary" product="default">Manakah SIM yang ingin Anda gunakan untuk data? SIM yang dipilih dapat dikenakan biaya jaringan karena akan digunakan untuk menyiapkan perangkat Anda.</string>
|
||||
<string name="date_time_summary">Atur zona waktu dan sesuaikan tanggal dan waktu jika diperlukan</string>
|
||||
<string name="backup_data_summary"><b>Membuat cadangan</b> data aplikasi, password Wi-Fi, dan setelan lainnya ke server Google</string>
|
||||
<string name="other_services_summary">Layanan ini menempatkan Google bekerja untuk Anda, dan Anda dapat mengubah mereka atau menonaktifkan setiap saat. Data akan digunakan sesuai dengan Google <xliff:g id="name" example="Privacy Policy">%s </xliff:g>.</string>
|
||||
<string name="location_services_summary">Layanan lokasi mengizinkan Maps dan aplikasi lain untuk mengumpulkan dan menggunakan data seperti perkiraan lokasi Anda. Misalnya, Maps dapat menggunakan perkiraan lokasi Anda untuk menemukan toko-toko kopi terdekat.</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="tablet"><b>Meningkatkan akurasi lokasi</b> dengan mengizinkan aplikasi untuk menggunakan GPS pada ponsel Anda.</string>
|
||||
<string name="location_gps" product="default"><b>Meningkatkan akurasi lokasi</b> dengan mengizinkan aplikasi untuk menggunakan GPS pada ponsel Anda.</string>
|
||||
<string name="location_network"><b>Penggunaan Wi-Fi</b> untuk membantu aplikasi menentukan lokasi Anda.</string>
|
||||
<string name="location_network_telephony"><b>Penggunaan Wi-Fi dan jaringan selular</b> untuk membantu aplikasi menentukan lokasi Anda.</string>
|
||||
<string name="location_network_gms"><b>Gunakan layanan lokasi Google</b> untuk membantu aplikasi menentukan lokasi Anda. Ini berarti mengirimkan data lokasi anonim ke Google, bahkan ketika tidak ada aplikasi yang berjalan.</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="emergency_call">Panggilan darurat</string>
|
||||
<string name="setup_services">Fitur sianogen</string>
|
||||
<string name="services_explanation" product="tablet">Layanan ini bekerja untuk Anda untuk memperluas kemampuan perangkat tablet Anda. Data akan digunakan sesuai dengan sianogen di <xliff:g id="name" example="Privacy Policy">%s </xliff:g>.</string>
|
||||
<string name="services_explanation" product="default">Layanan ini bekerja untuk Anda untuk memperluas kemampuan perangkat tablet Anda. Data akan digunakan sesuai dengan sianogen di <xliff:g id="name" example="Privacy Policy">%s </xliff:g>.</string>
|
||||
<string name="services_privacy_policy">Kebijakan privasi</string>
|
||||
<string name="services_help_improve_cm">Membantu meningkatkan <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> dengan secara otomatis mengirim data diagnostik dan penggunaan ke Cyanogen. Informasi ini tidak dapat digunakan untuk mengidentifikasi Anda dan meminjamkan tangan untuk tim bekerja pada hal-hal seperti baterai, app kinerja dan fitur <xliff:g id="name" example="CyanogenMod"> %s </xliff:g> baru.</string>
|
||||
<string name="services_apply_theme">Terapkan tema <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> memungkinkan ikon unik, Wallpaper dan font.</string>
|
||||
<string name="services_os_nav_keys_label"><b>Digunakan pada tombol navigasi layar</b> bukan tombol perangkat keras.</string>
|
||||
<string name="services_use_secure_sms">Menggunakan SMS aman</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s </xliff:g> untuk mengenkripsi percakapan SMS dengan pengguna lain menggunakan SMS aman pada perangkat <xliff:g id="name" example="CyanogenMod"> %s </xliff:g>.</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>
|
||||
@@ -65,4 +65,9 @@
|
||||
<string name="services_os_nav_keys_label"><b>Usa i pulsanti virtuali a schermo</b> invece di quelli fisici.</string>
|
||||
<string name="services_use_secure_sms">Utilizza SMS sicuri</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> per criptare le conversazioni SMS con altri utenti che utilizzano gli SMS sicuri su un dispositivo <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
<string name="setup_unlock">Sblocca</string>
|
||||
<string name="setup_device_locked">Questo dispositivo è stato bloccato dall\'utente.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>È necessaria la password del tuo account Cyanogen OS</b> al fine di utilizzare il dispositivo anche dopo il ripristino di fabbrica.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Per attivare e disattivare questa funzione, vai in Impostazioni > Sicurezza</i></string>
|
||||
<string name="setup_warning_skip_anyway">\"Senza un account Cyanogen OS, non sarai in grado di:\n\nPersonalizzare il telefono con nuove icone, sfondi ed altro ancora dall\'app Temi\n\nLocalizzare o formattare da remoto il telefono se viene smarrito\"</string>
|
||||
</resources>
|
||||
|
@@ -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,10 +54,20 @@
|
||||
<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>
|
||||
<string name="setup_unlock">שחרר</string>
|
||||
<string name="setup_device_locked">מכשיר זה ננעל על-ידי המשתמש.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>נדרשת סיסמת חשבון מערכת Cyanogen</b> על מנת להשתמש במכשירך, אפילו לאחר איפוס המכשיר להגדרות היצרן.</string>
|
||||
<string name="setup_device_locked_instructions"><i>כדי להפעיל/לכבות אפשרות זו, אנא גש להגדרות > אבטחה</i></string>
|
||||
<string name="setup_warning_skip_anyway">בלי חשבון מערכת Cyanogen, לא ניתן יהיה:\n\nלהתאים את מכשירך עם סמלים, רקעים ועוד ביישום ערכות העיצוב\n\nלאתר או למחוק מרחוק את מכשירך במקרה של אובדן</string>
|
||||
</resources>
|
||||
|
@@ -65,4 +65,10 @@
|
||||
<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="보안 SMS를 사용">%s</xliff:g>하여 <xliff:g id="name" example="CyanogenMod">%s</xliff:g>기기에서 보안 SMS를 사용하는 다른 사용자와의 SMS 대화를 암호화함.</string>
|
||||
<string name="setup_unlock">잠금 해제</string>
|
||||
<string name="setup_device_locked">이 기기는 사용자에 의해 잠겨 있습니다.</string>
|
||||
<string name="setup_require_cyanogen_label">공장 초기화 후에도 기기를 사용하려면 <b>Cyanogen OS 계정의 비밀번호가 필요합니다</b> .</string>
|
||||
<string name="setup_device_locked_instructions"><i>이 기능을 켜거나 끄려면, 설정 > 보안으로 이동하세요</i></string>
|
||||
<string name="setup_warning_skip_anyway">Cyanogen OS 계정이 없을 경우 사용할 수 없는 기능:\n\n
|
||||
테마 앱을 통한 새로운 아이콘, 배경화면 등의 적용\n\n기기를 잃어버렸을 경우 기기 찾기 또는 원격 개인정보 삭제</string>
|
||||
</resources>
|
||||
|
51
res/values-ku/strings.xml
Normal file
@@ -0,0 +1,51 @@
|
||||
<?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="setup_complete">دامهزراندن تهواوبوو</string>
|
||||
<string name="setup_welcome">بە خێربێيت</string>
|
||||
<string name="setup_wifi">هەڵبژاردنی Wi-Fi</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> داتای بەرنامە, Wi-Fi تێپەڕەوشە, و ڕێکخستنی تری خزمەتگووزاری گووگڵ</string>
|
||||
<string name="other_services_summary">ئەم خزمەتگوزاریە گووگڵ دەخاتە یارمەتی تۆوە، و ئەتوانی بیانکەیتەوە یان بیانکوژێنیتەوە لە هەرکاتێکدا.
|
||||
داتاکە لەگەڵ گووگڵ بەکارئەهێنرێت <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
|
||||
<string name="setup_mobile_data_no_service">خزمەتگوزاری نیە</string>
|
||||
<string name="setup_mobile_data_emergency_only">تهنها پهیوهندی كتوپڕ</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_privacy_policy">یاسای تایبەتی</string>
|
||||
<string name="setup_unlock">کردنەوە</string>
|
||||
</resources>
|
@@ -53,7 +53,12 @@
|
||||
<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>
|
||||
<string name="setup_unlock">Entspären</string>
|
||||
<string name="setup_device_locked">Dësen Apparat gouf duerch de Benotzer gespaart.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Fir dës Funktioun z\'aktivéieren/desaktivéieren, géi op Astellungen > Sécherheet</i></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,16 @@
|
||||
<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>
|
||||
<string name="setup_unlock">Atrakinti</string>
|
||||
<string name="setup_device_locked">Šis įrenginys buvo užrakintas naudotojo.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Reikalauti jūsų „Cyanogen“ OS paskyros slaptažodžio</b> , kad būtų galima naudotis įrenginiu net ir po gamyklinių nustatymų iš naujo.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Kad išjungtumėte / įjungtumėte šią funkciją, eikite į Nustatymai > Sauga</i></string>
|
||||
<string name="setup_warning_skip_anyway">Be „Cyanogen“ OS paskyros, jums nebus suteikta galimybė:\n\nTemų programoje tinkinti savo telefoną su naujomis piktogramomis, ekrano fonais ir daugiau\n\nRasti arba nuotoliniu būdu ištrinti savo telefoną, jei jis yra prarastas</string>
|
||||
</resources>
|
||||
|
@@ -65,4 +65,9 @@
|
||||
<string name="services_os_nav_keys_label"><b>Bruk navigasjonstaster på skjermen </b> istedenfor hardware knapper.</string>
|
||||
<string name="services_use_secure_sms">Bruk sikker SMS</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> for å kryptere SMS samtaler med andre som også bruker sikker SMS på en <xliff:g id="name" example="CyanogenMod">%s</xliff:g> enhet.</string>
|
||||
<string name="setup_unlock">Lås opp</string>
|
||||
<string name="setup_device_locked">Denne enheten er låst av brukeren.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Krever passordet til Cyanogen OS konto</b> for å bruke enheten etter en fabrikkgjennoppretting.</string>
|
||||
<string name="setup_device_locked_instructions"><i>For å slå denne funksjonen av/på, kan du gå til Innstillinger > sikkerhet</i></string>
|
||||
<string name="setup_warning_skip_anyway">Uten en Cyanogen OS konto, vil du ikke kunne: \n\nEndre på telefonen med nye ikoner, bakgrunnsbilder og mer i temaer-app\n\nLokalisere eller eksternt slette telefonen hvis du har mistet den</string>
|
||||
</resources>
|
||||
|
@@ -65,4 +65,9 @@
|
||||
<string name="services_os_nav_keys_label"><b>On-screen navigatieknoppen</b> gebruiken in plaats van de hardwareknoppen.</string>
|
||||
<string name="services_use_secure_sms">Beveiligde sms-berichten gebruiken</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> om sms-gesprekken te versleutelen met anderen die ook beveiligde sms-berichten gebruiken op een <xliff:g id="name" example="CyanogenMod">%s</xliff:g>-apparaat.</string>
|
||||
<string name="setup_unlock">Ontgrendelen</string>
|
||||
<string name="setup_device_locked">Dit apparaat is vergrendeld door de gebruiker.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Uw Cyanogen OS-accountwachtwoord vereisen</b> om het apparaat te gebruiken, zelfs na terugzetten naar fabrieksinstellingen.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Om deze functie in of uit te schakelen, ga naar Instellingen > Beveiliging</i></string>
|
||||
<string name="setup_warning_skip_anyway">Zonder een Cyanogen OS-account kunt u niet:\n\nUw telefoon personaliseren met nieuwe pictogrammen, achtergronden en meer in de app Thema\'s\n\nUw telefoon lokaliseren of op afstand wissen wanneer u deze kwijt raakt</string>
|
||||
</resources>
|
||||
|
@@ -65,4 +65,9 @@
|
||||
<string name="services_os_nav_keys_label"><b>Użyj ekranowych przycisków nawigacyjnych</b> zamiast klawiszy sprzętowych.</string>
|
||||
<string name="services_use_secure_sms">Używaj bezpiecznych wiadomości SMS</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g>, aby prowadzić szyfrowane konwersacje z innymi użytkownikami używając bezpiecznych SMS na urządzeniach z <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
<string name="setup_unlock">Odblokuj</string>
|
||||
<string name="setup_device_locked">To urządzenie zostało zablokowane przez użytkownika.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Wymaga hasła twojego konta Cyanogen OS</b>, aby korzystać z urządzenia, nawet po przywróceniu ustawień fabrycznych.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Aby włączyć/wyłączyć tę funkcję, przejdź do Ustawienia > Zabezpieczenia</i></string>
|
||||
<string name="setup_warning_skip_anyway">Bez Konta Cyanogen OS nie będziesz w stanie:\n\nDostosować swojego telefonu wybierając nowe ikony, tapety oraz więcej innych opcji w aplikacji Motywy\n\nZlokalizować lub zdalnie wymazać pamięć telefonu w przypadku zgubienia</string>
|
||||
</resources>
|
||||
|
@@ -65,4 +65,9 @@
|
||||
<string name="services_os_nav_keys_label"><b>Use as teclas de navegação na tela</b> em vez de botões físicos.</string>
|
||||
<string name="services_use_secure_sms">Usar SMS seguro</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> para criptografar conversas SMS com outros usuários que usam o SMS seguro em um dispositivo <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
<string name="setup_unlock">Desbloquear</string>
|
||||
<string name="setup_device_locked">Este dispositivo foi bloqueado pelo usuário.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Exigir a senha da conta Cyanogen</b> para usar o dispositivo mesmo depois da restauração de fábrica.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Para ativar ou desativar este recurso, por favor vá para Configurações e Segurança</i></string>
|
||||
<string name="setup_warning_skip_anyway">Sem uma conta Cyanogen, você não será capaz de:\n\nPersonalizar seu celular com novos ícones, papéis de parede e muito mais no app Temas\n\nLocalizar ou apagar remotamente o seu telefone se for perdido</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>
|
||||
@@ -65,4 +65,9 @@
|
||||
<string name="services_os_nav_keys_label"><b>Usar os botões de navegação no ecrã</b>, em vez dos botões do dispositivo.</string>
|
||||
<string name="services_use_secure_sms">Usar SMS seguras</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> para encriptar conversações SMS com outros utilizadores que também utilizem este serviço num dispositivo com a <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
|
||||
<string name="setup_unlock">Desbloquear</string>
|
||||
<string name="setup_device_locked">Este dispositivo foi bloqueado pelo utilizador.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Exigir a palavra-passe da conta Cyanogen OS</b> para usar o dispositivo mesmo depois da reposição dos dados de fábrica.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Para ativar ou desativar este recurso, por favor vá a Definições > Segurança</i></string>
|
||||
<string name="setup_warning_skip_anyway">\"Sem uma conta Cyanogen OS, não será capaz de: \n\nPersonalizar o telefone com novos ícones, imagens de fundo e muito mais na aplicação de Temas\n\n Localizar ou apagar remotamente o seu telefone se estiver perdido</string>
|
||||
</resources>
|
||||
|
@@ -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>
|
||||
|
@@ -65,4 +65,9 @@
|
||||
<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>
|
||||
<string name="setup_unlock">Разблокировать</string>
|
||||
<string name="setup_device_locked">Устройство было заблокировано пользователем.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Требовать пароль аккаунта ОС Cyanogen</b> для использования устройства даже после удаления всех данных.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Чтобы включить или отключить эту функцию, перейдите в меню «Настройки > Безопасность»</i></string>
|
||||
<string name="setup_warning_skip_anyway">Без учетной записи Cyanogen вы не сможете:\n\nПерсонализировать телефон новыми обоями, иконками и другими компонентами в приложении «Темы»\n\nНайти или удалённо сбросить настройки на телефоне в случае его потери</string>
|
||||
</resources>
|
||||
|
@@ -65,4 +65,9 @@
|
||||
<string name="services_os_nav_keys_label"><b>Používajte navigačné tlačidlá na obrazovke</b> namiesto hardvérových tlačidiel.</string>
|
||||
<string name="services_use_secure_sms">Používajte zabezpečené SMS</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> pre šifrovanie SMS konverzácií s ostatnými používateľmi prostredníctvom zabezpečených SMS na zariadení s <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
|
||||
<string name="setup_unlock">Odomknúť</string>
|
||||
<string name="setup_device_locked">Toto zariadenie bolo uzamknuté používateľom.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Vyžadovať heslo vášho účtu Cyanogen OS</b> na použitie vášho zariadenia aj po obnove továrenských nastavení.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Na vypnutie/zapnutie tejto funkcie prejdite do Nastavenia > Zabezpečenie</i></string>
|
||||
<string name="setup_warning_skip_anyway">Bez účtu Cyanogen OS nebudete môcť:\n\nPrispôsobiť si telefón s novými ikonami, tapetami a ďalším obsahom z aplikácie Témy\n\nNájsť alebo vzdialene vymazať váš telefón po jeho strate</string>
|
||||
</resources>
|
||||
|
@@ -65,4 +65,9 @@
|
||||
<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>
|
||||
<string name="setup_unlock">Откључај</string>
|
||||
<string name="setup_device_locked">Овај уређај је закључао корисник.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Захтева твоју лозинку Cyanogen налога</b> да би користио свој уређај чак и после ресетовања на фабрички.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Да би искључио/укључио ово, иди на Подешавања > Приватност</i></string>
|
||||
<string name="setup_warning_skip_anyway">Без Cyanogen налога, нећеш моћи да:\n\nПрилагодиш телефон са новим иконама, тапетама и осталим у апликацији тема\n\nЛоцираш или обришеш телефон на даљину ако га изгубиш</string>
|
||||
</resources>
|
||||
|
@@ -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>
|
||||
|
73
res/values-th/strings.xml
Normal file
@@ -0,0 +1,73 @@
|
||||
<?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">เลือก Wi-Fi</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>ข้อมูลแอป,รหัสผ่าน 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="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">ความสามารถของ Cyanogen</string>
|
||||
<string name="services_explanation" product="tablet">บริการเหล่านี้คุณสามารถเพิ่มความสามารถของแท็บเล็ตของคุณได้ ข้อมูลจะถูกใช้ตาม Cyanogen <xliff:g id="name" example="Privacy Policy">%s</xliff:g></string>
|
||||
<string name="services_explanation" product="default">บริการเหล่านี้คุณสามารถเพิ่มความสามารถของโทรศัพท์ของคุณได้ ข้อมูลจะถูกใช้ตาม Cyanogen <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>
|
||||
<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>
|
||||
<string name="setup_unlock">ปลดล็อก</string>
|
||||
<string name="setup_device_locked">อุปกรณ์นี้ถูกล็อคโดยผู้ใช้</string>
|
||||
<string name="setup_require_cyanogen_label"><b>กรุณาใส่รหัสผ่านบัญชี Cyanogen OS</b> แม้ว่าจะทำการคืนค่าโรงงานไปแล้วก็ตาม.</string>
|
||||
<string name="setup_device_locked_instructions"><i>เพื่อปิด/เปิดความสามารถนี้ กรุณาไปที่ การตั้งค่า > ความปลอดภัย</i></string>
|
||||
<string name="setup_warning_skip_anyway">ถ้าหากไม่มีบัญชี Cyanogen OS แล้วคุณจะไม่สามารถ:\n\n ปรับเปลี่ยน ไอคอน,ภาพหน้าจอและอื่นๆผ่านแอปชุดรูปแบบ\n\nค้นหาและลบข้อมูลระยะไกลหากอุปกรณ์สูญหาย</string>
|
||||
</resources>
|
@@ -65,4 +65,9 @@
|
||||
<string name="services_os_nav_keys_label"><b>Donanımsal tuşlar yerine ekran üstü dolaşım tuşlarını kullanın.</b></string>
|
||||
<string name="services_use_secure_sms">Şifreli SMS kullanın</string>
|
||||
<string name="services_secure_sms_label"><xliff:g id="name" example="CyanogenMod">%s</xliff:g> cihazında diğer kullanıcılarla olan sohbetlerinizi şifrelemek için <xliff:g id="name" example="Use secure SMS">%s</xliff:g>.</string>
|
||||
<string name="setup_unlock">Kilidi kaldır</string>
|
||||
<string name="setup_device_locked">Bu cihaz kullanıcı tarafından kilitlenmiş.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Cyanogen İS hesap şifresi gerekir</b> ki cihazınızı fabrika ayarlarına sıfırladıktan sonra kullanabilin.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Bu özelliği açıp kapatmak için, lütfen Ayarlar > Güvenlik bölümüne gidin</i></string>
|
||||
<string name="setup_warning_skip_anyway">Cyanogen İS Hesabı olmadan, aşağıdakiler mümkün olmayacaktır:\n\nTelefonunuzu yeni simgeler, duvar kağıtları ve Temalar uygulamasındaki daha fazla ögeyle özelleştirmek\n\nTelefonunuzu kaybedince uzaktan konumunu bulmak veya içeriğini silmek</string>
|
||||
</resources>
|
||||
|
@@ -54,11 +54,21 @@
|
||||
<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>
|
||||
<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>
|
||||
<string name="setup_unlock">Розблокувати</string>
|
||||
<string name="setup_device_locked">Цей пристрій заблоковано користувачем.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Необхідний пароль Cyanogen OS</b> для використання Вашого пристрою навіть після скидання до заводських налаштувань.</string>
|
||||
<string name="setup_device_locked_instructions"><i>Щоб увімкнути/вимкнути цю функцію, будь ласка, перейдіть до Налаштування > Безпека</i></string>
|
||||
<string name="setup_warning_skip_anyway">Без облікового запису ОС Cyanogen, Ви не зможете:\n\nДодати індивідуальності телефону за допомогою нових іконок, шпалер тощо у програмі \"Теми\",\n\nвиявити місцезнаходження пристрою чи віддалено стерти дані, у випадку його втрати</string>
|
||||
</resources>
|
||||
|
@@ -65,4 +65,9 @@
|
||||
<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="CyanogenMod">%s</xliff:g> 设备上<xliff:g id="name" example="Use secure SMS">%s</xliff:g>来加密您与其他用户的短信会话。</string>
|
||||
<string name="setup_unlock">解锁</string>
|
||||
<string name="setup_device_locked">此设备的持有者锁定了该设备。</string>
|
||||
<string name="setup_require_cyanogen_label">即使您的设备被恢复出厂设置,<b>也要求输入您的 Cyanogen OS 帐户密码</b>。</string>
|
||||
<string name="setup_device_locked_instructions"><i>要开启或关闭此功能,请进入设置 > 安全</i></string>
|
||||
<string name="setup_warning_skip_anyway">“如果不创建 Cyanogen OS 帐户,您将:\n\n无法使用主题应用来使用新的图标、壁纸和其他内容来自定义您的手机\n\n无法定位或擦除遗失的手机”</string>
|
||||
</resources>
|
||||
|
@@ -29,4 +29,5 @@
|
||||
<color name="header_bg">@color/primary</color>
|
||||
<color name="header_condensed_bg">@color/primary_dark</color>
|
||||
<color name="button_bar_background">#e4e7e8</color>
|
||||
<color name="fingerprint_setup_text_color">#356bc4</color>
|
||||
</resources>
|
||||
|
@@ -20,4 +20,5 @@
|
||||
<!-- The type of sim image to display.
|
||||
0=default sim image, 1=sim on side, 2=sim on back-->
|
||||
<integer name="sim_image_type">0</integer>
|
||||
<bool name="check_custom_theme_by_default">true</bool>
|
||||
</resources>
|
||||
|
@@ -79,4 +79,19 @@
|
||||
<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>
|
||||
|
||||
<string name="setup_unlock">Unlock</string>
|
||||
<string name="setup_device_locked">This device has been locked by the user.</string>
|
||||
<string name="setup_require_cyanogen_label"><b>Require your Cyanogen OS account password</b> in order to use your device even after a factory reset.</string>
|
||||
<string name="setup_device_locked_instructions"><i>To turn this feature off/on, please go to Settings > Security</i></string>
|
||||
<string name="setup_warning_skip_anyway">Without a Cyanogen OS Account, you won\'t be able to:\n\nCustomize your phone with new icons, wallpapers and more in the Themes app\n\nLocate or remotely erase your phone if it\'s lost</string>
|
||||
|
||||
<!-- Fingerprint setup -->
|
||||
<string name="settings_fingerprint_setup_title">Select backup screen lock type</string>
|
||||
<string name="settings_fingerprint_setup_details">How would you like to lock your screen?</string>
|
||||
<string name="fingerprint_setup_title">Fingerprint setup</string>
|
||||
<string name="fingerprint_setup_summary">To use your fingerprint sensor to unlock your screen or confirm purchases, you\'ll need to:</string>
|
||||
<string name="fingerprint_setup_backup_lock_method">Setup a backup screen lock method</string>
|
||||
<string name="fingerprint_setup_add_fingerprint">Add your fingerprint</string>
|
||||
<string name="fingerprint_setup_screen_lock_setup">Setup screen lock</string>
|
||||
</resources>
|
||||
|
@@ -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;
|
||||
@@ -32,9 +34,13 @@ public class SetupWizardApp extends Application {
|
||||
|
||||
public static final String ACTION_FINISHED = "com.cyanogenmod.setupwizard.SETUP_FINISHED";
|
||||
|
||||
public static final String ACCOUNT_TYPE_CYANOGEN = "com.cyanogen";
|
||||
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 ACTION_SETUP_FINGERPRINT = "com.android.settings.SETUP_FINGERPRINT";
|
||||
|
||||
public static final String EXTRA_FIRST_RUN = "firstRun";
|
||||
public static final String EXTRA_ALLOW_SKIP = "allowSkip";
|
||||
@@ -43,17 +49,45 @@ public class SetupWizardApp extends Application {
|
||||
public static final String EXTRA_USE_IMMERSIVE = "useImmersiveMode";
|
||||
public static final String EXTRA_THEME = "theme";
|
||||
public static final String EXTRA_MATERIAL_LIGHT = "material_light";
|
||||
public static final String EXTRA_CKSOP = "cksOp";
|
||||
public static final String EXTRA_LOGIN_FOR_KILL_SWITCH = "authCks";
|
||||
public static final String EXTRA_TITLE = "title";
|
||||
public static final String EXTRA_DETAILS = "details";
|
||||
|
||||
private static final String KEY_DETECT_CAPTIVE_PORTAL = "captive_portal_detection_enabled";
|
||||
public 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 REQUEST_CODE_UNLOCK = 6;
|
||||
public static final int REQUEST_CODE_SETUP_FINGERPRINT = 7;
|
||||
|
||||
public static final int RADIO_READY_TIMEOUT = 10 * 1000;
|
||||
|
||||
private boolean mIsRadioReady = false;
|
||||
|
||||
private boolean mIsAuthorized = 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 +95,18 @@ 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) {
|
||||
Settings.Global.putInt(getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1);
|
||||
Settings.Secure.putInt(getContentResolver(),
|
||||
Settings.Secure.USER_SETUP_COMPLETE, 1);
|
||||
SetupWizardUtils.disableGMSSetupWizard(this);
|
||||
SetupWizardUtils.disableSetupWizard(this);
|
||||
if (!isOwner) {
|
||||
disableThemeComponentsForSecondaryUser();
|
||||
}
|
||||
} else {
|
||||
disableCaptivePortalDetection();
|
||||
}
|
||||
@@ -73,7 +114,26 @@ 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 boolean isAuthorized() {
|
||||
return mIsAuthorized;
|
||||
}
|
||||
|
||||
public void setIsAuthorized(boolean isAuthorized) {
|
||||
mIsAuthorized = isAuthorized;
|
||||
}
|
||||
|
||||
public void disableStatusBar() {
|
||||
@@ -93,4 +153,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";
|
||||
@@ -155,6 +156,7 @@ public class SetupStats {
|
||||
public static final String VALUE = "value";
|
||||
public static final String SLOT = "slot";
|
||||
public static final String TOTAL_TIME = "total_time";
|
||||
public static final String FINGERPRINT_SETUP = "fingerprint_setup";
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -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
@@ -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,8 +20,11 @@ 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 android.util.Log;
|
||||
import com.android.internal.telephony.TelephonyIntents;
|
||||
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
|
||||
|
||||
@@ -33,6 +36,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 +46,32 @@ 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));
|
||||
if (SetupWizardUtils.hasFingerprint(mContext) && SetupWizardUtils.isOwner()) {
|
||||
pages.add(new FingerprintSetupPage(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 +83,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 +121,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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,7 +175,13 @@ public class CMSetupWizardData extends AbstractSetupData {
|
||||
TelephonyManager tm = TelephonyManager.from(mContext);
|
||||
int simSlotCount = tm.getSimCount();
|
||||
for (int i = 0; i < simSlotCount; i++) {
|
||||
int state = tm.getSimState(i);
|
||||
int state;
|
||||
try {
|
||||
state = tm.getSimState(i);
|
||||
} catch (IllegalStateException ise) {
|
||||
Log.e(TAG, "Unable to get sim state from TelephonyManager");
|
||||
continue;
|
||||
}
|
||||
if (state != TelephonyManager.SIM_STATE_ABSENT
|
||||
&& state != TelephonyManager.SIM_STATE_UNKNOWN) {
|
||||
return true;
|
||||
@@ -171,7 +200,7 @@ public class CMSetupWizardData extends AbstractSetupData {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return simSlotCount == SubscriptionManager.from(mContext).getActiveSubscriptionInfoCount();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -20,10 +20,11 @@ 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;
|
||||
import android.telephony.SubInfoRecord;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.TextUtils;
|
||||
@@ -31,13 +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.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;
|
||||
|
||||
@@ -76,24 +81,37 @@ public class ChooseDataSimPage extends SetupPage {
|
||||
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<SubInfoRecord> 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) {
|
||||
SubInfoRecord subInfoRecord = (SubInfoRecord)view.getTag();
|
||||
SubscriptionInfo subInfoRecord = (SubscriptionInfo)view.getTag();
|
||||
if (subInfoRecord != null) {
|
||||
SubscriptionManager.setDefaultDataSubId(subInfoRecord.subId);
|
||||
mSubscriptionManager.setDefaultDataSubId(subInfoRecord.getSubscriptionId());
|
||||
setDataSubChecked(subInfoRecord);
|
||||
}
|
||||
}
|
||||
@@ -102,8 +120,14 @@ public class ChooseDataSimPage extends SetupPage {
|
||||
@Override
|
||||
protected void initializePage() {
|
||||
mPageView = (ViewGroup)mRootView.findViewById(R.id.page_view);
|
||||
mSubInfoRecords = SubscriptionManager.getActiveSubInfoList();
|
||||
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);
|
||||
@@ -114,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);
|
||||
SubInfoRecord 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();
|
||||
@@ -132,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
|
||||
@@ -151,43 +189,55 @@ 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);
|
||||
}
|
||||
}
|
||||
|
||||
private PhoneStateListener createPhoneStateListener(final SubInfoRecord subInfoRecord) {
|
||||
return new PhoneStateListener(subInfoRecord.subId) {
|
||||
private PhoneStateListener createPhoneStateListener(final SubscriptionInfo subInfoRecord) {
|
||||
return new PhoneStateListener(subInfoRecord.getSubscriptionId()) {
|
||||
|
||||
@Override
|
||||
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
|
||||
if (mIsAttached) {
|
||||
mSignalStrengths.put(subInfoRecord.slotId, signalStrength);
|
||||
updateSignalStrength(subInfoRecord);
|
||||
}
|
||||
mSignalStrengths.put(subInfoRecord.getSimSlotIndex(), signalStrength);
|
||||
updateSignalStrength(subInfoRecord);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceStateChanged(ServiceState state) {
|
||||
if (mIsAttached) {
|
||||
mServiceStates.put(subInfoRecord.slotId, 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setDataSubChecked(SubInfoRecord subInfoRecord) {
|
||||
private void setDataSubChecked(SubscriptionInfo subInfoRecord) {
|
||||
if (mIsAttached) {
|
||||
for (int i = 0; i < mCheckBoxes.size(); i++) {
|
||||
if (subInfoRecord.slotId == i) {
|
||||
if (subInfoRecord.getSimSlotIndex() == i) {
|
||||
mCheckBoxes.get(i).setChecked(true);
|
||||
SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
|
||||
SetupStats.Action.PREFERRED_DATA_SIM,
|
||||
@@ -203,18 +253,17 @@ public class ChooseDataSimPage extends SetupPage {
|
||||
private void updateCurrentDataSub() {
|
||||
if (mIsAttached) {
|
||||
for (int i = 0; i < mSubInfoRecords.size(); i++) {
|
||||
SubInfoRecord subInfoRecord = mSubInfoRecords.get(i);
|
||||
mCheckBoxes.get(i).setChecked(SubscriptionManager.getDefaultDataSubId()
|
||||
== subInfoRecord.subId);
|
||||
|
||||
SubscriptionInfo subInfoRecord = mSubInfoRecords.valueAt(i);
|
||||
mCheckBoxes.get(i).setChecked(mSubscriptionManager.getDefaultDataPhoneId()
|
||||
== subInfoRecord.getSimSlotIndex());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void updateCarrierText(SubInfoRecord subInfoRecord) {
|
||||
private void updateCarrierText(SubscriptionInfo subInfoRecord) {
|
||||
if (mIsAttached) {
|
||||
String name = mPhone.getNetworkOperatorName(subInfoRecord.subId);
|
||||
ServiceState serviceState = mServiceStates.get(subInfoRecord.slotId);
|
||||
String name = mPhone.getNetworkOperatorName(subInfoRecord.getSubscriptionId());
|
||||
ServiceState serviceState = mServiceStates.get(subInfoRecord.getSimSlotIndex());
|
||||
if (TextUtils.isEmpty(name)) {
|
||||
if (serviceState != null && serviceState.isEmergencyOnly()) {
|
||||
name = getString(R.string.setup_mobile_data_emergency_only);
|
||||
@@ -223,15 +272,16 @@ public class ChooseDataSimPage extends SetupPage {
|
||||
}
|
||||
}
|
||||
String formattedName =
|
||||
getString(R.string.data_sim_name, subInfoRecord.slotId + 1, name);
|
||||
mNameViews.get(subInfoRecord.slotId).setText(formattedName);
|
||||
getString(R.string.data_sim_name,
|
||||
subInfoRecord.getSimSlotIndex() + 1, name);
|
||||
mNameViews.get(subInfoRecord.getSimSlotIndex()).setText(formattedName);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateSignalStrength(SubInfoRecord subInfoRecord) {
|
||||
private void updateSignalStrength(SubscriptionInfo subInfoRecord) {
|
||||
if (mIsAttached) {
|
||||
ImageView signalView = mSignalViews.get(subInfoRecord.slotId);
|
||||
SignalStrength signalStrength = mSignalStrengths.get(subInfoRecord.slotId);
|
||||
ImageView signalView = mSignalViews.get(subInfoRecord.getSimSlotIndex());
|
||||
SignalStrength signalStrength = mSignalStrengths.get(subInfoRecord.getSimSlotIndex());
|
||||
if (!hasService(subInfoRecord)) {
|
||||
signalView.setImageResource(R.drawable.ic_signal_no_signal);
|
||||
} else {
|
||||
@@ -261,9 +311,9 @@ public class ChooseDataSimPage extends SetupPage {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean hasService(SubInfoRecord subInfoRecord) {
|
||||
private boolean hasService(SubscriptionInfo subInfoRecord) {
|
||||
boolean retVal;
|
||||
ServiceState serviceState = mServiceStates.get(subInfoRecord.slotId);
|
||||
ServiceState serviceState = mServiceStates.get(subInfoRecord.getSimSlotIndex());
|
||||
if (serviceState != null) {
|
||||
// Consider the device to be in service if either voice or data service is available.
|
||||
// Some SIM cards are marketed as data-only and do not support voice service, and on
|
||||
|
@@ -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) {
|
||||
@@ -104,6 +101,9 @@ public class CyanogenServicesPage extends SetupPage {
|
||||
resultCode == Activity.RESULT_OK ? "success" : "skipped");
|
||||
if (SetupWizardUtils.accountExists(mContext,
|
||||
mContext.getString(R.string.cm_account_type))) {
|
||||
if (SetupWizardUtils.isDeviceLocked()) {
|
||||
((SetupWizardApp) mContext.getApplicationContext()).setIsAuthorized(true);
|
||||
}
|
||||
setHidden(true);
|
||||
}
|
||||
getCallbacks().onNextPage();
|
||||
@@ -127,6 +127,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 +136,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,17 @@ 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.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
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;
|
||||
@@ -39,9 +44,11 @@ import android.view.IWindowManager;
|
||||
import android.view.View;
|
||||
import android.view.WindowManagerGlobal;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.ImageView;
|
||||
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;
|
||||
@@ -63,6 +70,8 @@ public class CyanogenSettingsPage extends SetupPage {
|
||||
public static final String SETTING_METRICS = "settings.cyanogen.allow_metrics";
|
||||
public static final String PRIVACY_POLICY_URI = "https://cyngn.com/oobe-legal?hideHeader=1";
|
||||
|
||||
private static final String WHISPERPUSH_PACKAGE = "org.whispersystems.whisperpush";
|
||||
|
||||
public CyanogenSettingsPage(Context context, SetupDataCallbacks callbacks) {
|
||||
super(context, callbacks);
|
||||
}
|
||||
@@ -197,18 +206,29 @@ public class CyanogenSettingsPage extends SetupPage {
|
||||
private static boolean hideWhisperPush(Context context) {
|
||||
final int playServicesAvailable = GooglePlayServicesUtil
|
||||
.isGooglePlayServicesAvailable(context);
|
||||
try {
|
||||
PackageInfo pi = context.getPackageManager().getPackageInfo(WHISPERPUSH_PACKAGE, 0);
|
||||
if (pi == null) {
|
||||
return true;
|
||||
}
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
return true;
|
||||
}
|
||||
return playServicesAvailable != ConnectionResult.SUCCESS
|
||||
|| !SetupWizardUtils.hasTelephony(context)
|
||||
|| (SetupWizardUtils.hasTelephony(context) &&
|
||||
SetupWizardUtils.isSimMissing(context));
|
||||
}
|
||||
|
||||
protected static boolean hideThemeSwitch(Context context) {
|
||||
private static boolean hideThemeSwitch(Context context) {
|
||||
return ThemeUtils.getDefaultThemePackageName(context).equals(ThemeConfig.SYSTEM_DEFAULT);
|
||||
}
|
||||
|
||||
public static class CyanogenSettingsFragment extends SetupPageFragment {
|
||||
|
||||
private View mKillSwitchView;
|
||||
private TextView mKillSwitchTitle;
|
||||
private ImageView mKillSwitchStatus;
|
||||
private View mMetricsRow;
|
||||
private View mDefaultThemeRow;
|
||||
private View mNavKeysRow;
|
||||
@@ -218,6 +238,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 +281,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,
|
||||
@@ -276,6 +303,21 @@ public class CyanogenSettingsPage extends SetupPage {
|
||||
privacyPolicy.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
privacyPolicy.setText(ss);
|
||||
|
||||
mKillSwitchView = mRootView.findViewById(R.id.killswitch);
|
||||
mKillSwitchTitle = (TextView)mRootView.findViewById(R.id.killswitch_title);
|
||||
mKillSwitchStatus = (ImageView)mRootView.findViewById(R.id.killswitch_check);
|
||||
if (hideKillSwitch()) {
|
||||
mKillSwitchView.setVisibility(View.GONE);
|
||||
} else {
|
||||
if (SetupWizardUtils.isDeviceLocked()) {
|
||||
mKillSwitchTitle.setEnabled(true);
|
||||
mKillSwitchStatus.setImageResource(R.drawable.tick);
|
||||
} else {
|
||||
mKillSwitchTitle.setEnabled(false);
|
||||
mKillSwitchStatus.setImageResource(R.drawable.cross);
|
||||
}
|
||||
}
|
||||
|
||||
mMetricsRow = mRootView.findViewById(R.id.metrics);
|
||||
mMetricsRow.setOnClickListener(mMetricsClickListener);
|
||||
String metricsHelpImproveCM =
|
||||
@@ -288,14 +330,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 +349,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 +360,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 +380,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 +396,61 @@ 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;
|
||||
if (myPageBundle.containsKey(KEY_APPLY_DEFAULT_THEME)) {
|
||||
themesChecked = myPageBundle.getBoolean(KEY_APPLY_DEFAULT_THEME);
|
||||
} else {
|
||||
themesChecked = getActivity().getResources().getBoolean(
|
||||
R.bool.check_custom_theme_by_default);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean hideKillSwitch() {
|
||||
return !SetupWizardUtils.hasKillSwitch();
|
||||
}
|
||||
|
||||
}
|
||||
|
123
src/com/cyanogenmod/setupwizard/setup/FingerprintSetupPage.java
Normal file
@@ -0,0 +1,123 @@
|
||||
/*
|
||||
* Copyright (C) 2013 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.Fragment;
|
||||
import android.app.FragmentManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.cyanogenmod.setupwizard.R;
|
||||
import com.cyanogenmod.setupwizard.SetupWizardApp;
|
||||
import com.cyanogenmod.setupwizard.cmstats.SetupStats;
|
||||
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
|
||||
|
||||
public class FingerprintSetupPage extends SetupPage {
|
||||
|
||||
private static final String TAG = "FingerprintSetupPage";
|
||||
|
||||
public FingerprintSetupPage(Context context, SetupDataCallbacks callbacks) {
|
||||
super(context, callbacks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fragment getFragment(FragmentManager fragmentManager, int action) {
|
||||
Fragment fragment = fragmentManager.findFragmentByTag(getKey());
|
||||
if (fragment == null) {
|
||||
Bundle args = new Bundle();
|
||||
args.putString(Page.KEY_PAGE_ARGUMENT, getKey());
|
||||
args.putInt(Page.KEY_PAGE_ACTION, action);
|
||||
fragment = new FingerprintSetupFragment();
|
||||
fragment.setArguments(args);
|
||||
}
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNextButtonTitleResId() {
|
||||
return R.string.skip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTitleResId() {
|
||||
return R.string.fingerprint_setup_title;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (SetupWizardApp.REQUEST_CODE_SETUP_FINGERPRINT == requestCode) {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
getCallbacks().onNextPage();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static class FingerprintSetupFragment extends SetupPageFragment {
|
||||
|
||||
private TextView mSetupFingerprint;
|
||||
|
||||
@Override
|
||||
protected void initializePage() {
|
||||
mSetupFingerprint = (TextView) mRootView.findViewById(R.id.setup_fingerprint);
|
||||
mSetupFingerprint.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
launchFingerprintSetup();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutResource() {
|
||||
return R.layout.setup_fingerprint;
|
||||
}
|
||||
|
||||
private void launchFingerprintSetup() {
|
||||
Intent intent = new Intent(SetupWizardApp.ACTION_SETUP_FINGERPRINT);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_FIRST_RUN, true);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_ALLOW_SKIP, true);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_USE_IMMERSIVE, true);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_THEME, SetupWizardApp.EXTRA_MATERIAL_LIGHT);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_AUTO_FINISH, false);
|
||||
intent.putExtra(LockPatternUtils.LOCKSCREEN_FINGERPRINT_FALLBACK, true);
|
||||
intent.putExtra(SetupWizardApp.EXTRA_TITLE,
|
||||
getString(R.string.settings_fingerprint_setup_title));
|
||||
intent.putExtra(SetupWizardApp.EXTRA_DETAILS,
|
||||
getString(R.string.settings_fingerprint_setup_details));
|
||||
ActivityOptions options =
|
||||
ActivityOptions.makeCustomAnimation(getActivity(),
|
||||
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.FINGERPRINT_SETUP);
|
||||
startActivityForResult(intent, SetupWizardApp.REQUEST_CODE_SETUP_FINGERPRINT,
|
||||
options.toBundle());
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,29 @@
|
||||
package com.cyanogenmod.setupwizard.setup;
|
||||
|
||||
import android.app.StatusBarManager;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.provider.Settings;
|
||||
|
||||
import com.cyanogenmod.setupwizard.SetupWizardApp;
|
||||
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
|
||||
|
||||
public class FinishSetupReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if (SetupWizardUtils.isDeviceLocked()) {
|
||||
return;
|
||||
}
|
||||
Settings.Global.putInt(context.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1);
|
||||
Settings.Secure.putInt(context.getContentResolver(),
|
||||
Settings.Secure.USER_SETUP_COMPLETE, 1);
|
||||
((StatusBarManager)context.getSystemService(Context.STATUS_BAR_SERVICE)).disable(
|
||||
StatusBarManager.DISABLE_NONE);
|
||||
Settings.Global.putInt(context.getContentResolver(),
|
||||
SetupWizardApp.KEY_DETECT_CAPTIVE_PORTAL, 1);
|
||||
SetupWizardUtils.disableGMSSetupWizard(context);
|
||||
SetupWizardUtils.disableSetupWizard(context);
|
||||
}
|
||||
}
|
@@ -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;
|
||||
|
@@ -16,6 +16,10 @@
|
||||
|
||||
package com.cyanogenmod.setupwizard.setup;
|
||||
|
||||
import android.accounts.AccountManager;
|
||||
import android.accounts.AccountManagerCallback;
|
||||
import android.accounts.AccountManagerFuture;
|
||||
import android.app.Activity;
|
||||
import android.app.ActivityOptions;
|
||||
import android.app.Fragment;
|
||||
import android.app.FragmentManager;
|
||||
@@ -25,14 +29,17 @@ import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.NumberPicker;
|
||||
|
||||
import com.cyanogenmod.setupwizard.R;
|
||||
import com.cyanogenmod.setupwizard.SetupWizardApp;
|
||||
import com.cyanogenmod.setupwizard.cmstats.SetupStats;
|
||||
import com.cyanogenmod.setupwizard.ui.LocalePicker;
|
||||
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
|
||||
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
@@ -42,21 +49,23 @@ public class WelcomePage extends SetupPage {
|
||||
|
||||
private static final String ACTION_EMERGENCY_DIAL = "com.android.phone.EmergencyDialer.DIAL";
|
||||
|
||||
private WelcomeFragment mWelcomeFragment;
|
||||
|
||||
public WelcomePage(Context context, SetupDataCallbacks callbacks) {
|
||||
super(context, callbacks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fragment getFragment(FragmentManager fragmentManager, int action) {
|
||||
Fragment fragment = fragmentManager.findFragmentByTag(getKey());
|
||||
if (fragment == null) {
|
||||
mWelcomeFragment = (WelcomeFragment)fragmentManager.findFragmentByTag(getKey());
|
||||
if (mWelcomeFragment == null) {
|
||||
Bundle args = new Bundle();
|
||||
args.putString(Page.KEY_PAGE_ARGUMENT, getKey());
|
||||
args.putInt(Page.KEY_PAGE_ACTION, action);
|
||||
fragment = new WelcomeFragment();
|
||||
fragment.setArguments(args);
|
||||
mWelcomeFragment = new WelcomeFragment();
|
||||
mWelcomeFragment.setArguments(args);
|
||||
}
|
||||
return fragment;
|
||||
return mWelcomeFragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,6 +73,16 @@ public class WelcomePage extends SetupPage {
|
||||
return R.string.setup_welcome;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doNextAction() {
|
||||
if (isLocked()) {
|
||||
confirmCyanogenCredentials(mWelcomeFragment);
|
||||
return true;
|
||||
} else {
|
||||
return super.doNextAction();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doPreviousAction() {
|
||||
Intent intent = new Intent(ACTION_EMERGENCY_DIAL);
|
||||
@@ -81,16 +100,66 @@ public class WelcomePage extends SetupPage {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (requestCode == SetupWizardApp.REQUEST_CODE_UNLOCK) {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
((SetupWizardApp) mContext.getApplicationContext()).setIsAuthorized(true);
|
||||
getCallbacks().onNextPage();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNextButtonTitleResId() {
|
||||
if (isLocked()) {
|
||||
return R.string.setup_unlock;
|
||||
} else {
|
||||
return R.string.next;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPrevButtonTitleResId() {
|
||||
return R.string.emergency_call;
|
||||
}
|
||||
|
||||
private void confirmCyanogenCredentials(final Fragment fragment) {
|
||||
AccountManager accountManager = AccountManager.get(mContext);
|
||||
accountManager.editProperties(SetupWizardApp.ACCOUNT_TYPE_CYANOGEN, null,
|
||||
new AccountManagerCallback<Bundle>() {
|
||||
public void run(AccountManagerFuture<Bundle> f) {
|
||||
try {
|
||||
Bundle b = f.getResult();
|
||||
Intent i = b.getParcelable(AccountManager.KEY_INTENT);
|
||||
i.putExtra(SetupWizardApp.EXTRA_FIRST_RUN, true);
|
||||
i.putExtra(SetupWizardApp.EXTRA_SHOW_BUTTON_BAR, true);
|
||||
i.putExtra(SetupWizardApp.EXTRA_USE_IMMERSIVE, true);
|
||||
i.putExtra(SetupWizardApp.EXTRA_LOGIN_FOR_KILL_SWITCH, true);
|
||||
fragment.startActivityForResult(i,
|
||||
SetupWizardApp.REQUEST_CODE_UNLOCK);
|
||||
} catch (Throwable t) {
|
||||
Log.e(getKey(), "confirmCredentials failed", t);
|
||||
}
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
|
||||
private boolean isLocked() {
|
||||
boolean isAuthorized = ((SetupWizardApp) mContext.getApplicationContext()).isAuthorized();
|
||||
if (SetupWizardUtils.isDeviceLocked()) {
|
||||
return !isAuthorized;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static class WelcomeFragment extends SetupPageFragment {
|
||||
|
||||
private ArrayAdapter<com.android.internal.app.LocalePicker.LocaleInfo> mLocaleAdapter;
|
||||
|
@@ -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 {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -17,6 +17,7 @@
|
||||
package com.cyanogenmod.setupwizard.util;
|
||||
|
||||
import android.accounts.AccountManager;
|
||||
import android.app.AppGlobals;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.pm.ComponentInfo;
|
||||
@@ -25,13 +26,19 @@ import android.content.pm.PackageManager;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.IBinder;
|
||||
import android.os.ServiceManager;
|
||||
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.os.IKillSwitchService;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.cyanogenmod.setupwizard.SetupWizardApp;
|
||||
|
||||
import com.google.android.gms.common.ConnectionResult;
|
||||
import com.google.android.gms.common.GooglePlayServicesUtil;
|
||||
|
||||
@@ -78,10 +85,10 @@ public class SetupWizardUtils {
|
||||
TelephonyManager tm =
|
||||
(TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
if (tm.isMultiSimEnabled()) {
|
||||
int phoneId = SubscriptionManager.getDefaultDataPhoneId();
|
||||
int phoneId = SubscriptionManager.from(context).getDefaultDataPhoneId();
|
||||
android.provider.Settings.Global.putInt(context.getContentResolver(),
|
||||
android.provider.Settings.Global.MOBILE_DATA + phoneId, enabled ? 1 : 0);
|
||||
long subId = SubscriptionManager.getDefaultDataSubId();
|
||||
int subId = SubscriptionManager.getDefaultDataSubId();
|
||||
tm.setDataEnabledUsingSubId(subId, enabled);
|
||||
} else {
|
||||
android.provider.Settings.Global.putInt(context.getContentResolver(),
|
||||
@@ -111,7 +118,7 @@ public class SetupWizardUtils {
|
||||
public static boolean isSimMissing(Context context) {
|
||||
TelephonyManager tm =
|
||||
(TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
int simCount = SubscriptionManager.getActiveSubInfoCount();
|
||||
int simCount = SubscriptionManager.from(context).getDefaultDataPhoneId();
|
||||
for (int i = 0; i < simCount; i++) {
|
||||
int simState = tm.getSimState(i);
|
||||
if (simState != TelephonyManager.SIM_STATE_ABSENT &&
|
||||
@@ -122,6 +129,49 @@ public class SetupWizardUtils {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean isDeviceLocked() {
|
||||
IBinder b = ServiceManager.getService(Context.KILLSWITCH_SERVICE);
|
||||
IKillSwitchService service = IKillSwitchService.Stub.asInterface(b);
|
||||
if (service != null) {
|
||||
try {
|
||||
return service.isDeviceLocked();
|
||||
} catch (Exception e) {
|
||||
// silently fail
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean hasKillSwitch() {
|
||||
IBinder b = ServiceManager.getService(Context.KILLSWITCH_SERVICE);
|
||||
IKillSwitchService service = IKillSwitchService.Stub.asInterface(b);
|
||||
if (service != null) {
|
||||
try {
|
||||
return service.hasKillSwitch();
|
||||
} catch (Exception e) {
|
||||
// silently fail
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean hasAuthorized() {
|
||||
return ((SetupWizardApp) AppGlobals.getInitialApplication()).isAuthorized();
|
||||
}
|
||||
|
||||
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();
|
||||
@@ -143,6 +193,8 @@ public class SetupWizardUtils {
|
||||
public static void disableSetupWizard(Context context) {
|
||||
disableComponent(context, context.getPackageName(),
|
||||
"com.cyanogenmod.setupwizard.ui.SetupWizardActivity");
|
||||
disableComponent(context, context.getPackageName(),
|
||||
"com.cyanogenmod.setupwizard.setup.FinishSetupReceiver");
|
||||
}
|
||||
|
||||
public static void disableGMSSetupWizard(Context context) {
|
||||
@@ -159,7 +211,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,
|
||||
@@ -168,8 +220,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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,4 +262,22 @@ 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 boolean hasFingerprint(Context context) {
|
||||
LockPatternUtils lockPatternUtils = new LockPatternUtils(context);
|
||||
return lockPatternUtils.isFingerprintInstalled(context);
|
||||
}
|
||||
|
||||
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");
|
||||
}
|
||||
|
@@ -66,6 +66,10 @@ public class ManualTestActivity extends Activity {
|
||||
"com.cyanogenmod.setupwizard.ui.SetupWizardActivity");
|
||||
pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
|
||||
PackageManager.DONT_KILL_APP);
|
||||
componentName = new ComponentName("com.cyanogenmod.setupwizard",
|
||||
"com.cyanogenmod.setupwizard.setup.FinishSetupReceiver");
|
||||
pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
|
||||
PackageManager.DONT_KILL_APP);
|
||||
pm.clearApplicationUserData("com.cyanogenmod.setupwizard", null);
|
||||
ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
|
||||
am.killBackgroundProcesses("com.cyanogenmod.setupwizard");
|
||||
|