Rix notifications reenabling. https://redmine.stoutner.com/issues/864 master
authorSoren Stoutner <soren@stoutner.com>
Tue, 21 Jun 2022 18:33:13 +0000 (11:33 -0700)
committerSoren Stoutner <soren@stoutner.com>
Tue, 21 Jun 2022 18:33:13 +0000 (11:33 -0700)
110 files changed:
app/build.gradle
app/src/main/AndroidManifest.xml
app/src/main/assets/de/changelog.html
app/src/main/assets/de/explanations/antiquated_network.html
app/src/main/assets/de/explanations/network_1xrtt.html
app/src/main/assets/de/explanations/network_cdma.html
app/src/main/assets/de/explanations/network_edge.html
app/src/main/assets/de/explanations/network_ehrpd.html
app/src/main/assets/de/explanations/network_evdo_0.html
app/src/main/assets/de/explanations/network_evdo_a.html
app/src/main/assets/de/explanations/network_evdo_b.html
app/src/main/assets/de/explanations/network_gprs.html
app/src/main/assets/de/explanations/network_gsm.html
app/src/main/assets/de/explanations/network_hsdpa.html
app/src/main/assets/de/explanations/network_hspa.html
app/src/main/assets/de/explanations/network_hspap.html
app/src/main/assets/de/explanations/network_hsupa.html
app/src/main/assets/de/explanations/network_iden.html
app/src/main/assets/de/explanations/network_iwlan.html
app/src/main/assets/de/explanations/network_lte.html
app/src/main/assets/de/explanations/network_nr.html
app/src/main/assets/de/explanations/network_td_scdma.html
app/src/main/assets/de/explanations/network_umts.html
app/src/main/assets/de/explanations/network_unknown.html
app/src/main/assets/de/explanations/override_network_lte_advanced_pro.html
app/src/main/assets/de/explanations/override_network_lte_ca.html
app/src/main/assets/de/explanations/override_network_none.html
app/src/main/assets/de/explanations/override_network_nr_advanced.html
app/src/main/assets/de/explanations/override_network_nr_nsa.html
app/src/main/assets/de/explanations/override_network_nr_nsa_mmwave.html
app/src/main/assets/de/explanations/stingrays.html
app/src/main/assets/de/licenses.html
app/src/main/assets/en/changelog.html
app/src/main/assets/en/explanations/network_1xrtt.html
app/src/main/assets/en/explanations/network_evdo_0.html
app/src/main/assets/en/explanations/network_evdo_a.html
app/src/main/assets/en/explanations/network_evdo_b.html
app/src/main/assets/en/explanations/network_nr.html
app/src/main/assets/es/changelog.html
app/src/main/assets/es/explanations/network_1xrtt.html
app/src/main/assets/es/explanations/network_evdo_0.html
app/src/main/assets/es/explanations/network_evdo_a.html
app/src/main/assets/es/explanations/network_evdo_b.html
app/src/main/assets/es/explanations/network_nr.html
app/src/main/assets/fr/changelog.html
app/src/main/assets/fr/explanations/network_1xrtt.html
app/src/main/assets/fr/explanations/network_evdo_0.html
app/src/main/assets/fr/explanations/network_evdo_a.html
app/src/main/assets/fr/explanations/network_evdo_b.html
app/src/main/assets/fr/explanations/network_nr.html
app/src/main/assets/it/changelog.html
app/src/main/assets/it/explanations/network_1xrtt.html
app/src/main/assets/it/explanations/network_evdo_0.html
app/src/main/assets/it/explanations/network_evdo_a.html
app/src/main/assets/it/explanations/network_evdo_b.html
app/src/main/assets/it/explanations/network_nr.html
app/src/main/assets/ru/changelog.html
app/src/main/assets/ru/explanations/network_1xrtt.html
app/src/main/assets/ru/explanations/network_evdo_0.html
app/src/main/assets/ru/explanations/network_evdo_a.html
app/src/main/assets/ru/explanations/network_evdo_b.html
app/src/main/assets/ru/explanations/network_nr.html
app/src/main/java/com/stoutner/privacycell/activities/PrivacyCellActivity.kt
app/src/main/java/com/stoutner/privacycell/helpers/ProtocolHelper.kt [new file with mode: 0644]
app/src/main/java/com/stoutner/privacycell/services/RealtimeMonitoringService.kt
app/src/main/java/com/stoutner/privacycell/workers/RegisterRealtimeListenerWorker.kt
app/src/main/java/com/stoutner/privacycell/workers/RestartServiceWorker.kt
app/src/main/res/layout/privacy_cell_bottom_appbar.xml
app/src/main/res/layout/privacy_cell_top_appbar.xml
app/src/main/res/layout/webview_dialog.xml
app/src/main/res/values-de/strings.xml
app/src/main/res/values-night/colors.xml
app/src/main/res/values/colors.xml
build.gradle
fastlane/metadata/android/de-DE/changelogs/9.txt [new file with mode: 0644]
fastlane/metadata/android/de-DE/full_description.txt [new file with mode: 0644]
fastlane/metadata/android/de-DE/images/phoneScreenshots/01-SecureNetwork-de.png [new file with mode: 0644]
fastlane/metadata/android/de-DE/images/phoneScreenshots/02-InsecureNetwork-de.png [new file with mode: 0644]
fastlane/metadata/android/de-DE/images/phoneScreenshots/03-AntiquatedNetwork-de.png [new file with mode: 0644]
fastlane/metadata/android/de-DE/images/phoneScreenshots/04-NavigationMenu-de.png [new file with mode: 0644]
fastlane/metadata/android/de-DE/images/phoneScreenshots/05-DarkTheme-de.png [new file with mode: 0644]
fastlane/metadata/android/de-DE/short_description.txt [new file with mode: 0644]
fastlane/metadata/android/de-DE/title.txt [new file with mode: 0644]
fastlane/metadata/android/en-US/changelogs/9.txt [new file with mode: 0644]
fastlane/metadata/android/en-US/images/phoneScreenshots/02-InsecureNetwork-en.png
fastlane/metadata/android/en-US/images/phoneScreenshots/03-AntiquatedNetwork-en.png
fastlane/metadata/android/en-US/images/phoneScreenshots/04-NavigationMenu-en.png
fastlane/metadata/android/en-US/images/phoneScreenshots/05-DarkTheme-en.png
fastlane/metadata/android/es-ES/changelogs/9.txt [new file with mode: 0644]
fastlane/metadata/android/es-ES/images/phoneScreenshots/02-InsecureNetwork-es.png
fastlane/metadata/android/es-ES/images/phoneScreenshots/03-AntiquatedNetework-es.png [deleted file]
fastlane/metadata/android/es-ES/images/phoneScreenshots/03-AntiquatedNetwork-es.png [new file with mode: 0644]
fastlane/metadata/android/es-ES/images/phoneScreenshots/04-NavigationMenu-es.png
fastlane/metadata/android/es-ES/images/phoneScreenshots/05-DarkTheme-es.png
fastlane/metadata/android/fr-FR/changelogs/8.txt [new file with mode: 0644]
fastlane/metadata/android/fr-FR/images/phoneScreenshots/02-InsecureNetwork-fr.png
fastlane/metadata/android/fr-FR/images/phoneScreenshots/03-AntiquatedNetwork-fr.png
fastlane/metadata/android/fr-FR/images/phoneScreenshots/04-NavigationMenu-fr.png
fastlane/metadata/android/fr-FR/images/phoneScreenshots/05-DarkTheme-fr.png
fastlane/metadata/android/it-IT/changelogs/9.txt [new file with mode: 0644]
fastlane/metadata/android/it-IT/images/phoneScreenshots/02-InsecureNetwork-it.png
fastlane/metadata/android/it-IT/images/phoneScreenshots/03-AntiquatedNetwork-it.png
fastlane/metadata/android/it-IT/images/phoneScreenshots/04-NavigationMenu-it.png
fastlane/metadata/android/it-IT/images/phoneScreenshots/05-DarkTheme-it.png
fastlane/metadata/android/ru-RU/changelogs/9.txt [new file with mode: 0644]
fastlane/metadata/android/ru-RU/images/phoneScreenshots/02-InsecureNetwork-ru.png
fastlane/metadata/android/ru-RU/images/phoneScreenshots/03-AntiquatedNetwork-ru.png
fastlane/metadata/android/ru-RU/images/phoneScreenshots/04-NavigationMenu-ru.png
fastlane/metadata/android/ru-RU/images/phoneScreenshots/05-DarkTheme-ru.png
gradle/wrapper/gradle-wrapper.properties

index 6474dbfd5a16dee3c7eb9ee63ce19f11d21089cf..e9ea6d2a90e566a493a824b2984b095416570a53 100644 (file)
@@ -23,14 +23,14 @@ plugins {
 }
 
 android {
-    compileSdk 31
+    compileSdk 32
 
     defaultConfig {
         applicationId "com.stoutner.privacycell"
         minSdk 30
-        targetSdk 31
-        versionCode 8
-        versionName "1.7"
+        targetSdk 32
+        versionCode 9
+        versionName "1.8"
     }
 
     buildTypes {
@@ -45,20 +45,22 @@ android {
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
     }
+
+    namespace 'com.stoutner.privacycell'
 }
 
 dependencies {
     // Include the following AndroidX libraries.
-    implementation 'androidx.appcompat:appcompat:1.4.1'
-    implementation 'androidx.core:core-ktx:1.7.0'
+    implementation 'androidx.appcompat:appcompat:1.4.2'
+    implementation 'androidx.core:core-ktx:1.8.0'
     implementation 'androidx.preference:preference-ktx:1.2.0'
     implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
     implementation 'androidx.webkit:webkit:1.4.0'
     implementation 'androidx.work:work-runtime-ktx:2.7.1'
 
     // Include the Kotlin standard library.  This should be the same version number listed in the project build.gradle.
-    implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10'
+    implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.0'
 
     // Include the Google material library.
-    implementation 'com.google.android.material:material:1.5.0'
+    implementation 'com.google.android.material:material:1.6.1'
 }
\ No newline at end of file
index 4deb14c892c6e639af9f0ba45986889b08945674..408848dcc8c2697bbb7674ce968d748a9ab6b3d8 100644 (file)
@@ -22,7 +22,6 @@
 <manifest
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
-    package="com.stoutner.privacycell"
     android:installLocation="auto" >
 
     <!-- Required to read cell network information. -->
index 842e2ef8c8de0a3cc11554d46fc100bded78ae50..b761189db583739bcc4469e45d4ef9c3472af238 100644 (file)
     </head>
 
     <body>
-        <h3>1.7 (Version Code 8)</h3>
-        <p>24. März 2022 - Mindest-API 30, Ziel-API 31</p>
+        <h3><a href="https://www.stoutner.com/privacy-cell-1-8/">1.8</a> (Version Code 9)</h3>
+        <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=f60b140868c2f0d564657e96d48508b4fbdc546b">14. Juni 2022</a> - Mindest-API 30, Ziel-API 32</p>
+        <ul>
+            <li>Der <a href="https://redmine.stoutner.com/issues/851">Sprach-Netzwerk-Status</a> wird nun bei der Einschätzung der Gesamt-Sicherheit des Funknetzwerks berücksichtigt.</li>
+            <li>Fehler behoben, durch den gelegentlich <a href="https://redmine.stoutner.com/issues/850">Benachrichtigungen nicht abgeschaltet werden konnten</a>.</li>
+            <li><a href="https://redmine.stoutner.com/issues/827">Ziel-API auf 32</a> (Android 12L) angehoben.</li>
+            <li>Erste komplette deutsche Übersetzung von Bernhard G. Keller.</li>
+        </ul>
+
+        <h3><a href="https://www.stoutner.com/privacy-cell-1-7/">1.7</a> (Version Code 8)</h3>
+        <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=b11b84b24c660fac3a69f2dbe4bd615d73811219">24. März 2022</a> - Mindest-API 30, Ziel-API 31</p>
         <ul>
             <li>Warnung bei Verbindungen zu <a href="https://redmine.stoutner.com/issues/795">älteren, unsicheren Netzwerken</a> hinzugefügt.</li>
             <li><a href="https://redmine.stoutner.com/issues/774">Protokoll-Ansicht</a> hinzugefügt.</li>
index 5dac071c7a8c15435e71fc5c346dbe04cda9b7e2..0571ab53f3541192e0385a5d334f48e5ef9105b9 100644 (file)
     </head>
 
     <body>
-        <p>You are connected to a cell phone network using antiquated protocols, which have multiple known vulnerabilities.</p>
+        <p>Ihr Gerät ist mit einem Netzwerk verbunden, das veraltete Protokolle verwendet, welche etliche bekannte Sicherheits-Schwachstellen beinhalten.</p>
 
-        <p>2G networks have been <a href="https://www.eff.org/deeplinks/2022/01/victory-google-releases-disable-2g-feature-new-android-smartphones">decommissioned in most of the world</a>.
-            3G networks are currently being decommissioned. Unless you know that the carrier in your area is running antiquated protocols, you should consider your device under active attack.</p>
+        <p>2G-Netzwerke wurden in vielen Ländern bereits <a href="https://www.eff.org/deeplinks/2022/01/victory-google-releases-disable-2g-feature-new-android-smartphones">deaktiviert</a>.
+            3G-Netzwerke werden derzeit ebenfalls abgeschaltet. Sofern Sie nicht sicher sind, dass der Provider in Ihrem Gebiet tatsächlich veraltete Protokolle nutzt, sollten Sie in Erwägung ziehen,
+            dass Ihr Gerät aktuell attackiert wird.</p>
     </body>
 </html>
\ No newline at end of file
index 65e03222ac0562cfc1dc5917df44551b41aa7a05..d7842148c6148e2f665a86a7fa34377a906dee60 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,9 +29,9 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/CDMA2000#1X">1 times Radio Transmission Technology</a> (1xRTT) is the first version of the
-            <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) standard, which is the 3G update of the older 2G
-            <a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access One</a> (CDMAOne).
-            It is the competitor to <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).
+        <p><a href="https://de.wikipedia.org/wiki/CDMA2000#Typen">1 times Radio Transmission Technology</a> (1xRTT) ist die erste Version des
+            <a href="https://de.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) Standards, welches das 3G-Update des älteren 2G-Standards
+            <a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access One</a> (CDMAOne) ist.
+            Es ist der vorwiegend in Amerika und Teilen von Asien und Afrika genutzte Konkurrent zu <a href="https://de.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).</p>
     </body>
 </html>
\ No newline at end of file
index 7a7a2a68764f356a642ea71538d0a31399599e3b..ae870631a2d681e58a10cd93f29b12d7e8e35c6a 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,7 +29,7 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access</a> (CDMA, also known as CDMAOne) is a 2G standard than can be considered a direct competitor to
-            <a href="https://en.wikipedia.org/wiki/GSM">Global System for Mobile Communications</a> (GSM).</p>
+        <p><a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access</a> (CDMA, auch bekannt als CDMAOne) ist ein 2G-Standard, der als direkter Konkurrent von
+            <a href="https://de.wikipedia.org/wiki/Global_System_for_Mobile_Communications">Global System for Mobile Communications</a> (GSM) angesehen werden kann.</p>
     </body>
 </html>
\ No newline at end of file
index 3d23adda7036d00d862415e58e1492331bb8b771..45412449aa33f824701c838efe567fd8ffe2e1d3 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Enhanced_Data_rates_for_GSM_Evolution">Enhanced Data rates for GSM Evolution</a> (EDGE)
-            is a 2.5G/3G technology which can be thought of as the next step up from <a href="https://en.wikipedia.org/wiki/General_Packet_Radio_Service">General Packet Radio Service</a> (GPRS),
-            which is the first evolution of the 2G <a href="https://en.wikipedia.org/wiki/GSM">Global System for Mobile Communications</a> (GSM),
-            which is the competitor to <a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access</a> (CDMA, also known as CDMAOne).</p>
+        <p><a href="https://de.wikipedia.org/wiki/Enhanced_Data_Rates_for_GSM_Evolution">Enhanced Data rates for GSM Evolution</a> (EDGE)
+            ist eine 2.5G/3G-Technologie, die eine Weiterentwicklung von <a href="https://de.wikipedia.org/wiki/General_Packet_Radio_Service">General Packet Radio Service</a> (GPRS) darstellt,
+            die wiederum die erste Evolutionsstufe des 2G-Standards <a href="https://de.wikipedia.org/wiki/Global_System_for_Mobile_Communications">Global System for Mobile Communications</a> (GSM) und
+            die Konkurrenz-Technologie zum in Amerika und Teilen von Asien und Afrika gebräuchlichen <a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access</a>
+            (CDMA, auch bekannt als CDMAOne) ist.</p>
     </body>
 </html>
\ No newline at end of file
index 9f575f701865109aa5c847663e18c8c900a89606..d577acc943386879d0b0a6c3aa48d663b92906e4 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,8 +29,8 @@
     </head>
 
     <body>
-        <p><a href="https://ieeexplore.ieee.org/document/6618535">Enhanced High-Rate Packet Data</a> (eHRPD) is a 3.5G/4G protocol designed to ease the transition in mixed networks to 4G
-            <a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">Long-Term Evolution</a> (LTE),
-            particularly those coming from <a href="https://www.iotevolutionworld.com/topics/mobile-communications/articles/37366-evolution-options-from-cdma-lte-benefits-ehrpd.htm">CDMA2000</a>.</p>
+        <p><a href="https://ieeexplore.ieee.org/document/6618535">Enhanced High-Rate Packet Data</a> (eHRPD) ist ein 3.5G/4G-Protokoll, das entwickelt wurde, um den Übergang in gemischten Netzwerken zu 4G
+            <a href="https://de.wikipedia.org/wiki/Long_Term_Evolution">Long-Term Evolution</a> (LTE) zu erleichtern -
+            insbesonders für jene mit <a href="https://www.iotevolutionworld.com/topics/mobile-communications/articles/37366-evolution-options-from-cdma-lte-benefits-ehrpd.htm">CDMA2000</a>-Technologie.</p>
     </body>
 </html>
\ No newline at end of file
index 90d5ce339f3166685173b05f9509740b8cef8231..592198013bf31bd7450696a93c5152e94e4278f5 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,8 +29,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rel._0_(TIA-856_Release_0)">Evolution-Data Optimized release 0</a> (EVDO_0) is a 3.5G evolution of the 3G
-            <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) standard.
-            It is a competitor to the <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA) protocol.
+        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rel._0_(TIA-856_Release_0)">Evolution-Data Optimized release 0</a> (EVDO_0) ist eine 3.5G-Weiterentwicklung des 3G-Standards
+            <a href="https://de.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000).
+            Es ist die Konkurrenz-Technologie zum <a href="https://de.wikipedia.org/wiki/HSPA">High Speed Packet Access</a> (HSPA)-Protokoll.</p>
     </body>
 </html>
\ No newline at end of file
index 18cf0679603a9dec834ab15f55712b2c0e7b0bcd..6b958a820267b9b0525a1a14bbd33d1f8b1b7d28 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,8 +29,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._A_(TIA-856_Revision_A)">Evolution-Data Optimized release A</a> (EVDO_A) is the second release of the EVDO standard,
-            which is a 3.5G evolution of the 3G <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) standard.
-            It is a competitor to the <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA) protocol.
+        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._A_(TIA-856_Revision_A)">Evolution-Data Optimized revision A</a> (EVDO_A) ist die zweite Version des EVDO-Standards,
+            welche die 3.5G-Weiterentwicklung des 3G-Standards <a href="https://de.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) darstellt.
+            Es ist die Konkurrenz-Technologie zum <a href="https://de.wikipedia.org/wiki/HSPA">High Speed Packet Access</a> (HSPA)-Protokoll.</p>
     </body>
 </html>
\ No newline at end of file
index 2b4479404dfc3320c1243f79a4d7e6e56e295edf..33b4bff49f1df721c2674d77ec8275e96b703a27 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,8 +29,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._B_(TIA-856_Revision_B)">Evolution-Data Optimized release B</a> (EVDO_B) is the third release of the EVDO standard,
-            which is a 3.5G evolution of the 3G <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) standard.
-            It is a competitor to the <a href="https://en.wikipedia.org/wiki/Evolved_High_Speed_Packet_Access">High Speed Packet Access Plus</a> (HSPAP) protocol.
+        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._B_(TIA-856_Revision_B)">Evolution-Data Optimized revision B</a> (EVDO_B) ist die dritte Version des EVDO-Standards,
+            welche die 3.5G-Weiterentwicklung des 3G-Standards <a href="https://de.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) darstellt.
+            Es ist die Konkurrenz-Technologie zum <a href="https://de.wikipedia.org/wiki/HSPA">High Speed Packet Access</a> (HSPA)-Protokoll.</p>
     </body>
 </html>
\ No newline at end of file
index 4ef62c780f601fb951cf79489637e4176e00fe9c..2b4679f1add1086f882fd0ab085c6054dcf223e0 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/General_Packet_Radio_Service">General Packet Radio Service</a> (GPRS) is a 2.5G/3G packet-switched protocol
-            (meaning that information is split up into multiple packets similar to <a href="https://en.wikipedia.org/wiki/Internet_protocol_suite">TCP/IP</a> on the general internet).
-            It is the evolution of the 2G <a href="https://en.wikipedia.org/wiki/GSM">Global System for Mobile Communications</a> (GSM),
-            which is the competitor to <a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access</a> (CDMA, also known as CDMAOne).</p>
+        <p><a href="https://de.wikipedia.org/wiki/General_Packet_Radio_Service">General Packet Radio Service</a> (GPRS) ist ein paketorientiertes 2.5G/3G-Protokoll
+            (die Daten werden dabei - wie bei <a href="https://en.wikipedia.org/wiki/Internet_protocol_suite">TCP/IP</a> im Internet -
+            in einzelne Pakete umgewandelt, als solche übertragen und beim Empfänger wieder zusammengesetzt).
+            Es stellt die Weiterentwicklung des 2G-Standards <a href="https://en.wikipedia.org/wiki/GSM">Global System for Mobile Communications</a> (GSM) und die Konkurrenz-Technologie zu
+            <a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access</a> (CDMA, auch bekannt als CDMAOne) dar.</p>
     </body>
 </html>
\ No newline at end of file
index 7f691e76312b26ca825d06efe815d49bfa630c80..7a9e8a3f09a8d85f24722befb39e56e008657bd6 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,8 +29,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/GSM">Global System for Mobile Communications</a> (GSM) is a 2G standard.
-            It is the competitor to <a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access</a> (CDMA, also known as CDMAOne).
-            GSM eventually evolved into the 4G <a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">Long-Term Evolution</a> (LTE), which was also adopted by CDMA networks.</p>
+        <p><a href="https://de.wikipedia.org/wiki/Global_System_for_Mobile_Communications">Global System for Mobile Communications</a> (GSM) ist ein 2G-Standard.
+            Er stellt die Konkurrenz-Technologie zu <a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access</a> (CDMA, auch bekannt als CDMAOne) dar.
+            Aus GSM ging schließlich der 4G-Standard <a href="https://de.wikipedia.org/wiki/Long_Term_Evolution">Long-Term Evolution</a> (LTE) hervor, der auch in CDMA-Netzwerke übernommen wurde.</p>
     </body>
 </html>
\ No newline at end of file
index 30b47990e7e1d687129d290c129988f73b33a8f9..636b06c9e0311b7de0e2df09730e8373fc1bb91f 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,9 +29,9 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access#High_Speed_Downlink_Packet_Access_(HSDPA)">High Speed Downlink Packet Access</a> (HSDPA)
-            is a 3.5G protocol that makes up one portion of the <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA) update to the 3G
-            <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).
-            It is a competitor to the 3.5G <a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized">Evolution-Data Optimized</a> (EVDO) protocols.</p>
+        <p><a href="https://de.wikipedia.org/wiki/High_Speed_Downlink_Packet_Access">High Speed Downlink Packet Access</a> (HSDPA)
+            ist ein 3.5G-Protokoll, das einen Teil des <a href="https://de.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA)-Updates zum 3G-Standard
+            <a href="https://de.wikipedia.org/wiki/Universal_Mobile_Telecommunications_System">Universal Mobile Telecommunications System</a> (UMTS) darstellt.
+            Es ist eine Konkurrenz-Technologie zu den 3.5G-<a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized">Evolution-Data Optimized</a> (EVDO)-Protokollen.</p>
     </body>
 </html>
\ No newline at end of file
index ec96cb161761573a4085115c70a3d3d6d1b223cb..deedc44ece30937fe8fc01a1dbd843f977ff1dbd 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,8 +29,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA) is a 3.5G update to the 3G
-            <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).
-            It is a competitor to the 3.5G <a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized">Evolution-Data Optimized</a> (EVDO) protocols.</p>
+        <p><a href="https://de.wikipedia.org/wiki/HSPA">High Speed Packet Access</a> (HSPA) ist ein 3.5G-Update zum 3G-Standard
+            <a href="https://de.wikipedia.org/wiki/Universal_Mobile_Telecommunications_System">Universal Mobile Telecommunications System</a> (UMTS).
+            Es ist eine Konkurrenz-Technologie zu den 3.5G-<a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized">Evolution-Data Optimized</a> (EVDO)-Protokollen.</p>
     </body>
 </html>
\ No newline at end of file
index 9df717ebf6e11a4078d406f2c6e1c4ecea8bb15f..07d54a047a21cc8d76a941ae3da3725665db73c2 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,9 +29,9 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolved_High_Speed_Packet_Access">High Speed Packet Access Plus</a> (HSPAP) is a boost to the 3.5G
-            <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA) update to the 3G
-            <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).
-            It is a competitor to the 3.5G <a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized">Evolution-Data Optimized</a> (EVDO) protocols.</p>
+        <p><a href="https://en.wikipedia.org/wiki/Evolved_High_Speed_Packet_Access">High Speed Packet Access Plus</a> (HSPAP) ist eine Steigerungsstufe des 3.5G-Updates
+            <a href="https://de.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA) der 3G-Technologie
+            <a href="https://de.wikipedia.org/wiki/Universal_Mobile_Telecommunications_System">Universal Mobile Telecommunications System</a> (UMTS).
+            Es ist eine Konkurrenz-Technologie zu den 3.5G-<a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized">Evolution-Data Optimized</a> (EVDO)-Protokollen.</p>
     </body>
 </html>
\ No newline at end of file
index 397035ee575e68f037bc2e57e63e548a081cfb14..11ea0b11cbc82359b4f4c1443c7fe5fea8d2a65a 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,9 +29,9 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access#High_Speed_Uplink_Packet_Access_(HSUPA)">High Speed Uplink Packet Access</a> (HSUPA)
-            is a 3.5G protocol that makes up one portion of the <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA) update to the 3G
-            <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).
-            It is a competitor to the 3.5G <a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized">Evolution-Data Optimized</a> (EVDO) protocols.</p>
+        <p><a href="https://de.wikipedia.org/wiki/High_Speed_Uplink_Packet_Access">High Speed Uplink Packet Access</a> (HSUPA)
+            ist ein 3.5G-Protokoll, das einen Teil des <a href="https://de.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA)-Updates zum 3G-Standard
+            <a href="https://de.wikipedia.org/wiki/Universal_Mobile_Telecommunications_System">Universal Mobile Telecommunications System</a> (UMTS) darstellt.
+            Es ist eine Konkurrenz-Technologie zu den 3.5G-<a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized">Evolution-Data Optimized</a> (EVDO)-Protokollen.</p>
     </body>
 </html>
\ No newline at end of file
index 346375cd868926dcd24bd6d92b9535a74532922b..aea8168ded68d0e2f92217cf395e27e1c0b0bc02 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,7 +29,7 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/IDEN">Integrated Digital Enhanced Network</a> (iDEN) was a 2G protocol developed to work around some of the limitations of the 2G
-            <a href="https://en.wikipedia.org/wiki/GSM">Global System for Mobile Communications</a> (GSM).</p>
+        <p><a href="https://de.wikipedia.org/wiki/IDEN">Integrated Digital Enhanced Network</a> (iDEN) war ein Protokoll, um 2G-
+            <a href="https://de.wikipedia.org/wiki/Global_System_for_Mobile_Communications">Global System for Mobile Communications</a> (GSM)-Netzwerke um zusätzliche Dienste zu ergänzen.</p>
     </body>
 </html>
\ No newline at end of file
index 5a097b4674dd7c3b36d863065b87d1e707512e2f..95a3b9e5dbf46cd3d3df23c122e87cf01c49d8a1 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -30,6 +30,6 @@
 
     <body>
         <p><a href="https://en.wikipedia.org/wiki/Mobile_data_offloading#Cellular_and_Wi-Fi_network_interworking">Interworking Wireless LAN</a> (IWLAN)
-            is a fancy name for using an <a href="https://en.wikipedia.org/wiki/IEEE_802.11">802.11 Wi-Fi network</a> to route cell phone data.</p>
+            ist ein origineller Name für die Nutzung eines <a href="https://de.wikipedia.org/wiki/IEEE_802.11">802.11 WLAN-Netzwerks</a> zum Routen von Mobilfunkdaten.</p>
     </body>
 </html>
\ No newline at end of file
index 7d036e82a41666dc5a885aca020c250bdb82479d..cf3016190a5c55d5523b57ef3f3032e47726db4f 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">Long-Term Evolution</a> (LTE) is the 4G evolution of the 3G
-            <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS). Notably, it replaced both UMTS,
-            which descended from the 2G <a href="https://en.wikipedia.org/wiki/GSM">Global System for Mobile Communications</a> (GSM), as well as the 3G
-            <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000), which was the main competitor to UMTS.
-            For the first time, this meant that cell phone networks worldwide coalesced around a single protocol, removing the need for world travelers to carry a phone with dual radios.
-            One reason LTE was able to achieve this was by supporting a mixed-mode network, where CDMA2000 (or UMTS) was used for voice calls and LTE for data communications.
-            This provided a seamless upgrade path for cell phone operators. Over time, most carriers eventually switched to <a href="https://en.wikipedia.org/wiki/Voice_over_LTE">Voice over LTE</a> (VoLTE).</p>
+        <p><a href="https://de.wikipedia.org/wiki/Long_Term_Evolution">Long-Term Evolution</a> (LTE) ist die 4G-Weiterentwicklung des 3G-Standards
+            <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS). Es ersetzte sowohl UMTS,
+            das vom 2G-Standard <a href="https://de.wikipedia.org/wiki/Global_System_for_Mobile_Communications">Global System for Mobile Communications</a> (GSM) abstammte, als auch das 3G-System
+            <a href="https://de.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000), das den Haupt-Konkurrenten zu UMTS darstellte.
+            Zum ersten Mal war damit möglich, Mobiltelefone weltweit mit einem Protokoll anstatt wie vorher mit zwei Funkmodulen zu nutzen.
+            Ein Grund dafür war die Unterstützung von Mixed-Mode-Netzwerken, bei denen CDMA2000 oder UMTS für Sprachanrufe und LTE für die Datenübertragung genutzt wurde.
+            Dies bot Mobilfunk-Anbietern einen nahtlosen Aufrüstungs-Pfad. Mit der Zeit wechselten die meisten Anbieter letztlich zu <a href="https://de.wikipedia.org/wiki/VoLTE">Voice over LTE</a> (VoLTE).</p>
     </body>
 </html>
\ No newline at end of file
index 30614a084ef655885c1c3b112285df006c474aef..f393f3a3b1f55566d95007f013ab026f9bd21797 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,9 +29,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/5G_NR">5G New Radio</a> is the main 5G protocol.
-            It is the successor to 4G <a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">Long-Term Evolution</a> (LTE).
-            It is the first wireless protocol to generally include the generation (5G) in the name.
-        </p>
+        <p><a href="https://en.wikipedia.org/wiki/5G_NR">5G New Radio</a> ist das Haupt-Protokoll für 5G.
+            Es ist der Nachfolger des 4G-Systems <a href="https://de.wikipedia.org/wiki/Long_Term_Evolution">Long-Term Evolution</a> (LTE).
+            Es ist das erste drahtlose Protokoll, das die Netzwerk-Generation (5G) im Namen verwendet.</p>
     </body>
 </html>
\ No newline at end of file
index 1a545bdfcf6ab0086ca1d27c5d037f374513b1df..474fc48c03337685e68e487332bea7eba64f6cf0 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/UMTS#TD-SCDMA_(UTRA-TDD_1.28_Mcps_Low_Chip_Rate_(LCR))">Time-Division Synchronous Code-Division Multiple Access</a> (TD-SCDMA) is an extension to the 3G
-            <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS),
-            which is the 3G successor of the 2G <a href="https://en.wikipedia.org/wiki/GSM">Global System for Mobile Communications</a> (GSM)
-            and a competitor to the <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) standard.
-            TD-SCDMA was only used in China.
-            UMTS evolved into the 4G <a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">Long-Term Evolution</a> (LTE), which was also adopted by CDMA networks.</p>
+        <p><a href="https://en.wikipedia.org/wiki/UMTS#TD-SCDMA_(UTRA-TDD_1.28_Mcps_Low_Chip_Rate_(LCR))">Time-Division Synchronous Code-Division Multiple Access</a>
+            (TD-SCDMA) ist eine Erweiterung des 3G-Standards <a href="https://de.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS),
+            welches der Nachfolger des 2G-Standards <a href="https://de.wikipedia.org/wiki/Global_System_for_Mobile_Communications">Global System for Mobile Communications</a> (GSM)
+            und eine Konkurrenz-Technologie zu <a href="https://de.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) war. TD-SCDMA wurde nur in China genutzt.
+            UMTS wurde zu <a href="https://de.wikipedia.org/wiki/Long_Term_Evolution">Long-Term Evolution</a> (LTE) weiterentwickelt, das auch in CDMA-Netzwerke übernommen wurde.</p>
     </body>
 </html>
\ No newline at end of file
index 17494f1117d7a45d48dcdb223c8a5247d2d6fd95..d4004c60b8fca526e7a8122bc80fd395aa9fa72b 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -30,8 +30,8 @@
 
     <body>
         <p><a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS)
-            is the 3G successor to the 2G <a href="https://en.wikipedia.org/wiki/GSM">Global System for Mobile Communications</a> (GSM)
-            and a competitor to the <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) standard.
-            UMTS evolved into 4G <a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">Long-Term Evolution</a> (LTE), which was also adopted by CDMA networks.</p>
+            ist der Nachfolger des 2G-Standards <a href="https://de.wikipedia.org/wiki/Global_System_for_Mobile_Communications">Global System for Mobile Communications</a> (GSM)
+            und eine Konkurrenz-Technologie zu <a href="https://de.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000).
+            UMTS wurde zu <a href="https://de.wikipedia.org/wiki/Long_Term_Evolution">Long-Term Evolution</a> (LTE) weiterentwickelt, das auch in CDMA-Netzwerke übernommen wurde.</p>
     </body>
 </html>
\ No newline at end of file
index 4ca9bd3fe180057894c9a853e8562d1fcb719553..bee4bb73f4e5e0aef047fee4b1e156ca03bbcfb4 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,6 +29,6 @@
     </head>
 
     <body>
-        <p>The network type is unknown.</p>
+        <p>Der Netzwerk-Typ ist unbekannt.</p>
     </body>
 </html>
\ No newline at end of file
index 0007ffd157aa62faacccb79c313cd5326eabc2c4..2c1464865f00c0669feb27901667deb101ab1be7 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -30,6 +30,6 @@
 
     <body>
         <p><a href="https://en.wikipedia.org/wiki/LTE_Advanced#LTE_Advanced_Pro">Long-Term Evolution Advanced Pro</a> (LTE-A Pro)
-            is a 4.5G update to the 4G <a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">LTE</a> protocol.</p>
+            ist eine 4.5G-Erweiterung zum 4G-Protokoll <a href="https://de.wikipedia.org/wiki/Long_Term_Evolution">LTE</a>.</p>
     </body>
 </html>
\ No newline at end of file
index f21db103b12baa5566ab3187827889dbc840af0d..318ec3a8d16f48b80b41da3e390a0c53821bc73d 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,7 +29,7 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Carrier_aggregation">Long-Term Evolution Carrier Aggregation</a> (LTE CA)
-            allows a 4G LTE connection to aggregate non-contiguous blocks of spectrum to increase data throughput.</p>
+        <p><a href="https://de.wikipedia.org/wiki/Carrier_Aggregation">Long-Term Evolution Carrier Aggregation</a> (LTE CA)
+            erlaubt einer 4G-LTE-Verbindung, mehrere einzelne Frequenzblöcke zu nutzen und so die maximale Datenrate pro Nutzer zu erhöhen.</p>
     </body>
 </html>
\ No newline at end of file
index f99f5ad3981d5d1684f475cd535ad5a147143a4e..c8c9450b676b7cc5419eaa8a728fe3d167333dd9 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,6 +29,6 @@
     </head>
 
     <body>
-        <p>There is no additional network information. Usually this category only applies to certain 4G and 5G networks.</p>
+        <p>Es gibt keine zusätzlichen Netzwerk-Informationen. Üblicherweise betrifft dies nur gewisse 4G- and 5G-Netzwerke.</p>
     </body>
 </html>
\ No newline at end of file
index 5ba8e260974e5b3dd720f8d385271c919291e03f..be4ca9b3827984f59978eb63256cb7b8946fcc32 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
 
     <body>
         <p><a href="https://developer.android.com/reference/android/telephony/TelephonyDisplayInfo#OVERRIDE_NETWORK_TYPE_NR_ADVANCED">New Radio Advanced</a>
-            is a marketing term that indicates that the carrier has done something beyond the bare minimum to qualify for the 5G logo.
-            It likely indicates that speeds beyond those typically associated with standard 5G are available.
-            For example, the carrier might be using the <a href="https://en.wikipedia.org/wiki/5G_NR#Frequency_bands">mmWave spectrum</a> (24.25–52.6 GHz), which goes really fast but doesn't penetrate walls.
-            Or, they might be using <a href="https://en.wikipedia.org/wiki/Carrier_aggregation">carrier aggregation</a> to increase bandwidth.</p>
+            ist ein Marketing-Begriff, der darauf hinweist, dass der Mobilfunk-Anbieter mehr als das Minimum anbietet, welches für die Qualifikation für das 5G-Logo notwendig wäre.
+            Er bedeutet, dass vermutlich Geschwindigkeiten oberhalb des typischen 5G-Standards erreicht werden können.
+            Zum Beispiel kann der Anbieter das <a href="https://en.wikipedia.org/wiki/5G_NR#Frequency_bands">mmWave-Spektrum</a> (24.25–52.6 GHz) nutzen,
+            mit dem große Geschwindigkeiten erreicht werden können, das aber Wände nicht durchdringt.
+            Auch die Nutzung von <a href="https://de.wikipedia.org/wiki/Carrier_Aggregation">Carrier Aggregation</a> (CA) zur Erhöhung von Bandbreite ist denkbar.</p>
     </body>
 </html>
\ No newline at end of file
index c6866688e5b261a5d21afc2b758cf65cbcc96bd7..f914eef4c0944bfddd606a1908ea2f6c2424b4e9 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,9 +29,9 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/5G_NR#Non-standalone_mode">New Radio Non-Standalone</a> (NR NSA) uses the 4G <a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">LTE</a>
-            protocols for the control channel and 5G NR for the data channel.
-            It provides much of the speed of 5G without any of the additional security benefits.
-            Android phones will list this as a 5G connection, but it is not protected against modern <a href="https://en.wikipedia.org/wiki/IMSI-catcher">stingray attacks</a>.</p>
+    <p><a href="https://en.wikipedia.org/wiki/5G_NR#Non-standalone_mode">New Radio Non-Standalone</a> (NR NSA) nutzt die 4G-<a href="https://de.wikipedia.org/wiki/Long_Term_Evolution">LTE</a>-Protokolle
+        für den Kontroll-Kanal und 5G NR für den Daten-Kanal.
+        Dies bietet weitgehend die Geschwindigkeit von 5G ohne zusätzliche Sicherheits-Vorteile.
+        Android-Geräte zeigen diese Verbindungen als 5G an, es besteht jedoch keine Absicherung gegen moderne <a href="https://de.wikipedia.org/wiki/IMSI-Catcher">Stingray-Attacken</a>.</p>
     </body>
 </html>
\ No newline at end of file
index 498672b21c465f6dc4e894cc44a9dd0939ca2efe..db8a8133fd4dc3348120305fe1f13d1221755324 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/5G_NR#Non-standalone_mode">New Radio Non-Standalone millimeter Wave</a> (NR NSA mmWave) uses the 4G
-            <a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">LTE</a> protocols for the control channel and 5G NR on the
-            <a href="https://en.wikipedia.org/wiki/5G_NR#Frequency_bands">mmWave spectrum</a> (24.25–52.6 GHz) for the data channel.
-            It provides much of the speed of 5G without any of the additional security benefits.
-            Android phones will list this as a 5G connection, but it is not protected against modern <a href="https://en.wikipedia.org/wiki/IMSI-catcher">stingray attacks</a>.</p>
+    <p><a href="https://en.wikipedia.org/wiki/5G_NR#Non-standalone_mode">New Radio Non-Standalone millimeter Wave</a> (NR NSA mmWave) nutzt die 4G-
+        <a href="https://de.wikipedia.org/wiki/Long_Term_Evolution">LTE</a>-Protokolle für den Kontroll-Kanal and 5G NR im
+        <a href="https://en.wikipedia.org/wiki/5G_NR#Frequency_bands">mmWave-Spektrum</a> (24.25–52.6 GHz) für den Daten-Kanal.
+        Dies bietet weitgehend die Geschwindigkeit von 5G ohne zusätzliche Sicherheits-Vorteile.
+        Android-Geräte zeigen diese Verbindungen als 5G an, es besteht jedoch keine Absicherung gegen moderne <a href="https://de.wikipedia.org/wiki/IMSI-Catcher">Stingray-Attacken</a>.</p>
     </body>
 </html>
\ No newline at end of file
index 645fc4098bf5e44a3e559fce6fad450e7a9bda88..bf15601c605d5fa0bf8274fc870828ae34f4c772 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2021 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2022 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/IMSI-catcher">IMSI catchers</a>, also known as stingrays, are fake cell phone towers that intercept your traffic and spy on you.
-            Each generation of cell phone protocols has attempted to mitigate stingrays, but each has generally failed.
-            With 5G, more of the traffic is encrypted in such a way that it prevents stingray spying.
-            However, 5G networks can run in a blended 4G/5G mode, where the control channel is 4G and the data channel is 5G.
-            This is known as <a href="https://en.wikipedia.org/wiki/5G_NR#Non-standalone_mode">5G NR NSA</a> (5G New Radio Non-Standalone) mode.
-            When connected to such a blended network, a cell phone is not protected against
-            <a href="https://www.wired.com/story/5g-network-stingray-surveillance-non-standalone/">modern stingray attacks</a>.</p>
-
-        <p>The Android status bar does not differentiate between 5G modes. It will display the same 5G icon for Standalone and Non-Standalone networks.
-            The purpose of Privacy Cell is to make it easy to tell what type of network you are connected to.
-            If you are in an area where you usually are connected to a <a href="https://en.wikipedia.org/wiki/5G_NR#Standalone_mode">5G NR SA</a> network and Privacy Cell shows a 5G NR NSA connection,
-            it is possible that a stingray has performed a downgrade attack to spy on your communications.</p>
-
-        <p>It should be noted that paltry attempts have been made to secure cell phone protocols in the past, which have never been sufficiently well designed to provide real protection.
-            Even if you are connected to a 5G NR SA network, it is likely that there are still unknown weaknesses in the network that can be exploited by a sufficiently funded adversary.
-            Privacy Cell will be updated regarding these types of vulnerabilities as future research identifies them.</p>
+        <p><a href="https://de.wikipedia.org/wiki/IMSI-Catcher">IMSI-Catcher</a>, auch als Stingrays bekannt, sind Fake-Basisstationen in Mobilfunk-Netzen,
+            die den Datenverkehr abfangen und so Nutzer ausspionieren können.
+            Jede Generation von Mobilfunk-Protokollen versuchte, solche Attacken zu verhindern, jedoch scheiterten diese Versuche grundsätzlich.
+            Mit 5G wird mehr Datenverkehr verschlüsselt, um Stingray-Angriffe zu vermeiden.
+            Allerdings können 5G-Netzwerke in gemischten 4G/5G-Modi betrieben werden, in denen für den Kontroll-Kanal 4G und für den Daten-Kanal 5G genutzt wird.
+            Dies wird als <a href="https://en.wikipedia.org/wiki/5G_NR#Non-standalone_mode">5G NR NSA</a> (5G New Radio Non-Standalone) bezeichnet.
+            Verbunden mit einem solchen gemischten Netzwerk ist ein Mobiltelefon nicht gegen moderne
+            <a href="https://www.wired.com/story/5g-network-stingray-surveillance-non-standalone/">Stingray-Attacken</a> abgesichert.</p>
+
+        <p>Die Status-Anzeige in Android unterscheidet nicht zwischen den verschiedenen 5G-Modi und zeigt dasselbe 5G-Icon für Standalone- (SA) und Nicht-Standalone-Netzwerke (NSA).
+            Der Zweck von Privacy Cell ist, eine Einschätzung des Netzwerks, mit dem das eigene Gerät verbunden ist, zu ermöglichen.
+            Wenn Sie in einem Gebiet üblicherweise mit einem
+            <a href="https://en.wikipedia.org/wiki/5G_NR#Standalone_mode">5G NR SA</a>-Netzwerk verbunden sind und Privacy Cell eine 5G NR NSA-Verbindung anzeigt,
+            könnte es sein, dass ein Stingray eine Downgrade-Attacke durchgeführt hat und Ihre Kommunikation ausspioniert.</p>
+
+        <p>Es sollte bedacht werden, dass die bisherigen dürftigen Versuche, Mobilfunk-Protokolle abzusichern, nie ausreichend konzipiert waren, um tatsächlichen Schutz zu bieten.
+            Selbst bei Verbindungen über 5G NR SA-Netzwerke besteht grundsätzlich die Gefahr unbekannter Schwachstellen im Netzwerk, die von hinreichend geförderten Widersachern ausgenutzt werden können.
+            Privacy Cell wird entsprechend aktualisiert, sobald solche Schwachstellen zukünftig erforscht und erkannt werden.</p>
     </body>
 </html>
\ No newline at end of file
index bb23459db8c235d33b374f97157bc6afe89a6fb9..bbc85872f4027d4629623ea481c7062f8a99a20d 100644 (file)
             <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 Lizenz</a> veröffentlicht werden.
             Copyright der Änderungen: © 2016, 2021-2022 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
             Die resultierenden Grafiken werden unter der <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+-Lizenz</a> veröffentlicht.</p>
-        <p><img class="left" src="../images/antiquated_3g.svg"/> is derived from <code>security</code> and <code>3g_mobiledata_rounded</code>,
-            which are part of the <a href="https://material.io/icons/">Android Material icon set</a> and are released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.
-            Modifications copyright © 2016, 2022 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
-            The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
+        <p><img class="left" src="../images/antiquated_3g.svg"/> ist abgeleitet von <code>security</code> und <code>3g_mobiledata_rounded</code>,
+            welche ein Teil des <a href="https://material.io/icons/">Android Material icon set</a> und unter der <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.
+            lizensiert sind. Die Änderungen stehen under dem Copyright © 2016, 2022 von <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+            Die abgeleitete Grafik steht unter der <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ Lizenz</a>.</p>
         <p>Die folgenden Icons stammen aus dem <a href="https://material.io/icons/">Android Material Icon-Sets</a>,
             das unter der <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 Lizenz</a> veröffentlicht wird.
             Sie sind bis auf Layout-Informationen wie Farbe und Größe unverändert. Einige von Ihnen wurden Ihrer Verwendung im Code entsprechend umbenannt.
index 1153bfa4de4fb03cc6a9e45ec8decf205feb40e0..055815924f30703e4a322f5e8a1849efc192022f 100644 (file)
     </head>
 
     <body>
-        <h3>1.7 (version code 8)</h3>
-        <p>24 March 2022 - minimum API 30, target API 31</p>
+        <h3><a href="https://www.stoutner.com/privacy-cell-1-8/">1.8</a> (version code 9)</h3>
+        <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=f60b140868c2f0d564657e96d48508b4fbdc546b">14 June 2022</a> - minimum API 30, target API 32</p>
+        <ul>
+            <li>Include the <a href="https://redmine.stoutner.com/issues/851">voice network status</a> in determining the overall security of the cell network.</li>
+            <li>Fix a bug that sometimes <a href="https://redmine.stoutner.com/issues/850">prevented notifications from being disabled</a>.</li>
+            <li>Bump the <a href="https://redmine.stoutner.com/issues/827">target API to 32</a> (Android 12L).</li>
+            <li>First full German translation contributed by Bernhard G. Keller.</li>
+        </ul>
+
+        <h3><a href="https://www.stoutner.com/privacy-cell-1-7/">1.7</a> (version code 8)</h3>
+        <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=b11b84b24c660fac3a69f2dbe4bd615d73811219">24 March 2022</a> - minimum API 30, target API 31</p>
         <ul>
             <li>Add a warning when connecting to <a href="https://redmine.stoutner.com/issues/795">older, insecure networks</a>.</li>
             <li>Add a <a href="https://redmine.stoutner.com/issues/774">protocols activity</a>.</li>
index cfa1baf11491373ae17f01e9bf905317d902c730..720dbdf0e0cfa7408fb7d2f65d99dfb02e918e1d 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -30,6 +30,6 @@
         <p><a href="https://en.wikipedia.org/wiki/CDMA2000#1X">1 times Radio Transmission Technology</a> (1xRTT) is the first version of the
             <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) standard, which is the 3G update of the older 2G
             <a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access One</a> (CDMAOne).
-            It is the competitor to <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).
+            It is the competitor to <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).</p>
     </body>
 </html>
\ No newline at end of file
index 8881be7c6aa1a2b5b0612b364d6d3da17574be7a..4108d0e41d464560886a18aff8781854d218c910 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,6 +29,6 @@
     <body>
         <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rel._0_(TIA-856_Release_0)">Evolution-Data Optimized release 0</a> (EVDO_0) is a 3.5G evolution of the 3G
             <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) standard.
-            It is a competitor to the <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA) protocol.
+            It is a competitor to the <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA) protocol.</p>
     </body>
 </html>
\ No newline at end of file
index d1beafbb248e1c5d418da99321bbf91420f1eb30..6c3f130aafb7dae546fef1fddb3268ee855bec16 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -27,8 +27,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._A_(TIA-856_Revision_A)">Evolution-Data Optimized release A</a> (EVDO_A) is the second release of the EVDO standard,
+        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._A_(TIA-856_Revision_A)">Evolution-Data Optimized revision A</a> (EVDO_A) is the second release of the EVDO standard,
             which is a 3.5G evolution of the 3G <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) standard.
-            It is a competitor to the <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA) protocol.
+            It is a competitor to the <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA) protocol.</p>
     </body>
 </html>
\ No newline at end of file
index ddf0a18228e57a60d4a3f0382f91d0cc5afa9339..1855fdb1be1cc9042f688a406ce1656bb5d353fd 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -27,8 +27,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._B_(TIA-856_Revision_B)">Evolution-Data Optimized release B</a> (EVDO_B) is the third release of the EVDO standard,
+        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._B_(TIA-856_Revision_B)">Evolution-Data Optimized revision B</a> (EVDO_B) is the third release of the EVDO standard,
             which is a 3.5G evolution of the 3G <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000) standard.
-            It is a competitor to the <a href="https://en.wikipedia.org/wiki/Evolved_High_Speed_Packet_Access">High Speed Packet Access Plus</a> (HSPAP) protocol.
+            It is a competitor to the <a href="https://en.wikipedia.org/wiki/Evolved_High_Speed_Packet_Access">High Speed Packet Access Plus</a> (HSPAP) protocol.</p>
     </body>
 </html>
\ No newline at end of file
index 177bf272eb34630b82d6e2deb7b7250dca169d77..06bd20597598a0bd1f916d79b7324e9743037277 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,7 +29,6 @@
     <body>
         <p><a href="https://en.wikipedia.org/wiki/5G_NR">5G New Radio</a> is the main 5G protocol.
             It is the successor to 4G <a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">Long-Term Evolution</a> (LTE).
-            It is the first wireless protocol to generally include the generation (5G) in the name.
-        </p>
+            It is the first wireless protocol to generally include the generation (5G) in the name.</p>
     </body>
 </html>
\ No newline at end of file
index 917f9fa9e170c120faa58231c5d37553595e7ba1..1bf7ded0373c95e8f4a1d4b20a5ddc00d4b879bd 100644 (file)
     </head>
 
     <body>
-        <h3>1.7 (versión del código 8)</h3>
-        <p>24 de marzo de 2022 - API mínimo 30, API objetivo 31</p>
+        <h3><a href="https://www.stoutner.com/privacy-cell-1-8/">1.8</a> (versión del código 9)</h3>
+        <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=f60b140868c2f0d564657e96d48508b4fbdc546b">14 de junio de 2022</a> - API mínimo 30, API objetivo 32</p>
+        <ul>
+            <li>Incluir el <a href="https://redmine.stoutner.com/issues/851">estado de la red de voz</a> para determinar la seguridad general de la red celular.</li>
+            <li>Corregir un error que a veces <a href="https://redmine.stoutner.com/issues/850">impedía desactivar las notificaciones</a>.</li>
+            <li>Aumentar la <a href="https://redmine.stoutner.com/issues/827">API de destino a 32</a> (Android 12L).</li>
+            <li>Primera traducción completa al alemán aportada por Bernhard G. Keller.</li>
+            <li>Traducción actualizada al español aportada por Jose A. León.</li>
+        </ul>
+
+        <h3><a href="https://www.stoutner.com/privacy-cell-1-7/">1.7</a> (versión del código 8)</h3>
+        <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=b11b84b24c660fac3a69f2dbe4bd615d73811219">24 de marzo de 2022</a> - API mínimo 30, API objetivo 31</p>
         <ul>
             <li>Añadir una advertencia al conectarse a <a href="https://redmine.stoutner.com/issues/795">redes antiguas e inseguras</a>.</li>
             <li>Añadir una <a href="https://redmine.stoutner.com/issues/774">actividad de protocolos</a>.</li>
index 4126ad575d32e1a691ca5ece5dae12eb5e9ead34..fe55b007a2b7138216f0a22e894ea5ec45f225df 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Jose A. León.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -32,6 +32,6 @@
         <p><a href="https://en.wikipedia.org/wiki/CDMA2000#1X">1 times Radio Transmission Technology </a> (1xRTT) es la primera versión del
             <a href="https://en.wikipedia.org/wiki/CDMA2000">estándar Code-Division Multiple Access 2000</a> (CDMA2000), que es la actualización 3G del antiguo 2G
             <a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access One</a> (CDMAOne).
-            Es el competidor del <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).
+            Es el competidor del <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).</p>
     </body>
 </html>
\ No newline at end of file
index 22768365038e52057d04fb5a25e9471fa1caf8e2..828a6548e1aca6887b6a3d6f84f2a995f1c39a20 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Jose A. León.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -31,6 +31,6 @@
     <body>
         <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rel._0_(TIA-856_Release_0)">Evolution-Data Optimized release 0</a> (EVDO_0) es una evolución 3.5G del 3G
             <a href="https://en.wikipedia.org/wiki/CDMA2000">estándar Code-Division Multiple Access 2000</a> (CDMA2000).
-            Es un competidor del <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">protocolo High Speed Packet Access</a> (HSPA).
+            Es un competidor del <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">protocolo High Speed Packet Access</a> (HSPA).</p>
     </body>
 </html>
\ No newline at end of file
index e4034ad63b6c957dce40efd6490ddf585409f9c5..43362bd26d40d8e5f79f4ce3c64ac1db5925627a 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Jose A. León.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -29,8 +29,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._A_(TIA-856_Revision_A)">Evolution-Data Optimized release A</a> (EVDO_A) es la segunda versión del estándar EVDO,
+        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._A_(TIA-856_Revision_A)">Evolution-Data Optimized revision A</a> (EVDO_A) es la segunda versión del estándar EVDO,
             que es la evolución 3.5G del 3G <a href="https://en.wikipedia.org/wiki/CDMA2000">estándar Code-Division Multiple Access 2000</a> (CDMA2000).
-            Es un competidor del <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">protocolo High Speed Packet Access</a> (HSPA).
+            Es un competidor del <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">protocolo High Speed Packet Access</a> (HSPA).</p>
     </body>
 </html>
\ No newline at end of file
index e7cbabc2534740d44cb4bce7c8bf275cd9ebc0e5..457c9553ee5cc0cac750a3727d75552342518c88 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Jose A. León.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -29,8 +29,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._B_(TIA-856_Revision_B)">Evolution-Data Optimized release B</a> (EVDO_B) es la tercera versión del estándar EVDO,
+        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._B_(TIA-856_Revision_B)">Evolution-Data Optimized revision B</a> (EVDO_B) es la tercera versión del estándar EVDO,
             que es una evolución 3.5G del 3G <a href="https://en.wikipedia.org/wiki/CDMA2000">estándar Code-Division Multiple Access 2000</a> (CDMA2000).
-            Es un competidor del <a href="https://en.wikipedia.org/wiki/Evolved_High_Speed_Packet_Access">protocolo High Speed Packet Access Plus</a> (HSPAP).
+            Es un competidor del <a href="https://en.wikipedia.org/wiki/Evolved_High_Speed_Packet_Access">protocolo High Speed Packet Access Plus</a> (HSPAP).</p>
     </body>
 </html>
\ No newline at end of file
index 780e5c8f591cccd5f65e6f4dff8b9acaa3ba14ea..043e45260904c2327c2e0c01b91071b0e05a83be 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Jose A. León.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -31,7 +31,6 @@
     <body>
         <p><a href="https://en.wikipedia.org/wiki/5G_NR">5G New Radio</a> es el principal protocolo 5G.
             Es el sucesor del 4G <a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">Long-Term Evolution</a> (LTE).
-            Es el primer protocolo inalámbrico que incluye generalmente la generación (5G) en el nombre.
-        </p>
+            Es el primer protocolo inalámbrico que incluye generalmente la generación (5G) en el nombre.</p>
     </body>
 </html>
\ No newline at end of file
index c314e7bf2a1fb510869cc5cab15f5a94e05554f7..9ff5061fd5d7f39cf364b923a0e06bfac8ed5b28 100644 (file)
     </head>
 
     <body>
-        <h3>1.7 (version de code 8)</h3>
-        <p>24 March 2022 - API minimum 30, API cible 31</p>
+        <h3><a href="https://www.stoutner.com/privacy-cell-1-8/">1.8</a> (version de code 9)</h3>
+        <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=f60b140868c2f0d564657e96d48508b4fbdc546b">14 June 2022</a> - API minimum 30, API cible 32</p>
         <ul>
-            <li>Add a warning when connecting to <a href="https://redmine.stoutner.com/issues/795">older, insecure networks</a>.</li>
-            <li>Add a <a href="https://redmine.stoutner.com/issues/774">protocols activity</a>.</li>
+            <li>Include the <a href="https://redmine.stoutner.com/issues/851">voice network status</a> in determining the overall security of the cell network.</li>
+            <li>Fix a bug that sometimes <a href="https://redmine.stoutner.com/issues/850">prevented notifications from being disabled</a>.</li>
+            <li>Bump the <a href="https://redmine.stoutner.com/issues/827">target API to 32</a> (Android 12L).</li>
+            <li>First full German translation contributed by Bernhard G. Keller.</li>
+            <li>Mise à jour de la traduction française par <a href="mailto:kevinliste@framalistes.org">Kévin L</a>.</li>
+        </ul>
+
+        <h3><a href="https://www.stoutner.com/privacy-cell-1-7/">1.7</a> (version de code 8)</h3>
+        <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=b11b84b24c660fac3a69f2dbe4bd615d73811219">24 Mars 2022</a> - API minimum 30, API cible 31</p>
+        <ul>
+            <li>Ajout d'un ajout d'un avertissement lors de la connexion à <a href="https://redmine.stoutner.com/issues/795">des réseaux anciens et peu sûrs</a>.</li>
+            <li>Ajout d'une <a href="https://redmine.stoutner.com/issues/774">entrée listant l'ensemble des protocoles</a>.</li>
             <li>Mise à jour de la traduction française par <a href="mailto:kevinliste@framalistes.org">Kévin L</a>.</li>
         </ul>
 
index 2cf0a526f1db64178eebc298528841733b170404..71f69e6adcf70a1dcf56822902b0802e903c5f27 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Kévin L. <kevinliste@framalistes.org>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -32,6 +32,6 @@
         <p><a href="https://en.wikipedia.org/wiki/CDMA2000#1X">1 times Radio Transmission Technology</a> (1xRTT) est la première version du standard
             <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000), qui est une évolution 3G du standard 2G
             <a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access One</a> (CDMAOne).
-            C'est un concurrent à <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).
+            C'est un concurrent à <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).</p>
     </body>
 </html>
\ No newline at end of file
index 5821a2280a9ec432f5c698a72cc107a538c4e153..83f4506e25672089c36e39236ac7fb8e6840da86 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Kévin L. <kevinliste@framalistes.org>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -31,6 +31,6 @@
     <body>
         <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rel._0_(TIA-856_Release_0)">Evolution-Data Optimized release 0</a> (EVDO_0) est une évolution 3.5G du standard 3G
             <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000).
-            C'est un concurrent du protocole <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA).
+            C'est un concurrent du protocole <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA).</p>
     </body>
 </html>
\ No newline at end of file
index d8de191591b7253f00f50cd4cd951a0b688730e6..709a7fb41bed0217a55dfdb03ad3b71ffbce8358 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Kévin L. <kevinliste@framalistes.org>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -29,8 +29,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._A_(TIA-856_Revision_A)">Evolution-Data Optimized release A</a> (EVDO_A) est la deuxième version du standard EVDO,
+        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._A_(TIA-856_Revision_A)">Evolution-Data Optimized revision A</a> (EVDO_A) est la deuxième version du standard EVDO,
             qui est une évolution 3.5G du standard 3G <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000).
-            C'est un concurrent du protocole <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA).
+            C'est un concurrent du protocole <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA).</p>
     </body>
 </html>
\ No newline at end of file
index 075909dfb03d038477043fbd268ffd358cbf9590..4c8882c533b4b712a938cc19d316fd670749e1b2 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Kévin L. <kevinliste@framalistes.org>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -29,8 +29,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._B_(TIA-856_Revision_B)">Evolution-Data Optimized release B</a> (EVDO_B) est la troisième version du standard EVDO,
+        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._B_(TIA-856_Revision_B)">Evolution-Data Optimized revision B</a> (EVDO_B) est la troisième version du standard EVDO,
             qui est une évolution 3.5G du standard 3G <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000).
-            C'est un concurrent du protocole <a href="https://en.wikipedia.org/wiki/Evolved_High_Speed_Packet_Access">High Speed Packet Access Plus</a> (HSPAP).
+            C'est un concurrent du protocole <a href="https://en.wikipedia.org/wiki/Evolved_High_Speed_Packet_Access">High Speed Packet Access Plus</a> (HSPAP).</p>
     </body>
 </html>
\ No newline at end of file
index 93f87a1d3053473dfae5ea9f44625036ddcce5d8..605bce4025b2d5980e7918a0b1a797c051ade57c 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Kévin L. <kevinliste@framalistes.org>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -31,7 +31,6 @@
     <body>
         <p><a href="https://en.wikipedia.org/wiki/5G_NR">5G New Radio</a> est le protocole 5G principal.
             Il s'agit du successeur de la 4G <a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">Long-Term Evolution</a> (LTE).
-            Il s'agit du premier protocole sans fil à inclure généralement la génération (5G) dans son nom.
-        </p>
+            Il s'agit du premier protocole sans fil à inclure généralement la génération (5G) dans son nom.</p>
     </body>
 </html>
\ No newline at end of file
index 318b4c02d8b91bc32a1fe47eddc4027d7a129001..a7b4bc957c545342aa9bd53e7ec9bc85a9b6aacb 100644 (file)
     </head>
 
     <body>
-        <h3>1.7 (versione codice 8)</h3>
-        <p>24 Marzo 2022 - minima API 30, target API 31</p>
+        <h3><a href="https://www.stoutner.com/privacy-cell-1-8/">1.8</a> (versione codice 9)</h3>
+        <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=f60b140868c2f0d564657e96d48508b4fbdc546b">14 Giugno 2022</a> - minima API 30, target API 32</p>
+        <ul>
+            <li>Incluso lo <a href="https://redmine.stoutner.com/issues/851">stato della rete voce</a> nella determinazione della sicurezza complessiva della rete.</li>
+            <li>Correzione di un baco che talvolta <a href="https://redmine.stoutner.com/issues/850">impediva di disabilitare le notifiche</a>.</li>
+            <li>Spostamento della <a href="https://redmine.stoutner.com/issues/827">target API a 32</a> (Android 12L).</li>
+            <li>Prima traduzione completa in lingua tedesca fornita da Bernhard G. Keller.</li>
+            <li>Aggiornamento della traduzione in lingua Italiana fornito da Francesco Buratti.</li>
+        </ul>
+
+        <h3><a href="https://www.stoutner.com/privacy-cell-1-7/">1.7</a> (versione codice 8)</h3>
+        <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=b11b84b24c660fac3a69f2dbe4bd615d73811219">24 Marzo 2022</a> - minima API 30, target API 31</p>
         <ul>
             <li>Aggiunta di un avviso nel caso in cui ci si connetta a <a href="https://redmine.stoutner.com/issues/795">reti più vecchie e insicure</a>.</li>
             <li>Aggiunta di una <a href="https://redmine.stoutner.com/issues/774">scheda relativa ai protocolli</a>.</li>
index a5ea227bdcef987bbf54e6e37e7ede78b9c5c548..af5dcdbbad21a48dac0d3acf01e0078f79f1309f 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Francesco Buratti.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -32,6 +32,6 @@
         <p><a href="https://en.wikipedia.org/wiki/CDMA2000#1X">1 times Radio Transmission Technology</a> (1xRTT) è la prima versione dello standard
             <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000), che è il primo aggiornamento 3G del vecchio protocollo 2G
             <a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access One</a> (CDMAOne).
-            E' il concorrente del protocollo <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).
+            E' il concorrente del protocollo <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).</p>
     </body>
 </html>
\ No newline at end of file
index 343fc004d5c780ca12390841f0ce1c06a7b7d4fd..b1bcd5ab13169ad3ff4b3da4b0282fd874fe1d47 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Francesco Buratti.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -31,6 +31,6 @@
     <body>
         <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rel._0_(TIA-856_Release_0)">Evolution-Data Optimized release 0</a> (EVDO_0) è una evoluzione 3.5G dello standard 3G
             <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000).
-            E' un concorrente del protocollo <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA).
+            E' un concorrente del protocollo <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA).</p>
     </body>
 </html>
\ No newline at end of file
index 978ea21314b5cde106387a83bbe42ca2c6009ef8..aede48031ce2f90f93b3f41813ff3f671951572e 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Francesco Buratti.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -29,8 +29,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._A_(TIA-856_Revision_A)">Evolution-Data Optimized release A</a> (EVDO_A) è la seconda release dello standard EVDO,
+        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._A_(TIA-856_Revision_A)">Evolution-Data Optimized revision A</a> (EVDO_A) è la seconda release dello standard EVDO,
             che è una evoluzione 3.5G dello standard 3G <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000).
-            E' un concorrente del protocollo <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA).
+            E' un concorrente del protocollo <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA).</p>
     </body>
 </html>
\ No newline at end of file
index fabbc25b910d99ed0b34fa00de29b3fe785a9776..b022ff2970eb959b47791f7b0f3764a4e227a5cb 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Francesco Buratti.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -29,8 +29,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._B_(TIA-856_Revision_B)">Evolution-Data Optimized release B</a> (EVDO_B) è la terza release dello standard EVDO,
+        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._B_(TIA-856_Revision_B)">Evolution-Data Optimized revision B</a> (EVDO_B) è la terza release dello standard EVDO,
             che è una evoluzione 3.5G dello standard 3G <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000).
-            E' un concorrente del protocollo <a href="https://en.wikipedia.org/wiki/Evolved_High_Speed_Packet_Access">High Speed Packet Access Plus</a> (HSPAP).
+            E' un concorrente del protocollo <a href="https://en.wikipedia.org/wiki/Evolved_High_Speed_Packet_Access">High Speed Packet Access Plus</a> (HSPAP).</p>
     </body>
 </html>
\ No newline at end of file
index 468b7b9853ad87837099ebb1d9acd9134a405623..70271d46c2f473df1b13506bfe96baa1b4e3a70d 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2021 Francesco Buratti.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -31,7 +31,6 @@
     <body>
         <p><a href="https://en.wikipedia.org/wiki/5G_NR">5G New Radio</a> è il protocollo principale 5G.
             E' il successore del protocollo 4G <a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">Long-Term Evolution</a> (LTE).
-            E' il primo protocollo wireless che contiene la generazione (in questo caso 5G) all'interno del proprio nome.
-        </p>
+            E' il primo protocollo wireless che contiene la generazione (in questo caso 5G) all'interno del proprio nome.</p>
     </body>
 </html>
\ No newline at end of file
index a7849375d89240372ffac2f8c70acb4f3ee31a46..85e82bc2063acef9c312c542a49ea1d2bc7b7eec 100644 (file)
     </head>
 
     <body>
-        <h3>1.7 (код версии 8)</h3>
-        <p>24 мая 2022 года - минимальный API 30, целевой API 31</p>
+        <h3><a href="https://www.stoutner.com/privacy-cell-1-8/">1.8</a> (код версии 9)</h3>
+        <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=f60b140868c2f0d564657e96d48508b4fbdc546b">14 июня 2022 года</a> - минимальный API 30, целевой API 32</p>
+        <ul>
+            <li>Теперь при определении общей безопасности сотовой сети <a href="https://redmine.stoutner.com/issues/851">будет учитываться статус голосовой сети</a>.</li>
+            <li>Исправлена ошибка, из-за которой иногда <a href="https://redmine.stoutner.com/issues/850">не удавалось отключить уведомления</a>.</li>
+            <li>Повышен <a href="https://redmine.stoutner.com/issues/827">целевой API до 32</a> (Android 12L).</li>
+            <li>Первый полный перевод на немецкий язык, выполненный Бернхардом Г. Келлером (Bernhard G. Keller).</li>
+            <li>Первый полный перевод на русский язык.</li>
+        </ul>
+
+        <h3><a href="https://www.stoutner.com/privacy-cell-1-7/">1.7</a> (код версии 8)</h3>
+        <p><a href="https://gitweb.stoutner.com/?p=PrivacyCell.git;a=commitdiff;h=b11b84b24c660fac3a69f2dbe4bd615d73811219">24 мая 2022 года</a> - минимальный API 30, целевой API 31</p>
         <ul>
             <li>Добавлено предупреждение при подключении к <a href="https://redmine.stoutner.com/issues/795">устаревшим, небезопасным сетям</a>.</li>
             <li>Добавлена <a href="https://redmine.stoutner.com/issues/774">опция протоколирования</a>.</li>
index f584e1e612d91f7775d81c475761e9e7da18dd0d..f6eaba15b18da48e710c956c9da242ef820fce03 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -30,6 +30,6 @@
         <p><a href="https://en.wikipedia.org/wiki/CDMA2000#1X">1 times Radio Transmission Technology</a> (1xRTT) - это первая версия стандарта
             <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000), который является обновлением стандарта 3G более старого стандарта 2G
             <a href="https://en.wikipedia.org/wiki/CdmaOne">Code-Division Multiple Access One</a> (CDMAOne).
-            Он является конкурентом <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).
+            Он является конкурентом <a href="https://en.wikipedia.org/wiki/UMTS">Universal Mobile Telecommunications System</a> (UMTS).</p>
     </body>
 </html>
\ No newline at end of file
index 1d26929d0a7600b7d40e07107efcceb18f998bda..15ebf060335f86bc5180c50fa131af22f719649f 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,6 +29,6 @@
     <body>
         <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rel._0_(TIA-856_Release_0)">Evolution-Data Optimized release 0</a> (EVDO_0) - это развитие стандарта 3G в стандарт 3.5G
             <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000).
-            Он является конкурентом <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA).
+            Он является конкурентом <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA).</p>
     </body>
 </html>
\ No newline at end of file
index 4ae33ddc7011d7f5285932dbb5b74df52d2ecf76..701e5f62a69b8be3ebd670de5c9821fbc28df869 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -27,8 +27,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._A_(TIA-856_Revision_A)">Evolution-Data Optimized release A</a> (EVDO_A) - это вторая версия стандарта EVDO,
+        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._A_(TIA-856_Revision_A)">Evolution-Data Optimized revision A</a> (EVDO_A) - это вторая версия стандарта EVDO,
             который является развитием стандарта 3.5G из 3G <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000).
-            Он является конкурентом <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA).
+            Он является конкурентом <a href="https://en.wikipedia.org/wiki/High_Speed_Packet_Access">High Speed Packet Access</a> (HSPA).</p>
     </body>
 </html>
\ No newline at end of file
index a00bb1a4efee31976e70f810de74637c6f37f111..70dcced73e397c37700359537949ffb2f2685cb5 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -27,8 +27,8 @@
     </head>
 
     <body>
-        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._B_(TIA-856_Revision_B)">Evolution-Data Optimized release B</a> (EVDO_B) - это третий релиз стандарта EVDO,
+        <p><a href="https://en.wikipedia.org/wiki/Evolution-Data_Optimized#EV-DO_Rev._B_(TIA-856_Revision_B)">Evolution-Data Optimized revision B</a> (EVDO_B) - это третий релиз стандарта EVDO,
             который является развитием стандарта 3.5G из 3G <a href="https://en.wikipedia.org/wiki/CDMA2000">Code-Division Multiple Access 2000</a> (CDMA2000).
-            Он является конкурентом <a href="https://en.wikipedia.org/wiki/Evolved_High_Speed_Packet_Access">High Speed Packet Access Plus</a> (HSPAP).
+            Он является конкурентом <a href="https://en.wikipedia.org/wiki/Evolved_High_Speed_Packet_Access">High Speed Packet Access Plus</a> (HSPAP).</p>
     </body>
 </html>
\ No newline at end of file
index faab2d36f0147fb302251b2463cab7b406ae053f..b3c6e6024edc169a64f78b136905ac9bdd59502d 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,7 +29,6 @@
     <body>
         <p><a href="https://en.wikipedia.org/wiki/5G_NR">5G New Radio</a> это основной протокол 5G.
             Он является преемником 4G <a href="https://en.wikipedia.org/wiki/LTE_(telecommunication)">Long-Term Evolution</a> (LTE).
-            Это первый протокол беспроводной связи, в названии которого присутствует слово "поколение" (5G).
-        </p>
+            Это первый протокол беспроводной связи, в названии которого присутствует слово "поколение" (5G).</p>
     </body>
 </html>
\ No newline at end of file
index 86e7be51dfdec9270bd4d606cc1ee03053300d77..b158e057db725a5dc2eaf778a32ad9d5081b0320 100644 (file)
@@ -55,16 +55,23 @@ import com.google.android.material.navigation.NavigationView
 import com.stoutner.privacycell.R
 import com.stoutner.privacycell.dialogs.PhonePermissionDialog
 import com.stoutner.privacycell.dialogs.WebViewDialog
+import com.stoutner.privacycell.helpers.ProtocolHelper
 import com.stoutner.privacycell.services.RealtimeMonitoringService
 
 class PrivacyCellActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener, PhonePermissionDialog.StoragePermissionDialogListener {
+    // Define the class variables.
+    private var voiceNetworkSecurityStatus = ProtocolHelper.UNPOPULATED
+    private var dataNetworkSecurityStatus = ProtocolHelper.UNPOPULATED
+
     // Declare the class variables.
-    private lateinit var actionBarDrawerToggle: ActionBarDrawerToggle
     private lateinit var phoneStateListener: PhoneStateListener  // The `PhoneStateListener` can be replaced by `TelephonyCallback` once the minimum API >= 31.
 
     // Declare the class views.
+    private lateinit var actionBarDrawerToggle: ActionBarDrawerToggle
     private lateinit var drawerLayout: DrawerLayout
-    private lateinit var summaryTextView: TextView
+    private lateinit var overallStatusLinearLayout: LinearLayout
+    private lateinit var overallStatusImageView: ImageView
+    private lateinit var overallStatusTextView: TextView
 
     override fun onCreate(savedInstanceState: Bundle?) {
         // Run the default commands.
@@ -88,9 +95,9 @@ class PrivacyCellActivity : AppCompatActivity(), NavigationView.OnNavigationItem
         // Get handles for the views.
         drawerLayout = findViewById(R.id.drawerlayout)
         val toolbar = findViewById<Toolbar>(R.id.toolbar)
-        val stingrayLinearLayout = findViewById<LinearLayout>(R.id.stingray_linearlayout)
-        val stingrayImageView = findViewById<ImageView>(R.id.stingray_imageview)
-        summaryTextView = findViewById(R.id.summary_textview)
+        overallStatusLinearLayout = findViewById(R.id.overall_status_linearlayout)
+        overallStatusImageView = findViewById(R.id.overall_status_imageview)
+        overallStatusTextView = findViewById(R.id.overall_status_textview)
         val voiceNetworkLinearLayout = findViewById<LinearLayout>(R.id.voice_network_linearlayout)
         val voiceNetworkTextView = findViewById<TextView>(R.id.voice_network)
         val voiceNetworkDetailsTextView = findViewById<TextView>(R.id.voice_network_details)
@@ -140,82 +147,40 @@ class PrivacyCellActivity : AppCompatActivity(), NavigationView.OnNavigationItem
             }
         })
 
+        // Instantiate the protocol helper.
+        val protocolHelper = ProtocolHelper()
+
         // Define the phone state listener.  The `PhoneStateListener` can be replaced by `TelephonyCallback` once the minimum API >= 31.
         phoneStateListener = object : PhoneStateListener() {
-            @SuppressLint("SwitchIntDef")
-            override fun onDisplayInfoChanged(telephonyDisplayInfo: TelephonyDisplayInfo) {
-                // Declare the stingray dialog type integer.
-                val summaryDialogTypeInteger: Int
-
-                // Populate the stingray security information.  <https://source.android.com/devices/tech/connect/acts-5g-testing>
-                if ((telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_NR) || (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_IWLAN) ||
-                    (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_UNKNOWN)) {  // This is a secure network.
-                    // Populate the image view.
-                    stingrayImageView.setImageDrawable(AppCompatResources.getDrawable(applicationContext, R.drawable.secure))
-
-                    // Set the text.
-                    summaryTextView.text = getString(R.string.secure_protocols)
-
-                    // Set the text color.
-                    summaryTextView.setTextColor(getColor(R.color.blue_text))
-
-                    // Set the stingray dialog type integer.
-                    summaryDialogTypeInteger = WebViewDialog.STINGRAY
-                } else if ((telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_LTE) || (!consider3gAntiquated && (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_1xRTT ||
-                            (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_EVDO_0) || (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_EVDO_A) ||
-                            (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_EVDO_B) || (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_EHRPD) ||
-                            (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_UMTS) || (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_TD_SCDMA) ||
-                            (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_HSDPA) || (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_HSUPA) ||
-                            (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_HSPA) || (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_HSPAP)))) {
-                            // This is an insecure network.
-                    // Populate the image view.
-                    stingrayImageView.setImageDrawable(AppCompatResources.getDrawable(applicationContext, R.drawable.insecure))
-
-                    // Set the text.
-                    summaryTextView.text = getString(R.string.insecure_protocols)
-
-                    // Set the text color.
-                    summaryTextView.setTextColor(getColor(R.color.yellow_900))
-
-                    // Set the stingray dialog type integer.
-                    summaryDialogTypeInteger = WebViewDialog.STINGRAY
-                } else {  // This is an antiquated network.
-                    // Populate the image view.
-                    stingrayImageView.setImageDrawable(AppCompatResources.getDrawable(applicationContext, R.drawable.antiquated))
-
-                    // Set the text.
-                    summaryTextView.text = getString(R.string.antiquated_protocols)
-
-                    // Set the text color.
-                    summaryTextView.setTextColor(getColor(R.color.red_text))
-
-                    // Set the stingray dialog type integer.
-                    summaryDialogTypeInteger = WebViewDialog.ANTIQUATED_NETWORK
-                }
+            @Deprecated("Deprecated in Java")
+            override fun onServiceStateChanged(serviceState: ServiceState) {  // Update the voice network.
+                // Get the network registration info for the voice network, which is the second of the three entries (the first appears to be Wi-Fi and the third appears to be the cell data network).
+                val networkRegistrationInfo = serviceState.networkRegistrationInfoList[1]
 
-                // Get the strings that correspond to the network information.
-                val dataNetworkType = getNetworkType(telephonyDisplayInfo.networkType)
-                val additionalNetworkInfo = getAdditionalNetworkInfo(telephonyDisplayInfo.overrideNetworkType)
+                // Get the voice network type int.
+                val voiceNetworkTypeInt = networkRegistrationInfo.accessNetworkTechnology
 
-                // Populate the data network text views.
-                dataNetworkTextView.text = getString(R.string.data_network, dataNetworkType[0])
-                dataNetworkDetailsTextView.text = dataNetworkType[1]
-                additionalNetworkInfoTextView.text = getString(R.string.additional_network_info, additionalNetworkInfo[0])
-                additionalNetworkInfoDetailsTextView.text = additionalNetworkInfo[1]
+                // Get the voice network security status.
+                voiceNetworkSecurityStatus = protocolHelper.checkNetwork(voiceNetworkTypeInt, consider3gAntiquated)
 
-                // Set the stingray click listener.
-                stingrayLinearLayout.setOnClickListener {
-                    // Instantiate the stingray dialog fragment.
-                    val stingrayDialogFragment = WebViewDialog().type(summaryDialogTypeInteger)
+                // Get the voice network type.
+                val voiceNetworkStringArray = protocolHelper.getNetworkTypeStringArray(voiceNetworkTypeInt, applicationContext)
 
-                    // Show the alert dialog.
-                    stingrayDialogFragment.show(supportFragmentManager, getString(R.string.stingrays))
+                // Populate the voice network text views.
+                voiceNetworkTextView.text = getString(R.string.voice_network, voiceNetworkStringArray[0])
+                voiceNetworkDetailsTextView.text = voiceNetworkStringArray[1]
+
+                // Set the color of the voice network.
+                when (voiceNetworkSecurityStatus) {
+                    ProtocolHelper.SECURE -> voiceNetworkTextView.setTextColor(getColor(R.color.blue_text))
+                    ProtocolHelper.INSECURE -> voiceNetworkTextView.setTextColor(getColor(R.color.yellow_text))
+                    ProtocolHelper.ANTIQUATED -> voiceNetworkTextView.setTextColor(getColor(R.color.red_text))
                 }
 
-                // Set the data network click listener.
-                dataNetworkLinearLayout.setOnClickListener {
-                    // Instantiate the data network dialog fragment according to the network type.
-                    val dataNetworkDialogFragment = when (telephonyDisplayInfo.networkType) {
+                // Set the voice network click listener.
+                voiceNetworkLinearLayout.setOnClickListener {
+                    // Instantiate the voice network dialog fragment according to the network type.
+                    val voiceNetworkDialogFragment = when (voiceNetworkTypeInt) {
                         TelephonyManager.NETWORK_TYPE_UNKNOWN -> WebViewDialog().type(WebViewDialog.NETWORK_UNKNOWN)
                         TelephonyManager.NETWORK_TYPE_GPRS -> WebViewDialog().type(WebViewDialog.NETWORK_GPRS)
                         TelephonyManager.NETWORK_TYPE_EDGE -> WebViewDialog().type(WebViewDialog.NETWORK_EDGE)
@@ -240,42 +205,51 @@ class PrivacyCellActivity : AppCompatActivity(), NavigationView.OnNavigationItem
                     }
 
                     // Show the alert dialog.
-                    dataNetworkDialogFragment.show(supportFragmentManager, getString(R.string.voice_network))
+                    voiceNetworkDialogFragment.show(supportFragmentManager, getString(R.string.voice_network))
                 }
 
-                // Set the additional network info click listener.
-                additionalNetworkInfoLinearLayout.setOnClickListener {
-                    // Instantiate the initial network info dialog fragment according to the network type.
-                    val additionalNetworkInfoDialogFragment = when (telephonyDisplayInfo.overrideNetworkType) {
-                        TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NONE)
-                        TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_LTE_CA)
-                        TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_LTE_ADVANCED_PRO)
-                        TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NR_NSA)
-                        TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NR_NSA_MMWAVE)  // Can be removed once the minimum API >= 31.
-                        TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_ADVANCED -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NR_ADVANCED)
-                        else -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NONE)
-                    }
-
-                    // Show the alert dialog.
-                    additionalNetworkInfoDialogFragment.show(supportFragmentManager, getString(R.string.voice_network))
-                }
+                // Populate the overall security status.
+                populateOverallSecurityStatus()
             }
 
-            override fun onServiceStateChanged(serviceState: ServiceState) {
-                // Get the network registration info for the voice network, which is the second of the three entries (the first appears to be Wi-Fi and the third appears to be the cell data network).
-                val networkRegistrationInfo = serviceState.networkRegistrationInfoList[1]
+            @Deprecated("Deprecated in Java")
+            @SuppressLint("SwitchIntDef")
+            override fun onDisplayInfoChanged(telephonyDisplayInfo: TelephonyDisplayInfo) {  // Update the data network.
+                // Get the network type integers.  <https://source.android.com/devices/tech/connect/acts-5g-testing>
+                val dataNetworkTypeInt = telephonyDisplayInfo.networkType
+                val additionalNetworkInfoTypeInt = telephonyDisplayInfo.overrideNetworkType
 
-                // Get the voice network type.
-                val voiceNetworkType = getNetworkType(networkRegistrationInfo.accessNetworkTechnology)
+                // Get the data network security status.
+                dataNetworkSecurityStatus = protocolHelper.checkNetwork(dataNetworkTypeInt, consider3gAntiquated)
 
-                // Populate the voice network text views.
-                voiceNetworkTextView.text = getString(R.string.voice_network, voiceNetworkType[0])
-                voiceNetworkDetailsTextView.text = voiceNetworkType[1]
+                // Get the strings that correspond to the network information.
+                val dataNetworkStringArray = protocolHelper.getNetworkTypeStringArray(dataNetworkTypeInt, applicationContext)
+                val additionalNetworkInfoStringArray = protocolHelper.getAdditionalNetworkInfoStringArray(additionalNetworkInfoTypeInt, applicationContext)
 
-                // Set the voice network click listener.
-                voiceNetworkLinearLayout.setOnClickListener {
-                    // Instantiate the voice network dialog fragment according to the network type.
-                    val voiceNetworkDialogFragment = when (networkRegistrationInfo.accessNetworkTechnology) {
+                // Populate the data network text views.
+                dataNetworkTextView.text = getString(R.string.data_network, dataNetworkStringArray[0])
+                dataNetworkDetailsTextView.text = dataNetworkStringArray[1]
+                additionalNetworkInfoTextView.text = getString(R.string.additional_network_info, additionalNetworkInfoStringArray[0])
+                additionalNetworkInfoDetailsTextView.text = additionalNetworkInfoStringArray[1]
+
+                // Set the color of the data network.
+                when (dataNetworkSecurityStatus) {
+                    ProtocolHelper.SECURE -> dataNetworkTextView.setTextColor(getColor(R.color.blue_text))
+                    ProtocolHelper.INSECURE -> dataNetworkTextView.setTextColor(getColor(R.color.yellow_text))
+                    ProtocolHelper.ANTIQUATED -> dataNetworkTextView.setTextColor(getColor(R.color.red_text))
+                }
+
+                // Set the color of the additional network info.
+                when (protocolHelper.checkAdditionalNetworkInfo(additionalNetworkInfoTypeInt)) {
+                    ProtocolHelper.SECURE -> additionalNetworkInfoTextView.setTextColor(getColor(R.color.blue_text))
+                    ProtocolHelper.INSECURE -> additionalNetworkInfoTextView.setTextColor(getColor(R.color.yellow_text))
+                    ProtocolHelper.ANTIQUATED -> additionalNetworkInfoTextView.setTextColor(getColor(R.color.red_text))
+                }
+
+                // Set the data network click listener.
+                dataNetworkLinearLayout.setOnClickListener {
+                    // Instantiate the data network dialog fragment according to the network type.
+                    val dataNetworkDialogFragment = when (dataNetworkTypeInt) {
                         TelephonyManager.NETWORK_TYPE_UNKNOWN -> WebViewDialog().type(WebViewDialog.NETWORK_UNKNOWN)
                         TelephonyManager.NETWORK_TYPE_GPRS -> WebViewDialog().type(WebViewDialog.NETWORK_GPRS)
                         TelephonyManager.NETWORK_TYPE_EDGE -> WebViewDialog().type(WebViewDialog.NETWORK_EDGE)
@@ -300,8 +274,28 @@ class PrivacyCellActivity : AppCompatActivity(), NavigationView.OnNavigationItem
                     }
 
                     // Show the alert dialog.
-                    voiceNetworkDialogFragment.show(supportFragmentManager, getString(R.string.voice_network))
+                    dataNetworkDialogFragment.show(supportFragmentManager, getString(R.string.voice_network))
                 }
+
+                // Set the additional network info click listener.
+                additionalNetworkInfoLinearLayout.setOnClickListener {
+                    // Instantiate the initial network info dialog fragment according to the network type.
+                    val additionalNetworkInfoDialogFragment = when (telephonyDisplayInfo.overrideNetworkType) {
+                        TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NONE)
+                        TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_LTE_CA)
+                        TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_LTE_ADVANCED_PRO)
+                        TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NR_NSA)
+                        TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NR_NSA_MMWAVE)  // Can be removed once the minimum API >= 31.
+                        TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_ADVANCED -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NR_ADVANCED)
+                        else -> WebViewDialog().type(WebViewDialog.OVERRIDE_NETWORK_NONE)
+                    }
+
+                    // Show the alert dialog.
+                    additionalNetworkInfoDialogFragment.show(supportFragmentManager, getString(R.string.voice_network))
+                }
+
+                // Populate the overall security status.
+                populateOverallSecurityStatus()
             }
         }
 
@@ -512,7 +506,7 @@ class PrivacyCellActivity : AppCompatActivity(), NavigationView.OnNavigationItem
                 registerTelephonyManagerListener()
             } else {  // The read phone state permission was denied.
                 // Display the phone permission text on the main activity.
-                summaryTextView.text = getString(R.string.phone_permission_text)
+               overallStatusTextView.text = getString(R.string.phone_permission_text)
             }
         }
     }
@@ -522,46 +516,59 @@ class PrivacyCellActivity : AppCompatActivity(), NavigationView.OnNavigationItem
         val telephonyManager = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
 
         // Listen to changes in the cell network state.  The `PhoneStateListener` can be replaced by `TelephonyCallback` once the minimum API >= 31.
-        telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED or PhoneStateListener.LISTEN_SERVICE_STATE)
+        telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE or PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED)
     }
 
-    private fun getNetworkType(networkType: Int) : Array<String> {
-        // Return the string that corresponds to the network type.
-        return when(networkType) {
-            TelephonyManager.NETWORK_TYPE_UNKNOWN -> arrayOf(getString(R.string.unknown), "")
-            TelephonyManager.NETWORK_TYPE_GPRS -> arrayOf(getString(R.string.gprs), getString(R.string.gprs_detail))
-            TelephonyManager.NETWORK_TYPE_EDGE -> arrayOf(getString(R.string.edge), getString(R.string.edge_detail))
-            TelephonyManager.NETWORK_TYPE_UMTS -> arrayOf(getString(R.string.umts), getString(R.string.umts_detail))
-            TelephonyManager.NETWORK_TYPE_CDMA -> arrayOf(getString(R.string.cdma), getString(R.string.cdma_detail))
-            TelephonyManager.NETWORK_TYPE_EVDO_0 -> arrayOf(getString(R.string.evdo_0), getString(R.string.evdo_0_detail))
-            TelephonyManager.NETWORK_TYPE_EVDO_A -> arrayOf(getString(R.string.evdo_a), getString(R.string.evdo_a_detail))
-            TelephonyManager.NETWORK_TYPE_1xRTT -> arrayOf(getString(R.string.rtt), getString(R.string.rtt_detail))
-            TelephonyManager.NETWORK_TYPE_HSDPA -> arrayOf(getString(R.string.hsdpa), getString(R.string.hsdpa_detail))
-            TelephonyManager.NETWORK_TYPE_HSUPA -> arrayOf(getString(R.string.hsupa), getString(R.string.hsupa_detail))
-            TelephonyManager.NETWORK_TYPE_HSPA -> arrayOf(getString(R.string.hspa), getString(R.string.hspa_detail))
-            TelephonyManager.NETWORK_TYPE_IDEN -> arrayOf(getString(R.string.iden), getString(R.string.iden_detail))
-            TelephonyManager.NETWORK_TYPE_EVDO_B -> arrayOf(getString(R.string.evdo_b), getString(R.string.evdo_b_detail))
-            TelephonyManager.NETWORK_TYPE_LTE -> arrayOf(getString(R.string.lte), getString(R.string.lte_detail))
-            TelephonyManager.NETWORK_TYPE_EHRPD -> arrayOf(getString(R.string.ehrpd), getString(R.string.ehrpd_detail))
-            TelephonyManager.NETWORK_TYPE_HSPAP -> arrayOf(getString(R.string.hspap), getString(R.string.hspap_detail))
-            TelephonyManager.NETWORK_TYPE_GSM -> arrayOf(getString(R.string.gsm), getString(R.string.gsm_detail))
-            TelephonyManager.NETWORK_TYPE_TD_SCDMA -> arrayOf(getString(R.string.td_scdma), getString(R.string.td_scdma_detail))
-            TelephonyManager.NETWORK_TYPE_IWLAN -> arrayOf(getString(R.string.iwlan), getString(R.string.iwlan_detail))
-            TelephonyManager.NETWORK_TYPE_NR -> arrayOf(getString(R.string.nr), getString(R.string.nr_detail))
-            else -> arrayOf(getString(R.string.error), "")
+    private fun populateOverallSecurityStatus() {
+        // Create an overall status dialog type integer.
+        val overallStatusDialogTypeInt: Int
+
+        // Populate the over security status.
+        if ((voiceNetworkSecurityStatus == ProtocolHelper.ANTIQUATED) || (dataNetworkSecurityStatus == ProtocolHelper.ANTIQUATED)) {  // This is an antiquated network.
+            // Populate the image view.
+            overallStatusImageView.setImageDrawable(AppCompatResources.getDrawable(applicationContext, R.drawable.antiquated))
+
+            // Set the text.
+            overallStatusTextView.text = getString(R.string.antiquated_protocols)
+
+            // Set the text color.
+            overallStatusTextView.setTextColor(getColor(R.color.red_text))
+
+            // Set the stingray dialog type integer.
+            overallStatusDialogTypeInt = WebViewDialog.ANTIQUATED_NETWORK
+        } else if ((voiceNetworkSecurityStatus == ProtocolHelper.INSECURE) || (dataNetworkSecurityStatus == ProtocolHelper.INSECURE)) {  // This is an insecure network.
+            // Populate the image view.
+            overallStatusImageView.setImageDrawable(AppCompatResources.getDrawable(applicationContext, R.drawable.insecure))
+
+            // Set the text.
+            overallStatusTextView.text = getString(R.string.insecure_protocols)
+
+            // Set the text color.
+            overallStatusTextView.setTextColor(getColor(R.color.yellow_text))
+
+            // Set the stingray dialog type integer.
+            overallStatusDialogTypeInt = WebViewDialog.STINGRAY
+        } else {  // This is a secure network.
+            // Populate the image view.
+            overallStatusImageView.setImageDrawable(AppCompatResources.getDrawable(applicationContext, R.drawable.secure))
+
+            // Set the text.
+            overallStatusTextView.text = getString(R.string.secure_protocols)
+
+            // Set the text color.
+            overallStatusTextView.setTextColor(getColor(R.color.blue_text))
+
+            // Set the stingray dialog type integer.
+            overallStatusDialogTypeInt = WebViewDialog.STINGRAY
         }
-    }
 
-    private fun getAdditionalNetworkInfo(overrideNetworkType: Int) : Array<String> {
-        // Return the string that corresponds to the override network type.
-        return when(overrideNetworkType) {
-            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE -> arrayOf(getString(R.string.none), "")
-            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA -> arrayOf(getString(R.string.lte_ca), getString(R.string.lte_ca_detail))
-            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO -> arrayOf(getString(R.string.lte_advanced_pro), getString(R.string.lte_advanced_pro_detail))
-            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA -> arrayOf(getString(R.string.nr_nsa), getString(R.string.nr_nsa_detail))
-            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE -> arrayOf(getString(R.string.nr_nsa_mmwave), getString(R.string.nr_nsa_mmwave_detail))  // Can be removed once the minimum API >= 31.
-            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_ADVANCED -> arrayOf(getString(R.string.nr_advanced), getString(R.string.nr_advanced_detail))
-            else -> arrayOf(getString(R.string.error), "")
+        // Set the overall status click listener.
+        overallStatusLinearLayout.setOnClickListener {
+            // Instantiate the stingray dialog fragment.
+            val stingrayDialogFragment = WebViewDialog().type(overallStatusDialogTypeInt)
+
+            // Show the alert dialog.
+            stingrayDialogFragment.show(supportFragmentManager, getString(R.string.stingrays))
         }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/stoutner/privacycell/helpers/ProtocolHelper.kt b/app/src/main/java/com/stoutner/privacycell/helpers/ProtocolHelper.kt
new file mode 100644 (file)
index 0000000..dcbc9ad
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+ *
+ * This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
+ *
+ * Privacy Cell is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Privacy Cell is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Privacy Cell.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.stoutner.privacycell.helpers
+
+import android.content.Context
+import android.telephony.TelephonyDisplayInfo
+import android.telephony.TelephonyManager
+
+import com.stoutner.privacycell.R
+
+class ProtocolHelper {
+    companion object {
+        // Define the public static companion object constants.
+        const val UNPOPULATED = -1
+        const val SECURE = 0
+        const val INSECURE = 1
+        const val ANTIQUATED = 2
+    }
+
+    fun checkNetwork(networkType: Int, consider3gAntiquated: Boolean): Int {
+        if ((networkType == TelephonyManager.NETWORK_TYPE_NR) ||
+            (networkType == TelephonyManager.NETWORK_TYPE_IWLAN) ||
+            (networkType == TelephonyManager.NETWORK_TYPE_UNKNOWN)) {
+            // The network is secure.
+            return SECURE
+        } else if (networkType == TelephonyManager.NETWORK_TYPE_LTE) {
+            // The network is insecure.
+            return INSECURE
+        } else if (!consider3gAntiquated &&
+                  ((networkType == TelephonyManager.NETWORK_TYPE_1xRTT) ||
+                   (networkType == TelephonyManager.NETWORK_TYPE_EVDO_0) ||
+                   (networkType == TelephonyManager.NETWORK_TYPE_EVDO_A) ||
+                   (networkType == TelephonyManager.NETWORK_TYPE_EVDO_B) ||
+                   (networkType == TelephonyManager.NETWORK_TYPE_EHRPD) ||
+                   (networkType == TelephonyManager.NETWORK_TYPE_UMTS) ||
+                   (networkType == TelephonyManager.NETWORK_TYPE_TD_SCDMA) ||
+                   (networkType == TelephonyManager.NETWORK_TYPE_HSDPA) ||
+                   (networkType == TelephonyManager.NETWORK_TYPE_HSUPA) ||
+                   (networkType == TelephonyManager.NETWORK_TYPE_HSPA) ||
+                   (networkType == TelephonyManager.NETWORK_TYPE_HSPAP))) {
+            // The network is insecure.
+            return INSECURE
+        } else {
+            // Either 3G networks are considered antiquated, or this is a 2G network.
+            // TelephonyManager.NETWORK_TYPE_GPRS
+            // TelephonyManager.NETWORK_TYPE_EDGE
+            // TelephonyManager.NETWORK_TYPE_CDMA
+            // TelephonyManager.NETWORK_TYPE_IDEN
+            // TelephonyManager.NETWORK_TYPE_GSM
+            return ANTIQUATED
+        }
+    }
+
+    fun checkAdditionalNetworkInfo(additionalNetworkInfoType: Int): Int {
+        if ((additionalNetworkInfoType == TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE) ||
+            (additionalNetworkInfoType == TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_ADVANCED)) {
+            // The additional network info is secure.
+            return SECURE
+        } else {
+            // The additional network info is insecure.
+            // TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA
+            // TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO
+            // TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA
+            // TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE -- Can be removed once the minimum API >= 31.
+            return INSECURE
+        }
+    }
+
+    fun getNetworkTypeStringArray(networkType: Int, context: Context) : Array<String> {
+        // Return the string array that corresponds to the network type.
+        return when(networkType) {
+            TelephonyManager.NETWORK_TYPE_UNKNOWN -> arrayOf(context.getString(R.string.unknown), "")
+            TelephonyManager.NETWORK_TYPE_GPRS -> arrayOf(context.getString(R.string.gprs), context.getString(R.string.gprs_detail))
+            TelephonyManager.NETWORK_TYPE_EDGE -> arrayOf(context.getString(R.string.edge), context.getString(R.string.edge_detail))
+            TelephonyManager.NETWORK_TYPE_UMTS -> arrayOf(context.getString(R.string.umts), context.getString(R.string.umts_detail))
+            TelephonyManager.NETWORK_TYPE_CDMA -> arrayOf(context.getString(R.string.cdma), context.getString(R.string.cdma_detail))
+            TelephonyManager.NETWORK_TYPE_EVDO_0 -> arrayOf(context.getString(R.string.evdo_0), context.getString(R.string.evdo_0_detail))
+            TelephonyManager.NETWORK_TYPE_EVDO_A -> arrayOf(context.getString(R.string.evdo_a), context.getString(R.string.evdo_a_detail))
+            TelephonyManager.NETWORK_TYPE_1xRTT -> arrayOf(context.getString(R.string.rtt), context.getString(R.string.rtt_detail))
+            TelephonyManager.NETWORK_TYPE_HSDPA -> arrayOf(context.getString(R.string.hsdpa), context.getString(R.string.hsdpa_detail))
+            TelephonyManager.NETWORK_TYPE_HSUPA -> arrayOf(context.getString(R.string.hsupa), context.getString(R.string.hsupa_detail))
+            TelephonyManager.NETWORK_TYPE_HSPA -> arrayOf(context.getString(R.string.hspa), context.getString(R.string.hspa_detail))
+            TelephonyManager.NETWORK_TYPE_IDEN -> arrayOf(context.getString(R.string.iden), context.getString(R.string.iden_detail))
+            TelephonyManager.NETWORK_TYPE_EVDO_B -> arrayOf(context.getString(R.string.evdo_b), context.getString(R.string.evdo_b_detail))
+            TelephonyManager.NETWORK_TYPE_LTE -> arrayOf(context.getString(R.string.lte), context.getString(R.string.lte_detail))
+            TelephonyManager.NETWORK_TYPE_EHRPD -> arrayOf(context.getString(R.string.ehrpd), context.getString(R.string.ehrpd_detail))
+            TelephonyManager.NETWORK_TYPE_HSPAP -> arrayOf(context.getString(R.string.hspap), context.getString(R.string.hspap_detail))
+            TelephonyManager.NETWORK_TYPE_GSM -> arrayOf(context.getString(R.string.gsm), context.getString(R.string.gsm_detail))
+            TelephonyManager.NETWORK_TYPE_TD_SCDMA -> arrayOf(context.getString(R.string.td_scdma), context.getString(R.string.td_scdma_detail))
+            TelephonyManager.NETWORK_TYPE_IWLAN -> arrayOf(context.getString(R.string.iwlan), context.getString(R.string.iwlan_detail))
+            TelephonyManager.NETWORK_TYPE_NR -> arrayOf(context.getString(R.string.nr), context.getString(R.string.nr_detail))
+            else -> arrayOf(context.getString(R.string.error), "")
+        }
+    }
+
+    fun getAdditionalNetworkInfoStringArray(overrideNetworkType: Int, context: Context) : Array<String> {
+        // Return the string array that corresponds to the override network type.
+        return when(overrideNetworkType) {
+            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE -> arrayOf(context.getString(R.string.none), "")
+            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA -> arrayOf(context.getString(R.string.lte_ca), context.getString(R.string.lte_ca_detail))
+            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO -> arrayOf(context.getString(R.string.lte_advanced_pro), context.getString(R.string.lte_advanced_pro_detail))
+            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA -> arrayOf(context.getString(R.string.nr_nsa), context.getString(R.string.nr_nsa_detail))
+            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE -> arrayOf(context.getString(R.string.nr_nsa_mmwave), context.getString(R.string.nr_nsa_mmwave_detail))  // Can be removed once the minimum API >= 31.
+            TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_ADVANCED -> arrayOf(context.getString(R.string.nr_advanced), context.getString(R.string.nr_advanced_detail))
+            else -> arrayOf(context.getString(R.string.error), "")
+        }
+    }
+}
\ No newline at end of file
index a48757f987f6cc4fc45b28e3fae6604d91a17c55..c54e290813c07abd015b1f3d0443dc7afdc45317 100644 (file)
@@ -35,6 +35,7 @@ import android.content.pm.PackageManager
 import android.os.Binder
 import android.os.IBinder
 import android.telephony.PhoneStateListener  // This can be replaced by `TelephonyCallback` once the minimum API >= 31.
+import android.telephony.ServiceState
 import android.telephony.TelephonyDisplayInfo
 import android.telephony.TelephonyManager
 
@@ -46,6 +47,7 @@ import androidx.work.WorkManager
 
 import com.stoutner.privacycell.R
 import com.stoutner.privacycell.activities.PrivacyCellActivity
+import com.stoutner.privacycell.helpers.ProtocolHelper
 import com.stoutner.privacycell.workers.RegisterRealtimeListenerWorker
 
 import java.util.concurrent.TimeUnit
@@ -65,7 +67,13 @@ class RealtimeMonitoringService : Service() {
 
     // Define the class variables.
     private var currentStatus = ""
+    private var voiceNetworkSecurityStatus = ProtocolHelper.UNPOPULATED
+    private var dataNetworkSecurityStatus = ProtocolHelper.UNPOPULATED
+
+    // Declare the class variables.
+    private lateinit var notificationManager: NotificationManager
     private lateinit var phoneStateListener: PhoneStateListener  // The `PhoneStateListener` can be replaced by `TelephonyCallback` once the minimum API >= 31.
+    private lateinit var privacyCellPendingIntent: PendingIntent
 
     inner class ServiceBinder : Binder() {
         // Get a copy of this service as a binder.
@@ -81,163 +89,128 @@ class RealtimeMonitoringService : Service() {
         // Get a handle for the shared preferences.
         val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
 
-        // Get a handle for the notification manager.
-        val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
-
-        // Create a notification channel group.
-        notificationManager.createNotificationChannelGroup(NotificationChannelGroup(REALTIME_MONITORING, getString(R.string.realtime_monitoring)))
-
-        // Prepare the notification channels.
-        val secureNetworkChannel = NotificationChannel(SECURE_NETWORK, getString(R.string.secure_network_channel), NotificationManager.IMPORTANCE_HIGH)
-        val insecureNetworkChannel = NotificationChannel(INSECURE_NETWORK, getString(R.string.insecure_network_channel), NotificationManager.IMPORTANCE_HIGH)
-        val antiquatedNetworkChannel = NotificationChannel(ANTIQUATED_NETWORK, getString(R.string.antiquated_network_channel), NotificationManager.IMPORTANCE_HIGH)
-        val unknownNetworkChannel = NotificationChannel(UNKNOWN_NETWORK, getString(R.string.unknown_network_channel), NotificationManager.IMPORTANCE_LOW)
-
-        // Set the notification channel group.
-        secureNetworkChannel.group = REALTIME_MONITORING
-        insecureNetworkChannel.group = REALTIME_MONITORING
-        antiquatedNetworkChannel.group = REALTIME_MONITORING
-        unknownNetworkChannel.group = REALTIME_MONITORING
-
-        // Disable the notification dots.
-        secureNetworkChannel.setShowBadge(false)
-        insecureNetworkChannel.setShowBadge(false)
-        antiquatedNetworkChannel.setShowBadge(false)
-        unknownNetworkChannel.setShowBadge(false)
-
-        // Set the primary channel notifications to be public.
-        secureNetworkChannel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC
-        insecureNetworkChannel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC
-        antiquatedNetworkChannel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC
+        // Check to see if realtime monitoring is enabled.  Sometimes the shared preferences can't return a value in time, because Android sucks.
+        // So, the default value is set to true, which is the safest value if the shared preferences can't be queried.
+        if (sharedPreferences.getBoolean(applicationContext.getString(R.string.realtime_monitoring_key), true)) {  // Realtime monitoring is enabled.
+            // Get a handle for the notification manager.
+            notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
 
-        // Create the notification channels.
-        notificationManager.createNotificationChannel(secureNetworkChannel)
-        notificationManager.createNotificationChannel(insecureNetworkChannel)
-        notificationManager.createNotificationChannel(antiquatedNetworkChannel)
-        notificationManager.createNotificationChannel(unknownNetworkChannel)
+            // Create a notification channel group.
+            notificationManager.createNotificationChannelGroup(NotificationChannelGroup(REALTIME_MONITORING, getString(R.string.realtime_monitoring)))
 
-        // Create a notification builder.
-        val notificationBuilder = Notification.Builder(this, UNKNOWN_NETWORK)
+            // Prepare the notification channels.
+            val secureNetworkChannel = NotificationChannel(SECURE_NETWORK, getString(R.string.secure_network_channel), NotificationManager.IMPORTANCE_HIGH)
+            val insecureNetworkChannel = NotificationChannel(INSECURE_NETWORK, getString(R.string.insecure_network_channel), NotificationManager.IMPORTANCE_HIGH)
+            val antiquatedNetworkChannel = NotificationChannel(ANTIQUATED_NETWORK, getString(R.string.antiquated_network_channel), NotificationManager.IMPORTANCE_HIGH)
+            val unknownNetworkChannel = NotificationChannel(UNKNOWN_NETWORK, getString(R.string.unknown_network_channel), NotificationManager.IMPORTANCE_LOW)
 
-        // Create an intent to open Privacy Cell.
-        val privacyCellIntent = Intent(this, PrivacyCellActivity::class.java)
+            // Set the notification channel group.
+            secureNetworkChannel.group = REALTIME_MONITORING
+            insecureNetworkChannel.group = REALTIME_MONITORING
+            antiquatedNetworkChannel.group = REALTIME_MONITORING
+            unknownNetworkChannel.group = REALTIME_MONITORING
 
-        // Create a pending intent from the Privacy Cell intent.
-        val privacyCellPendingIntent = PendingIntent.getActivity(this, 0, privacyCellIntent, PendingIntent.FLAG_IMMUTABLE)
+            // Disable the notification dots.
+            secureNetworkChannel.setShowBadge(false)
+            insecureNetworkChannel.setShowBadge(false)
+            antiquatedNetworkChannel.setShowBadge(false)
+            unknownNetworkChannel.setShowBadge(false)
 
-        // Set the notification to open Privacy Cell.
-        notificationBuilder.setContentIntent(privacyCellPendingIntent)
+            // Set the primary channel notifications to be public.
+            secureNetworkChannel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC
+            insecureNetworkChannel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC
+            antiquatedNetworkChannel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC
 
-        // Set the notification text.
-        notificationBuilder.setContentText(getString(R.string.unknown_network))
+            // Create the notification channels.
+            notificationManager.createNotificationChannel(secureNetworkChannel)
+            notificationManager.createNotificationChannel(insecureNetworkChannel)
+            notificationManager.createNotificationChannel(antiquatedNetworkChannel)
+            notificationManager.createNotificationChannel(unknownNetworkChannel)
 
-        // Set the notification icon.
-        notificationBuilder.setSmallIcon(R.drawable.antiquated_notification_enabled)
+            // Create a notification builder.
+            val notificationBuilder = Notification.Builder(this, UNKNOWN_NETWORK)
 
-        // Set the color.
-        notificationBuilder.setColor(getColor(R.color.red_notification_icon))
+            // Create an intent to open Privacy Cell.
+            val privacyCellIntent = Intent(this, PrivacyCellActivity::class.java)
 
-        // Start the foreground notification.
-        startForeground(NOTIFICATION_ID, notificationBuilder.build())
+            // Create a pending intent from the Privacy Cell intent.
+            privacyCellPendingIntent = PendingIntent.getActivity(this, 0, privacyCellIntent, PendingIntent.FLAG_IMMUTABLE)
 
-        // Define the phone state listener.  The `PhoneStateListener` can be replaced by `TelephonyCallback` once the minimum API >= 31.
-        phoneStateListener = object : PhoneStateListener() {
-            override fun onDisplayInfoChanged(telephonyDisplayInfo: TelephonyDisplayInfo) {
-                // Get the consider 3G antiquated preference.
-                val consider3gAntiquated = sharedPreferences.getBoolean(getString(R.string.consider_3g_antiquated_key), false)
+            // Set the notification to open Privacy Cell.
+            notificationBuilder.setContentIntent(privacyCellPendingIntent)
 
-                // Populate the notification according to the network type.
-                if ((telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_NR) || (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_IWLAN) ||
-                    (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_UNKNOWN)) {  // This is a secure network.
-                    // Only update the notification if the network status has changed.
-                    if (currentStatus != SECURE_NETWORK) {
-                        // Create a secure network notification builder.
-                        val secureNetworkNotificationBuilder = Notification.Builder(applicationContext, SECURE_NETWORK)
+            // Set the notification text.
+            notificationBuilder.setContentText(getString(R.string.unknown_network))
 
-                        // Set the notification to open Privacy Cell.
-                        secureNetworkNotificationBuilder.setContentIntent(privacyCellPendingIntent)
+            // Set the notification icon.
+            notificationBuilder.setSmallIcon(R.drawable.antiquated_notification_enabled)
 
-                        // Set the notification text.
-                        secureNetworkNotificationBuilder.setContentText(getString(R.string.secure_network))
+            // Set the color.
+            notificationBuilder.setColor(getColor(R.color.red_notification_icon))
 
-                        // Set the notification icon.
-                        secureNetworkNotificationBuilder.setSmallIcon(R.drawable.secure_notification_enabled)
+            // Start the foreground notification.
+            startForeground(NOTIFICATION_ID, notificationBuilder.build())
 
-                        // Set the color.
-                        secureNetworkNotificationBuilder.setColor(getColor(R.color.blue_icon))
+            // Instantiate the protocol helper.
+            val protocolHelper = ProtocolHelper()
 
-                        // Update the notification.
-                        notificationManager.notify(NOTIFICATION_ID, secureNetworkNotificationBuilder.build())
+            // Get a handle for the telephony manager.
+            val telephonyManager = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
 
-                        // Store the new network status.
-                        currentStatus = SECURE_NETWORK
-                    }
-                } else if ((telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_LTE) || (!consider3gAntiquated && (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_1xRTT ||
-                            (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_EVDO_0) || (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_EVDO_A) ||
-                            (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_EVDO_B) || (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_EHRPD) ||
-                            (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_UMTS) || (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_TD_SCDMA) ||
-                            (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_HSDPA) || (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_HSUPA) ||
-                            (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_HSPA) || (telephonyDisplayInfo.networkType == TelephonyManager.NETWORK_TYPE_HSPAP)))) {
-                            // This is an insecure network.
-                    // Only update the notification if the network status has changed.
-                    if (currentStatus != INSECURE_NETWORK) {
-                        // Create an insecure network notification builder.
-                        val insecureNetworkNotificationBuilder = Notification.Builder(applicationContext, INSECURE_NETWORK)
-
-                        // Set the notification to open Privacy Cell.
-                        insecureNetworkNotificationBuilder.setContentIntent(privacyCellPendingIntent)
-
-                        // Set the notification text.
-                        insecureNetworkNotificationBuilder.setContentText(getString(R.string.insecure_network))
-
-                        // Set the notification icon.
-                        insecureNetworkNotificationBuilder.setSmallIcon(R.drawable.insecure_notification_enabled)
-
-                        // Set the color.
-                        insecureNetworkNotificationBuilder.setColor(getColor(R.color.yellow_notification_icon))
-
-                        // Update the notification.
-                        notificationManager.notify(NOTIFICATION_ID, insecureNetworkNotificationBuilder.build())
-
-                        // Store the new network status.
-                        currentStatus = INSECURE_NETWORK
+            // Define the phone state listener.  The `PhoneStateListener` can be replaced by `TelephonyCallback` once the minimum API >= 31.
+            phoneStateListener = object : PhoneStateListener() {
+                @Deprecated("Deprecated in Java")
+                override fun onServiceStateChanged(serviceState: ServiceState) {  // Update the voice network status.
+                    // Check to see if realtime monitoring is enabled.  Sometimes the system keeps running the service even when it is supposed to shut down.
+                    if (sharedPreferences.getBoolean(applicationContext.getString(R.string.realtime_monitoring_key), true)) {  // Realtime monitoring is enabled.
+                        // Get the network registration info for the voice network, which is the second of the three entries (the first appears to be Wi-Fi and the third appears to be the cell data network).
+                        val networkRegistrationInfo = serviceState.networkRegistrationInfoList[1]
+
+                        // Get the consider 3G antiquated preference.
+                        val consider3gAntiquated = sharedPreferences.getBoolean(getString(R.string.consider_3g_antiquated_key), false)
+
+                        // Update the voice network security status.
+                        voiceNetworkSecurityStatus = protocolHelper.checkNetwork(networkRegistrationInfo.accessNetworkTechnology, consider3gAntiquated)
+
+                        // Populate the notification.
+                        populateNotification()
+                    } else {  // Realtime monitoring is disabled.
+                        // Cancel the current listener if it exists.  The `PhoneStateListener` can be replaced by `TelephonyCallback` once the minimum API >= 31.
+                        telephonyManager.listen(phoneStateListener, LISTEN_NONE)
                     }
-                } else {  // This is an antiquated network.
-                    // Only update the notification if the network status has changed.
-                    if (currentStatus != ANTIQUATED_NETWORK) {
-                        // Create an antiquated network notification builder.
-                        val antiquatedNetworkNotificationBuilder = Notification.Builder(applicationContext, ANTIQUATED_NETWORK)
-
-                        // Set the notification to open Privacy Cell.
-                        antiquatedNetworkNotificationBuilder.setContentIntent(privacyCellPendingIntent)
-
-                        // Set the notification text.
-                        antiquatedNetworkNotificationBuilder.setContentText(getString(R.string.antiquated_network))
-
-                        // Set the notification icon.
-                        antiquatedNetworkNotificationBuilder.setSmallIcon(R.drawable.antiquated_notification_enabled)
-
-                        // Set the color.
-                        antiquatedNetworkNotificationBuilder.setColor(getColor(R.color.red_notification_icon))
-
-                        // Update the notification.
-                        notificationManager.notify(NOTIFICATION_ID, antiquatedNetworkNotificationBuilder.build())
+                }
 
-                        // Store the new network status.
-                        currentStatus = ANTIQUATED_NETWORK
+                @Deprecated("Deprecated in Java")
+                override fun onDisplayInfoChanged(telephonyDisplayInfo: TelephonyDisplayInfo) {  // Update the data network status.
+                    // Check to see if realtime monitoring is enabled.  Sometimes the system keeps running the service even when it is supposed to shut down.
+                    if (sharedPreferences.getBoolean(applicationContext.getString(R.string.realtime_monitoring_key), true)) {  // Realtime monitoring is enabled.
+                        // Get the consider 3G antiquated preference.
+                        val consider3gAntiquated = sharedPreferences.getBoolean(getString(R.string.consider_3g_antiquated_key), false)
+
+                        // Update the data network security status.
+                        dataNetworkSecurityStatus = protocolHelper.checkNetwork(telephonyDisplayInfo.networkType, consider3gAntiquated)
+
+                        // Populate the notification.
+                        populateNotification()
+                    } else {  // Realtime monitoring is disabled.
+                        // Cancel the current listener if it exists.  The `PhoneStateListener` can be replaced by `TelephonyCallback` once the minimum API >= 31.
+                        telephonyManager.listen(phoneStateListener, LISTEN_NONE)
                     }
                 }
             }
-        }
 
-        // Check to see if the read phone state permission has been granted.
-        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
-            // Create a register realtime listener work request that fires every hour.
-            // This periodic request will fire shortly after being created (it fires about every hour near the beginning of the hour) and will reregister the listener if it gets garbage collected.
-            val registerRealtimeListenerWorkRequest = PeriodicWorkRequestBuilder<RegisterRealtimeListenerWorker>(1, TimeUnit.HOURS).build()
+            // Check to see if the read phone state permission has been granted.
+            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
+                // Create a register realtime listener work request that fires every hour.
+                // This periodic request will fire shortly after being created (it fires about every hour near the beginning of the hour) and will reregister the listener if it gets garbage collected.
+                val registerRealtimeListenerWorkRequest = PeriodicWorkRequestBuilder<RegisterRealtimeListenerWorker>(1, TimeUnit.HOURS).build()
 
-            // Register the realtime listener work request.
-            WorkManager.getInstance(this).enqueueUniquePeriodicWork(getString(R.string.register_listener_work_request), ExistingPeriodicWorkPolicy.REPLACE, registerRealtimeListenerWorkRequest)
+                // Register the realtime listener work request.
+                WorkManager.getInstance(this).enqueueUniquePeriodicWork(getString(R.string.register_listener_work_request), ExistingPeriodicWorkPolicy.REPLACE, registerRealtimeListenerWorkRequest)
+            }
+        } else {  // Realtime monitoring is disabled.  This can happen if the restart listener work request fires after realtime monitoring has been disabled.
+            // Cancel the realtime listener work request.
+            WorkManager.getInstance(applicationContext).cancelUniqueWork(applicationContext.getString(R.string.register_listener_work_request))
         }
 
         // Return a sticky service.
@@ -254,7 +227,84 @@ class RealtimeMonitoringService : Service() {
             telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE)
 
             // Listen for changes to the phone state.  The `PhoneStateListener` can be replaced by `TelephonyCallback` once the minimum API >= 31.
-            telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED)
+            telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE or PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED)
+        }
+    }
+
+    fun populateNotification() {
+        // Populate the notification according to the security status.
+        if ((voiceNetworkSecurityStatus == ProtocolHelper.ANTIQUATED) || (dataNetworkSecurityStatus == ProtocolHelper.ANTIQUATED)) {  // This is an antiquated network.
+            // Only update the notification if the network status has changed.
+            if (currentStatus != ANTIQUATED_NETWORK) {
+                // Create an antiquated network notification builder.
+                val antiquatedNetworkNotificationBuilder = Notification.Builder(applicationContext, ANTIQUATED_NETWORK)
+
+                // Set the notification to open Privacy Cell.
+                antiquatedNetworkNotificationBuilder.setContentIntent(privacyCellPendingIntent)
+
+                // Set the notification text.
+                antiquatedNetworkNotificationBuilder.setContentText(getString(R.string.antiquated_network))
+
+                // Set the notification icon.
+                antiquatedNetworkNotificationBuilder.setSmallIcon(R.drawable.antiquated_notification_enabled)
+
+                // Set the color.
+                antiquatedNetworkNotificationBuilder.setColor(getColor(R.color.red_notification_icon))
+
+                // Update the notification.
+                notificationManager.notify(NOTIFICATION_ID, antiquatedNetworkNotificationBuilder.build())
+
+                // Store the new network status.
+                currentStatus = ANTIQUATED_NETWORK
+            }
+        } else if ((voiceNetworkSecurityStatus == ProtocolHelper.INSECURE) || (dataNetworkSecurityStatus == ProtocolHelper.INSECURE)) {  // This is an insecure network.
+            // Only update the notification if the network status has changed.
+            if (currentStatus != INSECURE_NETWORK) {
+                // Create an insecure network notification builder.
+                val insecureNetworkNotificationBuilder = Notification.Builder(applicationContext, INSECURE_NETWORK)
+
+                // Set the notification to open Privacy Cell.
+                insecureNetworkNotificationBuilder.setContentIntent(privacyCellPendingIntent)
+
+                // Set the notification text.
+                insecureNetworkNotificationBuilder.setContentText(getString(R.string.insecure_network))
+
+                // Set the notification icon.
+                insecureNetworkNotificationBuilder.setSmallIcon(R.drawable.insecure_notification_enabled)
+
+                // Set the color.
+                insecureNetworkNotificationBuilder.setColor(getColor(R.color.yellow_notification_icon))
+
+                // Update the notification.
+                notificationManager.notify(NOTIFICATION_ID, insecureNetworkNotificationBuilder.build())
+
+                // Store the new network status.
+                currentStatus = INSECURE_NETWORK
+            }
+        } else {  // This is a secure network.
+            // Only update the notification if the network status has changed.
+            if (currentStatus != SECURE_NETWORK) {
+                // Create a secure network notification builder.
+                val secureNetworkNotificationBuilder = Notification.Builder(applicationContext, SECURE_NETWORK)
+
+                // Set the notification to open Privacy Cell.
+                secureNetworkNotificationBuilder.setContentIntent(privacyCellPendingIntent)
+
+                // Set the notification text.
+                secureNetworkNotificationBuilder.setContentText(getString(R.string.secure_network))
+
+                // Set the notification icon.
+                secureNetworkNotificationBuilder.setSmallIcon(R.drawable.secure_notification_enabled)
+
+                // Set the color.
+                secureNetworkNotificationBuilder.setColor(getColor(R.color.blue_icon))
+
+                // Update the notification.
+                notificationManager.notify(NOTIFICATION_ID, secureNetworkNotificationBuilder.build())
+
+                // Store the new network status.
+                currentStatus = SECURE_NETWORK
+            }
         }
     }
 }
\ No newline at end of file
index 7fe86d028b06ede04598f9bff6f24642cb06b851..6bb76add73692863138dcc4930427af3a1af7239 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
  *
@@ -46,11 +46,12 @@ class RegisterRealtimeListenerWorker(appContext: Context, workerParameters: Work
         val realtimeMonitoring = sharedPreferences.getBoolean(applicationContext.getString(R.string.realtime_monitoring_key), true)
 
         // Perform the functions according to the realtime monitoring status.
+        @Suppress("DEPRECATION")  // The deprecated `getRunningServices()` now only returns services started by Privacy Cell, but that is all we want to know anyway.
         if (realtimeMonitoring) {  // Realtime monitoring is enabled.
             // Get a handle for the activity manager.
             val activityManager: ActivityManager = applicationContext.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
 
-            // Get a list of the running service info.  The deprecated `getRunningServices()` now only returns services stared by Privacy Cell, but that is all we want to know anyway.
+            // Get a list of the running service info.  The deprecated `getRunningServices()` now only returns services started by Privacy Cell, but that is all we want to know anyway.
             val runningServiceInfoList: List<ActivityManager.RunningServiceInfo> = activityManager.getRunningServices(1)
 
             // Check to see if the service is currently running.
@@ -89,6 +90,9 @@ class RegisterRealtimeListenerWorker(appContext: Context, workerParameters: Work
                 applicationContext.bindService(Intent(applicationContext, RealtimeMonitoringService::class.java), serviceConnection, 0)
             }
         } else {  // Realtime monitoring is disabled.
+            // Stop the realtime monitoring service.
+            applicationContext.stopService(Intent(applicationContext, RealtimeMonitoringService::class.java))
+
             // Cancel the realtime listener work request.
             WorkManager.getInstance(applicationContext).cancelUniqueWork(applicationContext.getString(R.string.register_listener_work_request))
         }
index 64b4eca93811a434e1e2d55349b18b1b2af16805..720ca7a937353ac758216d94250cc559904be230 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
  *
@@ -22,14 +22,31 @@ package com.stoutner.privacycell.workers
 import android.content.Context
 import android.content.Intent
 
+import androidx.preference.PreferenceManager
+import androidx.work.WorkManager
 import androidx.work.Worker
 import androidx.work.WorkerParameters
+
+import com.stoutner.privacycell.R
 import com.stoutner.privacycell.services.RealtimeMonitoringService
 
 class RestartServiceWorker(appContext: Context, workerParameters: WorkerParameters) : Worker(appContext, workerParameters) {
     override fun doWork(): Result {
-        // Start the realtime monitoring service as a foreground service, which is required because the worker is running in the background.
-        applicationContext.startForegroundService(Intent(applicationContext, RealtimeMonitoringService::class.java))
+        // Get a handle for the shared preferences.
+        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(applicationContext)
+
+        // Check to see if realtime monitoring is enabled.  Sometimes the shared preferences can't return a value in time, because Android sucks.
+        // So, the default value is set to true, which is the safest value if the shared preferences can't be queried.
+        if (sharedPreferences.getBoolean(applicationContext.getString(R.string.realtime_monitoring_key), true)) {  // Realtime monitoring is enabled.
+            // Start the realtime monitoring service as a foreground service, which is required because the worker is running in the background.
+            applicationContext.startForegroundService(Intent(applicationContext, RealtimeMonitoringService::class.java))
+        } else {  // Realtime monitoring is disabled.
+            // Stop the realtime monitoring service.
+            applicationContext.stopService(Intent(applicationContext, RealtimeMonitoringService::class.java))
+
+            // Cancel the realtime listener work request.
+            WorkManager.getInstance(applicationContext).cancelUniqueWork(applicationContext.getString(R.string.register_listener_work_request))
+        }
 
         // Return a success.
         return Result.success()
index cdc285018434f5bff387ff7049772437e529b117..b4720dc3ee2006f86065f346e92bf3b856efc0d3 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -48,9 +48,9 @@
                     android:orientation="vertical"
                     android:padding="15dp" >
 
-                    <!-- Stingray. -->
+                    <!-- Overall status. -->
                     <LinearLayout
-                        android:id="@+id/stingray_linearlayout"
+                        android:id="@+id/overall_status_linearlayout"
                         android:layout_height="wrap_content"
                         android:layout_width="wrap_content"
                         android:layout_gravity="center_horizontal"
@@ -58,7 +58,7 @@
                         tools:ignore="UseCompoundDrawables" >
 
                         <ImageView
-                            android:id="@+id/stingray_imageview"
+                            android:id="@+id/overall_status_imageview"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
                             android:layout_gravity="center_horizontal"
@@ -67,7 +67,7 @@
                         <!-- The text color primary is only displayed if the read phone state permission is not granted.
                             The default text is replaced if the permission is not granted or the device is connected to a cell phone network. -->
                         <TextView
-                            android:id="@+id/summary_textview"
+                            android:id="@+id/overall_status_textview"
                             android:layout_height="wrap_content"
                             android:layout_width="wrap_content"
                             android:layout_gravity="center_horizontal"
@@ -94,7 +94,6 @@
                             android:layout_gravity="center_horizontal"
                             android:textAlignment="center"
                             android:layout_marginTop="30dp"
-                            android:textColor="@color/blue_text"
                             android:textSize="18sp"
                             android:textStyle="bold" />
 
                             android:layout_width="wrap_content"
                             android:layout_gravity="center_horizontal"
                             android:textAlignment="center"
-                            android:textColor="@color/blue_text"
                             android:textSize="18sp"
                             android:textStyle="bold" />
 
                             android:layout_width="wrap_content"
                             android:layout_gravity="center_horizontal"
                             android:textAlignment="center"
-                            android:textColor="@color/blue_text"
                             android:textSize="18sp"
                             android:textStyle="bold" />
 
index 356f084f126c4c036f441a637ef5ffb5ff170b04..b9d92b7e6093811b39e09a1a32019e0bba3bbabd 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -60,9 +60,9 @@
                     android:orientation="vertical"
                     android:padding="15dp" >
 
-                    <!-- Stingray. -->
+                    <!-- Overall status. -->
                     <LinearLayout
-                        android:id="@+id/stingray_linearlayout"
+                        android:id="@+id/overall_status_linearlayout"
                         android:layout_height="wrap_content"
                         android:layout_width="wrap_content"
                         android:layout_gravity="center_horizontal"
@@ -70,7 +70,7 @@
                         tools:ignore="UseCompoundDrawables" >
 
                         <ImageView
-                            android:id="@+id/stingray_imageview"
+                            android:id="@+id/overall_status_imageview"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
                             android:layout_gravity="center_horizontal"
@@ -79,7 +79,7 @@
                         <!-- The text color primary is only displayed if the read phone state permission is not granted.
                             The default text is replaced if the permission is not granted or the device is connected to a cell phone network. -->
                         <TextView
-                            android:id="@+id/summary_textview"
+                            android:id="@+id/overall_status_textview"
                             android:layout_height="wrap_content"
                             android:layout_width="wrap_content"
                             android:layout_gravity="center_horizontal"
                             android:layout_gravity="center_horizontal"
                             android:textAlignment="center"
                             android:layout_marginTop="30dp"
-                            android:textColor="@color/blue_text"
                             android:textSize="18sp"
                             android:textStyle="bold" />
 
                             android:layout_width="wrap_content"
                             android:layout_gravity="center_horizontal"
                             android:textAlignment="center"
-                            android:textColor="@color/blue_text"
                             android:textSize="18sp"
                             android:textStyle="bold" />
 
                             android:layout_width="wrap_content"
                             android:layout_gravity="center_horizontal"
                             android:textAlignment="center"
-                            android:textColor="@color/blue_text"
                             android:textSize="18sp"
                             android:textStyle="bold" />
 
index d585bb031261cb96077f84e7cd05ebe0dc37c20f..aeb1f4f070211b40f7b15cf1aa2d8fd00786d532 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <!--
-  Copyright © 2021 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2021-2022 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Cell <https://www.stoutner.com/privacy-cell>.
 
@@ -29,6 +29,6 @@
 
     <WebView
         android:id="@+id/webview"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content" />
+        android:layout_height="match_parent"
+        android:layout_width="match_parent" />
 </LinearLayout>
\ No newline at end of file
index e0b8ce1dca07348856f2c33972bb604c9904a96b..6451192c8f426a4dee7e1aeb55e46b15278f13c5 100644 (file)
@@ -32,6 +32,9 @@
     <!-- Text views.  The `\n\n` code inserts a line break and should be preserved in translations.
         Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
         The `%1$s` code inserts variables into the displayed text and should be preserved in translation. -->
+    <string name="secure_protocols">Ihr Gerät ist mit einem Netzwerk verbunden, das sichere Protokolle verwendet.\n\nEs ist vor Stingray-IMSI-Man-in-the-middle-Angriffen geschützt.</string>
+    <string name="insecure_protocols">Ihr Gerät ist mit einem Netzwerk verbunden, das unsichere Protokolle verwendet.\n\nEs ist nicht vor Stingray-IMSI-Man-in-the-middle-Angriffen geschützt.</string>
+    <string name="antiquated_protocols">Ihr Gerät ist mit einem Netzwerk verbunden, das veraltete Protokolle verwendet.\n\nEs ist dadurch für etliche Sicherheits-Schwachstellen anfällig.</string>
     <string name="voice_network">Sprach-Netzwerk: \u0020 %1$s</string>
     <string name="data_network">Daten-Netzwerk: \u0020 %1$s</string>
     <string name="additional_network_info">Zusätzliche Netzwerk-Information: \u0020 %1$s</string>
 
     <!-- Dialogs. -->
     <string name="stingrays">Stingrays</string>
+    <string name="antiquated_network_title">Veraltetes Netzwerk</string>
     <string name="close">Schließen</string>
 
     <!-- Settings. -->
     <string name="realtime_monitoring_summary">Plaziert ein Icon in der Statusleiste, das die Überwachung der Mobilfunk-Verbindung anzeigt.</string>
     <string name="secure_network_notification">Benachrichtigung über sicheres Netzwerk</string>
     <string name="insecure_network_notification">Benachrichtigung über unsicheres Netzwerk</string>
+    <string name="antiquated_network_notification">Benachrichtigung über veraltetes Netzwerk</string>
+    <string name="consider_3g_antiquated">3G als veraltet ansehen</string>
+    <string name="consider_3g_antiquated_summary">3G-Protokolle als veraltet ansehen. Zu einem späteren Zeitpunkt wird dies zur Standard-Einstellung werden.
+        Das Ändern dieser Einstellung startet Privacy Cell neu.</string>
     <string name="interface_title">Anschluss</string>
     <string name="bottom_app_bar">Anwendungs-Leiste unten</string>
     <string name="bottom_app_bar_summary">Zeigt die Anwendungs-Leiste am unteren Bildschirmrand an. Nach Ändern dieser Einstellung  wird Privacy Cell neu gestartet.</string>
     <!-- Notifications. -->
     <string name="secure">Sicher</string>
     <string name="insecure">Unsicher</string>
+    <string name="antiquated">Veraltet</string>
     <string name="secure_network">Sie sind mit einem sicheren Netzwerk verbunden.</string>
+    <string name="insecure_network">Sie sind mit einem unsicheren Netzwerk verbunden.</string>
+    <string name="antiquated_network">Sie sind mit einem veralteten Netzwerk verbunden.</string>
     <string name="unknown_network">Der Sicherheits-Status des Netzwerks ist unbekannt.</string>
     <string name="secure_network_channel">Sicheres Netzwerk</string>
     <string name="insecure_network_channel">Unsicheres Netzwerk</string>
+    <string name="antiquated_network_channel">Veraltetes Netzwerk</string>
     <string name="unknown_network_channel">Unbekanntes Netzwerk</string>
 </resources>
\ No newline at end of file
index fe387b11358d68dd0ff26a9e59b24e735a4586c4..ef40f915f36894351a483cceee75e9ce97f31c5f 100644 (file)
@@ -31,4 +31,5 @@
     <color name="red_notification_icon">@color/red_900</color>
     <color name="red_text">@color/salmon</color>
     <color name="yellow_notification_icon">@color/yellow_700</color>
+    <color name="yellow_text">@color/yellow_900</color>
 </resources>
\ No newline at end of file
index a26fc5cd5036c6ea56f08212f38000d2173fb254..b70bf7b2264933d9686734c7fc9d247cc5f73409 100644 (file)
@@ -31,6 +31,7 @@
     <color name="red_notification_icon">@color/red_700</color>
     <color name="red_text">@color/red_700</color>
     <color name="yellow_notification_icon">@color/yellow_700</color>
+    <color name="yellow_text">@color/yellow_900</color>
 
     <!-- Raw colors. -->
     <color name="amber_300">#FFFFD54F</color>
index 9c60970b2b7001c29967ea71e685f3c44609e353..7083cd3c68ab75a369493bd747b6174704711c1e 100644 (file)
@@ -25,8 +25,8 @@ buildscript {
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:7.1.2'
-        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
+        classpath 'com.android.tools.build:gradle:7.2.1'
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0"
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
diff --git a/fastlane/metadata/android/de-DE/changelogs/9.txt b/fastlane/metadata/android/de-DE/changelogs/9.txt
new file mode 100644 (file)
index 0000000..e142756
--- /dev/null
@@ -0,0 +1,4 @@
+• Der Sprach-Netzwerk-Status wird nun bei der Einschätzung der Gesamt-Sicherheit des Funknetzwerks berücksichtigt.
+• Fehler behoben, durch den gelegentlich Benachrichtigungen nicht abgeschaltet werden konnten.
+• Ziel-API auf 32 (Android 12L) angehoben.
+• Erste komplette deutsche Übersetzung von Bernhard G. Keller.
\ No newline at end of file
diff --git a/fastlane/metadata/android/de-DE/full_description.txt b/fastlane/metadata/android/de-DE/full_description.txt
new file mode 100644 (file)
index 0000000..131f7e7
--- /dev/null
@@ -0,0 +1,5 @@
+Privacy Cell ist eine kleine App, die Informationen zu den genutzten Mobilfunk-Protokollen anzeigt.
+
+Zur Zeit wechseln viele Mobilfunk-Netzwerke von 4G (4. Generation) zu 5G-Protokollen. Die 5G-Netzwerk-Protokolle wurden mit besonderem Fokus auf bekannte Sicherheitslücken in älteren Protokollen entwickelt, zu denen Man-In-The-Middle-Attacken in Mobilfunknetzen mittels Stingrays (IMSI-Catchern) zählen. Um die Entwicklung und Rückwärtskompatibilität zu erleichtern, können 4G- und 5G-Netzwerke kombiniert verwendet werden. Dies wird als 5G NR (New Radio) NSA (Non-Standalone) -Modus bezeichnet. Dabei wird 4G für den Kontrollkanal und 5G für die Datenkommunikation genutzt. Allerdings schützt 5G NR NSA nicht gegen Stingray-Angriffe. Android hat grundsätzlich Zugriff auf alle notwendigen Informationen, wenn es mit einem 5G NR NSA oder 5G NR SA (Standalone) Netzwerk verbunden ist, zeigt diese Informationen jedoch dem Benutzer nicht an. Der Zweck von Privacy Cell ist, diese Informationen einfach verfügbar zu machen.
+
+Privacy Cell kann auch warnen, wenn Sie mit veralteten 2G- and 3G-Netzwerken verbunden sind.
\ No newline at end of file
diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/01-SecureNetwork-de.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/01-SecureNetwork-de.png
new file mode 100644 (file)
index 0000000..6f37f88
Binary files /dev/null and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/01-SecureNetwork-de.png differ
diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/02-InsecureNetwork-de.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/02-InsecureNetwork-de.png
new file mode 100644 (file)
index 0000000..4dbadf1
Binary files /dev/null and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/02-InsecureNetwork-de.png differ
diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/03-AntiquatedNetwork-de.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/03-AntiquatedNetwork-de.png
new file mode 100644 (file)
index 0000000..479dec6
Binary files /dev/null and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/03-AntiquatedNetwork-de.png differ
diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/04-NavigationMenu-de.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/04-NavigationMenu-de.png
new file mode 100644 (file)
index 0000000..051ab20
Binary files /dev/null and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/04-NavigationMenu-de.png differ
diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/05-DarkTheme-de.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/05-DarkTheme-de.png
new file mode 100644 (file)
index 0000000..d1794d9
Binary files /dev/null and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/05-DarkTheme-de.png differ
diff --git a/fastlane/metadata/android/de-DE/short_description.txt b/fastlane/metadata/android/de-DE/short_description.txt
new file mode 100644 (file)
index 0000000..152dbd2
--- /dev/null
@@ -0,0 +1 @@
+Überprüfen Sie, ob Ihr Mobiltelefon die sichersten Mobilfunk-Protokolle nutzt.
\ No newline at end of file
diff --git a/fastlane/metadata/android/de-DE/title.txt b/fastlane/metadata/android/de-DE/title.txt
new file mode 100644 (file)
index 0000000..627c302
--- /dev/null
@@ -0,0 +1 @@
+Privacy Cell
\ No newline at end of file
diff --git a/fastlane/metadata/android/en-US/changelogs/9.txt b/fastlane/metadata/android/en-US/changelogs/9.txt
new file mode 100644 (file)
index 0000000..cd01dae
--- /dev/null
@@ -0,0 +1,4 @@
+• Include the voice network status in determining the overall security of the cell network.
+• Fix a bug that sometimes prevented notifications from being disabled.
+• Bump the target API to 32 (Android 12L).
+• First full German translation contributed by Bernhard G. Keller.
\ No newline at end of file
index be0e9844267b04a4e6d3bde8e9af44450e0c5506..c0a77a5e30b0f2f4538252a5ef646a041a13cfe4 100644 (file)
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/02-InsecureNetwork-en.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/02-InsecureNetwork-en.png differ
index baedf03513bdde4898e5bc827738dd28008333ae..1c16b808cb835c42889de1645f0f6b8e8fa61eff 100644 (file)
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/03-AntiquatedNetwork-en.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/03-AntiquatedNetwork-en.png differ
index 6a506b64aa8e24012b2599c619fe4bfdb7fc9192..315d6f1499ebc433c3a04af7e537e419464d9466 100644 (file)
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/04-NavigationMenu-en.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/04-NavigationMenu-en.png differ
index 01c1511963377196e14514171bf64c86f3adcf52..52399c6a3f4553f9f5f5eca44fb9581c1bf26061 100644 (file)
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/05-DarkTheme-en.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/05-DarkTheme-en.png differ
diff --git a/fastlane/metadata/android/es-ES/changelogs/9.txt b/fastlane/metadata/android/es-ES/changelogs/9.txt
new file mode 100644 (file)
index 0000000..112330c
--- /dev/null
@@ -0,0 +1,5 @@
+• Incluir el estado de la red de voz para determinar la seguridad general de la red celular.
+• Corregir un error que a veces impedía desactivar las notificaciones.
+• Aumentar la API de destino a 32 (Android 12L).
+• Primera traducción completa al alemán aportada por Bernhard G. Keller.
+• Traducción actualizada al español aportada por Jose A. León.
\ No newline at end of file
index ed87224606827eb011083de5ebe140bf9ced3a9b..873768e4005d33947a55f067a3a09bfd0cc672d1 100644 (file)
Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/02-InsecureNetwork-es.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/02-InsecureNetwork-es.png differ
diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/03-AntiquatedNetework-es.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/03-AntiquatedNetework-es.png
deleted file mode 100644 (file)
index 3e8872d..0000000
Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/03-AntiquatedNetework-es.png and /dev/null differ
diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/03-AntiquatedNetwork-es.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/03-AntiquatedNetwork-es.png
new file mode 100644 (file)
index 0000000..b625d03
Binary files /dev/null and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/03-AntiquatedNetwork-es.png differ
index ca3306a831953e6dbba5bde7f6e48be5f4f372c6..08a2709cc94c3d80a8aaa5a3d576543f05964e88 100644 (file)
Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/04-NavigationMenu-es.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/04-NavigationMenu-es.png differ
index cb1d81d455427c538a108270a6f5c201a7ace7e8..b6caebf772b2ffe82fea7feac758d31e0172f1c3 100644 (file)
Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/05-DarkTheme-es.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/05-DarkTheme-es.png differ
diff --git a/fastlane/metadata/android/fr-FR/changelogs/8.txt b/fastlane/metadata/android/fr-FR/changelogs/8.txt
new file mode 100644 (file)
index 0000000..6291d53
--- /dev/null
@@ -0,0 +1,3 @@
+• Ajout d'un ajout d'un avertissement lors de la connexion à des réseaux anciens et peu sûrs.
+• Ajout d'une entrée listant l'ensemble des protocoles.
+• Mise à jour de la traduction française par Kévin L.
\ No newline at end of file
index 932b37479f1418a418549ce6071c2047303735e4..88de5fd97d15b1babe380a0f0aae8028c0df1914 100644 (file)
Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/02-InsecureNetwork-fr.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/02-InsecureNetwork-fr.png differ
index 9b89098ba96cb8fe2c93b0814f9755b01ef4e971..d689f0b785f3a6b426aa1bb146a66cfa1100ec68 100644 (file)
Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/03-AntiquatedNetwork-fr.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/03-AntiquatedNetwork-fr.png differ
index dd4708534bf797ba3274212f8d825642ee0b8a8c..ccddd0949cf7501d0ff8eac35467d1f61a31e948 100644 (file)
Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/04-NavigationMenu-fr.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/04-NavigationMenu-fr.png differ
index 07d8f655a1ca1f8bc62e8a261674652bb8ecefa8..1fba4a09c763e0eba2e3454b6499ec6f970a496f 100644 (file)
Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/05-DarkTheme-fr.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/05-DarkTheme-fr.png differ
diff --git a/fastlane/metadata/android/it-IT/changelogs/9.txt b/fastlane/metadata/android/it-IT/changelogs/9.txt
new file mode 100644 (file)
index 0000000..310c25a
--- /dev/null
@@ -0,0 +1,5 @@
+• Incluso lo stato della rete voce nella determinazione della sicurezza complessiva della rete.
+• Correzione di un baco che talvolta impediva di disabilitare le notifiche.
+• Spostamento della target API a 32 (Android 12L).
+• Prima traduzione completa in lingua tedesca fornita da Bernhard G. Keller.
+• Aggiornamento della traduzione in lingua Italiana fornito da Francesco Buratti.
\ No newline at end of file
index 94c9ec96c519aea8224309a0a58692d338bbec25..3369fb40e23518ef25b205118e133838af548884 100644 (file)
Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/02-InsecureNetwork-it.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/02-InsecureNetwork-it.png differ
index b1944ba4a4bf04385b81a45b7bd8389ae4254ed3..eb20508e04c5f3d07b6fbf1ae595681ef291d5fb 100644 (file)
Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/03-AntiquatedNetwork-it.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/03-AntiquatedNetwork-it.png differ
index e1b36346810a0e5bdd5e7213d5dfba1d7d5e582e..223d1e4cb33c30789ea47db0ed924eb1e294c20e 100644 (file)
Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/04-NavigationMenu-it.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/04-NavigationMenu-it.png differ
index a59245e1c35bc393d44f4dcda1106c12e749cf39..3687ee37857dee10725bbd209e185b3254de870e 100644 (file)
Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/05-DarkTheme-it.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/05-DarkTheme-it.png differ
diff --git a/fastlane/metadata/android/ru-RU/changelogs/9.txt b/fastlane/metadata/android/ru-RU/changelogs/9.txt
new file mode 100644 (file)
index 0000000..771add0
--- /dev/null
@@ -0,0 +1,5 @@
+• Теперь при определении общей безопасности сотовой сети будет учитываться статус голосовой сети.
+• Исправлена ошибка, из-за которой иногда не удавалось отключить уведомления.
+• Повышен целевой API до 32 (Android 12L).
+• Первый полный перевод на немецкий язык, выполненный Бернхардом Г. Келлером (Bernhard G. Keller).
+• Первый полный перевод на русский язык.
\ No newline at end of file
index a18bfe279b3febe51315b605880ac49fdd5ec436..492f7f184272a9e79dbe815b27d53ded2ba5c84b 100644 (file)
Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/02-InsecureNetwork-ru.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/02-InsecureNetwork-ru.png differ
index 300c6fea55a6dccd05ec7078adde9bbe835e6147..02739c29491a6abccd937d49bcc96c97c22571d3 100644 (file)
Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/03-AntiquatedNetwork-ru.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/03-AntiquatedNetwork-ru.png differ
index 28e4f9d8d937a69481210230dbefeaf457cd87ae..1582fb639d98f1c4c3e0d83acc2260b40967af6e 100644 (file)
Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/04-NavigationMenu-ru.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/04-NavigationMenu-ru.png differ
index 78733418fcfd1dacb08c8719b2e5d0cd5503beb0..7eaa38d2f617ed40db120f8c48788d05970b5f7e 100644 (file)
Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/05-DarkTheme-ru.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/05-DarkTheme-ru.png differ
index 7d897f9222026aa4b3bdb80c397c341d1c2d2242..6f4d99208b8e21d06da0e9f4c25276a023cda0dc 100644 (file)
@@ -1,6 +1,6 @@
 #Thu Aug 12 09:15:13 MST 2021
 distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
 distributionPath=wrapper/dists
 zipStorePath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME