Merge Android 12

Bug: 202323961
Merged-In: I45a3fa76d6f66181705a1faf599e7f9839750a38
Change-Id: I040042428a96a6551bad2136e3b29b59c3014907
diff --git a/OWNERS b/OWNERS
index dd01ed3..583ac1f 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1 +1 @@
-include platform/packages/modules/Wifi:/OWNERS
+include platform/packages/modules/Wifi:/WIFI_OWNERS
diff --git a/libs/WifiTrackerLib/Android.bp b/libs/WifiTrackerLib/Android.bp
index eea4952..4442d01 100644
--- a/libs/WifiTrackerLib/Android.bp
+++ b/libs/WifiTrackerLib/Android.bp
@@ -10,5 +10,11 @@
         "SettingsLibHelpUtils",
     ],
 
+    // TODO(b/187099809): Re-enable lint check once the min_sdk_version is updated
+    lint: {
+        enabled: false,
+    },
+
+    // TODO(b/187099809): Update this once we remove SettingsLib's dependency on WifiTrackerLib
     min_sdk_version: "21",
 }
diff --git a/libs/WifiTrackerLib/TEST_MAPPING b/libs/WifiTrackerLib/TEST_MAPPING
new file mode 100644
index 0000000..35e3f95
--- /dev/null
+++ b/libs/WifiTrackerLib/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "WifiTrackerLibTests"
+    }
+  ]
+}
diff --git a/libs/WifiTrackerLib/lint-baseline.xml b/libs/WifiTrackerLib/lint-baseline.xml
index 1d4353d..ecc4bc6 100644
--- a/libs/WifiTrackerLib/lint-baseline.xml
+++ b/libs/WifiTrackerLib/lint-baseline.xml
@@ -8,18 +8,40 @@
         errorLine2="             ~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java"
-            line="146"
+            line="148"
             column="14"/>
     </issue>
 
     <issue
         id="NewApi"
+        message="Call requires API level 29 (current min is 21): `android.net.NetworkCapabilities#getTransportInfo`"
+        errorLine1="        final TransportInfo transportInfo = networkCapabilities.getTransportInfo();"
+        errorLine2="                                                                ~~~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java"
+            line="220"
+            column="65"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Cast from `TransportInfo` to `WifiInfo` requires API level 29 (current min is 21)"
+        errorLine1="        return ((WifiInfo) transportInfo).isPrimary();"
+        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java"
+            line="224"
+            column="17"/>
+    </issue>
+
+    <issue
+        id="NewApi"
         message="Call requires API level 26 (current min is 21): `android.net.ConnectivityManager#registerNetworkCallback`"
         errorLine1="        mConnectivityManager.registerNetworkCallback(mNetworkRequest, mNetworkCallback,"
         errorLine2="                             ~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java"
-            line="267"
+            line="291"
             column="30"/>
     </issue>
 
@@ -30,7 +52,7 @@
         errorLine2="                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java"
-            line="269"
+            line="293"
             column="30"/>
     </issue>
 
@@ -41,18 +63,29 @@
         errorLine2="                                                             ~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java"
-            line="272"
+            line="296"
             column="62"/>
     </issue>
 
     <issue
         id="NewApi"
+        message="Call requires API level 31 (current min is 21): `android.net.wifi.WifiInfo#getSubscriptionId`"
+        errorLine1="        return wifiInfo.isCarrierMerged() &amp;&amp; mSubscriptionId == wifiInfo.getSubscriptionId();"
+        errorLine2="                                                                         ~~~~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/MergedCarrierEntry.java"
+            line="132"
+            column="74"/>
+    </issue>
+
+    <issue
+        id="NewApi"
         message="Call requires API level 28 (current min is 21): `android.content.Context#getMainExecutor`"
         errorLine1="        mWifiManager.startSubscriptionProvisioning(mOsuProvider, mContext.getMainExecutor(),"
         errorLine2="                                                                          ~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/OsuWifiEntry.java"
-            line="170"
+            line="141"
             column="75"/>
     </issue>
 
@@ -63,7 +96,7 @@
         errorLine2="                                      ~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/OsuWifiEntry.java"
-            line="285"
+            line="159"
             column="39"/>
     </issue>
 
@@ -74,7 +107,7 @@
         errorLine2="                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/OsuWifiEntry.java"
-            line="305"
+            line="179"
             column="26"/>
     </issue>
 
@@ -85,7 +118,7 @@
         errorLine2="                                              ~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/OsuWifiEntry.java"
-            line="385"
+            line="261"
             column="47"/>
     </issue>
 
@@ -96,7 +129,7 @@
         errorLine2="                                            ~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/OsuWifiEntry.java"
-            line="389"
+            line="265"
             column="45"/>
     </issue>
 
@@ -195,7 +228,7 @@
         errorLine2="                                                               ~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="110"
+            line="113"
             column="64"/>
     </issue>
 
@@ -206,7 +239,7 @@
         errorLine2="                                ~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="111"
+            line="114"
             column="33"/>
     </issue>
 
@@ -217,7 +250,7 @@
         errorLine2="                                            ~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="111"
+            line="114"
             column="45"/>
     </issue>
 
@@ -228,7 +261,7 @@
         errorLine2="                                        ~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="112"
+            line="115"
             column="41"/>
     </issue>
 
@@ -239,7 +272,7 @@
         errorLine2="                                                    ~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="112"
+            line="115"
             column="53"/>
     </issue>
 
@@ -250,7 +283,7 @@
         errorLine2="                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="114"
+            line="117"
             column="33"/>
     </issue>
 
@@ -261,7 +294,7 @@
         errorLine2="                        ~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="131"
+            line="134"
             column="25"/>
     </issue>
 
@@ -272,7 +305,7 @@
         errorLine2="                                                          ~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="137"
+            line="140"
             column="59"/>
     </issue>
 
@@ -283,7 +316,7 @@
         errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="139"
+            line="142"
             column="25"/>
     </issue>
 
@@ -294,7 +327,7 @@
         errorLine2="                           ~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="300"
+            line="302"
             column="28"/>
     </issue>
 
@@ -305,7 +338,7 @@
         errorLine2="                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="390"
+            line="385"
             column="22"/>
     </issue>
 
@@ -316,7 +349,7 @@
         errorLine2="                                                                   ~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="390"
+            line="385"
             column="68"/>
     </issue>
 
@@ -327,7 +360,7 @@
         errorLine2="                                                                               ~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="390"
+            line="385"
             column="80"/>
     </issue>
 
@@ -338,7 +371,7 @@
         errorLine2="                                                                  ~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="450"
+            line="425"
             column="67"/>
     </issue>
 
@@ -349,7 +382,7 @@
         errorLine2="                                                                              ~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="450"
+            line="425"
             column="79"/>
     </issue>
 
@@ -360,7 +393,7 @@
         errorLine2="                                 ~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="477"
+            line="452"
             column="34"/>
     </issue>
 
@@ -371,7 +404,7 @@
         errorLine2="                                             ~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="477"
+            line="452"
             column="46"/>
     </issue>
 
@@ -382,7 +415,7 @@
         errorLine2="                                                                 ~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="501"
+            line="476"
             column="66"/>
     </issue>
 
@@ -393,7 +426,7 @@
         errorLine2="                                                                             ~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="501"
+            line="476"
             column="78"/>
     </issue>
 
@@ -404,7 +437,7 @@
         errorLine2="                                            ~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="527"
+            line="502"
             column="45"/>
     </issue>
 
@@ -415,7 +448,7 @@
         errorLine2="                                                        ~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="527"
+            line="502"
             column="57"/>
     </issue>
 
@@ -426,7 +459,7 @@
         errorLine2="                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="529"
+            line="504"
             column="37"/>
     </issue>
 
@@ -437,7 +470,7 @@
         errorLine2="                                       ~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="568"
+            line="543"
             column="40"/>
     </issue>
 
@@ -448,7 +481,7 @@
         errorLine2="                                         ~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java"
-            line="606"
+            line="581"
             column="42"/>
     </issue>
 
@@ -459,29 +492,18 @@
         errorLine2="                                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java"
-            line="129"
+            line="128"
             column="54"/>
     </issue>
 
     <issue
         id="NewApi"
-        message="Call requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#isPasspoint`"
-        errorLine1="        if (config != null &amp;&amp; !config.isPasspoint()) {"
-        errorLine2="                                      ~~~~~~~~~~~">
-        <location
-            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java"
-            line="160"
-            column="39"/>
-    </issue>
-
-    <issue
-        id="NewApi"
         message="Call requires API level 26 (current min is 21): `android.net.wifi.WifiManager#getPasspointConfigurations`"
         errorLine1="        updatePasspointWifiEntryConfigs(mWifiManager.getPasspointConfigurations());"
         errorLine2="                                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java"
-            line="166"
+            line="157"
             column="54"/>
     </issue>
 
@@ -492,7 +514,7 @@
         errorLine2="                             ~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java"
-            line="216"
+            line="207"
             column="30"/>
     </issue>
 
@@ -503,7 +525,7 @@
         errorLine2="                             ~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java"
-            line="217"
+            line="208"
             column="30"/>
     </issue>
 
@@ -514,7 +536,7 @@
         errorLine2="                             ~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java"
-            line="218"
+            line="209"
             column="30"/>
     </issue>
 
@@ -525,7 +547,7 @@
         errorLine2="                                           ~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java"
-            line="221"
+            line="212"
             column="44"/>
     </issue>
 
@@ -536,7 +558,7 @@
         errorLine2="                                                                          ~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java"
-            line="237"
+            line="228"
             column="75"/>
     </issue>
 
@@ -547,7 +569,7 @@
         errorLine2="                                                                           ~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java"
-            line="351"
+            line="308"
             column="76"/>
     </issue>
 
@@ -558,7 +580,7 @@
         errorLine2="                   ~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardNetworkDetailsTracker.java"
-            line="189"
+            line="176"
             column="20"/>
     </issue>
 
@@ -569,7 +591,7 @@
         errorLine2="                           ~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java"
-            line="334"
+            line="337"
             column="28"/>
     </issue>
 
@@ -580,7 +602,7 @@
         errorLine2="                                              ~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java"
-            line="381"
+            line="379"
             column="47"/>
     </issue>
 
@@ -591,7 +613,7 @@
         errorLine2="                                                               ~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java"
-            line="384"
+            line="382"
             column="64"/>
     </issue>
 
@@ -602,7 +624,7 @@
         errorLine2="                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java"
-            line="386"
+            line="384"
             column="22"/>
     </issue>
 
@@ -613,7 +635,7 @@
         errorLine2="                                     ~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java"
-            line="395"
+            line="393"
             column="38"/>
     </issue>
 
@@ -624,7 +646,7 @@
         errorLine2="                          ~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java"
-            line="524"
+            line="531"
             column="27"/>
     </issue>
 
@@ -635,7 +657,7 @@
         errorLine2="                                   ~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java"
-            line="726"
+            line="737"
             column="36"/>
     </issue>
 
@@ -646,7 +668,7 @@
         errorLine2="                    ~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java"
-            line="908"
+            line="920"
             column="21"/>
     </issue>
 
@@ -657,7 +679,7 @@
         errorLine2="                                           ~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="89"
+            line="92"
             column="44"/>
     </issue>
 
@@ -668,7 +690,7 @@
         errorLine2="                 ~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="593"
+            line="628"
             column="18"/>
     </issue>
 
@@ -679,7 +701,7 @@
         errorLine2="                                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="596"
+            line="631"
             column="66"/>
     </issue>
 
@@ -690,7 +712,7 @@
         errorLine2="                                       ~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="601"
+            line="636"
             column="40"/>
     </issue>
 
@@ -701,7 +723,7 @@
         errorLine2="                                                        ~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="614"
+            line="649"
             column="57"/>
     </issue>
 
@@ -712,7 +734,7 @@
         errorLine2="                                        ~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="618"
+            line="653"
             column="41"/>
     </issue>
 
@@ -723,7 +745,7 @@
         errorLine2="                                           ~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="627"
+            line="662"
             column="44"/>
     </issue>
 
@@ -734,7 +756,7 @@
         errorLine2="                 ~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="638"
+            line="673"
             column="18"/>
     </issue>
 
@@ -745,7 +767,7 @@
         errorLine2="                                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="643"
+            line="678"
             column="66"/>
     </issue>
 
@@ -756,7 +778,7 @@
         errorLine2="                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="649"
+            line="684"
             column="45"/>
     </issue>
 
@@ -767,7 +789,7 @@
         errorLine2="                        ~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="651"
+            line="686"
             column="25"/>
     </issue>
 
@@ -778,7 +800,7 @@
         errorLine2="                                     ~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="652"
+            line="687"
             column="38"/>
     </issue>
 
@@ -789,7 +811,7 @@
         errorLine2="                 ~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="667"
+            line="702"
             column="18"/>
     </issue>
 
@@ -800,7 +822,7 @@
         errorLine2="                                                        ~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="671"
+            line="706"
             column="57"/>
     </issue>
 
@@ -811,7 +833,7 @@
         errorLine2="                                        ~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java"
-            line="687"
+            line="722"
             column="41"/>
     </issue>
 
@@ -822,18 +844,29 @@
         errorLine2="                                      ~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java"
-            line="633"
+            line="760"
             column="39"/>
     </issue>
 
     <issue
         id="NewApi"
+        message="Call requires API level R (current min is 21): `android.net.wifi.WifiInfo#getWifiStandard`"
+        errorLine1="                mConnectedInfo.wifiStandard = wifiInfo.getWifiStandard();"
+        errorLine2="                                                       ~~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java"
+            line="779"
+            column="56"/>
+    </issue>
+
+    <issue
+        id="NewApi"
         message="Call requires API level 29 (current min is 21): `android.net.RouteInfo#hasGateway`"
         errorLine1="                    instanceof Inet4Address &amp;&amp; routeInfo.hasGateway()) {"
         errorLine2="                                                         ~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java"
-            line="707"
+            line="835"
             column="58"/>
     </issue>
 
@@ -844,7 +877,7 @@
         errorLine2="                                             ~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java"
-            line="751"
+            line="879"
             column="46"/>
     </issue>
 
@@ -855,19 +888,41 @@
         errorLine2="                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="191"
+            line="212"
             column="52"/>
     </issue>
 
     <issue
         id="NewApi"
-        message="Call requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#isPasspoint`"
-        errorLine1="        if (config != null &amp;&amp; !config.isPasspoint()) {"
-        errorLine2="                                      ~~~~~~~~~~~">
+        message="Call requires API level 31 (current min is 21): `android.telephony.TelephonyManager#registerTelephonyCallback`"
+        errorLine1="        mTelephonyManager.registerTelephonyCallback("
+        errorLine2="                          ~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="232"
-            column="39"/>
+            line="222"
+            column="27"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level R (current min is 21): `android.telephony.SubscriptionManager#getActiveDataSubscriptionId`"
+        errorLine1="        updateMergedCarrierEntry(SubscriptionManager.getActiveDataSubscriptionId());"
+        errorLine2="                                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
+            line="224"
+            column="54"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 31 (current min is 21): `android.telephony.TelephonyManager#unregisterTelephonyCallback`"
+        errorLine1="            mTelephonyManager.unregisterTelephonyCallback(mActiveDataSubIdListener);"
+        errorLine2="                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
+            line="238"
+            column="31"/>
     </issue>
 
     <issue
@@ -877,7 +932,7 @@
         errorLine2="                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="238"
+            line="270"
             column="52"/>
     </issue>
 
@@ -888,7 +943,7 @@
         errorLine2="                             ~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="391"
+            line="470"
             column="30"/>
     </issue>
 
@@ -899,7 +954,7 @@
         errorLine2="                             ~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="392"
+            line="471"
             column="30"/>
     </issue>
 
@@ -910,7 +965,7 @@
         errorLine2="                             ~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="393"
+            line="472"
             column="30"/>
     </issue>
 
@@ -921,7 +976,7 @@
         errorLine2="                             ~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="432"
+            line="511"
             column="30"/>
     </issue>
 
@@ -932,7 +987,7 @@
         errorLine2="                             ~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="433"
+            line="512"
             column="30"/>
     </issue>
 
@@ -943,7 +998,7 @@
         errorLine2="                             ~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="434"
+            line="513"
             column="30"/>
     </issue>
 
@@ -954,7 +1009,7 @@
         errorLine2="                                                                          ~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="483"
+            line="562"
             column="75"/>
     </issue>
 
@@ -965,7 +1020,7 @@
         errorLine2="                                    ~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="536"
+            line="615"
             column="37"/>
     </issue>
 
@@ -976,30 +1031,19 @@
         errorLine2="                                                                      ~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="545"
+            line="624"
             column="71"/>
     </issue>
 
     <issue
         id="NewApi"
         message="Call requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#isPasspoint`"
-        errorLine1="                            !cachedConfig.isEphemeral() &amp;&amp; !cachedConfig.isPasspoint()).count();"
-        errorLine2="                                                                         ~~~~~~~~~~~">
+        errorLine1="            if (config.isPasspoint()) {"
+        errorLine2="                       ~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="650"
-            column="74"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#isPasspoint`"
-        errorLine1="                    !cachedConfig.isEphemeral() &amp;&amp; !cachedConfig.isPasspoint()).count();"
-        errorLine2="                                                                 ~~~~~~~~~~~">
-        <location
-            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="685"
-            column="66"/>
+            line="704"
+            column="24"/>
     </issue>
 
     <issue
@@ -1009,7 +1053,7 @@
         errorLine2="                                           ~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="688"
+            line="722"
             column="44"/>
     </issue>
 
@@ -1020,63 +1064,85 @@
         errorLine2="                                         ~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="692"
+            line="726"
             column="42"/>
     </issue>
 
     <issue
         id="NewApi"
-        message="Call requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#isPasspoint`"
-        errorLine1="            if (config != null &amp;&amp; !config.isPasspoint()) {"
-        errorLine2="                                          ~~~~~~~~~~~">
-        <location
-            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="703"
-            column="43"/>
-    </issue>
-
-    <issue
-        id="NewApi"
         message="Call requires API level R (current min is 21): `android.net.wifi.hotspot2.PasspointConfiguration#getUniqueId`"
         errorLine1="                        config.getUniqueId()), Function.identity())));"
         errorLine2="                               ~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="734"
-            column="32"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#isPasspoint`"
-        errorLine1="                    wifiConfig.isPasspoint() &amp;&amp; wifiConfig.networkId == connectedNetId"
-        errorLine2="                               ~~~~~~~~~~~">
-        <location
-            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="849"
+            line="768"
             column="32"/>
     </issue>
 
     <issue
         id="NewApi"
         message="Call requires API level R (current min is 21): `android.net.wifi.WifiConfiguration#getKey`"
-        errorLine1="                                uniqueIdToPasspointWifiEntryKey(wifiConfig.getKey())))"
-        errorLine2="                                                                           ~~~~~~">
+        errorLine1="                uniqueIdToPasspointWifiEntryKey(cachedWifiConfig.getKey()));"
+        errorLine2="                                                                 ~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="851"
-            column="76"/>
+            line="888"
+            column="66"/>
     </issue>
 
     <issue
         id="NewApi"
-        message="Call requires API level R (current min is 21): `android.net.wifi.WifiConfiguration#getKey`"
-        errorLine1="                            uniqueIdToPasspointWifiEntryKey(wifiConfig.getKey()));"
-        errorLine2="                                                                       ~~~~~~">
+        message="Class requires API level 31 (current min is 21): `android.telephony.TelephonyCallback`"
+        errorLine1="            /* package */ class ActiveDataSubIdListener extends TelephonyCallback implements"
+        errorLine2="                                                                ~~~~~~~~~~~~~~~~~">
         <location
             file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
-            line="854"
-            column="72"/>
+            line="969"
+            column="65"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Class requires API level 31 (current min is 21): `android.telephony.TelephonyCallback.ActiveDataSubscriptionIdListener`"
+        errorLine1="            TelephonyCallback.ActiveDataSubscriptionIdListener {"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
+            line="970"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 31 (current min is 21): `new android.telephony.TelephonyCallback`"
+        errorLine1="            super();"
+        errorLine2="            ~~~~~">
+        <location
+            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
+            line="972"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 24 (current min is 21): android.telephony.SubscriptionManager#getDefaultDataSubscriptionId [NewApi]"
+        errorLine1="    handleDefaultSubscriptionChanged(SubscriptionManager.getDefaultDataSubscriptionId());"
+        errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java"
+            line="212"
+            column="62"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 31 (current min is 21): android.net.wifi.WifiManager#isCarrierNetworkOffloadEnabled [NewApi]"
+        errorLine1="        return mWifiManager.isCarrierNetworkOffloadEnabled(mSubscriptionId, true);"
+        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/MergedCarrierEntry.java"
+            line="142"
+            column="29"/>
     </issue>
 
 </issues>
diff --git a/libs/WifiTrackerLib/res/values-af/arrays.xml b/libs/WifiTrackerLib/res/values-af/arrays.xml
index 877ecb0..d7f1d51 100644
--- a/libs/WifiTrackerLib/res/values-af/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-af/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Soek tans …"</item>
-    <item msgid="6222852518007967736">"Koppel tans …"</item>
-    <item msgid="1176401854208153464">"Staaf tans …"</item>
-    <item msgid="1377026397901197257">"Verkry tans IP-adres …"</item>
-    <item msgid="7627139816052121509">"Gekoppel"</item>
-    <item msgid="1598801023719359130">"Opgeskort"</item>
-    <item msgid="9160765456671002324">"Ontkoppel tans …"</item>
-    <item msgid="8013176736494493734">"Ontkoppel"</item>
-    <item msgid="4077393480368783785">"Onsuksesvol"</item>
-    <item msgid="605372180740008604">"Geblokkeer"</item>
-    <item msgid="5102306451432929048">"Vermy tydelik swak verbinding"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Soek tans …"</item>
+    <item msgid="9055468790485684083">"Koppel tans …"</item>
+    <item msgid="6099499723199990208">"Staaf tans …"</item>
+    <item msgid="6794055951297347103">"Verkry tans IP-adres …"</item>
+    <item msgid="5450920562291300229">"Gekoppel"</item>
+    <item msgid="6332116533879646145">"Opgeskort"</item>
+    <item msgid="294459081501073818">"Ontkoppel tans …"</item>
+    <item msgid="1577368920272598676">"Ontkoppel"</item>
+    <item msgid="7655843177582495451">"Onsuksesvol"</item>
+    <item msgid="8953752690917593623">"Geblokkeer"</item>
+    <item msgid="4400457817750243671">"Vermy swak verbinding tydelik"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-af/strings.xml b/libs/WifiTrackerLib/res/values-af/strings.xml
index dca16b5..275c36b 100644
--- a/libs/WifiTrackerLib/res/values-af/strings.xml
+++ b/libs/WifiTrackerLib/res/values-af/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Outomatiese koppeling is af"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Gestoor deur <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Sal nie outomaties koppel nie"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Geen internettoegang nie"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Stawingsprobleem"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Gaan wagwoord na en probeer weer"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP-opstelling het misluk"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Gedeaktiveer"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Toegangspunt is tydelik vol"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Ontkoppel"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Gestoor"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Beperk"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Onbeperk"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Gekoppel via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Beskikbaar deur <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Outomaties gekoppel deur <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Outomaties deur netwerkgraderingverskaffer gekoppel"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Beperkte verbinding"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Daar kan nie by private DNS-bediener ingegaan word nie"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Geen internet nie"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Outomatiese koppeling is af"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Gestoor deur <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Sal nie outomaties koppel nie"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Geen internettoegang nie"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Stawingsprobleem"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Gaan wagwoord na en probeer weer"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP-opstelling het misluk"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Gedeaktiveer"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Toegangspunt is tydelik vol"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Tydelike swak netwerktoestande"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Swak sein. Probeer nader aan die roeteerder beweeg."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Netwerk is oor kapasiteit. Probeer later weer."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Kan nie koppel nie. Probeer later weer."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Netwerk is nie met hierdie toestel versoenbaar nie"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Ontkoppel"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Gestoor"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Beperk"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Onbeperk"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Gekoppel deur <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Beskikbaar deur <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Outomaties gekoppel deur <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Outomaties deur netwerkgraderingverskaffer gekoppel"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Beperkte verbinding"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Kan nie toegang tot private DNS-bediener kry nie"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Gekoppel aan toestel. Kan nie internet verskaf nie."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Lae gehalte"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Geen"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Verval"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Tik om aan te meld"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Tik om intekening te hernu en te koppel"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Maak tans <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> oop"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Kon nie koppel nie"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Voltooi tans aanmelding …"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Kon nie aanmelding voltooi nie. Tik om weer te probeer."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Aanmelding is voltooi. Koppel tans …"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Hierdie netwerk ontvang \'n unieke ID wat gebruik kan word om toestelligging na te spoor. "<annotation id="url">"Kom meer te wete"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Baie stadig"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Stadig"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Middelmatig"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Vinnig"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Baie vinnig"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Geen"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Verval"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Tik om aan te meld"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Tik om intekening te hernu en te koppel"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Maak tans <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> oop"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Kon nie koppel nie"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Voltooi tans aanmelding …"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Kon nie aanmelding voltooi nie. Tik om weer te probeer."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Aanmelding is voltooi. Koppel tans …"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Hierdie netwerk ontvang \'n SIM-ID wat gebruik kan word om toestelligging na te spoor. "<annotation id="url">"Kom meer te wete"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Baie stadig"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Stadig"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Medium"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Vinnig"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Baie vinnig"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-fi sal vir nou nie outomaties koppel nie"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-am/arrays.xml b/libs/WifiTrackerLib/res/values-am/arrays.xml
index 95ac6d8..b4ec90d 100644
--- a/libs/WifiTrackerLib/res/values-am/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-am/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"በመቃኘት ላይ…"</item>
-    <item msgid="6222852518007967736">"በመገናኘት ላይ…"</item>
-    <item msgid="1176401854208153464">"በማረጋገጥ ላይ…"</item>
-    <item msgid="1377026397901197257">"የአይፒ አድራሻን በማግኘት ላይ…"</item>
-    <item msgid="7627139816052121509">"ተገናኝቷል"</item>
-    <item msgid="1598801023719359130">"ታግዷል"</item>
-    <item msgid="9160765456671002324">"ግንኝነት በማቋረጥ ላይ…"</item>
-    <item msgid="8013176736494493734">"ተቋርጧል"</item>
-    <item msgid="4077393480368783785">"አልተሳካም"</item>
-    <item msgid="605372180740008604">"ታግዷል"</item>
-    <item msgid="5102306451432929048">"ለጊዜው ከደካማ ግንኙነት በመታቀብ ላይ"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"በመቃኘት ላይ…"</item>
+    <item msgid="9055468790485684083">"በመገናኘት ላይ…"</item>
+    <item msgid="6099499723199990208">"በማረጋገጥ ላይ…"</item>
+    <item msgid="6794055951297347103">"የአይፒ አድራሻን በማግኘት ላይ…"</item>
+    <item msgid="5450920562291300229">"ተገናኝቷል"</item>
+    <item msgid="6332116533879646145">"ታግዷል"</item>
+    <item msgid="294459081501073818">"ግንኝነት በማቋረጥ ላይ…"</item>
+    <item msgid="1577368920272598676">"ተቋርጧል"</item>
+    <item msgid="7655843177582495451">"አልተሳካም"</item>
+    <item msgid="8953752690917593623">"ታግዷል"</item>
+    <item msgid="4400457817750243671">"ለጊዜው ከደካማ ግንኙነት በመታቀብ ላይ"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-am/strings.xml b/libs/WifiTrackerLib/res/values-am/strings.xml
index 0280faa..9391ccf 100644
--- a/libs/WifiTrackerLib/res/values-am/strings.xml
+++ b/libs/WifiTrackerLib/res/values-am/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"ራስ-ተገናኝ ጠፍቷል"</string>
-    <string name="saved_network" msgid="6241977554502802914">"የተቀመጠው በ<xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"በራስ-ሰር አይገናኝም"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"ምንም የበይነመረብ መዳረሻ የለም"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"የማረጋገጥ ችግር"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"የይለፍ ቃልን ይፈትሹ እና እንደገና ይሞክሩ"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"የአይፒ ውቅረት መሰናከል"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"ተሰናክሏል"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"የመዳረሻ ነጥብ ለጊዜው ሞልቷል"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"ተቋርጧል"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"ተቀምጧል"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"የሚለካ"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"ያልተለካ"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"በ <xliff:g id="NAME">%1$s</xliff:g> በኩል ተገናኝተዋል"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"በ<xliff:g id="NAME">%1$s</xliff:g> በኩል የሚገኝ"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"በ<xliff:g id="NAME">%1$s</xliff:g> በኩል በራስ-ሰር ተገናኝቷል"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"በአውታረ መረብ ደረጃ ሰጪ አቅራቢ በኩል በራስ-ሰር ተገናኝቷል"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"የተገደበ ግንኙነት"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"የግል ዲኤንኤስ አገልጋይ ሊደረስበት አይችልም"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"ምንም በይነመረብ የለም"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"ራስ-ተገናኝ ጠፍቷል"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"የተቀመጠው በ<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"በራስ-ሰር አይገናኝም"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"ምንም የበይነመረብ መዳረሻ የለም"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"የማረጋገጥ ችግር"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"የይለፍ ቃልን ይፈትሹ እና እንደገና ይሞክሩ"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"የአይፒ ውቅረት መሰናከል"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"ተሰናክሏል"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"የመዳረሻ ነጥብ ለጊዜው ሞልቷል"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"ጊዜያዊ ደካማ የአውታረ መረብ ሁኔታዎች"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"ደካማ ሲግናል። ወደ ራውተር ለመቅረብ ይሞክሩ።"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"አውታረመረብ ከአቅም በላይ ነው። ቆይተው እንደገና ይሞክሩ።"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"መገናኘት አልተቻለም። ቆይተው እንደገና ይሞክሩ።"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"አውታረ መረብ ከዚህ መሣሪያ ጋር ተኳሃኝ አይደለም"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"ተቋርጧል"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"ተቀምጧል"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"የሚለካ"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"ያልተለካ"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"በ <xliff:g id="NAME">%1$s</xliff:g> በኩል ተገናኝተዋል"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"በ<xliff:g id="NAME">%1$s</xliff:g> በኩል የሚገኝ"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"በ<xliff:g id="NAME">%1$s</xliff:g> በኩል በራስ-ሰር ተገናኝቷል"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"በአውታረ መረብ ደረጃ ሰጪ አቅራቢ በኩል በራስ-ሰር ተገናኝቷል"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"የተገደበ ግንኙነት"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"የግል ዲኤንኤስ አገልጋይ ሊደረስበት አይችልም"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"ከመሣሪያው ጋር ተገናኝቷል። በይነመረብ ማቅረብ አልተቻለም።"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"አነስተኛ ጥራት"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"የለም"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"ጊዜው አልፏል"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"ለመመዝገብ መታ ያድርጉ"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"የደንበኝነት ምዝገባን ዳግም ለማደስ እና ለማገናኘት መታ ይድርጉ"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>ን በመክፈት ላይ"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"መገናኘት አልተቻለም"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"መመዝገብን በማጠናቀቅ ላይ…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"ምዝገባን ማጠናቀቅ አልተቻለም። እንደገና ለመሞከር መታ ያድርጉ።"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"ምዝገባ ተጠናቋል። በማገናኘት ላይ…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"ይህ አውታረ መረብ የመሣሪያ አካባቢን ለመከታተል ስራ ላይ ሊውል የሚችል ልዩ መታወቂያ ተቀብሏል። "<annotation id="url">"የበለጠ ለመረዳት"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"በጣም ቀርፋፋ"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"አዘግይ"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"እሺ"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"መካከለኛ"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"ፈጣን"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"እጅግ በጣም ፈጣን"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"ምንም"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"ጊዜው አልፏል"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"ለመመዝገብ መታ ያድርጉ"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"የደንበኝነት ምዝገባን ዳግም ለማደስ እና ለማገናኘት መታ ይድርጉ"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>ን በመክፈት ላይ"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"መገናኘት አልተቻለም"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"መመዝገብን በማጠናቀቅ ላይ…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"ምዝገባን ማጠናቀቅ አልተቻለም። እንደገና ለመሞከር መታ ያድርጉ።"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"ምዝገባ ተጠናቋል። በማገናኘት ላይ…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"ይህ አውታረ መረብ የመሣሪያ አካባቢን ለመከታተል ሥራ ላይ ሊውል የሚችል የሲም መታወቂያ ተቀብሏል። "<annotation id="url">"የበለጠ ለመረዳት"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"በጣም ቀርፋፋ"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"ቀርፋፋ"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"እሺ"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"መካከለኛ"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"ፈጣን"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"በጣም ፈጣን"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ar/arrays.xml b/libs/WifiTrackerLib/res/values-ar/arrays.xml
index e93d0b1..2dd2962b 100644
--- a/libs/WifiTrackerLib/res/values-ar/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-ar/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"جارٍ البحث عن الشبكات…"</item>
-    <item msgid="6222852518007967736">"جارٍ الاتصال…"</item>
-    <item msgid="1176401854208153464">"جارٍ المصادقة…"</item>
-    <item msgid="1377026397901197257">"‏جارٍ الحصول على عنوان IP…"</item>
-    <item msgid="7627139816052121509">"متصلة"</item>
-    <item msgid="1598801023719359130">"معلّقة"</item>
-    <item msgid="9160765456671002324">"جارٍ قطع الاتصال…"</item>
-    <item msgid="8013176736494493734">"غير متصلة"</item>
-    <item msgid="4077393480368783785">"تعذّر الاتصال بالشبكة"</item>
-    <item msgid="605372180740008604">"محظورة"</item>
-    <item msgid="5102306451432929048">"يتم مؤقتًا تجنب الاتصال الضعيف"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"جارٍ البحث عن الشبكات…"</item>
+    <item msgid="9055468790485684083">"جارٍ الاتصال بالإنترنت…"</item>
+    <item msgid="6099499723199990208">"جارٍ مصادقة الشبكة…"</item>
+    <item msgid="6794055951297347103">"‏جارٍ الحصول على عنوان IP…"</item>
+    <item msgid="5450920562291300229">"متصلة"</item>
+    <item msgid="6332116533879646145">"معلّقة"</item>
+    <item msgid="294459081501073818">"جارٍ قطع الاتصال بالشبكة…"</item>
+    <item msgid="1577368920272598676">"غير متصلة"</item>
+    <item msgid="7655843177582495451">"تعذّر الاتصال بالشبكة."</item>
+    <item msgid="8953752690917593623">"محظورة"</item>
+    <item msgid="4400457817750243671">"يتم مؤقتًا تجنب الاتصال الضعيف بالإنترنت"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ar/strings.xml b/libs/WifiTrackerLib/res/values-ar/strings.xml
index a73a403..58aae29 100644
--- a/libs/WifiTrackerLib/res/values-ar/strings.xml
+++ b/libs/WifiTrackerLib/res/values-ar/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"الاتصال التلقائي غير مفعّل"</string>
-    <string name="saved_network" msgid="6241977554502802914">"تم الحفظ بواسطة <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"لن يتم الاتصال بالإنترنت تلقائيًا."</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"لا يتوفّر اتصال بالإنترنت"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"مشكلة في المصادقة"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"يُرجى التحقق من كلمة المرور وإعادة المحاولة"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"‏تعذّر إعداد عنوان IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"غير مفعّلة"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"نقطة الوصول ممتلئة مؤقتًا"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"غير متصلة"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"تم الحفظ"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"تفرض تكلفة استخدام"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"بدون قياس"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"تم الاتصال عبر <xliff:g id="NAME">%1$s</xliff:g>."</string>
-    <string name="available_via_app" msgid="9110324040292242769">"متاحة من خلال <xliff:g id="NAME">%1$s</xliff:g>."</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"تم تلقائيًا توصيل الجهاز بشبكة <xliff:g id="NAME">%1$s</xliff:g>."</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"تم الاتصال تلقائيًا عبر مقدم خدمة تقييم الشبكة"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"اتصال محدود"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"لا يمكن الوصول إلى خادم أسماء نظام نطاقات خاص"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"لا يتوفر اتصال إنترنت."</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"الاتصال التلقائي غير مُفعَّل."</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"تم الحفظ من قِبل <xliff:g id="NAME">%1$s</xliff:g>."</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"لن يتم الاتصال بالإنترنت تلقائيًا."</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"لا يتوفّر اتصال بالإنترنت"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"حدثت مشكلة في المصادقة."</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"يُرجى التحقق من كلمة المرور وإعادة المحاولة."</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"‏تعذّر إعداد عنوان IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"غير مُفعَّلة"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"نقطة الوصول ممتلئة مؤقتًا."</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"الاتصال بشبكات الإنترنت سيئ حاليًا"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"الإشارة ضعيفة. حاوِل الاقتراب من جهاز التوجيه."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"تجاوزت الشبكة الحد الأقصى للسعة. يُرجى إعادة المحاولة لاحقًا."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"يتعذّر الاتصال بالشبكة. يُرجى إعادة المحاولة لاحقًا."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"الشبكة غير متوافقة مع هذا الجهاز."</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"غير متصلة"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"شبكة محفوظة"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"تفرض تكلفة استخدام"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"لا تفرض تكلفة استخدام"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"تم الاتصال من خلال <xliff:g id="NAME">%1$s</xliff:g>."</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"متاحة من خلال <xliff:g id="NAME">%1$s</xliff:g>."</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"تم الاتصال تلقائيًا بشبكة <xliff:g id="NAME">%1$s</xliff:g>."</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"تم الاتصال تلقائيًا من خلال مقدّم خدمة تقييم الشبكة."</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"الاتصال بالإنترنت محدود"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"لا يمكن الوصول إلى خادم أسماء نظام نطاقات خاص"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"الشبكة متصلة بالجهاز. يتعذّر توفير اتصال بالإنترنت."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"جودة منخفضة"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"بلا أمان"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"منتهية الصلاحية"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"انقر للاشتراك."</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"انقر لتجديد الاشتراك والاتصال بالشبكة."</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"جارٍ فتح <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"تعذّر الاتصال بالإنترنت."</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"جارٍ إكمال الاشتراك…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"تعذّر إكمال الاشتراك. انقر لإعادة المحاولة."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"اكتمل الاشتراك. جارٍ الاتصال…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"تتلقّى هذه الشبكة معرّفًا فريدًا يمكن استخدامه لتتبُّع الموقع الجغرافي للجهاز. "<annotation id="url">"مزيد من المعلومات"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"بطيئة جدًا"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"بطيئة"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"حسنًا"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"متوسطة"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"سريعة"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"سريعة جدًا"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"بدون أمان"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"منتهية الصلاحية"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"انقر للاشتراك."</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"انقر لتجديد الاشتراك والاتصال بالشبكة."</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"جارٍ فتح <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"تعذّر الاتصال بالإنترنت."</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"جارٍ إكمال الاشتراك…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"تعذّر إكمال الاشتراك. انقر لإعادة المحاولة."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"اكتمل الاشتراك. جارٍ الاتصال بالإنترنت…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"‏تتلقّى هذه الشبكة رقم تعريف لشريحة SIM يمكن استخدامه لتتبُّع الموقع الجغرافي للجهاز. "<annotation id="url">"مزيد من المعلومات"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"بطيئة جدًا"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"بطيئة"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"جيدة"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"متوسطة"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"سريعة"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"سريعة جدًا"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-as/arrays.xml b/libs/WifiTrackerLib/res/values-as/arrays.xml
index b9b3706..125bc76 100644
--- a/libs/WifiTrackerLib/res/values-as/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-as/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"স্কেন কৰি থকা হৈছে…"</item>
-    <item msgid="6222852518007967736">"সংযোগ কৰি থকা হৈছে…"</item>
-    <item msgid="1176401854208153464">"বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ কৰি থকা হৈছে…"</item>
-    <item msgid="1377026397901197257">"আইপি ঠিকনা সংগ্ৰহ কৰি থকা হৈছে…"</item>
-    <item msgid="7627139816052121509">"সংযুক্ত"</item>
-    <item msgid="1598801023719359130">"নিলম্বিত"</item>
-    <item msgid="9160765456671002324">"সংযোগ বিচ্ছিন্ন কৰি থকা হৈছে…"</item>
-    <item msgid="8013176736494493734">"সংযোগ বিচ্ছিন্ন"</item>
-    <item msgid="4077393480368783785">"বিফল"</item>
-    <item msgid="605372180740008604">"অৱৰোধিত"</item>
-    <item msgid="5102306451432929048">"কিছুসময়ৰ বাবে দুৰ্বল সংযোগ দেখুওৱা হোৱা নাই"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"স্কেন কৰি থকা হৈছে…"</item>
+    <item msgid="9055468790485684083">"সংযোগ কৰি থকা হৈছে…"</item>
+    <item msgid="6099499723199990208">"বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ কৰি থকা হৈছে…"</item>
+    <item msgid="6794055951297347103">"আইপি ঠিকনা সংগ্ৰহ কৰি থকা হৈছে…"</item>
+    <item msgid="5450920562291300229">"সংযোজিত"</item>
+    <item msgid="6332116533879646145">"নিলম্বন কৰা হৈছে"</item>
+    <item msgid="294459081501073818">"সংযোগ বিচ্ছিন্ন কৰি থকা হৈছে…"</item>
+    <item msgid="1577368920272598676">"সংযোগ বিচ্ছিন্ন হৈছে"</item>
+    <item msgid="7655843177582495451">"বিফল হৈছে"</item>
+    <item msgid="8953752690917593623">"অৱৰোধ কৰা আছে"</item>
+    <item msgid="4400457817750243671">"সাময়িকভাৱে দুৰ্বল সংযোগ দেখুওৱা হোৱা নাই"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-as/strings.xml b/libs/WifiTrackerLib/res/values-as/strings.xml
index 1eeb44a..5afd872 100644
--- a/libs/WifiTrackerLib/res/values-as/strings.xml
+++ b/libs/WifiTrackerLib/res/values-as/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"স্বয়ংক্ৰিয় সংযোগৰ সুবিধাটো অফ আছে"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g>এ ছেভ কৰিছে"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"স্বয়ংক্ৰিয়ভাৱে সংযোগ নহ’ব"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"ইণ্টাৰনেটৰ এক্সেছ নাই"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"বিশ্বাসযোগ্যতা প্ৰমাণীকৰণত সমস্যা হৈছে"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"পাছৱৰ্ড পৰীক্ষা কৰি আকৌ চেষ্টা কৰক"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"আইপি কনফিগাৰেশ্বন বিফল হৈছে"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"নিষ্ক্ৰিয় হৈ আছে"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"একচেছ পইণ্ট কিছু সময়ৰ বাবে পূৰ্ণ হৈ আছে"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"সংযোগ বিচ্ছিন্ন"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"ছেভ কৰি থোৱা নেটৱৰ্কসমূহ"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"নিৰিখ-নিৰ্দিষ্ট"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"নিৰিখ অনিৰ্দিষ্ট"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g>ৰ জৰিয়তে সংযুক্ত"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g>ৰ জৰিয়তে উপলব্ধ"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g>ৰ জৰিয়তে স্বয়ংক্ৰিয়ভাৱে সংযুক্ত"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"নেটৱৰ্ক ৰেটিং প্ৰদানকাৰীৰ জৰিয়তে স্বয়ং সংয়োগ কৰা হ’ল"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"ইণ্টাৰনেট সংযোগ সীমিত"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"ব্যক্তিগত DNS ছাৰ্ভাৰ এক্সেছ কৰিব নোৱাৰি"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"ইণ্টাৰনেট সংযোগ নাই"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"স্বয়ংক্ৰিয় সংযোগৰ সুবিধাটো অফ আছে"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g>এ ছেভ কৰিছে"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"স্বয়ংক্ৰিয়ভাৱে সংযোগ নহ’ব"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"ইণ্টাৰনেটৰ এক্সেছ নাই"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"বিশ্বাসযোগ্যতা প্ৰমাণীকৰণত সমস্যা হৈছে"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"পাছৱৰ্ড পৰীক্ষা কৰক আৰু পুনৰ চেষ্টা কৰক"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"আইপি কনফিগাৰেশ্বন বিফল হৈছে"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"অক্ষম কৰা আছে"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"এক্সেছ পইণ্ট সাময়িকভাৱে পূৰ্ণ হৈছে"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"অস্থায়ীভাৱে নেটৱৰ্ক বেয়া হোৱাৰ অৱস্থা"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"দুৰ্বল সংকেত। ৰাউটাৰৰ ওচৰলৈ গৈ চাওক।"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"নেটৱৰ্কে অধিকতম ক্ষমতা অতিক্ৰম কৰিছে। পাছত পুনৰ চেষ্টা কৰক।"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"সংযোগ কৰিব নোৱাৰি। পাছত পুনৰ চেষ্টা কৰক।"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"নেটৱৰ্কে এই ডিভাইচটোৰ সৈতে কাম কৰিব নোৱাৰে"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"সংযোগ বিচ্ছিন্ন হৈছে"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"ছেভ কৰা আছে"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"নিৰিখ-নিৰ্দিষ্ট"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"নিৰিখ নিৰ্দিষ্ট নকৰা"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g>ৰ জৰিয়তে সংযুক্ত হৈছে"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g>ৰ জৰিয়তে উপলব্ধ হৈছে"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g>ৰ জৰিয়তে স্বয়ংক্ৰিয়ভাৱে সংযুক্ত হৈছে"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"নেটৱৰ্ক ৰেটিং প্ৰদানকাৰীৰ জৰিয়তে স্বয়ংক্ৰিয়ভাৱে সংযুক্ত হৈছে"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"ইণ্টাৰনেট সংযোগ সীমিত"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"ব্যক্তিগত DNS ছাৰ্ভাৰ এক্সেছ কৰিব নোৱাৰি"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"ডিভাইচৰ সৈতে সংযোগ কৰা হৈছে। ইণ্টাৰনেট সংযোগ প্ৰদান কৰিব নোৱাৰি।"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"নিম্ন মানৰ"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"নাই"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"ম্যাদ উকলিছে"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"ছাইন আপ কৰিবলৈ টিপক"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"ছাবস্ক্ৰিপশ্বন নৱীকৰণ আৰু সংযোগ কৰিবলৈ টিপক"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> খুলি থকা হৈছে"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"সংযোগ কৰিব পৰা নগ’ল"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"ছাইন আপ সম্পূৰ্ণ কৰি থকা হৈছে…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"ছাইন আপ সম্পূৰ্ণ কৰিব পৰা নগ’ল। পুনৰ চেষ্টা কৰিবলৈ টিপক।"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"ছাইন আপ সম্পূৰ্ণ হৈছে। সংযোগ কৰি থকা হৈছে…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"এই নেটৱৰ্কটোৱে এটা সুকীয়া আইডি পায়, যিটো ডিভাইচৰ অৱস্থান ট্ৰেক কৰিবলৈ ব্যৱহাৰ কৰিব পাৰি। "<annotation id="url">"অধিক জানক"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"অতি লেহেম"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"লেহেমীয়া"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ঠিক"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"মধ্যমীয়া"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"দ্ৰুত"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"অতি দ্ৰুত"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"একো নাই"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"ম্যাদ উকলিছে"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"ছাইন আপ কৰিবলৈ টিপক"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"ছাবস্ক্ৰিপশ্বন নৱীকৰণ আৰু সংযোগ কৰিবলৈ টিপক"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> খুলি থকা হৈছে"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"সংযোগ কৰিব পৰা নগ’ল"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"ছাইন আপ সম্পূৰ্ণ কৰি থকা হৈছে…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"ছাইন আপ সম্পূৰ্ণ কৰিব পৰা নগ’ল। পুনৰ চেষ্টা কৰিবলৈ টিপক।"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"ছাইন আপ সম্পূৰ্ণ হৈছে। সংযোগ কৰি থকা হৈছে…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"এই নেটৱৰ্কটোৱে এটা ছিম আইডি পায়, যিটো ডিভাইচৰ অৱস্থান ট্ৰেক কৰিবলৈ ব্যৱহাৰ কৰিব পাৰি। "<annotation id="url">"অধিক জানক"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"অতি লেহেমীয়া"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"লেহেমীয়া"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ঠিক আছে"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"মধ্যমীয়া"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"দ্ৰুত"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"অতি দ্ৰুত"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-az/arrays.xml b/libs/WifiTrackerLib/res/values-az/arrays.xml
index 582d1de..31b228d 100644
--- a/libs/WifiTrackerLib/res/values-az/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-az/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Skan edilir…"</item>
-    <item msgid="6222852518007967736">"Qoşulur…"</item>
-    <item msgid="1176401854208153464">"Doğrulanır…"</item>
-    <item msgid="1377026397901197257">"IP ünvanı əldə edilir…"</item>
-    <item msgid="7627139816052121509">"Qoşuldu"</item>
-    <item msgid="1598801023719359130">"Dayandırılıb"</item>
-    <item msgid="9160765456671002324">"Bağlantı kəsilir…"</item>
-    <item msgid="8013176736494493734">"Bağlantı kəsildi"</item>
-    <item msgid="4077393480368783785">"Uğursuz"</item>
-    <item msgid="605372180740008604">"Bloklanıb"</item>
-    <item msgid="5102306451432929048">"Zəif bağlantı müvəqqəti olaraq aradan qaldırılır"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Skan edilir…"</item>
+    <item msgid="9055468790485684083">"Qoşulur…"</item>
+    <item msgid="6099499723199990208">"Doğrulanır…"</item>
+    <item msgid="6794055951297347103">"IP ünvanı əldə edilir…"</item>
+    <item msgid="5450920562291300229">"Qoşulub"</item>
+    <item msgid="6332116533879646145">"Dayandırılıb"</item>
+    <item msgid="294459081501073818">"Bağlantı kəsilir…"</item>
+    <item msgid="1577368920272598676">"Bağlantı kəsildi"</item>
+    <item msgid="7655843177582495451">"Uğursuz"</item>
+    <item msgid="8953752690917593623">"Bloklanıb"</item>
+    <item msgid="4400457817750243671">"Zəif bağlantı müvəqqəti olaraq aradan qaldırılır"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-az/strings.xml b/libs/WifiTrackerLib/res/values-az/strings.xml
index b3f1a97..1b8b157 100644
--- a/libs/WifiTrackerLib/res/values-az/strings.xml
+++ b/libs/WifiTrackerLib/res/values-az/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Avtomatik qoşulma sönülüdür"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Yadda saxlayan: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Avtomatik qoşulmayacaq"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"İnternetə giriş yoxdur"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Doğrulama problemi"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Parolu yoxlayın və yenidən cəhd edin"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP Konfiqurasiya Uğursuzluğu"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Deaktiv"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Giriş nöqtəsi müvəqqəti olaraq doludur"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Bağlantı kəsildi"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Yadda saxlanılan"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Tarif sayğacılı"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Limitsiz"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> ilə qoşulub"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> vasitəsilə əlçatandır"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> vasitəsilə avtomatik qoşulub"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Avtomatik olaraq şəbəkə reytinq provayderi ilə qoşuludur"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Məhdud bağlantı"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Özəl DNS serverinə giriş mümkün deyil"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"İnternet yoxdur"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Avtomatik qoşulma deaktivdir"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Yadda saxlayan: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Avtomatik qoşulmayacaq"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"İnternetə giriş yoxdur"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Doğrulama problemi"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Parolu yoxlayın və yenidən cəhd edin"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"İP konfiqurasiyası uğursuz oldu"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Deaktiv"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Giriş nöqtəsi müvəqqəti olaraq doludur"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Şəbəkə bağlantısı müvəqqəti zəifdir"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Zəif siqnal. Ruterə yaxınlaşdırın."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Şəbəkə limiti aşılıb. Sonra cəhd edin."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Qoşulmaq mümkün deyil. Sonra cəhd edin."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Şəbəkə bu cihaz ilə uyğun deyil"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Bağlantı kəsildi"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Yadda saxlandı"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Tarif sayğacılı"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Limitsiz"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> vasitəsilə qoşulub"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> vasitəsilə əlçatandır"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> vasitəsilə avtomatik qoşulub"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Avtomatik olaraq şəbəkə reytinq provayderi vasitəsilə qoşulub"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Məhdud bağlantı"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Özəl DNS serverinə giriş mümkün deyil"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Cihaza qoşulub. İnternet təmin etmək olmur."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Aşağı keyfiyyət"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Heç biri"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Vaxtı keçib"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Qeydiyyatdan keçmək üçün toxunun"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Abunəliyi yeniləmək və qoşulmaq üçün toxunun"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> açılır"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Qoşulmaq mümkün olmadı"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Qeydiyyat tamamlanır…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Qeydiyyat tamamlanmadı. Yenidən cəhd etmək üçün toxunun."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Qeydiyyat tamamlandı. Qoşulur…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Bu şəbəkə cihaz məkanını izləmək üçün istifadə edilə biləcək unikal ID qəbul edir. "<annotation id="url">"Ətraflı məlumat"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Çox Yavaş"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Yavaş"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Orta"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Sürətli"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Çox Sürətli"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Heç"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Bitib"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Qeydiyyatdan keçmək üçün toxunun"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Abunəliyi yeniləmək və qoşulmaq üçün toxunun"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> açılır"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Qoşulmaq mümkün olmadı"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Qeydiyyat tamamlanır…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Qeydiyyat tamamlanmadı. Yenidən cəhd etmək üçün toxunun."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Qeydiyyat tamamlandı. Qoşulur…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Bu şəbəkə cihaz məkanını izləmək üçün istifadə edilə biləcək SIM ID qəbul edir. "<annotation id="url">"Ətraflı məlumat"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Çox Zəif"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Zəif"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Orta"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Sürətli"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Çox Sürətli"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-b+sr+Latn/arrays.xml b/libs/WifiTrackerLib/res/values-b+sr+Latn/arrays.xml
index 2e5f1bc..3975474 100644
--- a/libs/WifiTrackerLib/res/values-b+sr+Latn/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-b+sr+Latn/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Traži se…"</item>
-    <item msgid="6222852518007967736">"Povezuje se…"</item>
-    <item msgid="1176401854208153464">"Potvrđuje se identitet…"</item>
-    <item msgid="1377026397901197257">"Preuzima se IP adresa…"</item>
-    <item msgid="7627139816052121509">"Povezano"</item>
-    <item msgid="1598801023719359130">"Suspendovano"</item>
-    <item msgid="9160765456671002324">"Prekida se veza…"</item>
-    <item msgid="8013176736494493734">"Veza je prekinuta"</item>
-    <item msgid="4077393480368783785">"Nije uspelo"</item>
-    <item msgid="605372180740008604">"Blokirano"</item>
-    <item msgid="5102306451432929048">"Privremeno izbegavanje loše veze"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Traži se…"</item>
+    <item msgid="9055468790485684083">"Povezuje se…"</item>
+    <item msgid="6099499723199990208">"Potvrđuje se identitet…"</item>
+    <item msgid="6794055951297347103">"Preuzima se IP adresa…"</item>
+    <item msgid="5450920562291300229">"Povezano je"</item>
+    <item msgid="6332116533879646145">"Suspendovano"</item>
+    <item msgid="294459081501073818">"Prekida se veza…"</item>
+    <item msgid="1577368920272598676">"Veza je prekinuta"</item>
+    <item msgid="7655843177582495451">"Nije uspelo"</item>
+    <item msgid="8953752690917593623">"Blokirano"</item>
+    <item msgid="4400457817750243671">"Privremeno izbegavanje loše veze"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-b+sr+Latn/strings.xml b/libs/WifiTrackerLib/res/values-b+sr+Latn/strings.xml
index 7c578d3..26bac70 100644
--- a/libs/WifiTrackerLib/res/values-b+sr+Latn/strings.xml
+++ b/libs/WifiTrackerLib/res/values-b+sr+Latn/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Automatsko povezivanje je isključeno"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Sačuvao/la je <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Automatsko povezivanje nije uspelo"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Nema pristupa internetu"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problem sa potvrdom identiteta"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Proverite lozinku i probajte ponovo"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP konfiguracija je otkazala"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Onemogućeno"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Pristupna tačka je privremeno zauzeta"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Veza je prekinuta"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Sačuvano"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Sa ograničenjem"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Bez ograničenja"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Povezano preko: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Dostupno preko aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatski povezano preko: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatski povezano preko dobavljača ocene mreže"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Ograničena veza"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Pristup privatnom DNS serveru nije uspeo"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Nema interneta"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatsko povezivanje je isključeno"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Sačuvao/la: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Automatsko povezivanje nije uspelo"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Nema pristupa internetu"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problem sa potvrdom identiteta"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Proverite lozinku i probajte ponovo"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP konfiguracija je otkazala"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Onemogućeno"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Pristupna tačka je privremeno zauzeta"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Privremeno slaba mreža"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Slab signal. Probajte da se približite ruteru."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Kapacitet mreže je premašen. Probajte ponovo kasnije."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Povezivanje nije uspelo. Probajte ponovo kasnije."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Mreža nije kompatibilna sa ovim uređajem"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Veza je prekinuta"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Sačuvano"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Sa ograničenjem"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Bez ograničenja"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Povezano pomoću aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Dostupno preko aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatski povezano pomoću aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatski povezano preko dobavljača ocene mreže"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Ograničena veza"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Pristup privatnom DNS serveru nije uspeo"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Uređaj je povezan. Pružanje interneta nije uspelo."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Loš kvalitet"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Ništa"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Isteklo"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Dodirnite da biste se registrovali"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Dodirnite da biste obnovili pretplatu i povezali"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Otvara se <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Povezivanje nije uspelo"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Registracija se dovršava…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Dovršavanje registracije nije uspelo. Dodirnite da biste probali ponovo."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Registracija je dovršena. Povezuje se…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Ova mreža zahteva jedinstveni ID koji može da se koristi za praćenje lokacije uređaja. "<annotation id="url">"Saznajte više"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Veoma spora"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Spora"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Potvrdi"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Srednja"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Brza"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Veoma brza"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Ništa"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Istekla"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Dodirnite da biste se registrovali"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Dodirnite da biste obnovili pretplatu i povezali se"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Otvara se <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Povezivanje nije uspelo"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Registracija se dovršava…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Dovršavanje registracije nije uspelo. Dodirnite da biste probali ponovo."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registracija je dovršena. Povezuje se…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Ova mreža dobija ID SIM kartice koji može da se koristi za praćenje lokacije uređaja. "<annotation id="url">"Saznajte više"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Veoma sporo"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Sporo"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"U redu"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Srednje"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Brzo"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Veoma brzo"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"WiFi trenutno ne može da se automatski poveže"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-be/arrays.xml b/libs/WifiTrackerLib/res/values-be/arrays.xml
index 6b53b51..e6b2c39 100644
--- a/libs/WifiTrackerLib/res/values-be/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-be/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Ідзе пошук…"</item>
-    <item msgid="6222852518007967736">"Ідзе падключэнне…"</item>
-    <item msgid="1176401854208153464">"Ідзе аўтэнтыфікацыя…"</item>
-    <item msgid="1377026397901197257">"Атрымліваецца IP-адрас…"</item>
-    <item msgid="7627139816052121509">"Падключана"</item>
-    <item msgid="1598801023719359130">"Прыпынена"</item>
-    <item msgid="9160765456671002324">"Ідзе адключэнне…"</item>
-    <item msgid="8013176736494493734">"Адключана"</item>
-    <item msgid="4077393480368783785">"Не ўдалося"</item>
-    <item msgid="605372180740008604">"Заблакіравана"</item>
-    <item msgid="5102306451432929048">"Сувязь часова палепшана"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Ідзе пошук…"</item>
+    <item msgid="9055468790485684083">"Ідзе падключэнне…"</item>
+    <item msgid="6099499723199990208">"Ідзе аўтэнтыфікацыя…"</item>
+    <item msgid="6794055951297347103">"Атрымліваецца IP-адрас…"</item>
+    <item msgid="5450920562291300229">"Падключана"</item>
+    <item msgid="6332116533879646145">"Прыпынена"</item>
+    <item msgid="294459081501073818">"Ідзе адключэнне…"</item>
+    <item msgid="1577368920272598676">"Адключана"</item>
+    <item msgid="7655843177582495451">"Збой"</item>
+    <item msgid="8953752690917593623">"Заблакіравана"</item>
+    <item msgid="4400457817750243671">"Сувязь часова палепшана"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-be/strings.xml b/libs/WifiTrackerLib/res/values-be/strings.xml
index c1cf8c6..4aa06ba 100644
--- a/libs/WifiTrackerLib/res/values-be/strings.xml
+++ b/libs/WifiTrackerLib/res/values-be/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Аўтападключэнне выключана"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Захавана праз: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Не будзе аўтаматычна падключацца"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Няма доступу да інтэрнэту"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Памылка аўтэнтыфікацыі"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Праверце пароль і паўтарыце спробу"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Збой канфігурацыі IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Адключана"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Пункт доступу часова заняты"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Адключана"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Захавана"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Сетка з падлікам трафіка"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Сетка без уліку трафіка"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Падключана праз праграму \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Даступна праз: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Аўтаматычна падключана праз: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Аўтаматычна падключана праз пастаўшчыка паслугі ацэнкі сеткі"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Абмежаваныя магчымасці падключэння"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Не ўдалося атрымаць доступ да прыватнага DNS-сервера"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Няма падключэння да інтэрнэту"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Аўтападключэнне выключана"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Захавана праграмай \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Не будзе аўтаматычна падключацца"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Няма доступу да інтэрнэту"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Памылка аўтэнтыфікацыі"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Праверце пароль і паўтарыце спробу"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Збой канфігурацыі IP-адраса"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Выключана"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Пункт доступу часова заняты"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Часова неспрыяльныя ўмовы падключэння да сеткі"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Слабы сігнал. Перамясціцеся бліжэй да маршрутызатара."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Сетка перагружана. Паўтарыце спробу пазней."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Не ўдалося падключыцца. Паўтарыце спробу пазней."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Сетка не сумяшчальная з гэтай прыладай."</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Адключана"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Захавана"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"З падлікам трафіка"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Без уліку трафіка"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Падключана праз праграму \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Даступна праз праграму \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Аўтаматычна падключана праз праграму \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Аўтаматычна падключана праз пастаўшчыка паслугі ацэнкі сеткі"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Абмежаваныя магчымасці падключэння"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Не ўдалося атрымаць доступ да прыватнага DNS-сервера"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Падключана да прылады. Не ўдалося падключыцца да інтэрнэту."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Нізкая якасць"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Няма"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Тэрмін скончыўся"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Націсніце, каб зарэгістравацца"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Націсніце, каб падоўжыць падпіску і падключыцца"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Адкрываецца <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Не ўдалося падключыцца"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Рэгістрацыя завяршаецца…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Не ўдалося выканаць рэгістрацыю. Дакраніцеся, каб паўтарыць спробу."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Рэгістрацыя завершана. Ідзе падключэнне…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Гэта сетка атрымлівае ўнікальны ідэнтыфікатар, які можа выкарыстоўвацца для адсочвання месцазнаходжання прылады. "<annotation id="url">"Даведацца больш"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Вельмі павольная"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Павольная"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ОК"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Сярэдняя"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Хуткая"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Вельмі хуткая"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Няма"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Тэрмін скончыўся"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Націсніце, каб зарэгістравацца"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Націсніце, каб падоўжыць падпіску і падключыцца"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Адкрываецца <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Не ўдалося падключыцца"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Рэгістрацыя завяршаецца…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Не ўдалося выканаць рэгістрацыю. Дакраніцеся, каб паўтарыць спробу."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Рэгістрацыя завершана. Ідзе падключэнне…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Гэта сетка атрымлівае ідэнтыфікатар SIM-карты, які можа выкарыстоўвацца для адсочвання месцазнаходжання прылады. "<annotation id="url">"Даведацца больш"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Вельмі павольная"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Павольная"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ОК"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Сярэдняя"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Хуткая"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Вельмі хуткая"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-bg/arrays.xml b/libs/WifiTrackerLib/res/values-bg/arrays.xml
index 72a1f20..232717c 100644
--- a/libs/WifiTrackerLib/res/values-bg/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-bg/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Сканира се…"</item>
-    <item msgid="6222852518007967736">"Свързва се…"</item>
-    <item msgid="1176401854208153464">"Удостоверява се…"</item>
-    <item msgid="1377026397901197257">"IP адресът се извлича…"</item>
-    <item msgid="7627139816052121509">"Установена е връзка"</item>
-    <item msgid="1598801023719359130">"Спряно"</item>
-    <item msgid="9160765456671002324">"Връзката се прекратява…"</item>
-    <item msgid="8013176736494493734">"Няма връзка"</item>
-    <item msgid="4077393480368783785">"Неуспешно"</item>
-    <item msgid="605372180740008604">"Блокирано"</item>
-    <item msgid="5102306451432929048">"Временно се избягва лоша връзка"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Сканира се…"</item>
+    <item msgid="9055468790485684083">"Установява се връзка…"</item>
+    <item msgid="6099499723199990208">"Удостоверява се…"</item>
+    <item msgid="6794055951297347103">"IP адресът се извлича…"</item>
+    <item msgid="5450920562291300229">"Установена е връзка"</item>
+    <item msgid="6332116533879646145">"Спряно"</item>
+    <item msgid="294459081501073818">"Връзката се прекратява…"</item>
+    <item msgid="1577368920272598676">"Няма връзка"</item>
+    <item msgid="7655843177582495451">"Неуспешно"</item>
+    <item msgid="8953752690917593623">"Блокирано"</item>
+    <item msgid="4400457817750243671">"Временно се избягва лоша връзка"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-bg/strings.xml b/libs/WifiTrackerLib/res/values-bg/strings.xml
index b824133..b6bcb07 100644
--- a/libs/WifiTrackerLib/res/values-bg/strings.xml
+++ b/libs/WifiTrackerLib/res/values-bg/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Изкл. авт. свързване"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Запазено от <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Няма да се свърже автоматично"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Няма достъп до интернет"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Проблем при удостоверяването"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Проверете паролата и опитайте отново"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Неуспешно конфигуриране на IP адреса"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Деактивирани"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Точката за достъп временно е пълна"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Няма връзка"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Запазено"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"С отчитане"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Без отчитане"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Установена е връзка през <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Достъпно чрез <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Автоматично бе установена връзка през <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Автоматично е установена връзка чрез доставчик на услуги за оценяване на мрежите"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Ограничена връзка"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Не може да се осъществи достъп до частния DNS сървър"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Няма интернет"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Автом. свързване е изкл."</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Запазено от <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Няма да се свърже автоматично"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Няма достъп до интернет"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Проблем при удостоверяването"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Проверете паролата и опитайте отново"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Неуспешно конфигуриране на IP адреса"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Деактивирано"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Точката за достъп временно е пълна"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Временно лоши мрежови условия"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Сигналът е слаб. Приближете се до рутера."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Капацитетът на мрежата е надхвърлен. Опитайте отново по-късно."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Не може да се установи връзка. Опитайте отново по-късно."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Мрежата не е съвместима с това устройство"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Няма връзка"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Запазено"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"С отчитане"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Без отчитане"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Установена е връзка през <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Достъпно през <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Автоматично бе установена връзка през <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Автоматично е установена връзка чрез доставчик на услуги за оценяване на мрежите"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Ограничена връзка"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Не може да се осъществи достъп до частния DNS сървър"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Установена е връзка с устройство. Няма интернет."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Ниско качество"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Няма"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Изтекло"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Докоснете, за да се регистрирате"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Докоснете, за да подновите абонамента и да установите връзка"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> се отваря"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Не можа да се установи връзка"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Регистрацията се завършва…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Регистрацията не можа да бъде завършена. Докоснете, за да опитате отново."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Регистрацията е завършена. Установява се връзка…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Тази мрежа получава уникален идентификатор, който може да се използва за проследяване на местоположението на устройството. "<annotation id="url">"Научете повече"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Много бавна"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Бавна"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ОK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Средна"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Бърза"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Много бърза"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Няма"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Изтекло"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Докоснете, за да се регистрирате"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Докоснете, за да подновите абонамента и да установите връзка"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> се отваря"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Не се установи връзка"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Регистрацията се завършва…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Регистрацията не можа да бъде завършена. Докоснете, за да опитате отново."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Регистрацията е завършена. Установява се връзка…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Тази мрежа получава идентификатор за SIM карта, който може да се използва за проследяване на местоположението на устройството. "<annotation id="url">"Научете повече"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Много бавна"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Бавна"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Добра"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Средна"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Бърза"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Много бърза"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Засега Wi-Fi няма да се свързва автоматично"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-bn/arrays.xml b/libs/WifiTrackerLib/res/values-bn/arrays.xml
index f98faf6..934fbda 100644
--- a/libs/WifiTrackerLib/res/values-bn/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-bn/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"স্ক্যান করা হচ্ছে…"</item>
-    <item msgid="6222852518007967736">"কানেক্ট করা হচ্ছে…"</item>
-    <item msgid="1176401854208153464">"যাচাইকরণ করা হচ্ছে…"</item>
-    <item msgid="1377026397901197257">"আইপি অ্যাড্রেস সংগ্রহ করা হচ্ছে…"</item>
-    <item msgid="7627139816052121509">"কানেক্ট করা হয়েছে"</item>
-    <item msgid="1598801023719359130">"সাসপেন্ড করা আছে"</item>
-    <item msgid="9160765456671002324">"ডিসকানেক্ট করা হচ্ছে…"</item>
-    <item msgid="8013176736494493734">"ডিসকানেক্ট হয়ে গেছে"</item>
-    <item msgid="4077393480368783785">"হয়নি"</item>
-    <item msgid="605372180740008604">"ব্লক করা হয়েছে"</item>
-    <item msgid="5102306451432929048">"সাময়িকভাবে খারাপ কানেকশন এড়ানো হচ্ছে"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"স্ক্যান করা হচ্ছে…"</item>
+    <item msgid="9055468790485684083">"কানেক্ট করা হচ্ছে…"</item>
+    <item msgid="6099499723199990208">"যাচাই করা হচ্ছে…"</item>
+    <item msgid="6794055951297347103">"আইপি অ্যাড্রেস সংগ্রহ করা হচ্ছে…"</item>
+    <item msgid="5450920562291300229">"কানেক্ট করা আছে"</item>
+    <item msgid="6332116533879646145">"সাসপেন্ড করা আছে"</item>
+    <item msgid="294459081501073818">"ডিসকানেক্ট করা হচ্ছে…"</item>
+    <item msgid="1577368920272598676">"ডিসকানেক্ট করা হয়েছে"</item>
+    <item msgid="7655843177582495451">"হয়নি"</item>
+    <item msgid="8953752690917593623">"ব্লক করা হয়েছে"</item>
+    <item msgid="4400457817750243671">"সাময়িকভাবে খারাপ কানেকশনে কানেক্ট করা হচ্ছে না"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-bn/strings.xml b/libs/WifiTrackerLib/res/values-bn/strings.xml
index 4aafb5a..37564af 100644
--- a/libs/WifiTrackerLib/res/values-bn/strings.xml
+++ b/libs/WifiTrackerLib/res/values-bn/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"অটোমেটিক কানেক্ট করার ফিচার বন্ধ আছে"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> দ্বারা সেভ করা"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"অটোমেটিক কানেক্ট করবে না"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"ইন্টারনেট অ্যাক্সেসের সুবিধা নেই"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"যাচাইকরণের সমস্যা"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"পাসওয়ার্ড দেখে আবার চেষ্টা করুন"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP কনফিগারেশনে ব্যর্থতা"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"অক্ষম হয়েছে"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"এই মুহূর্তে অ্যাক্সেস পয়েন্টের কোনও কানেকশন ফাঁকা নেই"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"কানেকশন নেই"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"সংরক্ষিত"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"মিটার্ড"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"পরিমাপ করা নয়"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g>-এর মাধ্যমে কানেক্ট করা আছে"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g>-এর মাধ্যমে উপলভ্য"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g>-এর মাধ্যমে অটোমেটিক কানেক্ট করা আছে"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"নেটওয়ার্কের রেটিং প্রদানকারীর মাধ্যমে অটোমেটিক কানেক্ট"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"সীমিত কানেকশন"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"ব্যক্তিগত ডিএনএস সার্ভার অ্যাক্সেস করা যাবে না"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"ইন্টারনেট কানেকশন নেই"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"অটোমেটিক কানেক্ট করার ফিচার বন্ধ আছে"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> সেভ করেছেন"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"অটোমেটিক কানেক্ট করবে না"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"ইন্টারনেট কানেকশন নেই"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"যাচাইকরণে কোনও সমস্যা হয়েছে"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"পাসওয়ার্ড দেখে নিয়ে আবার চেষ্টা করুন"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"আইপি কনফিগার করা যায়নি"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"বন্ধ আছে"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"এই মুহূর্তে অ্যাক্সেস পয়েন্টের কোনও কানেকশন ফাঁকা নেই"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"সাময়িকভাবে ভাল নেটওয়ার্ক কানেকশন নেই"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"দুর্বল সিগনাল। রাউটারের কাছে যান।"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"নেটওয়ার্কে লোডের সীমা পেরিয়ে গেছে। পরে আবার চেষ্টা করুন।"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"কানেক্ট করা যাচ্ছে না। পরে আবার চেষ্টা করুন।"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"এই ডিভাইসে নেটওয়ার্ক ব্যবহার করা যাবে না"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"ডিসকানেক্ট করা হয়েছে"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"সেভ করা হয়েছে"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"মিটার্ড"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"মিটার্ড নয়"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g>-এর মাধ্যমে কানেক্ট করা আছে"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g>-এর মাধ্যমে উপলভ্য"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g>-এর মাধ্যমে অটোমেটিক কানেক্ট করা আছে"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"নেটওয়ার্কের রেটিং প্রদানকারীর মাধ্যমে নিজে থেকে কানেক্ট হয়েছে"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"সীমিত কানেকশন"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"ব্যক্তিগত ডিএনএস সার্ভার অ্যাক্সেস করা যাবে না"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"ডিভাইসের সাথে কানেক্ট করা। ইন্টারনেট পরিষেবা প্রদান করা যাচ্ছে না।"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"খারাপ কোয়ালিটি"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"কোনও কিছুই নয়"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"মেয়াদ শেষ হয়ে গেছে"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"সাইন-আপ করতে ট্যাপ করুন"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"সাবস্ক্রিপশন রিনিউ করে কানেক্ট করতে ট্যাপ করুন"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> খোলা হচ্ছে"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"কানেক্ট করা যায়নি"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"সাইন-আপ করা হচ্ছে…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"সাইন-আপ করা যায়নি। আবার চেষ্টা করতে ট্যাপ করুন।"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"সাইন-আপ করা হয়ে গেছে। কানেক্ট করা হচ্ছে…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"এই নেটওয়ার্কে একটি অনন্য আইডি পাবেন যার সাহায্যে এই নেটওয়ার্কের সাথে যুক্ত থাকা ডিভাইসের লোকেশন ট্র্যাক করা যাবে। "<annotation id="url">"আরও জানুন"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"খুব ধীরে"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"ধীরে"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ঠিক আছে"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"মাঝারি"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"দ্রুত"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"খুব দ্রুত"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"নেই"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"মেয়াদ শেষ হয়ে গেছে"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"সাইন-আপ করতে ট্যাপ করুন"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"সাবস্ক্রিপশন রিনিউ করে কানেক্ট করতে ট্যাপ করুন"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> খোলা হচ্ছে"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"কানেক্ট করা যায়নি"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"সাইন-আপ করা হচ্ছে…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"সাইন-আপ করা যায়নি। আবার চেষ্টা করতে ট্যাপ করুন।"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"সাইন-আপ করা হয়ে গেছে। কানেক্ট করা হচ্ছে…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"এই নেটওয়ার্কের কাছে একটি সিম আইডি থাকে যা ব্যবহার করে এই নেটওয়ার্কের সাথে যুক্ত থাকা ডিভাইসের লোকেশন ট্র্যাক করা যেত পারে। "<annotation id="url">"আরও জানুন"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"খুব ধীরে"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"ধীরে"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"বুঝেছি"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"মাঝারি"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"দ্রুত"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"খুব দ্রুত"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-bs/arrays.xml b/libs/WifiTrackerLib/res/values-bs/arrays.xml
index 9428a37..d244126 100644
--- a/libs/WifiTrackerLib/res/values-bs/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-bs/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Skeniranje…"</item>
-    <item msgid="6222852518007967736">"Povezivanje…"</item>
-    <item msgid="1176401854208153464">"Autentifikacija…"</item>
-    <item msgid="1377026397901197257">"Dobivanje IP adrese…"</item>
-    <item msgid="7627139816052121509">"Povezano"</item>
-    <item msgid="1598801023719359130">"Obustavljeno"</item>
-    <item msgid="9160765456671002324">"Prekidanje veze…"</item>
-    <item msgid="8013176736494493734">"Veza je prekinuta"</item>
-    <item msgid="4077393480368783785">"Neuspješno"</item>
-    <item msgid="605372180740008604">"Blokirano"</item>
-    <item msgid="5102306451432929048">"Privremeno izbjegavanje veza lošeg kvaliteta"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Skeniranje…"</item>
+    <item msgid="9055468790485684083">"Povezivanje…"</item>
+    <item msgid="6099499723199990208">"Autentifikacija…"</item>
+    <item msgid="6794055951297347103">"Dobivanje IP adrese…"</item>
+    <item msgid="5450920562291300229">"Povezano"</item>
+    <item msgid="6332116533879646145">"Obustavljeno"</item>
+    <item msgid="294459081501073818">"Prekidanje veze…"</item>
+    <item msgid="1577368920272598676">"Veza je prekinuta"</item>
+    <item msgid="7655843177582495451">"Neuspješno"</item>
+    <item msgid="8953752690917593623">"Blokirano"</item>
+    <item msgid="4400457817750243671">"Privremeno izbjegavanje veze lošeg kvaliteta"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-bs/strings.xml b/libs/WifiTrackerLib/res/values-bs/strings.xml
index efc8884..c68b9e7 100644
--- a/libs/WifiTrackerLib/res/values-bs/strings.xml
+++ b/libs/WifiTrackerLib/res/values-bs/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Automatsko povezivanje je isključeno"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Sačuvano: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Automatsko povezivanje nije moguće"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Nema pristupa internetu"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problem pri autentifikaciji"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Provjerite lozinku i pokušajte ponovo"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Konfiguracija IP adrese nije uspjela"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Onemogućeno"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Pristupna tačka je privremeno puna"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Nije povezano"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Sačuvano"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"S naplatom"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Mreža bez naplate"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Povezano preko <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Dostupno putem mreže <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatski povezano putem mreže <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatski povezano putem ocjenjivača mreže"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Ograničena veza"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Nije moguće pristupiti privatnom DNS serveru"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Nema internetske veze"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatsko povezivanje je isključeno"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Sačuvano putem aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Automatsko povezivanje nije moguće"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Nema pristupa internetu"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problem prilikom autentifikacije"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Provjerite lozinku i pokušajte ponovo"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Konfiguriranje IP adrese nije uspjelo"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Onemogućeno"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Pristupna tačka je privremeno puna"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Privremeno stanje slabe mreže"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Slab signal. Približite se ruteru."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Mreža je premašila kapacitet. Pokušajte ponovo kasnije."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Nije se moguće povezati. Pokušajte ponovo kasnije."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Mreža nije kompatibilna s ovim uređajem"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Veza je prekinuta"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Sačuvano"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"S naplatom"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Bez naplate"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Povezano putem aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Dostupno putem aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatski povezano putem aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatski povezano putem ocjenjivača mreže"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Ograničena veza"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Nije moguće pristupiti privatnom DNS serveru"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Povezano s uređajem. Nije moguće pružiti internetsku vezu."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Nizak kvalitet"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Ništa"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Isteklo"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Dodirnite za registraciju"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Dodirnite da obnovite pretplatu i povežete se"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Otvaranje <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Povezivanje nije uspjelo"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Završavanje registracije…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Registraciju nije moguće izvršiti. Dodirnite da pokušate ponovo."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Registracija je završena. Povezivanje…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Ova mreža prima jedinstveni ID koji se može koristiti za praćenje lokacije uređaja. "<annotation id="url">"Saznajte više"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Veoma sporo"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Sporo"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Uredu"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Srednja brzina"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Brzo"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Veoma brzo"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Ništa"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Isteklo"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Dodirnite za registraciju"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Dodirnite da obnovite pretplatu i povežete se"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Otvaranje <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Povezivanje nije uspjelo"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Završavanje registracije…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Dovršavanje registracije nije uspjelo. Dodirnite da pokušate ponovo."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registracija je završena. Povezivanje…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Ova mreža prima ID SIM-a koji se može koristiti za praćenje lokacije uređaja. "<annotation id="url">"Saznajte više"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Veoma sporo"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Sporo"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"UREDU"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Srednje"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Brzo"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Veoma brzo"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"WiFi mreža se trenutno ne može automatski povezati"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ca/arrays.xml b/libs/WifiTrackerLib/res/values-ca/arrays.xml
index d9b5412..3d226f5 100644
--- a/libs/WifiTrackerLib/res/values-ca/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-ca/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"S\'està cercant…"</item>
-    <item msgid="6222852518007967736">"S\'està connectant…"</item>
-    <item msgid="1176401854208153464">"S\'està autenticant…"</item>
-    <item msgid="1377026397901197257">"S\'està obtenint l\'adreça IP…"</item>
-    <item msgid="7627139816052121509">"Connectada"</item>
-    <item msgid="1598801023719359130">"Suspesa"</item>
-    <item msgid="9160765456671002324">"S\'està desconnectant…"</item>
-    <item msgid="8013176736494493734">"Desconnectada"</item>
-    <item msgid="4077393480368783785">"Incorrecta"</item>
-    <item msgid="605372180740008604">"Bloquejada"</item>
-    <item msgid="5102306451432929048">"S\'està evitant temporalment una connexió feble"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"S\'està cercant…"</item>
+    <item msgid="9055468790485684083">"S\'està connectant…"</item>
+    <item msgid="6099499723199990208">"S\'està autenticant…"</item>
+    <item msgid="6794055951297347103">"S\'està obtenint l\'adreça IP…"</item>
+    <item msgid="5450920562291300229">"Connectada"</item>
+    <item msgid="6332116533879646145">"Suspesa"</item>
+    <item msgid="294459081501073818">"S\'està desconnectant…"</item>
+    <item msgid="1577368920272598676">"Desconnectada"</item>
+    <item msgid="7655843177582495451">"Incorrecta"</item>
+    <item msgid="8953752690917593623">"Bloquejada"</item>
+    <item msgid="4400457817750243671">"S\'està evitant temporalment una connexió feble"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ca/strings.xml b/libs/WifiTrackerLib/res/values-ca/strings.xml
index 83b3f63..fff114c 100644
--- a/libs/WifiTrackerLib/res/values-ca/strings.xml
+++ b/libs/WifiTrackerLib/res/values-ca/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Connexió automàtica desactivada"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Desada per <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"No es connectarà automàticament"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"No hi ha accés a Internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problema d\'autenticació"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Comprova la contrasenya i torna-ho a provar"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Error de configuració d\'IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Desactivat"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"El punt d\'accés està temporalment ple"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Desconnectada"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Desat"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"D\'ús mesurat"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"D\'ús no mesurat"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Connectat mitjançant <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Disponible mitjançant <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Connectada automàticament a través de: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Connectada automàticament a través d\'un proveïdor de valoració de xarxes"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Connexió limitada"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"No es pot accedir al servidor DNS privat"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Sense connexió a Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Connexió automàtica desactivada"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Desada per <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"No es connectarà automàticament"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"No hi ha accés a Internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problema d\'autenticació"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Comprova la contrasenya i torna-ho a provar"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Error de configuració d\'IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Desactivada"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"El punt d\'accés està temporalment ple"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Condicions de xarxa temporalment deficients"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Senyal feble. Prova d\'apropar-te a l\'encaminador."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"La xarxa està sobrecarregada. Torna-ho a provar més tard."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"No es pot establir la connexió. Torna-ho a provar més tard."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"La xarxa no és compatible amb aquest dispositiu"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Desconnectada"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Desada"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"D\'ús mesurat"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"D\'ús no mesurat"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Connectada a través de: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Disponible a través de: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Connectada automàticament a través de: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Connectada automàticament a través d\'un proveïdor de valoració de xarxes"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Connexió limitada"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"No es pot accedir al servidor DNS privat"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Connectat al dispositiu. Sense accés a Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Qualitat baixa"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Cap"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Caducada"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Toca per registrar-te"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Toca per renovar la subscripció i connectar-te"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"S\'està obrint <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"No s\'ha pogut connectar"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"S\'està completant el registre…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"No s\'ha pogut completar el registre. Toca per tornar-ho a provar."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"S\'ha completat el registre. S\'està connectant…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Aquesta xarxa rep un identificador únic que es pot utilitzar per fer el seguiment de la ubicació del dispositiu. "<annotation id="url">"Més informació"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Molt lenta"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lenta"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Correcta"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Mitjana"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Ràpida"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Molt ràpida"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Cap"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Caducada"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Toca per registrar-te"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Toca per renovar la subscripció i connectar-te"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"S\'està obrint <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"No s\'ha pogut connectar"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"S\'està completant el registre…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"No s\'ha pogut completar el registre. Toca per tornar-ho a provar."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"S\'ha completat el registre. S\'està connectant…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Aquesta xarxa rep un identificador de SIM que es pot utilitzar per fer el seguiment de la ubicació del dispositiu. "<annotation id="url">"Més informació"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Molt lenta"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lenta"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Acceptable"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Mitjana"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Ràpida"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Molt ràpida"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Per ara la Wi‑Fi no es connectarà automàticament"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-cs/arrays.xml b/libs/WifiTrackerLib/res/values-cs/arrays.xml
index b28d2d1..99b6e82 100644
--- a/libs/WifiTrackerLib/res/values-cs/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-cs/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Vyhledávání…"</item>
-    <item msgid="6222852518007967736">"Připojování…"</item>
-    <item msgid="1176401854208153464">"Ověřování…"</item>
-    <item msgid="1377026397901197257">"Načítání IP adresy…"</item>
-    <item msgid="7627139816052121509">"Připojeno"</item>
-    <item msgid="1598801023719359130">"Pozastaveno"</item>
-    <item msgid="9160765456671002324">"Odpojování…"</item>
-    <item msgid="8013176736494493734">"Odpojeno"</item>
-    <item msgid="4077393480368783785">"Neúspěšné"</item>
-    <item msgid="605372180740008604">"Blokováno"</item>
-    <item msgid="5102306451432929048">"Dočasné předcházení slabému připojení"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Vyhledávání…"</item>
+    <item msgid="9055468790485684083">"Připojování…"</item>
+    <item msgid="6099499723199990208">"Ověřování…"</item>
+    <item msgid="6794055951297347103">"Načítání IP adresy…"</item>
+    <item msgid="5450920562291300229">"Připojeno"</item>
+    <item msgid="6332116533879646145">"Pozastaven"</item>
+    <item msgid="294459081501073818">"Odpojování…"</item>
+    <item msgid="1577368920272598676">"Odpojeno"</item>
+    <item msgid="7655843177582495451">"Neúspěšné"</item>
+    <item msgid="8953752690917593623">"Blokováno"</item>
+    <item msgid="4400457817750243671">"Dočasné předcházení slabému připojení"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-cs/strings.xml b/libs/WifiTrackerLib/res/values-cs/strings.xml
index f2317e8..2e4d073 100644
--- a/libs/WifiTrackerLib/res/values-cs/strings.xml
+++ b/libs/WifiTrackerLib/res/values-cs/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Automatické připojení je vypnuté"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Uloženo uživatelem <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Nelze se automaticky připojit"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Nejste připojeni k internetu"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problém s ověřením"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Zkontrolujte heslo a zkuste to znovu"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Selhání konfigurace protokolu IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Vypnuto"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Přístupový bod je dočasně zaplněn"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Odpojeno"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Uloženo"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Měřená"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Neměřená"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Připojeno přes <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Dostupné přes <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automaticky připojeno přes <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automaticky připojeno přes poskytovatele hodnocení sítí"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Omezené připojení"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Nelze získat přístup k soukromému serveru DNS"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Nejste připojeni k internetu"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatické připojení je vypnuté"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Uloženo uživatelem <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Nelze se automaticky připojit"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Nejste připojeni k internetu"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problém s ověřením"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Zkontrolujte heslo a zkuste to znovu"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Selhání konfigurace protokolu IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Vypnuto"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Přístupový bod je dočasně zaplněn"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Dočasně slabé připojení k síti"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Slabý signál. Zkuste se přesunout blíž k routeru."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Síť je přetížená. Zkuste to později."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Nejde se připojit. Zkuste to později."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Síť není kompatibilní s tímto zařízením"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Odpojeno"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Uloženo"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Měřená"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Neměřená"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Připojeno přes <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Dostupné přes <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automaticky připojeno přes <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automaticky připojeno přes poskytovatele hodnocení sítí"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Omezené připojení"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Nelze získat přístup k soukromému serveru DNS"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Připojeno k zařízení. Internet není k dispozici."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Nízká kvalita"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Žádné"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Platnost vypršela"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Klepnutím se zaregistrujete"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Klepnutím obnovíte předplatné a připojíte se"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Spouštění aplikace <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Nelze se připojit"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Dokončování registrace…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Registraci se nepodařilo dokončit. Klepnutím opakujte akci."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Registrace byla dokončena. Připojování…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Tato síť dostane jedinečný identifikátor, pomocí kterého lze sledovat polohu zařízení. "<annotation id="url">"Další informace"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Velmi pomalá"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Pomalá"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Střední"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Rychlá"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Velmi rychlá"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"–"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Vypršelo"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Klepnutím se zaregistrujete"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Klepnutím obnovíte předplatné a připojíte se"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Spouštění aplikace <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Nelze se připojit"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Dokončování registrace…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Registraci se nepodařilo dokončit. Klepnutím opakujte akci."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registrace byla dokončena. Připojování…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Tato síť dostane identifikátor SIM karty, pomocí kterého lze sledovat polohu zařízení. "<annotation id="url">"Další informace"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Velmi pomalá"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Pomalá"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Střední"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Rychlá"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Velmi rychlá"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi se prozatím nebude připojovat automaticky"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-da/arrays.xml b/libs/WifiTrackerLib/res/values-da/arrays.xml
index 118369b..f447f76 100644
--- a/libs/WifiTrackerLib/res/values-da/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-da/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Scanner…"</item>
-    <item msgid="6222852518007967736">"Opretter forbindelse…"</item>
-    <item msgid="1176401854208153464">"Godkender…"</item>
-    <item msgid="1377026397901197257">"Henter IP-adresse…"</item>
-    <item msgid="7627139816052121509">"Forbundet"</item>
-    <item msgid="1598801023719359130">"Suspenderet"</item>
-    <item msgid="9160765456671002324">"Afbryder…"</item>
-    <item msgid="8013176736494493734">"Afbrudt"</item>
-    <item msgid="4077393480368783785">"Mislykkedes"</item>
-    <item msgid="605372180740008604">"Blokeret"</item>
-    <item msgid="5102306451432929048">"Undgår midlertidigt dårlig forbindelse"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Søger…"</item>
+    <item msgid="9055468790485684083">"Opretter forbindelse…"</item>
+    <item msgid="6099499723199990208">"Godkender…"</item>
+    <item msgid="6794055951297347103">"Henter IP-adresse…"</item>
+    <item msgid="5450920562291300229">"Forbundet"</item>
+    <item msgid="6332116533879646145">"Suspenderet"</item>
+    <item msgid="294459081501073818">"Afbryder…"</item>
+    <item msgid="1577368920272598676">"Afbrudt"</item>
+    <item msgid="7655843177582495451">"Mislykkedes"</item>
+    <item msgid="8953752690917593623">"Blokeret"</item>
+    <item msgid="4400457817750243671">"Undgår midlertidigt dårlig forbindelse"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-da/strings.xml b/libs/WifiTrackerLib/res/values-da/strings.xml
index 758bc1a..342783f 100644
--- a/libs/WifiTrackerLib/res/values-da/strings.xml
+++ b/libs/WifiTrackerLib/res/values-da/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Automatisk forbindelse til Wi-Fi er deaktiveret"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Gemt af <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Der oprettes ikke automatisk forbindelse"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Ingen internetadgang"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problem med godkendelse"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Tjek adgangskoden, og prøv igen"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP-konfigurationsfejl"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Deaktiveret"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Adgangspunktet er midlertidigt fuldt"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Afbrudt"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Gemt"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Forbrugsafregnet"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Ikke forbrugsafregnet"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Forbundet via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Tilgængeligt via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Der er oprettet automatisk forbindelse via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatisk forbundet via udbyder af netværksvurdering"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Begrænset forbindelse"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Der er ikke adgang til den private DNS-server"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Intet internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatisk forbindelse er deaktiveret"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Gemt af <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Der oprettes ikke automatisk forbindelse"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Ingen internetadgang"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problem med godkendelse"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Tjek adgangskoden, og prøv igen"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP-konfigurationsfejl"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Deaktiveret"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Adgangspunktet er midlertidigt fuldt"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Midlertidig dårlig netværksforbindelse"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Svagt signal. Prøv at rykke tættere på routeren."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Netværkets kapacitet er overskredet. Prøv igen senere."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Der kan ikke oprettes forbindelse. Prøv igen senere."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Netværket er ikke kompatibelt med denne enhed"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Afbrudt"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Gemt"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Forbrugsafregnet"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Ikke forbrugsafregnet"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Forbundet via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Tilgængeligt via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatisk forbundet via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatisk forbundet via udbyder af netværksvurdering"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Begrænset forbindelse"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Der er ikke adgang til den private DNS-server"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Forbundet til enheden. Der er ikke noget internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Dårlig kvalitet"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Ingen"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Udløbet"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Tryk for at registrere"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Tryk for at forny abonnementet, og opret forbindelse"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Åbner <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Der kunne ikke oprettes forbindelse"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Fuldfører registrering…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Registreringen kunne ikke fuldføres. Tryk for at prøve igen."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Registreringen er fuldført. Opretter forbindelse…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Dette netværk kræver et unikt id, der kan bruges til at spore enhedens placering. "<annotation id="url">"Få flere oplysninger"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Meget langsom"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Langsom"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Middel"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Hurtig"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Meget hurtig"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Ingen"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Udløbet"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Tryk for at registrere"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Tryk for at forny abonnementet, og opret forbindelse"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Åbner <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Der kunne ikke oprettes forbindelse"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Fuldfører registrering…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Registreringen kunne ikke fuldføres. Tryk for at prøve igen."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registreringen er fuldført. Opretter forbindelse…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Dette netværk kræver et SIM-id, der kan bruges til at spore enhedens placering. "<annotation id="url">"Få flere oplysninger"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Meget langsom"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Langsom"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Middel"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Hurtig"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Meget hurtig"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Der oprettes ikke automatisk forbindelse til Wi-Fi-netværket i øjeblikket"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-de/arrays.xml b/libs/WifiTrackerLib/res/values-de/arrays.xml
index 618348c..581e4b3 100644
--- a/libs/WifiTrackerLib/res/values-de/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-de/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Scan läuft…"</item>
-    <item msgid="6222852518007967736">"Verbindung wird hergestellt…"</item>
-    <item msgid="1176401854208153464">"Wird authentifiziert…"</item>
-    <item msgid="1377026397901197257">"IP-Adresse wird abgerufen…"</item>
-    <item msgid="7627139816052121509">"Verbunden"</item>
-    <item msgid="1598801023719359130">"Gesperrt"</item>
-    <item msgid="9160765456671002324">"Verbindung wird getrennt…"</item>
-    <item msgid="8013176736494493734">"Nicht verbunden"</item>
-    <item msgid="4077393480368783785">"Fehlgeschlagen"</item>
-    <item msgid="605372180740008604">"Blockiert"</item>
-    <item msgid="5102306451432929048">"Schlechte Internetverbindung wird vorübergehend vermieden"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Wird gescannt…"</item>
+    <item msgid="9055468790485684083">"Verbindung wird hergestellt…"</item>
+    <item msgid="6099499723199990208">"Wird authentifiziert…"</item>
+    <item msgid="6794055951297347103">"IP-Adresse wird abgerufen…"</item>
+    <item msgid="5450920562291300229">"Verbunden"</item>
+    <item msgid="6332116533879646145">"Gesperrt"</item>
+    <item msgid="294459081501073818">"Verbindung wird getrennt…"</item>
+    <item msgid="1577368920272598676">"Nicht verbunden"</item>
+    <item msgid="7655843177582495451">"Fehlgeschlagen"</item>
+    <item msgid="8953752690917593623">"Blockiert"</item>
+    <item msgid="4400457817750243671">"Schlechte Internetverbindung wird vorübergehend vermieden"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-de/strings.xml b/libs/WifiTrackerLib/res/values-de/strings.xml
index 2fdabfa..127c10a 100644
--- a/libs/WifiTrackerLib/res/values-de/strings.xml
+++ b/libs/WifiTrackerLib/res/values-de/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Automatische Verbindung ist deaktiviert"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Gespeichert durch <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Kein automatischer Verbindungsaufbau"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Kein Internetzugriff"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Authentifizierungsproblem"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Prüfe das Passwort und versuch es noch einmal"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP-Konfigurationsfehler"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Deaktiviert"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Zugangspunkt vorübergehend voll belegt"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Nicht verbunden"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Gespeichert"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Kostenpflichtig"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Ohne Datenlimit"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Verbunden über <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Über <xliff:g id="NAME">%1$s</xliff:g> verfügbar"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatisch verbunden über <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatisch über Anbieter von Netzwerkbewertungen verbunden"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Eingeschränkte Verbindung"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Auf den privaten DNS-Server kann nicht zugegriffen werden"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Kein Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatische Verbindung ist deaktiviert"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Gespeichert durch <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Kein automatischer Verbindungsaufbau"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Kein Internetzugriff"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Authentifizierungsproblem"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Prüfe das Passwort und versuch es noch einmal"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP-Konfigurationsfehler"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Deaktiviert"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Zugangspunkt vorübergehend voll belegt"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Vorübergehend schlechte Netzwerkverbindung"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Schwaches Signal. Geh näher an den Router heran."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Das Netzwerk ist ausgelastet. Versuch es später noch einmal."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Verbindung nicht möglich. Versuch es später noch einmal."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Das Netzwerk ist mit diesem Gerät nicht kompatibel"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Nicht verbunden"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Gespeichert"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Kostenpflichtig"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Ohne Datenlimit"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Verbunden über <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Über <xliff:g id="NAME">%1$s</xliff:g> verfügbar"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatisch verbunden über <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatisch über Anbieter von Netzwerkbewertungen verbunden"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Eingeschränkte Verbindung"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Auf den privaten DNS-Server kann nicht zugegriffen werden"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Mit Gerät verbunden. Internetverbindung nicht möglich."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Niedrige Qualität"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Keine"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Abgelaufen"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Zum Registrieren tippen"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Tippen, um das Abo zu verlängern und eine Verbindung herzustellen"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> wird geöffnet"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Verbindung nicht möglich"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Registrierung wird abgeschlossen…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Registrierung konnte nicht abgeschlossen werden. Tippe, um es noch einmal zu versuchen."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Registrierung abgeschlossen. Verbindung wird hergestellt…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Dieses Netzwerk empfängt eine eindeutige ID, mit der der Gerätestandort erfasst werden kann. "<annotation id="url">"Weitere Informationen"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Sehr langsam"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Langsam"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Ok"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Mittel"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Schnell"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Sehr schnell"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"–"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Abgelaufen"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Zum Anmelden tippen"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Tippen, um das Abo zu verlängern und eine Verbindung herzustellen"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> wird geöffnet"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Verbindung nicht möglich"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Anmeldung wird abgeschlossen…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Registrierung konnte nicht abgeschlossen werden. Tippe, um es noch einmal zu versuchen."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registrierung abgeschlossen. Verbindung wird hergestellt…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Dieses Netzwerk empfängt eine SIM-ID, mit der der Gerätestandort erfasst werden kann. "<annotation id="url">"Weitere Informationen"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Sehr langsam"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Langsam"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Mittel"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Schnell"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Sehr schnell"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-el/arrays.xml b/libs/WifiTrackerLib/res/values-el/arrays.xml
index b5cf1f5..dcc3748 100644
--- a/libs/WifiTrackerLib/res/values-el/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-el/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Σάρωση…"</item>
-    <item msgid="6222852518007967736">"Σύνδεση…"</item>
-    <item msgid="1176401854208153464">"Έλεγχος ταυτότητας…"</item>
-    <item msgid="1377026397901197257">"Λήψη διεύθυνσης IP…"</item>
-    <item msgid="7627139816052121509">"Συνδέθηκε"</item>
-    <item msgid="1598801023719359130">"Σε αναστολή"</item>
-    <item msgid="9160765456671002324">"Αποσύνδεση…"</item>
-    <item msgid="8013176736494493734">"Αποσυνδέθηκε"</item>
-    <item msgid="4077393480368783785">"Ανεπιτυχής"</item>
-    <item msgid="605372180740008604">"Αποκλείστηκε"</item>
-    <item msgid="5102306451432929048">"Προσωρινή αποφυγή αδύναμης σύνδεσης"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Σάρωση…"</item>
+    <item msgid="9055468790485684083">"Σύνδεση…"</item>
+    <item msgid="6099499723199990208">"Έλεγχος ταυτότητας…"</item>
+    <item msgid="6794055951297347103">"Λήψη διεύθυνσης IP…"</item>
+    <item msgid="5450920562291300229">"Συνδέθηκε"</item>
+    <item msgid="6332116533879646145">"Σε αναστολή"</item>
+    <item msgid="294459081501073818">"Αποσύνδεση…"</item>
+    <item msgid="1577368920272598676">"Αποσυνδέθηκε"</item>
+    <item msgid="7655843177582495451">"Ανεπιτυχής"</item>
+    <item msgid="8953752690917593623">"Αποκλείστηκε"</item>
+    <item msgid="4400457817750243671">"Προσωρινή αποφυγή αδύναμης σύνδεσης"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-el/strings.xml b/libs/WifiTrackerLib/res/values-el/strings.xml
index 3e3d2ba..13ac0fb 100644
--- a/libs/WifiTrackerLib/res/values-el/strings.xml
+++ b/libs/WifiTrackerLib/res/values-el/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Η αυτόματη σύνδεση είναι απενεργοποιημένη"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Αποθηκεύτηκε από <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Δεν συνδέεται αυτόματα"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Δεν υπάρχει πρόσβαση στο διαδίκτυο."</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Πρόβλημα ελέγχου ταυτότητας"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Ελέγξτε τον κωδικό πρόσβασης και δοκιμάστε ξανά"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Αποτυχία διαμόρφωσης διεύθυνσης IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Απενεργοποιημένο"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Το σημείο πρόσβασης είναι προσωρινά πλήρες"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Αποσυνδεδεμένο"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Αποθηκευμένο"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Μέτρηση με βάση τη χρήση"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Χωρίς μέτρηση με βάση τη χρήση"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Συνδέθηκε μέσω <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Διαθέσιμο μέσω <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Συνδέθηκε αυτόματα μέσω <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Συνδέθηκε αυτόματα μέσω παρόχου αξιολόγησης δικτύου"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Περιορισμένη σύνδεση"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Δεν είναι δυνατή η πρόσβαση στον ιδιωτικό διακομιστή DNS."</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Χωρίς σύνδεση στο διαδίκτυο"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Η αυτ. σύνδεση είναι ανενεργή"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Αποθηκεύτηκε από <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Δεν συνδέεται αυτόματα"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Δεν υπάρχει πρόσβαση στο διαδίκτυο"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Πρόβλημα ελέγχου ταυτότητας"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Ελέγξτε τον κωδικό πρόσβασης και δοκιμάστε ξανά"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Αποτυχία διαμόρφωσης διεύθυνσης IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Απενεργοποιημένη"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Το σημείο πρόσβασης είναι προσωρινά πλήρες"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Προσωρινά κακές συνθήκες δικτύου"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Το σήμα είναι ασθενές. Δοκιμάστε να μετακινηθείτε πιο κοντά στον δρομολογητή."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Υπέρβαση χωρητικότητας δικτύου. Δοκιμάστε ξανά αργότερα."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Δεν είναι δυνατή η σύνδεση. Δοκιμάστε ξανά αργότερα."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Το δίκτυο δεν είναι συμβατό με αυτήν τη συσκευή"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Αποσυνδέθηκε"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Αποθηκεύτηκε"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Με ογκοχρέωση"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Χωρίς περιορισμούς"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Συνδέθηκε μέσω <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Διαθέσιμο μέσω <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Συνδέθηκε αυτόματα μέσω <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Συνδέθηκε αυτόματα μέσω παρόχου αξιολόγησης δικτύου"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Περιορισμένη σύνδεση"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Δεν είναι δυνατή η πρόσβαση στον ιδιωτικό διακομιστή DNS."</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Συνδέθηκε στη συσκευή. Δεν είναι δυνατή η παροχή διαδικτύου."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Χαμηλή ποιότητα"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Καμία"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Έληξε"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Πατήστε για εγγραφή"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Πατήστε για να ανανεώσετε τη συνδρομή σας και να συνδεθείτε."</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Άνοιγμα <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Αδυναμία σύνδεσης"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Ολοκλήρωση εγγραφής…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Δεν ήταν δυνατή η ολοκλήρωση της εγγραφής. Πατήστε για να δοκιμάσετε ξανά."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Η εγγραφή ολοκληρώθηκε. Σύνδεση…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Αυτό το δίκτυο λαμβάνει ένα μοναδικό αναγνωριστικό το οποίο μπορεί να χρησιμοποιηθεί για τον εντοπισμό της τοποθεσίας της συσκευής. "<annotation id="url">"Μάθετε περισσότερα"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Πολύ αργή"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Αργή"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ΟΚ"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Μέτρια"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Γρήγορη"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Πολύ γρήγορη"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Καμία"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Έληξε"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Πατήστε για εγγραφή"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Πατήστε, για να ανανεώσετε τη συνδρομή σας και να συνδεθείτε."</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Άνοιγμα <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Αδυναμία σύνδεσης"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Ολοκλήρωση εγγραφής…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Δεν ήταν δυνατή η ολοκλήρωση της εγγραφής. Πατήστε, για να δοκιμάσετε ξανά."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Η εγγραφή ολοκληρώθηκε. Σύνδεση…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Αυτό το δίκτυο λαμβάνει ένα αναγνωριστικό SIM το οποίο μπορεί να χρησιμοποιηθεί για τον εντοπισμό της τοποθεσίας της συσκευής. "<annotation id="url">"Μάθετε περισσότερα"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Πολύ αργή"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Αργή"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ΟΚ"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Μέτρια"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Γρήγορη"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Πολύ γρήγορη"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Δεν θα γίνεται προς το παρόν αυτόματη σύνδεση Wi-Fi"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-en-rAU/arrays.xml b/libs/WifiTrackerLib/res/values-en-rAU/arrays.xml
index 904043f..4d41e3f 100644
--- a/libs/WifiTrackerLib/res/values-en-rAU/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-en-rAU/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Scanning…"</item>
-    <item msgid="6222852518007967736">"Connecting…"</item>
-    <item msgid="1176401854208153464">"Authenticating…"</item>
-    <item msgid="1377026397901197257">"Obtaining IP address…"</item>
-    <item msgid="7627139816052121509">"Connected"</item>
-    <item msgid="1598801023719359130">"Suspended"</item>
-    <item msgid="9160765456671002324">"Disconnecting…"</item>
-    <item msgid="8013176736494493734">"Disconnected"</item>
-    <item msgid="4077393480368783785">"Unsuccessful"</item>
-    <item msgid="605372180740008604">"Blocked"</item>
-    <item msgid="5102306451432929048">"Temporarily avoiding poor connection"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Scanning…"</item>
+    <item msgid="9055468790485684083">"Connecting…"</item>
+    <item msgid="6099499723199990208">"Authenticating…"</item>
+    <item msgid="6794055951297347103">"Obtaining IP address…"</item>
+    <item msgid="5450920562291300229">"Connected"</item>
+    <item msgid="6332116533879646145">"Suspended"</item>
+    <item msgid="294459081501073818">"Disconnecting…"</item>
+    <item msgid="1577368920272598676">"Disconnected"</item>
+    <item msgid="7655843177582495451">"Unsuccessful"</item>
+    <item msgid="8953752690917593623">"Blocked"</item>
+    <item msgid="4400457817750243671">"Temporarily avoiding poor connection"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-en-rAU/strings.xml b/libs/WifiTrackerLib/res/values-en-rAU/strings.xml
index e191bd3..f64c328 100644
--- a/libs/WifiTrackerLib/res/values-en-rAU/strings.xml
+++ b/libs/WifiTrackerLib/res/values-en-rAU/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Auto-connect is off"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Saved by <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Won’t automatically connect"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"No Internet access"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Authentication problem"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Check password and try again"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP configuration failure"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Disabled"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Access point temporarily full"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Disconnected"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Saved"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Metered"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Unmetered"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Available via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatically connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatically connected via network rating provider"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Limited connection"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Private DNS server cannot be accessed"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"No Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Auto-connect is off"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Saved by <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Won’t automatically connect"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"No Internet access"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Authentication problem"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Check password and try again"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP configuration failure"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Disabled"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Access point temporarily full"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Temporary poor network conditions"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Weak signal. Try moving closer to the router."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Network is over capacity. Try again later."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Can\'t connect. Try again later."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Network not compatible with this device"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Disconnected"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Saved"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Metered"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Unmetered"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Available via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatically connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatically connected via network rating provider"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Limited connection"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Private DNS server cannot be accessed"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Connected to device. Can\'t provide Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Low quality"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"None"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Expired"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Tap to sign up"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Tap to renew subscription and connect"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Opening <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Couldn’t connect"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Completing sign-up…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Couldn’t complete sign-up. Tap to try again."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Sign-up complete. Connecting…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"This network receives a unique ID that can be used to track device location. "<annotation id="url">"Learn more"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Very slow"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Slow"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Medium"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Fast"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Very fast"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"None"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Expired"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Tap to sign up"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Tap to renew subscription and connect"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Opening <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Couldn’t connect"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Completing sign-up…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Couldn’t complete sign-up. Tap to try again."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Sign-up complete. Connecting…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"This network receives a SIM ID that can be used to track device location. "<annotation id="url">"Learn more"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Very slow"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Slow"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Medium"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Fast"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Very fast"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi won’t auto-connect for now"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-en-rCA/arrays.xml b/libs/WifiTrackerLib/res/values-en-rCA/arrays.xml
index 904043f..4d41e3f 100644
--- a/libs/WifiTrackerLib/res/values-en-rCA/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-en-rCA/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Scanning…"</item>
-    <item msgid="6222852518007967736">"Connecting…"</item>
-    <item msgid="1176401854208153464">"Authenticating…"</item>
-    <item msgid="1377026397901197257">"Obtaining IP address…"</item>
-    <item msgid="7627139816052121509">"Connected"</item>
-    <item msgid="1598801023719359130">"Suspended"</item>
-    <item msgid="9160765456671002324">"Disconnecting…"</item>
-    <item msgid="8013176736494493734">"Disconnected"</item>
-    <item msgid="4077393480368783785">"Unsuccessful"</item>
-    <item msgid="605372180740008604">"Blocked"</item>
-    <item msgid="5102306451432929048">"Temporarily avoiding poor connection"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Scanning…"</item>
+    <item msgid="9055468790485684083">"Connecting…"</item>
+    <item msgid="6099499723199990208">"Authenticating…"</item>
+    <item msgid="6794055951297347103">"Obtaining IP address…"</item>
+    <item msgid="5450920562291300229">"Connected"</item>
+    <item msgid="6332116533879646145">"Suspended"</item>
+    <item msgid="294459081501073818">"Disconnecting…"</item>
+    <item msgid="1577368920272598676">"Disconnected"</item>
+    <item msgid="7655843177582495451">"Unsuccessful"</item>
+    <item msgid="8953752690917593623">"Blocked"</item>
+    <item msgid="4400457817750243671">"Temporarily avoiding poor connection"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-en-rCA/strings.xml b/libs/WifiTrackerLib/res/values-en-rCA/strings.xml
index e191bd3..f64c328 100644
--- a/libs/WifiTrackerLib/res/values-en-rCA/strings.xml
+++ b/libs/WifiTrackerLib/res/values-en-rCA/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Auto-connect is off"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Saved by <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Won’t automatically connect"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"No Internet access"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Authentication problem"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Check password and try again"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP configuration failure"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Disabled"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Access point temporarily full"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Disconnected"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Saved"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Metered"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Unmetered"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Available via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatically connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatically connected via network rating provider"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Limited connection"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Private DNS server cannot be accessed"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"No Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Auto-connect is off"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Saved by <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Won’t automatically connect"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"No Internet access"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Authentication problem"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Check password and try again"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP configuration failure"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Disabled"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Access point temporarily full"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Temporary poor network conditions"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Weak signal. Try moving closer to the router."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Network is over capacity. Try again later."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Can\'t connect. Try again later."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Network not compatible with this device"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Disconnected"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Saved"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Metered"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Unmetered"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Available via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatically connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatically connected via network rating provider"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Limited connection"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Private DNS server cannot be accessed"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Connected to device. Can\'t provide Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Low quality"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"None"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Expired"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Tap to sign up"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Tap to renew subscription and connect"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Opening <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Couldn’t connect"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Completing sign-up…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Couldn’t complete sign-up. Tap to try again."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Sign-up complete. Connecting…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"This network receives a unique ID that can be used to track device location. "<annotation id="url">"Learn more"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Very slow"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Slow"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Medium"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Fast"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Very fast"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"None"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Expired"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Tap to sign up"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Tap to renew subscription and connect"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Opening <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Couldn’t connect"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Completing sign-up…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Couldn’t complete sign-up. Tap to try again."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Sign-up complete. Connecting…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"This network receives a SIM ID that can be used to track device location. "<annotation id="url">"Learn more"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Very slow"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Slow"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Medium"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Fast"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Very fast"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi won’t auto-connect for now"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-en-rGB/arrays.xml b/libs/WifiTrackerLib/res/values-en-rGB/arrays.xml
index 904043f..4d41e3f 100644
--- a/libs/WifiTrackerLib/res/values-en-rGB/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-en-rGB/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Scanning…"</item>
-    <item msgid="6222852518007967736">"Connecting…"</item>
-    <item msgid="1176401854208153464">"Authenticating…"</item>
-    <item msgid="1377026397901197257">"Obtaining IP address…"</item>
-    <item msgid="7627139816052121509">"Connected"</item>
-    <item msgid="1598801023719359130">"Suspended"</item>
-    <item msgid="9160765456671002324">"Disconnecting…"</item>
-    <item msgid="8013176736494493734">"Disconnected"</item>
-    <item msgid="4077393480368783785">"Unsuccessful"</item>
-    <item msgid="605372180740008604">"Blocked"</item>
-    <item msgid="5102306451432929048">"Temporarily avoiding poor connection"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Scanning…"</item>
+    <item msgid="9055468790485684083">"Connecting…"</item>
+    <item msgid="6099499723199990208">"Authenticating…"</item>
+    <item msgid="6794055951297347103">"Obtaining IP address…"</item>
+    <item msgid="5450920562291300229">"Connected"</item>
+    <item msgid="6332116533879646145">"Suspended"</item>
+    <item msgid="294459081501073818">"Disconnecting…"</item>
+    <item msgid="1577368920272598676">"Disconnected"</item>
+    <item msgid="7655843177582495451">"Unsuccessful"</item>
+    <item msgid="8953752690917593623">"Blocked"</item>
+    <item msgid="4400457817750243671">"Temporarily avoiding poor connection"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-en-rGB/strings.xml b/libs/WifiTrackerLib/res/values-en-rGB/strings.xml
index e191bd3..f64c328 100644
--- a/libs/WifiTrackerLib/res/values-en-rGB/strings.xml
+++ b/libs/WifiTrackerLib/res/values-en-rGB/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Auto-connect is off"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Saved by <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Won’t automatically connect"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"No Internet access"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Authentication problem"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Check password and try again"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP configuration failure"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Disabled"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Access point temporarily full"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Disconnected"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Saved"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Metered"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Unmetered"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Available via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatically connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatically connected via network rating provider"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Limited connection"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Private DNS server cannot be accessed"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"No Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Auto-connect is off"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Saved by <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Won’t automatically connect"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"No Internet access"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Authentication problem"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Check password and try again"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP configuration failure"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Disabled"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Access point temporarily full"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Temporary poor network conditions"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Weak signal. Try moving closer to the router."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Network is over capacity. Try again later."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Can\'t connect. Try again later."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Network not compatible with this device"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Disconnected"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Saved"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Metered"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Unmetered"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Available via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatically connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatically connected via network rating provider"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Limited connection"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Private DNS server cannot be accessed"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Connected to device. Can\'t provide Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Low quality"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"None"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Expired"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Tap to sign up"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Tap to renew subscription and connect"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Opening <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Couldn’t connect"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Completing sign-up…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Couldn’t complete sign-up. Tap to try again."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Sign-up complete. Connecting…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"This network receives a unique ID that can be used to track device location. "<annotation id="url">"Learn more"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Very slow"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Slow"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Medium"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Fast"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Very fast"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"None"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Expired"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Tap to sign up"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Tap to renew subscription and connect"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Opening <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Couldn’t connect"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Completing sign-up…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Couldn’t complete sign-up. Tap to try again."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Sign-up complete. Connecting…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"This network receives a SIM ID that can be used to track device location. "<annotation id="url">"Learn more"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Very slow"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Slow"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Medium"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Fast"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Very fast"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi won’t auto-connect for now"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-en-rIN/arrays.xml b/libs/WifiTrackerLib/res/values-en-rIN/arrays.xml
index 904043f..4d41e3f 100644
--- a/libs/WifiTrackerLib/res/values-en-rIN/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-en-rIN/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Scanning…"</item>
-    <item msgid="6222852518007967736">"Connecting…"</item>
-    <item msgid="1176401854208153464">"Authenticating…"</item>
-    <item msgid="1377026397901197257">"Obtaining IP address…"</item>
-    <item msgid="7627139816052121509">"Connected"</item>
-    <item msgid="1598801023719359130">"Suspended"</item>
-    <item msgid="9160765456671002324">"Disconnecting…"</item>
-    <item msgid="8013176736494493734">"Disconnected"</item>
-    <item msgid="4077393480368783785">"Unsuccessful"</item>
-    <item msgid="605372180740008604">"Blocked"</item>
-    <item msgid="5102306451432929048">"Temporarily avoiding poor connection"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Scanning…"</item>
+    <item msgid="9055468790485684083">"Connecting…"</item>
+    <item msgid="6099499723199990208">"Authenticating…"</item>
+    <item msgid="6794055951297347103">"Obtaining IP address…"</item>
+    <item msgid="5450920562291300229">"Connected"</item>
+    <item msgid="6332116533879646145">"Suspended"</item>
+    <item msgid="294459081501073818">"Disconnecting…"</item>
+    <item msgid="1577368920272598676">"Disconnected"</item>
+    <item msgid="7655843177582495451">"Unsuccessful"</item>
+    <item msgid="8953752690917593623">"Blocked"</item>
+    <item msgid="4400457817750243671">"Temporarily avoiding poor connection"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-en-rIN/strings.xml b/libs/WifiTrackerLib/res/values-en-rIN/strings.xml
index e191bd3..f64c328 100644
--- a/libs/WifiTrackerLib/res/values-en-rIN/strings.xml
+++ b/libs/WifiTrackerLib/res/values-en-rIN/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Auto-connect is off"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Saved by <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Won’t automatically connect"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"No Internet access"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Authentication problem"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Check password and try again"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP configuration failure"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Disabled"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Access point temporarily full"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Disconnected"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Saved"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Metered"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Unmetered"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Available via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatically connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatically connected via network rating provider"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Limited connection"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Private DNS server cannot be accessed"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"No Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Auto-connect is off"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Saved by <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Won’t automatically connect"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"No Internet access"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Authentication problem"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Check password and try again"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP configuration failure"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Disabled"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Access point temporarily full"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Temporary poor network conditions"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Weak signal. Try moving closer to the router."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Network is over capacity. Try again later."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Can\'t connect. Try again later."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Network not compatible with this device"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Disconnected"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Saved"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Metered"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Unmetered"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Available via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatically connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatically connected via network rating provider"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Limited connection"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Private DNS server cannot be accessed"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Connected to device. Can\'t provide Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Low quality"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"None"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Expired"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Tap to sign up"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Tap to renew subscription and connect"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Opening <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Couldn’t connect"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Completing sign-up…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Couldn’t complete sign-up. Tap to try again."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Sign-up complete. Connecting…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"This network receives a unique ID that can be used to track device location. "<annotation id="url">"Learn more"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Very slow"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Slow"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Medium"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Fast"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Very fast"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"None"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Expired"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Tap to sign up"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Tap to renew subscription and connect"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Opening <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Couldn’t connect"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Completing sign-up…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Couldn’t complete sign-up. Tap to try again."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Sign-up complete. Connecting…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"This network receives a SIM ID that can be used to track device location. "<annotation id="url">"Learn more"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Very slow"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Slow"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Medium"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Fast"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Very fast"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi won’t auto-connect for now"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-en-rXC/arrays.xml b/libs/WifiTrackerLib/res/values-en-rXC/arrays.xml
index 27b9580..454651d 100644
--- a/libs/WifiTrackerLib/res/values-en-rXC/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-en-rXC/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‎‎‏‏‎‎‏‎‎‏‎‏‎‎‏‏‏‎‏‎‏‎‏‏‎‎‎‎‎‎‏‎‎‎‎‏‎‏‎‎‏‎‏‏‏‎‏‎‎Scanning…‎‏‎‎‏‎"</item>
-    <item msgid="6222852518007967736">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‏‏‏‎‎‎‎‎‎‎‎‏‏‎‏‏‎‎‏‎‏‎‎‏‎‎‎‎‏‏‎‎‎‎‎‏‎‏‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎Connecting…‎‏‎‎‏‎"</item>
-    <item msgid="1176401854208153464">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‏‎‎‏‏‎‏‏‎‏‎‏‏‎‏‎‎‎‎‎‎‏‏‏‎‏‎‎‏‎‎‏‏‎‎‎‎‎‎‎‏‎‏‏‏‎‏‏‏‏‎‎‎‎Authenticating…‎‏‎‎‏‎"</item>
-    <item msgid="1377026397901197257">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‏‏‏‎‎‎‎‏‎‏‏‏‎‎‎‏‏‎‏‏‎‏‎‎‎‏‏‎‏‎‎‏‏‏‏‎‎‏‎‎‎‏‏‏‏‏‏‎‎‏‎‎‏‎Obtaining IP address…‎‏‎‎‏‎"</item>
-    <item msgid="7627139816052121509">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‎‎‎‎‏‎‏‏‎‏‎‎‎‎‎‎‏‎‎‏‏‏‎‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‏‏‎‏‎‎‏‎‏‎Connected‎‏‎‎‏‎"</item>
-    <item msgid="1598801023719359130">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‎‎‏‏‎‎‎‎‎‎‎‏‎‏‎‏‎‎‎‎‏‏‏‏‎‏‏‎‏‏‎‏‎‏‎‏‎‎‏‎‏‏‎‎‎‎‏‎‏‎‎‏‏‎‏‎‎Suspended‎‏‎‎‏‎"</item>
-    <item msgid="9160765456671002324">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‏‎‎‏‎‎‏‏‏‎‏‎‎‏‎‏‏‎‏‎‎‎‏‏‏‎‎‎‏‎‏‏‎‏‎‎‏‏‏‎‏‏‎‏‎‏‎‎‎Disconnecting…‎‏‎‎‏‎"</item>
-    <item msgid="8013176736494493734">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‎‏‎‎‏‎‎‎‎‏‎‏‏‏‎‎‏‎‎‏‎‏‎‎‎‏‎‏‎‎‏‎‏‏‎‏‏‎‏‎‎‎‎‎‎‎‏‎‎‏‏‎‎Disconnected‎‏‎‎‏‎"</item>
-    <item msgid="4077393480368783785">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‎‏‎‏‏‏‎‎‏‏‏‏‏‏‎‎‎‏‎‎‎‏‏‏‎‏‏‎‏‏‏‎‎‎‎‎‎‎‎‎‎‎‎‏‏‎‏‎‏‎‎‏‎Unsuccessful‎‏‎‎‏‎"</item>
-    <item msgid="605372180740008604">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‎‏‏‎‎‏‏‎‏‎‏‏‎‏‏‎‏‏‎‎‏‎‏‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‎‏‎‏‏‎‏‎‏‎‏‎‎‏‏‏‎‎‎Blocked‎‏‎‎‏‎"</item>
-    <item msgid="5102306451432929048">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‏‎‎‏‏‏‏‎‎‎‎‏‎‎‎‏‎‏‎‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‎‎‎‎Temporarily avoiding poor connection‎‏‎‎‏‎"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‎‎‎‎‏‎‏‎‏‎‏‎‎‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‏‎‎‎‏‏‏‏‎‎‎‏‏‏‎‎‏‏‏‏‏‏‏‏‏‎Scanning…‎‏‎‎‏‎"</item>
+    <item msgid="9055468790485684083">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‏‎‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‎‎‎‏‎‎‏‏‏‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‏‎Connecting…‎‏‎‎‏‎"</item>
+    <item msgid="6099499723199990208">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‏‎‏‎‏‎‏‏‏‎‏‎‎‎‎‏‎‎‏‏‏‎‏‏‎‏‏‏‎‎‏‎‎‏‏‏‎‎‎‎‎‎‎Authenticating…‎‏‎‎‏‎"</item>
+    <item msgid="6794055951297347103">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‏‎‎‏‎‏‎‏‎‏‎‏‏‏‏‎‎‏‎‎‎‎‏‎‏‎‎‏‎‎‏‏‎‏‎‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‎Obtaining IP address…‎‏‎‎‏‎"</item>
+    <item msgid="5450920562291300229">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‎‎‏‎‏‏‎‎‎‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‎‎‏‏‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‎‎‎‎‏‎‏‎Connected‎‏‎‎‏‎"</item>
+    <item msgid="6332116533879646145">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‎‎‎‎‎‎‎‏‏‎‎‏‎‎‏‏‏‎‎‎‎‎‏‎‎‎‏‏‎‎‏‎‎‎‏‏‎‎‎‏‎‎‏‏‏‏‏‎‎‎‎‎‏‎Suspended‎‏‎‎‏‎"</item>
+    <item msgid="294459081501073818">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‎‎‏‎‏‏‎‎‎‏‎‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‏‎‎‏‏‏‎‎‎‎‏‎‎‏‏‎‎‎‎‏‏‎‎‏‏‎‏‎‎Disconnecting…‎‏‎‎‏‎"</item>
+    <item msgid="1577368920272598676">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‎‎‎‏‏‏‏‏‏‎‎‎‎‏‎‏‎‏‏‎‎‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‎‏‎‎‎Disconnected‎‏‎‎‏‎"</item>
+    <item msgid="7655843177582495451">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‏‎‎‏‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‎‎‏‏‎‏‏‎‏‏‎‏‏‎Unsuccessful‎‏‎‎‏‎"</item>
+    <item msgid="8953752690917593623">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‏‎‎‏‎‎‏‏‎‏‎‏‏‏‎‏‎‏‎‎‏‎‎‎‎‏‎‏‏‏‎Blocked‎‏‎‎‏‎"</item>
+    <item msgid="4400457817750243671">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‏‎‎‎‏‏‎‎‏‎‎‎‏‎‎‎‏‎‎‏‎‎‎‎‏‎‏‎‎‎‎‎‏‏‎‎‎‎‎‎‎‏‎‎‏‎‏‎‏‎‏‏‏‎Temporarily avoiding poor connection‎‏‎‎‏‎"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-en-rXC/strings.xml b/libs/WifiTrackerLib/res/values-en-rXC/strings.xml
index b2574af..222dbe0 100644
--- a/libs/WifiTrackerLib/res/values-en-rXC/strings.xml
+++ b/libs/WifiTrackerLib/res/values-en-rXC/strings.xml
@@ -16,43 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" ‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‏‏‎‎‎‏‏‏‎‎‎‎‎‎‎‏‏‎‎‎‎‎‏‎‏‏‏‏‏‎‎‎‏‏‏‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎ / ‎‏‎‎‏‎ "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‏‏‏‎‏‏‎‏‏‏‏‎‏‎‏‏‏‎‎‎‏‏‏‎‎‎‏‎‏‏‏‎‏‎‏‎‏‏‎‎‎‏‎‏‎‏‎‏‏‎‏‏‏‏‎‎Auto-connect is off‎‏‎‎‏‎"</string>
-    <string name="saved_network" msgid="6241977554502802914">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‏‎‏‏‎‎‎‎‎‎‎‏‏‎‎‏‏‏‎‏‏‏‎‏‏‏‏‎‎‎‏‎‎Saved by ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‎‎‎‏‎‎‏‎‏‎‏‎‏‎‏‏‏‏‎‎‏‏‏‏‎‏‎‏‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‎‎Won’t automatically connect‎‏‎‎‏‎"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‏‎‏‎‎‏‎‏‏‎‏‎‎‎‏‏‏‎‎‏‎‎‏‎‏‏‏‏‎‏‎‎‎‏‎‏‎‏‎‏‎‏‎‏‎‎‏‎‏‎‏‏‏‏‎No internet access‎‏‎‎‏‎"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‏‎‏‏‏‎‏‏‏‎‏‎‏‎‎‎‎‎‏‎‏‏‏‏‎‎‎‏‏‎‏‏‏‏‏‎‎‎‏‏‎‎‎‏‎‏‎‎‎‎‎‏‏‎Authentication problem‎‏‎‎‏‎"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‎‏‎‏‎‎‎‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‏‎‏‏‏‎‎‏‏‏‏‎‏‎‎‎‏‏‏‎‏‏‎‎‎‏‏‎Check password and try again‎‏‎‎‏‎"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‎‎‏‏‎‎‏‎‎‏‎‏‏‏‏‎‎‏‎‎‎‎‎‏‎‏‎‎‏‏‏‎‏‎‎‏‏‎‎‎‏‎‏‎‎‏‏‎‎‎‏‏‏‏‎IP configuration failure‎‏‎‎‏‎"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‎‎‎‏‎‎‏‎‎‏‎‎‏‎‎‎‎‏‎‏‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‎‎‏‎‏‎‎‎‎‏‎‏‏‏‏‎‎Disabled‎‏‎‎‏‎"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‏‏‎‎‎‎‏‎‏‏‎‎‎‎‎‏‏‏‏‎‎‎‎‎‏‏‏‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‎‎‎‎‎‏‏‏‎Access point temporarily full‎‏‎‎‏‎"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‏‎‏‎‎‎‏‏‎‏‏‎‎‎‏‏‎‎‏‎‏‎‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‏‎‏‎‎‏‏‎‎‎‏‏‏‎‏‎‏‏‎‎Disconnected‎‏‎‎‏‎"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‎‏‎‎‏‏‎‎‏‏‎‏‎‏‏‏‏‎‎‏‎‎‎‏‏‏‎‏‎‏‏‏‎‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‎‏‏‎‏‎‎‎Saved‎‏‎‎‏‎"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‏‏‏‎‏‎‎‏‎‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‎‎‏‎‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‏‎‏‎‏‎‎‎‏‏‏‎‎Metered‎‏‎‎‏‎"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‏‎‎‏‏‏‎‏‏‎‎‏‏‏‏‎‏‎‎‎‏‎‎‎‏‏‏‎‎‏‎‎‎‎‎‏‎‎‎‎‏‏‎‎‎‏‏‏‏‎‎Unmetered‎‏‎‎‏‎"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‎‎‏‏‏‎‏‎‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‏‎‏‎‏‏‏‏‏‎Connected via ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‎‏‎‏‏‏‏‏‎‏‏‏‎‎‏‎‎‎‏‏‎‎‏‎‎‏‎‏‎‎‏‎‎‎‎‏‎‏‎‏‎‏‎‏‎‎‎‏‎Available via ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‏‎‏‏‏‎‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‎‏‏‏‏‎‎‎‏‏‎‎‏‎‎‎Automatically connected via ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‎‎‏‏‎‎‎‏‏‏‏‏‎‎‎‏‏‎‏‏‎‎‎‎‏‎‎‎‏‏‏‎‏‏‏‏‎‎Automatically connected via network rating provider‎‏‎‎‏‎"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‏‏‎‏‏‏‎‏‎‏‏‏‏‏‎‎‎‏‏‎‎‏‏‎‏‎‏‎‏‏‎‏‎‎‏‏‎‎‏‎‎‏‏‎‎‎‏‎‎‏‏‏‏‎Limited connection‎‏‎‎‏‎"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‏‎‎‏‏‎‏‏‎‏‎‎‏‎‎‏‏‎‎‏‏‏‎‎‏‎‏‎‏‏‎‏‎‎‎‎‎‎‎‎‎‏‎‎‏‎‏‎‏‏‎‎‎‎Private DNS server cannot be accessed‎‏‎‎‏‎"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‎‏‎‎‎‎‏‏‏‎‏‏‏‎‎‎‏‎‎‎‏‏‎‎‎‏‎‏‏‎‏‎‏‎‏‏‎‎‏‎‎‎‎‏‎‏‏‏‎‏‏‎No internet‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" ‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‎‏‎‎‏‎‏‎‎‏‎‎‎‏‎‏‏‎‏‏‎‎‎‏‏‎‏‎‎‎‎‏‏‎‏‏‏‏‏‏‎‎‎‏‏‏‏‎‏‎‏‏‏‎ / ‎‏‎‎‏‎ "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‏‏‎‎‏‏‏‎‏‎‏‏‏‏‏‎‎‏‏‎‎‏‎‏‎‏‏‎‎‎‏‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‎‏‎‏‏‎Auto-connect is off‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎‏‏‎‏‎‎‏‏‏‏‏‎‎‎‎‏‎‎‎‎‎‏‎‎‏‏‏‏‎‎‏‏‎‏‏‎‎‏‎‏‏‎‏‎‎‏‏‎‎‎‎Saved by ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‏‏‎‎‎‏‎‏‎‎‎‎‎‏‎‏‏‎‎‎‎‏‎‎‎‏‎‏‏‏‎‎‏‏‎‎‏‎‎‏‏‏‎‎‏‏‎‎‏‏‏‎‎‎Won’t automatically connect‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‎‎‏‏‏‎‏‏‏‎‎‏‏‏‏‏‎‎‎‎‎‎‏‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‎‎‏‎‏‎‏‎‏‎‏‎No internet access‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‎‎‏‏‏‎‎‎‎‏‏‎‏‎‎‎‎‎‎‏‎‎‎‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‎‏‏‏‎‎Authentication problem‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‏‎‎‏‏‎‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‎‎‏‎‏‎‎‎‏‏‏‎‎‎‎‏‏‏‎‏‏‏‎‏‎‎‏‎‏‎‏‎‏‏‎Check password and try again‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‎‎‏‎‎‎‏‏‏‏‎‏‏‎‏‏‎‏‎‏‏‏‏‎‏‏‎‏‎‎‏‎‎‏‎‏‏‎‎‎‎‏‎‏‏‎‏‎‏‎‏‏‏‎‎IP configuration failure‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‎‎‎‎‏‎‏‎‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‎‏‏‎‎‏‎‎‏‎‏‏‎‏‎‎‎‎‏‏‎‎‏‏‎‎‎‏‏‎‎Disabled‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‏‏‏‎‏‏‏‎‏‏‎‏‏‎‏‎‎‏‏‏‎‏‎‏‏‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‎‎‎‎‎‎‎‏‎‏‏‎‎‏‎‎‎Access point temporarily full‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‏‏‎‏‏‏‏‎‎‎‎‏‎‏‏‏‏‎‏‎‏‏‎‏‎‏‎‎‏‏‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‎‏‎‏‎‏‏‎‎‎Temporary poor network conditions‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‏‏‏‎‏‎‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‎‎‏‎‏‎‎‎‏‏‎‎‏‏‏‎‎‎‎‎‏‎‏‏‏‏‏‎‎‏‏‎‏‎Weak signal. Try moving closer to the router.‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‏‎‎‏‎‏‏‏‎‎‏‏‏‏‎‏‎‏‏‏‎‎‎‏‏‏‎‏‏‏‎‏‎‎‎‎‏‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎Network is over capacity. Try again later.‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‏‏‏‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‏‏‏‏‏‎‎‏‏‎‏‏‎‏‎‎‎‏‏‏‎‏‏‎Can\'t connect. Try again later.‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‎‏‏‎‏‎‏‏‏‎‏‎‎‏‏‎‏‎‎‎‎‎‏‎‏‏‎‏‎‎‎‏‎‏‎‏‎‎‏‎‎‎‏‏‏‎‏‎Network not compatible with this device‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎‏‎‎‎‏‏‏‏‎‏‏‎‏‎‎‎‏‎‎‏‏‎‏‏‏‎‏‎‏‏‏‏‏‏‎‎‏‏‏‎‎‏‏‏‏‎‏‎‏‏‏‎Disconnected‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‎‏‎‎‎‎‏‎‎‏‏‏‎‏‏‎‏‎‏‏‎‎‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‎‎‎‎‏‎‎‎‎‎‎‎‎‏‎Saved‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‎‎‏‏‎‏‎‎‎‏‏‎‎‏‎‏‎‏‏‎‏‎‎‏‏‏‏‎‏‎‏‏‏‎‏‏‏‏‏‎‎‏‏‏‏‏‎‎‎‎‏‎Metered‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‏‎‏‏‏‎‎‏‎‏‏‏‎‏‏‎‏‏‎‏‎‏‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‎‏‎‎‎‎‏‎‏‎Unmetered‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‎‏‎‎‎‎‏‎‎‏‏‏‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‎‎‎‎‏‏‏‎‎‎‏‏‎‏‎‎‎‎Connected via ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‎‎‎‎‏‏‎‏‎‏‎‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎‏‎Available via ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‎‎‏‎‏‏‎‏‏‏‏‎‏‎‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‏‎‎‎‎‎‎‎‏‎‎‎‏‏‏‎‎Automatically connected via ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‏‏‎‎‎‏‏‏‏‏‎‎‎‎‎‎‏‏‏‎‏‏‎‏‏‎‏‏‎‏‎‏‎‏‏‎‏‏‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‎‎Automatically connected via network rating provider‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‎‎‎‏‏‎‏‎‏‏‎‎‏‎‏‏‎‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‎‎‎‏‏‎‏‏‎‎‎‏‏‏‏‏‏‎‎‎Limited connection‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‏‎‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎‏‏‎‎‎‏‎‎‏‎‎‎‎‎‏‎‏‎‎‎‎‏‏‏‎‎‏‏‏‏‎‎‏‏‎Private DNS server cannot be accessed‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‎‏‎‎‎‏‎‏‎‎‏‎‏‎‎‏‏‎‎‏‎‏‎‏‎‎‎‏‎‏‏‏‏‏‎‎‏‏‏‎‏‎‎‎‏‎‏‎‎‏‎‎‏‎Connected to device. Can\'t provide internet.‎‏‎‎‏‎"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‎‎‏‏‎‎‎‏‏‏‎‏‎‏‏‏‎‎‏‏‏‏‎‎‎‎‎‎‏‏‏‏‎‏‎‏‏‎‎‎‎‏‏‎‎‏‏‎‎‏‏‎‏‎Low quality‎‏‎‎‏‎"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‏‎‏‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‏‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‏‏‎‏‎‎‏‏‎‏‎None‎‏‎‎‏‎"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‏‏‏‎‏‏‏‎‎‎‎‏‏‏‏‎‎‎‏‏‎‏‏‎‎‏‏‎‏‏‎‏‎‏‏‏‎‏‎‏‏‏‎Expired‎‏‎‎‏‎"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‏‎‎‏‎‎‏‎‏‏‎‎‏‎‎‏‏‎‏‏‎‏‎‎‏‎‏‏‏‎Tap to sign up‎‏‎‎‏‎"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎‎‏‏‏‎‏‎‏‏‎‏‎‎‏‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‎‎‏‎Tap to renew subscription and connect‎‏‎‎‏‎"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‏‎‏‏‏‎‎‏‎‎‏‎‏‎‎‎‏‏‎‏‎‎‎‎‏‎‏‎‎‎‏‎‏‏‏‎‏‏‎‎‎‏‏‏‎‎‎‏‏‎‎‎‏‏‎Opening ‎‏‎‎‏‏‎<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‎‎‏‎‏‎‎‎‎‎‎‏‏‎‏‎‏‎‏‏‎‏‎‏‎‏‎‏‎‏‎‏‎‎‏‏‏‎‎‏‏‏‏‎‎‎‎‏‎‎‎‏‎Couldn’t connect‎‏‎‎‏‎"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‎‎‏‎‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎‎‎‏‏‎‎‏‏‎‎‏‎‏‏‎‏‏‏‎Completing sign-up…‎‏‎‎‏‎"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‏‎‎‎‏‎‏‎‏‏‎‎‏‏‎‏‏‎‎‎‏‎‎‏‎‏‎‎‏‎‎‎‎‏‎‏‏‏‏‏‎‎‏‏‏‏‏‎‎‎‏‏‏‎Couldn’t complete sign-up. Tap to try again.‎‏‎‎‏‎"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‏‎‏‏‎‎‎‎‎‏‎‏‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‎‎‏‏‏‎‏‏‎‏‏‏‏‎‎‎‎‏‎Sign-up complete. Connecting…‎‏‎‎‏‎"</string>
-    <!-- no translation found for imsi_protection_warning (3207104049473134195) -->
-    <skip />
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‏‎‏‎‎‎‎‏‎‎‎‏‎‏‎‏‏‎‏‏‏‎‏‎‎‏‎‏‏‏‏‎‎‏‏‎‎‎‏‏‏‎‏‎‏‏‎‎‎‏‎‏‏‎Very Slow‎‏‎‎‏‎"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‎‏‏‏‏‎‏‏‎‎‎‏‎‎‏‏‏‏‎‎‏‎‏‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‏‎‏‏‏‏‎Slow‎‏‎‎‏‎"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‏‎‎‎‎‎‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎‏‎‎‎‎‎OK‎‏‎‎‏‎"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎‎‏‎‎‏‎‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‏‎‏‎‎‎‏‎‏‎‏‎‎‏‏‏‎‎‏‎Medium‎‏‎‎‏‎"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‎‏‏‎‎‎‏‎‎‎‎‎‏‎‏‏‎‎‎‎‏‏‎‏‏‏‎‏‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‎‎‎‎‎‏‎‎Fast‎‏‎‎‏‎"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‎‎‏‎‎‏‎‏‎‏‏‏‎‎‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‎‏‏‎‎‎‏‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎Very Fast‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‎‎‏‏‎‏‏‎‎‏‏‏‏‏‎‎‏‏‎‎‏‎‎‏‏‎‎‎‏‏‎‏‎‎‎‏‏‏‏‎‏‏‎‏‎‎‎‏‏‎‎‎‎‎None‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‏‎‎‏‏‎‎‎‎‎‎‎‏‏‎‎‎‏‏‏‎‎‎‏‎‎‎‎‏‎‎‏‏‏‎‏‎‎‏‎‏‎‏‏‎‎‏‎‏‏‎‎Expired‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‎‏‎‏‎‎‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‎‎‎‏‎‎‏‎‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‏‎‏‎‎Tap to sign up‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‏‏‎‏‎‏‎‎‏‏‎‏‎‎‎‎‏‎‏‏‏‎‏‏‏‏‏‏‎‎‏‏‏‎‎‎‏‎‏‎‏‎‏‎Tap to renew subscription and connect‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‎‏‎‏‎‎‎‎‎‏‏‎‎‏‏‎‏‎‎‎‎‏‎‎‏‏‏‏‎‏‏‏‎‎Opening ‎‏‎‎‏‏‎<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‏‏‏‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‏‎‎‏‏‎‎‎‎‎‎‎‎‏‎‎Couldn’t connect‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‎‎‎‎‎‎‎‏‎‎‎‎‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎‏‏‎‏‏‏‎‏‏‎‎‏‎‏‎‎‏‎‎‎‎‎Completing sign-up…‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‏‏‎‏‎‎‎‏‏‏‎‎‎‎‏‏‏‏‎‏‎‏‏‎‏‏‎‎‎‏‏‏‎‎‎‏‎‏‎‎‏‏‏‎‏‎‎Couldn’t complete sign-up. Tap to try again.‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‏‎‎‎‎‎‏‏‏‎‎‎‎‎‎‎‏‏‎‏‏‎‏‏‎‏‎‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‎‎‏‎‎‎‏‏‎‎‏‎‎‎Sign-up complete. Connecting…‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‏‎‎‏‎‏‎‏‏‏‎‏‏‏‎‏‏‏‎‏‎‏‎‎‎‎‎‏‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‎This network receives a SIM ID that can be used to track device location. ‎‏‎‎‏‏‎"<annotation id="url">"‎‏‎‎‏‏‏‎Learn more‎‏‎‎‏‏‎"</annotation>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‏‏‎‎‎‎‎‏‏‎‎‏‏‎‎‏‎‏‎‎‎‏‏‎‏‏‏‏‎‎‎‏‎‎‏‎‎‎Very Slow‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‏‏‎‎‎‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‎‎‏‏‏‏‎‎‏‎‎‏‎‎‎‎‎‎‎‎‏‎‎‎‎‎‎‎‎‎‎Slow‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‎‎‎‎‏‎‏‎‎‏‎‏‎‏‏‏‏‎‎‎‏‎‏‎‏‏‎‎‎‎‎‎‎‏‎‎‏‎‏‎‎‏‏‎‎‏‎‏‎‎‏‎‎‎OK‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‎‎‎‏‏‎‎‏‎‎‎‎‏‎‏‏‎‎‏‏‎‏‎‎‏‏‎‎‏‎‎‎‎‏‎‎‏‎‎‏‏‏‎‏‏‏‎‎Medium‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‏‎‏‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‏‏‎‏‎‏‎‏‏‏‎‎‎‏‏‎‏‎‏‎‎Fast‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‎‎‏‎‏‎‎‎‏‎‏‏‏‏‎‏‎‎‎‏‎‎‏‎‎‎‏‎‏‎‏‏‏‎‏‎‏‎‏‏‎‏‎‏‎‎‎‏‎‎‏‎‏‎Very Fast‎‏‎‎‏‎"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‏‎‎‎‎‎‎‏‎‎‏‏‏‏‎‎‎‏‎‎‏‏‎‎‏‎‏‎‎‏‏‏‏‎‎‏‏‎‏‏‎Wi-Fi won’t auto-connect for now‎‏‎‎‏‎"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-es-rUS/arrays.xml b/libs/WifiTrackerLib/res/values-es-rUS/arrays.xml
index 27d916c..3ef2e9d 100644
--- a/libs/WifiTrackerLib/res/values-es-rUS/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-es-rUS/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Buscando…"</item>
-    <item msgid="6222852518007967736">"Conectando…"</item>
-    <item msgid="1176401854208153464">"Autenticando…"</item>
-    <item msgid="1377026397901197257">"Obteniendo dirección IP…"</item>
-    <item msgid="7627139816052121509">"Conectado"</item>
-    <item msgid="1598801023719359130">"Suspendido"</item>
-    <item msgid="9160765456671002324">"Desconectando…"</item>
-    <item msgid="8013176736494493734">"Desconectado"</item>
-    <item msgid="4077393480368783785">"Incorrecto"</item>
-    <item msgid="605372180740008604">"Bloqueado"</item>
-    <item msgid="5102306451432929048">"Inhabilitando temporalmente la conexión inestable"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Buscando…"</item>
+    <item msgid="9055468790485684083">"Conectando…"</item>
+    <item msgid="6099499723199990208">"Autenticando…"</item>
+    <item msgid="6794055951297347103">"Obteniendo dirección IP…"</item>
+    <item msgid="5450920562291300229">"Conectada"</item>
+    <item msgid="6332116533879646145">"Suspendida"</item>
+    <item msgid="294459081501073818">"Desconectando…"</item>
+    <item msgid="1577368920272598676">"Desconectada"</item>
+    <item msgid="7655843177582495451">"Error"</item>
+    <item msgid="8953752690917593623">"Bloqueada"</item>
+    <item msgid="4400457817750243671">"Inhabilitando temporalmente la conexión inestable"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-es-rUS/strings.xml b/libs/WifiTrackerLib/res/values-es-rUS/strings.xml
index 3187af8..4f32407 100644
--- a/libs/WifiTrackerLib/res/values-es-rUS/strings.xml
+++ b/libs/WifiTrackerLib/res/values-es-rUS/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Conexión automática desactivada"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Guardada por <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"No se conectará automáticamente"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"No hay acceso a Internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problema de autenticación"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Revisa la contraseña y vuelve a intentarlo"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Error de configuración de IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Inhabilitada"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"El punto de acceso está completo temporalmente"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Desconectado"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Guardado"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"De uso medido"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Sin tarifa plana"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Conexión a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Disponible a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Se conectó automáticamente a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Conectado automáticamente mediante proveedor de calificación de red"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Conexión limitada"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"No se puede acceder al servidor DNS privado"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Sin Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Conexión automática desactivada"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Guardada por <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"No se establecerá conexión automáticamente"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Sin acceso a Internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problema de autenticación"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Revisa la contraseña y vuelve a intentarlo"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Error de configuración de IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Inhabilitada"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"El punto de acceso está temporalmente lleno"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Malas condiciones de red temporalmente"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"La señal es débil. Intenta acercarte al router."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"La red está saturada. Vuelve a intentarlo más tarde."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"No se pudo establecer conexión. Vuelve a intentarlo más tarde."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"La red no es compatible con este dispositivo"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Desconectada"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Guardada"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"De uso medido"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"No medida"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Conexión a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Disponible a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Se estableció conexión automáticamente a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Se estableció conexión automáticamente a través de un proveedor de calificación de redes"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Conexión limitada"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"No se puede acceder al servidor DNS privado"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Se estableció conexión con el dispositivo. No se puede acceder a Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Baja calidad"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Ninguna"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Vencida"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Presiona para registrarte"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Presiona para renovar la suscripción y conectarte"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Abriendo <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"No se pudo establecer conexión"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Completando registro…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"No se pudo completar el registro. Presiona para volver a intentarlo."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Se completó el registro. Conectando…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Esta red recibe un ID único que se puede usar para realizar el seguimiento de la ubicación del dispositivo. "<annotation id="url">"Más información"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Muy lenta"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lenta"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Aceptar"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Media"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Rápida"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Muy rápida"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Ninguna"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Venció"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Presiona para registrarte"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Presiona para renovar la suscripción y conectarte"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Abriendo <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"No se pudo establecer conexión"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Completando registro…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"No se pudo completar el registro. Presiona para volver a intentarlo."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Se completó el registro. Conectando…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Esta red recibe un ID de SIM que puede usarse para realizar el seguimiento de la ubicación del dispositivo. "<annotation id="url">"Más información"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Muy lenta"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lenta"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Aceptable"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Normal"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Rápida"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Muy rápida"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-es/arrays.xml b/libs/WifiTrackerLib/res/values-es/arrays.xml
index c9352b9..a12c048 100644
--- a/libs/WifiTrackerLib/res/values-es/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-es/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Buscando…"</item>
-    <item msgid="6222852518007967736">"Conectando…"</item>
-    <item msgid="1176401854208153464">"Autenticando…"</item>
-    <item msgid="1377026397901197257">"Obteniendo dirección IP…"</item>
-    <item msgid="7627139816052121509">"Conectado"</item>
-    <item msgid="1598801023719359130">"Suspendida"</item>
-    <item msgid="9160765456671002324">"Desconectando…"</item>
-    <item msgid="8013176736494493734">"Desconectada"</item>
-    <item msgid="4077393480368783785">"Incorrecta"</item>
-    <item msgid="605372180740008604">"Bloqueada"</item>
-    <item msgid="5102306451432929048">"Inhabilitando conexión inestable temporalmente"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Buscando…"</item>
+    <item msgid="9055468790485684083">"Conectando…"</item>
+    <item msgid="6099499723199990208">"Autenticando…"</item>
+    <item msgid="6794055951297347103">"Obteniendo dirección IP…"</item>
+    <item msgid="5450920562291300229">"Conectado"</item>
+    <item msgid="6332116533879646145">"Suspendida"</item>
+    <item msgid="294459081501073818">"Desconectando…"</item>
+    <item msgid="1577368920272598676">"Desconectado"</item>
+    <item msgid="7655843177582495451">"Error"</item>
+    <item msgid="8953752690917593623">"Bloqueada"</item>
+    <item msgid="4400457817750243671">"Evitando conexión deficiente temporalmente"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-es/strings.xml b/libs/WifiTrackerLib/res/values-es/strings.xml
index 4cdb27c..4f0b423 100644
--- a/libs/WifiTrackerLib/res/values-es/strings.xml
+++ b/libs/WifiTrackerLib/res/values-es/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Conexión automática desactivada"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Guardada por <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"No se conectará automáticamente"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"No hay acceso a Internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problema de autenticación"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Comprueba la contraseña y vuelve a intentarlo"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Error de configuración de IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Inhabilitado"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Punto de acceso temporalmente lleno"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Desconectado"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Guardado"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Medida"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"No medida"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Conectado a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Disponible a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Conectada automáticamente mediante <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Conectado automáticamente a través de un proveedor de valoración de redes"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Conexión limitada"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"No se ha podido acceder al servidor DNS privado"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Sin Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Conexión automática desactivada"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Guardada por <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"No se conectará automáticamente"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Sin acceso a Internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problema de autenticación"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Comprueba la contraseña e inténtalo de nuevo"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Error de configuración de IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Inhabilitada"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Punto de acceso temporalmente lleno"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Condiciones de red temporalmente inestables"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Señal débil. Prueba a acercarte al router."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"La red está saturada. Inténtalo de nuevo más tarde."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"No se ha podido conectar. Inténtalo de nuevo más tarde."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Red no compatible con este dispositivo"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Desconectado"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Guardada"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"De uso medido"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"No medida"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Conectado mediante <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Disponible con <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Conectado automáticamente mediante <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Conectado automáticamente mediante un proveedor de valoración de redes"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Conexión limitada"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"No se ha podido acceder al servidor DNS privado"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Conectado al dispositivo. Sin acceso a Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Calidad baja"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Ninguna"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Caducada"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Toca para registrarte"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Toca para renovar la suscripción y conectarte"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Abriendo <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"No se ha podido conectar"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Completando registro…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"No se ha podido completar el registro. Toca para volver a intentarlo."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Se ha completado el registro. Conectando…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Esta red recibe un ID único con el que se puede rastrear la ubicación del dispositivo "<annotation id="url">"Más información"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Muy lenta"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lenta"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Aceptable"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Media"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Rápida"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Muy rápida"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Ninguna"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Caducada"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Toca para registrarte"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Toca para renovar la suscripción y conectarte"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Abriendo <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"No se ha podido conectar"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Completando registro…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"No se ha podido completar el registro. Toca para intentarlo de nuevo."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registro completado. Conectando…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Esta red recibe un ID de SIM con el que se puede rastrear la ubicación del dispositivo. "<annotation id="url">"Más información"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Muy lenta"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lenta"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Aceptable"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Media"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Rápida"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Muy rápida"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-et/arrays.xml b/libs/WifiTrackerLib/res/values-et/arrays.xml
index 32d0602..08cacc8 100644
--- a/libs/WifiTrackerLib/res/values-et/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-et/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Skannimine …"</item>
-    <item msgid="6222852518007967736">"Ühendamine …"</item>
-    <item msgid="1176401854208153464">"Autentimine …"</item>
-    <item msgid="1377026397901197257">"IP-aadressi hankimine …"</item>
-    <item msgid="7627139816052121509">"Ühendatud"</item>
-    <item msgid="1598801023719359130">"Peatatud"</item>
-    <item msgid="9160765456671002324">"Ühenduse katkestamine …"</item>
-    <item msgid="8013176736494493734">"Pole ühendatud"</item>
-    <item msgid="4077393480368783785">"Ebaõnnestus"</item>
-    <item msgid="605372180740008604">"Blokeeritud"</item>
-    <item msgid="5102306451432929048">"Kehva ühenduse ajutine vältimine"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Otsimine …"</item>
+    <item msgid="9055468790485684083">"Ühendamine …"</item>
+    <item msgid="6099499723199990208">"Autentimine …"</item>
+    <item msgid="6794055951297347103">"IP-aadressi hankimine …"</item>
+    <item msgid="5450920562291300229">"Ühendatud"</item>
+    <item msgid="6332116533879646145">"Peatatud"</item>
+    <item msgid="294459081501073818">"Ühenduse katkestamine …"</item>
+    <item msgid="1577368920272598676">"Pole ühendatud"</item>
+    <item msgid="7655843177582495451">"Ebaõnnestus"</item>
+    <item msgid="8953752690917593623">"Blokeeritud"</item>
+    <item msgid="4400457817750243671">"Kehva ühenduse ajutine vältimine"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-et/strings.xml b/libs/WifiTrackerLib/res/values-et/strings.xml
index 9fe7960..343a690 100644
--- a/libs/WifiTrackerLib/res/values-et/strings.xml
+++ b/libs/WifiTrackerLib/res/values-et/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Automaatne ühendamine on väljas"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Salvestas: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Ei ühendata automaatselt"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Juurdepääs internetile puudub"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Autentimise probleem"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Kontrollige parooli ja proovige uuesti"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP seadistamise tõrge"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Keelatud"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Pääsupunkt on ajutiselt täis"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Pole ühendatud"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Salvestatud"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Mahupõhine"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Mittemahupõhine"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Ühendatud võrgu <xliff:g id="NAME">%1$s</xliff:g> kaudu"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Saadaval teenuse <xliff:g id="NAME">%1$s</xliff:g> kaudu"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automaatselt ühendatud teenusepakkuja <xliff:g id="NAME">%1$s</xliff:g> kaudu"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Ühendus loodi automaatselt võrgukvaliteedi hinnangute pakkuja kaudu"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Piiratud ühendus"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Privaatsele DNS-serverile ei pääse juurde"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Interneti pole"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automaatne ühendamine on väljas"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Salvestas: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Ei ühendata automaatselt"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Internetiühendus puudub"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Autentimise probleem"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Kontrollige parooli ja proovige uuesti"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP seadistamise tõrge"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Keelatud"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Pääsupunkt on ajutiselt täis"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Võrguühenduse tingimused on ajutiselt kehvad"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Nõrk signaal. Minge ruuterile lähemale."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Võrk on ülekoormatud. Proovige hiljem uuesti."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Ei saa ühendada. Proovige hiljem uuesti."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Võrk ei ühildu selle seadmega"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Pole ühendatud"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Salvestatud"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Mahupõhine"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Mittemahupõhine"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Ühendatud rakenduse <xliff:g id="NAME">%1$s</xliff:g> kaudu"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Saadaval rakenduse <xliff:g id="NAME">%1$s</xliff:g> kaudu"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automaatselt ühendatud teenusepakkuja <xliff:g id="NAME">%1$s</xliff:g> kaudu"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Ühendus loodi automaatselt võrgukvaliteedi hinnangute pakkuja kaudu"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Piiratud ühendus"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Privaatsele DNS-serverile ei pääse juurde"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Seadmega ühendatud. Internetiühendust ei saa luua."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Kehva kvaliteediga"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Puudub"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Aegunud"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Puudutage registreerimiseks"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Puudutage tellimuse uuendamiseks ja ühenduse loomiseks"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Teenuse <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> avamine"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Ühendust ei saanud luua"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Registreerimise lõpuleviimine …"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Registreerimist ei saanud lõpule viia. Puudutage, et uuesti proovida."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Registreerimine on lõpule viidud. Ühendamine …"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"See võrk saab kordumatu ID, mida saab kasutada seadme asukoha jälgimiseks. "<annotation id="url">"Lisateave"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Väga aeglane"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Aeglane"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Hea"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Keskmine"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Kiire"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Väga kiire"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Pole"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Aegunud"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Puudutage registreerimiseks"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Puudutage tellimuse uuendamiseks ja ühenduse loomiseks"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Teenuse <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> avamine"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Ühendust ei saanud luua"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Registreerimise lõpuleviimine …"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Registreerimist ei saanud lõpule viia. Puudutage, et uuesti proovida."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registreerimine on lõpule viidud. Ühendamine …"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"See võrk saab SIM-i ID, mida saab kasutada seadme asukoha jälgimiseks. "<annotation id="url">"Lisateave"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Väga aeglane"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Aeglane"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Keskmine"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Kiire"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Väga kiire"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-eu/arrays.xml b/libs/WifiTrackerLib/res/values-eu/arrays.xml
index 06890d5..710e026 100644
--- a/libs/WifiTrackerLib/res/values-eu/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-eu/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Bilatzen…"</item>
-    <item msgid="6222852518007967736">"Konektatzen…"</item>
-    <item msgid="1176401854208153464">"Autentifikatzen…"</item>
-    <item msgid="1377026397901197257">"IP helbidea lortzen…"</item>
-    <item msgid="7627139816052121509">"Konektatuta"</item>
-    <item msgid="1598801023719359130">"Etenda"</item>
-    <item msgid="9160765456671002324">"Deskonektatzen…"</item>
-    <item msgid="8013176736494493734">"Deskonektatuta"</item>
-    <item msgid="4077393480368783785">"Huts egin du"</item>
-    <item msgid="605372180740008604">"Blokeatuta"</item>
-    <item msgid="5102306451432929048">"Konexio ahula aldi baterako saihesten"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Bilatzen…"</item>
+    <item msgid="9055468790485684083">"Konektatzen…"</item>
+    <item msgid="6099499723199990208">"Autentifikatzen…"</item>
+    <item msgid="6794055951297347103">"IP helbidea lortzen…"</item>
+    <item msgid="5450920562291300229">"Konektatuta"</item>
+    <item msgid="6332116533879646145">"Etenda"</item>
+    <item msgid="294459081501073818">"Deskonektatzen…"</item>
+    <item msgid="1577368920272598676">"Deskonektatuta"</item>
+    <item msgid="7655843177582495451">"Huts egin du"</item>
+    <item msgid="8953752690917593623">"Blokeatuta"</item>
+    <item msgid="4400457817750243671">"Konexio ahula aldi baterako saihesten"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-eu/strings.xml b/libs/WifiTrackerLib/res/values-eu/strings.xml
index 434dad8..ce9e169 100644
--- a/libs/WifiTrackerLib/res/values-eu/strings.xml
+++ b/libs/WifiTrackerLib/res/values-eu/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Konexio automatikoa desaktibatuta"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> aplikazioak gorde du"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Ez da konektatuko automatikoki"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Ez dago Interneteko konexiorik"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Autentifikazio-arazoa"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Egiaztatu pasahitza zuzena dela eta saiatu berriro"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Ezin izan da konfiguratu IP helbidea"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Desgaituta"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Sarbide-puntua beteta dago aldi baterako"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Deskonektatuta"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Gordeta"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Sare neurtua"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Neurtu gabeko sarea"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> bidez konektatuta"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> bidez erabilgarri"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatikoki konektatu da <xliff:g id="NAME">%1$s</xliff:g> bidez"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatikoki konektatuta sare-balorazioen hornitzailearen bidez"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Konexio mugatua"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Ezin da atzitu DNS zerbitzari pribatua"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Ez dago Interneteko konexiorik"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Konexio automatikoa desaktibatuta"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> aplikazioak gorde du"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Ez da konektatuko automatikoki"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Ez dago Interneteko konexiorik"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Autentifikazio-arazoa"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Egiaztatu pasahitza eta saiatu berriro"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Ezin izan da konfiguratu IP helbidea"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Desgaituta"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Sarbide-puntua beteta dago aldi baterako"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Sarearen baldintzak txarrak izango dira aldi baterako"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Seinale ahula. Gerturatu bideratzailera."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Sarearen ahalmena gainditu da. Saiatu berriro geroago."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Ezin da konektatu. Saiatu berriro geroago."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Sarea ez da gailu honekin bateragarria"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Deskonektatuta"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Gordeta"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Sare neurtua"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Neurtu gabeko sarea"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> bidez konektatuta"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> bidez erabilgarri"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatikoki konektatu da <xliff:g id="NAME">%1$s</xliff:g> bidez"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Sare-balorazioen hornitzaile baten bidez automatikoki konektatuta"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Konexio mugatua"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Ezin da atzitu DNS zerbitzari pribatua"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Gailura konektatuta. Ezin da Interenetarako sarbiderik eman."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Kalitate txikia"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Bat ere ez"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Iraungita"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Sakatu izena emateko"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Sakatu harpidetza berritzeko eta konektatu ahal izateko"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> irekitzen"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Ezin izan da konektatu"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Izena ematen…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Ezin izan da eman izena. Berriro saiatzeko, ukitu hau."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Eman da izena. Konektatzen…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Gailuaren kokapenaren jarraipena egiteko balio duen ID esklusibo bat jasotzen du sare honek. "<annotation id="url">"Lortu informazio gehiago"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Oso motela"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Motela"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Ados"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Tartekoa"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Bizkorra"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Oso bizkorra"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Bat ere ez"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Iraungita"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Sakatu erregistratzeko"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Sakatu harpidetza berritzeko eta konektatzeko"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> irekitzen"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Ezin izan da konektatu"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Izena ematen…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Ezin izan da erregistratu. Berriro saiatzeko, ukitu hau."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Erregistratu da. Konektatzen…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Gailuaren kokapenaren jarraipena egiteko balio duen SIM ID bat jasotzen du sare honek. "<annotation id="url">"Lortu informazio gehiago"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Oso motela"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Motela"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Ados"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Normala"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Bizkorra"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Oso bizkorra"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Oraingoz ez da automatikoki konektatuko wifira"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-fa/arrays.xml b/libs/WifiTrackerLib/res/values-fa/arrays.xml
index 51ef4b8..9d19120 100644
--- a/libs/WifiTrackerLib/res/values-fa/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-fa/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"درحال اسکن کردن…"</item>
-    <item msgid="6222852518007967736">"درحال اتصال…"</item>
-    <item msgid="1176401854208153464">"درحال اصالت‌سنجی…"</item>
-    <item msgid="1377026397901197257">"‏درحال دریافت نشانی IP…"</item>
-    <item msgid="7627139816052121509">"متصل"</item>
-    <item msgid="1598801023719359130">"معلق"</item>
-    <item msgid="9160765456671002324">"درحال قطع اتصال…"</item>
-    <item msgid="8013176736494493734">"قطع اتصال"</item>
-    <item msgid="4077393480368783785">"ناموفق"</item>
-    <item msgid="605372180740008604">"مسدود"</item>
-    <item msgid="5102306451432929048">"جلوگیری موقت از اتصال ضعیف"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"درحال اسکن کردن…"</item>
+    <item msgid="9055468790485684083">"درحال اتصال…"</item>
+    <item msgid="6099499723199990208">"درحال راستی‌آزمایی…"</item>
+    <item msgid="6794055951297347103">"‏درحال دریافت نشانی IP…"</item>
+    <item msgid="5450920562291300229">"متصل"</item>
+    <item msgid="6332116533879646145">"معلق"</item>
+    <item msgid="294459081501073818">"درحال قطع اتصال…"</item>
+    <item msgid="1577368920272598676">"اتصال قطع شد"</item>
+    <item msgid="7655843177582495451">"ناموفق"</item>
+    <item msgid="8953752690917593623">"مسدود"</item>
+    <item msgid="4400457817750243671">"اجتناب موقت از اتصال ضعیف"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-fa/strings.xml b/libs/WifiTrackerLib/res/values-fa/strings.xml
index 55006af..77ca78f 100644
--- a/libs/WifiTrackerLib/res/values-fa/strings.xml
+++ b/libs/WifiTrackerLib/res/values-fa/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"اتصال خودکار خاموش است"</string>
-    <string name="saved_network" msgid="6241977554502802914">"ذخیره‌شده توسط <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"اتصال به‌طور خودکار انجام نمی‌شود"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"دسترسی به اینترنت ندارد"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"مشکل اصالت‌سنجی"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"گذرواژه را بررسی و دوباره امتحان کنید"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"‏پیکربندی IP انجام نشد"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"غیرفعال شد"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"ظرفیت نقطه دسترسی موقتاً تکمیل شده است"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"اتصال قطع شد"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"ذخیره‌شده"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"محدودشده"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"محدودنشده"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"متصل شده ازطریق <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"در دسترس ازطریق <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"به‌طور خودکار ازطریق <xliff:g id="NAME">%1$s</xliff:g> متصل شد"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"اتصال خودکار ازطریق ارائه‌دهنده رده‌بندی شبکه"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"اتصال محدود"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"‏سرور DNS خصوصی قابل دسترسی نیست"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"عدم اتصال به اینترنت"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"اتصال خودکار خاموش است"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"ذخیره شده توسط <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"به‌طور خودکار متصل نخواهد شد"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"دسترسی به اینترنت وجود ندارد"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"مشکل راستی‌آزمایی"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"گذرواژه را بررسی و دوباره امتحان کنید"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"‏IP پیکربندی نشد"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"غیرفعال"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"ظرفیت نقطه دسترسی موقتاً تکمیل شده است"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"وضعیت‌های موقتی شبکه ضعیف"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"سیگنال ضعیف است. به رهیاب نزدیک‌تر شوید."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"تعداد ایستگاه‌ها بیش‌از ظرفیت شبکه است. بعداً دوباره امتحان کنید."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"اتصال برقرار نشد. بعداً دوباره امتحان کنید."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"شبکه با این دستگاه سازگار نیست"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"اتصال قطع شد"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"ذخیره‌شده"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"محدود"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"محدودشده"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"ازطریق <xliff:g id="NAME">%1$s</xliff:g> متصل شد"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"دردسترس ازطریق <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"به‌طور خودکار ازطریق <xliff:g id="NAME">%1$s</xliff:g> متصل شد"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"به‌طور خودکار ازطریق ارائه‌دهنده رده‌بندی شبکه متصل شد"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"اتصال محدود"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"دسترسی به سرور ساناد خصوصی ممکن نیست"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"به دستگاه متصل است. نمی‌تواند اینترنت ارائه دهد."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"کیفیت پایین"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"خالی"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"منقضی‌شده"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"برای ثبت‌نام ضربه بزنید"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"برای تمدید اشتراک و متصل شدن، ضربه بزنید"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"درحال بازکردن <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"متصل نشد"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"درحال تکمیل ثبت‌نام…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"ثبت‌نام تکمیل نشد. برای امتحان مجدد ضربه بزنید."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"ثبت‌نام کامل شد. درحال اتصال…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"این شبکه شناسه یکتایی را دریافت می‌کند که می‌توان از آن برای ردیابی مکان دستگاه استفاده کرد. "<annotation id="url">"بیشتر بدانید"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"بسیار آهسته"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"آهسته"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"تأیید"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"متوسط"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"سریع"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"خیلی سریع"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"هیچ‌کدام"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"منقضی‌شده"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"برای ثبت‌نام ضربه بزنید"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"برای تمدید اشتراک و متصل شدن، ضربه بزنید"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"درحال باز کردن <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"متصل نشد"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"درحال تکمیل ثبت‌نام…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"ثبت‌نام تکمیل نشد. برای امتحان مجدد ضربه بزنید."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"ثبت‌نام تکمیل شد. درحال اتصال…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"این شبکه شناسه سیم‌کارتی دریافت می‌کند که می‌توان از آن برای ردیابی مکان دستگاه استفاده کرد. "<annotation id="url">"بیشتر بدانید"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"بسیار آهسته"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"آهسته"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"تأیید"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"متوسط"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"سریع"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"بسیار سریع"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"‏فعلاً Wi-Fi به‌طور خودکار متصل نمی‌شود"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-fi/arrays.xml b/libs/WifiTrackerLib/res/values-fi/arrays.xml
index 51cc12e..a054d9c 100644
--- a/libs/WifiTrackerLib/res/values-fi/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-fi/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Etsitään…"</item>
-    <item msgid="6222852518007967736">"Yhdistetään…"</item>
-    <item msgid="1176401854208153464">"Varmennetaan…"</item>
-    <item msgid="1377026397901197257">"Haetaan IP-osoitetta…"</item>
-    <item msgid="7627139816052121509">"Yhdistetty"</item>
-    <item msgid="1598801023719359130">"Jäädytetty"</item>
-    <item msgid="9160765456671002324">"Katkaistaan…"</item>
-    <item msgid="8013176736494493734">"Yhteys katkaistu"</item>
-    <item msgid="4077393480368783785">"Epäonnistui"</item>
-    <item msgid="605372180740008604">"Estetty"</item>
-    <item msgid="5102306451432929048">"Vältetään huonoa yhteyttä tilapäisesti"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Etsitään…"</item>
+    <item msgid="9055468790485684083">"Yhdistetään…"</item>
+    <item msgid="6099499723199990208">"Todennetaan…"</item>
+    <item msgid="6794055951297347103">"Haetaan IP-osoitetta…"</item>
+    <item msgid="5450920562291300229">"Yhdistetty"</item>
+    <item msgid="6332116533879646145">"Jäädytetty"</item>
+    <item msgid="294459081501073818">"Katkaistaan yhteyttä…"</item>
+    <item msgid="1577368920272598676">"Yhteys katkaistu"</item>
+    <item msgid="7655843177582495451">"Epäonnistui"</item>
+    <item msgid="8953752690917593623">"Estetty"</item>
+    <item msgid="4400457817750243671">"Vältetään huonoa yhteyttä tilapäisesti"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-fi/strings.xml b/libs/WifiTrackerLib/res/values-fi/strings.xml
index 9492aaf..3438822 100644
--- a/libs/WifiTrackerLib/res/values-fi/strings.xml
+++ b/libs/WifiTrackerLib/res/values-fi/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Automaattinen yhdistäminen pois päältä"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Tallentaja: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Yhteyttä ei muodosteta automaattisesti"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Ei internetyhteyttä"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Todennusvirhe"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Tarkista salasana ja yritä uudelleen."</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP-kokoonpanovirhe"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Pois päältä"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Yhteyspiste tilapäisesti täynnä"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Yhteys katkaistu"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Tallennettu"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Maksullinen"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Maksuton"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Yhdistetty (<xliff:g id="NAME">%1$s</xliff:g>)"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Saatavilla tämän kautta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automaattisesti yhdistetty tämän kautta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Yhdistetty automaattisesti verkon arviointipalvelun kautta"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Rajallinen yhteys"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Ei pääsyä yksityiselle DNS-palvelimelle"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Ei internetyhteyttä"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automaattinen yhdistäminen pois päältä"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Tämän tallensi <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Yhteyttä ei muodosteta automaattisesti"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Ei internetyhteyttä"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Todennusvirhe"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Tarkista salasana ja yritä uudelleen"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP-määritysvirhe"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Ei käytössä"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Yhteyspiste tilapäisesti täynnä"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Tilapäisesti heikko verkkoyhteys"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Heikko signaali. Kokeile siirtyä lähemmäs reititintä."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Verkon kapasiteetti on ylittynyt. Yritä myöhemmin uudelleen."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Ei yhteyttä. Yritä myöhemmin uudelleen."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Verkko ei yhteensopiva laitteen kanssa"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Yhteys katkaistu"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Tallennettu"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Maksullinen"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Maksuton"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Yhdistetty tämän kautta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Saatavilla tämän kautta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Yhdistetty automaattisesti tämän kautta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Yhdistetty automaattisesti verkon arviointipalvelun kautta"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Rajallinen yhteys"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Ei pääsyä yksityiselle DNS-palvelimelle"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Yhdistetty laitteeseen. Ei voi muodostaa internetyhteyttä."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Heikko laatu"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Ei mitään"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Vanhentunut"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Rekisteröidy napauttamalla"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Kosketa, jos haluat uusia tilauksen ja muodostaa yhteyden"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Avataan <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Ei yhteyttä"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Viimeistellään rekisteröitymistä…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Rekisteröityminen ei onnistunut. Yritä uudelleen napauttamalla."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Rekisteröityminen valmis. Yhdistetään…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Tälle verkolle lähetetään yksilöllinen tunnus, jolla voidaan seurata laitteen sijaintia. "<annotation id="url">"Lue lisää"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Hyvin hidas"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Hidas"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Kohtuullinen"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Nopea"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Hyvin nopea"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"–"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Vanhentunut"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Rekisteröidy napauttamalla"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Napauta, jos haluat uusia tilauksen ja muodostaa yhteyden"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Avataan <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Ei yhteyttä"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Viimeistellään rekisteröitymistä…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Rekisteröityminen ei onnistunut. Yritä uudelleen napauttamalla."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Rekisteröityminen valmis. Yhdistetään…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Tälle verkolle lähetetään SIM-tunnus, jolla voidaan seurata laitteen sijaintia. "<annotation id="url">"Lue lisää"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Hyvin hidas"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Hidas"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Keskinopea"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Nopea"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Hyvin nopea"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi ei toistaiseksi yhdistä automaattisesti"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-fr-rCA/arrays.xml b/libs/WifiTrackerLib/res/values-fr-rCA/arrays.xml
index 3d6f322..63491cb 100644
--- a/libs/WifiTrackerLib/res/values-fr-rCA/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-fr-rCA/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Recherche en cours…"</item>
-    <item msgid="6222852518007967736">"Connexion en cours…"</item>
-    <item msgid="1176401854208153464">"Authentification en cours…"</item>
-    <item msgid="1377026397901197257">"Récupération de l\'adresse IP en cours…"</item>
-    <item msgid="7627139816052121509">"Connecté"</item>
-    <item msgid="1598801023719359130">"Suspendu"</item>
-    <item msgid="9160765456671002324">"Déconnexion en cours…"</item>
-    <item msgid="8013176736494493734">"Déconnecté"</item>
-    <item msgid="4077393480368783785">"Échec"</item>
-    <item msgid="605372180740008604">"Bloqué"</item>
-    <item msgid="5102306451432929048">"Rejet temporaire des mauvaises connexions"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Recherche en cours…"</item>
+    <item msgid="9055468790485684083">"Connexion en cours…"</item>
+    <item msgid="6099499723199990208">"Authentification en cours…"</item>
+    <item msgid="6794055951297347103">"Récupération de l\'adresse IP en cours…"</item>
+    <item msgid="5450920562291300229">"Connecté"</item>
+    <item msgid="6332116533879646145">"Suspendu"</item>
+    <item msgid="294459081501073818">"Déconnexion en cours…"</item>
+    <item msgid="1577368920272598676">"Déconnecté"</item>
+    <item msgid="7655843177582495451">"Échec"</item>
+    <item msgid="8953752690917593623">"Bloqué"</item>
+    <item msgid="4400457817750243671">"Rejet temporaire des mauvaises connexions"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-fr-rCA/strings.xml b/libs/WifiTrackerLib/res/values-fr-rCA/strings.xml
index 83b3201..3e9de62 100644
--- a/libs/WifiTrackerLib/res/values-fr-rCA/strings.xml
+++ b/libs/WifiTrackerLib/res/values-fr-rCA/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"La connexion automatique est désactivée"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Enregistrés par <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Reconnexion automatique impossible"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Aucun accès à Internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problème d\'authentification"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Vérifiez le mot de passe et réessayez"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Échec de configuration de l\'adresse IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Désactivés"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Le point d\'accès est temporairement plein"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Déconnecté"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Enregistré"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Facturé à l\'usage"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Non mesuré"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Connecté sur le réseau <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Accessible dans <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Connecté automatiquement par le réseau <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Connecté automatiquement par le fournisseur d\'avis sur le réseau"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Connexion limitée"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Impossible d\'accéder au serveur DNS privé"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Aucune connexion Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">"  : "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"La connexion automatique est désactivée"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Enregistrés par <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Reconnexion automatique impossible"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Aucun accès à Internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problème d\'authentification"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Vérifiez le mot de passe et réessayez"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Échec de configuration de l\'adresse IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Désactivé"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Le point d\'accès est temporairement plein"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Mauvaises conditions de réseau temporaires"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Le signal est faible. Essayez de vous rapprocher du routeur."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Le réseau a atteint sa capacité maximale. Réessayez plus tard."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Connexion impossible. Réessayez plus tard."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Le réseau n\'est pas compatible avec cet appareil"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Déconnecté"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Enregistré"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Mesuré"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Non mesuré"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Connecté sur le réseau <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Accessible dans <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Connecté automatiquement par le réseau <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Connecté automatiquement par l\'utilitaire d\'évaluation des réseaux"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Connexion limitée"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Impossible d\'accéder au serveur DNS privé"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Connecté à l\'appareil. Aucune connexion Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Faible qualité"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Aucune"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Expiré"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Toucher pour vous inscrire"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Touchez pour renouveler l\'abonnement et vous connecter"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Ouverture de <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> en cours…"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Impossible de se connecter"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Finalisation de l\'inscription en cours…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Impossible de terminer l\'inscription. Touchez pour réessayer."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Inscription terminée. Connexion en cours…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Ce réseau reçoit un identifiant unique qui peut être utilisé pour faire le suivi de la position de l\'appareil. "<annotation id="url">"En savoir plus"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Très lente"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lente"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Moyenne"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Élevée"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Très rapide"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Aucune"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Expiré"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Toucher pour vous inscrire"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Touchez pour renouveler l\'abonnement et vous connecter"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Ouverture de <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> en cours…"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Impossible de se connecter"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Terminaison de l\'inscription en cours…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Impossible de terminer l\'inscription. Touchez pour réessayer."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Inscription terminée. Connexion en cours…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Ce réseau reçoit un identifiant SIM qui peut être utilisé pour faire le suivi de la position de l\'appareil. "<annotation id="url">"En savoir plus"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Très lente"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lente"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Moyenne"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Élevée"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Très rapide"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-fr/arrays.xml b/libs/WifiTrackerLib/res/values-fr/arrays.xml
index 05892c3..90a922d 100644
--- a/libs/WifiTrackerLib/res/values-fr/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-fr/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Recherche…"</item>
-    <item msgid="6222852518007967736">"Connexion…"</item>
-    <item msgid="1176401854208153464">"Authentification…"</item>
-    <item msgid="1377026397901197257">"Récupération de l\'adresse IP…"</item>
-    <item msgid="7627139816052121509">"Connecté"</item>
-    <item msgid="1598801023719359130">"Suspendu"</item>
-    <item msgid="9160765456671002324">"Déconnexion…"</item>
-    <item msgid="8013176736494493734">"Déconnecté"</item>
-    <item msgid="4077393480368783785">"Échec"</item>
-    <item msgid="605372180740008604">"Bloqué"</item>
-    <item msgid="5102306451432929048">"Mauvaise connexion évitée momentanément"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Recherche…"</item>
+    <item msgid="9055468790485684083">"Connexion…"</item>
+    <item msgid="6099499723199990208">"Authentification…"</item>
+    <item msgid="6794055951297347103">"Récupération de l\'adresse IP…"</item>
+    <item msgid="5450920562291300229">"Connecté"</item>
+    <item msgid="6332116533879646145">"Suspendu"</item>
+    <item msgid="294459081501073818">"Déconnexion…"</item>
+    <item msgid="1577368920272598676">"Déconnecté"</item>
+    <item msgid="7655843177582495451">"Échec"</item>
+    <item msgid="8953752690917593623">"Bloqué"</item>
+    <item msgid="4400457817750243671">"Mauvaise connexion évitée momentanément"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-fr/strings.xml b/libs/WifiTrackerLib/res/values-fr/strings.xml
index 40dedca..b117868 100644
--- a/libs/WifiTrackerLib/res/values-fr/strings.xml
+++ b/libs/WifiTrackerLib/res/values-fr/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Connexion automatique désactivée"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Enregistré lors de : <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Connexion automatique impossible"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Aucun accès à Internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problème d\'authentification"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Vérifiez le mot de passe et réessayez"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Échec de la configuration de l\'adresse IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Désactivé"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Point d\'accès temporairement plein"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Déconnecté"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Enregistré"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Facturé à l\'usage"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Non facturé à l\'usage"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Connecté via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Disponible via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Connecté automatiquement via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Connecté automatiquement via un fournisseur d\'évaluation de l\'état du réseau"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Connexion limitée"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Impossible d\'accéder au serveur DNS privé"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Aucun accès à Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Connexion automatique désactivée"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Enregistré par <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Connexion automatique impossible"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Aucun accès à Internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problème d\'authentification"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Vérifiez le mot de passe et réessayez"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Échec de la configuration de l\'adresse IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Désactivés"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Point d\'accès temporairement plein"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Mauvaises conditions réseau temporaires"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Signal faible. Rapprochez-vous du routeur."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Le réseau est en surcapacité. Réessayez plus tard."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Connexion impossible. Réessayez plus tard."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Réseau incompatible avec cet appareil"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Déconnecté"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Enregistré"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Facturé à l\'usage"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Non facturé à l\'usage"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Connecté via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Disponible via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Connecté automatiquement via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Connecté automatiquement via un fournisseur d\'évaluation de l\'état du réseau"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Connexion limitée"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Impossible d\'accéder au serveur DNS privé"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Connecté à l\'appareil. Connexion Internet impossible."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Faible qualité"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Aucune"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Arrivé à expiration"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Appuyez ici pour vous connecter"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Appuyez pour renouveler l\'abonnement et vous connecter"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Ouverture de <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>…"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Impossible de se connecter"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Finalisation de l\'inscription…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Impossible de finaliser l\'inscription. Appuyez ici pour réessayer."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Inscription terminée. Connexion…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Ce réseau reçoit un identifiant unique qui peut être utilisé pour suivre la position de l\'appareil. "<annotation id="url">"En savoir plus"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Très lente"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lente"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Correcte"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Moyenne"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Élevée"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Très rapide"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Aucun"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Expiré"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Appuyez ici pour vous connecter"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Appuyez pour renouveler l\'abonnement et vous connecter"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Ouverture de <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>…"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Impossible de se connecter"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Finalisation de l\'inscription…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Impossible de finaliser l\'inscription. Appuyez ici pour réessayer."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Inscription terminée. Connexion…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Ce réseau reçoit un ID de SIM qui peut être utilisé pour suivre la position de l\'appareil. "<annotation id="url">"En savoir plus"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Très lente"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lente"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Correcte"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Moyenne"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Rapide"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Très rapide"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-gl/arrays.xml b/libs/WifiTrackerLib/res/values-gl/arrays.xml
index 41aa8a3..83fc931 100644
--- a/libs/WifiTrackerLib/res/values-gl/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-gl/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Buscando…"</item>
-    <item msgid="6222852518007967736">"Conectando…"</item>
-    <item msgid="1176401854208153464">"Autenticando…"</item>
-    <item msgid="1377026397901197257">"Obtendo enderezo IP…"</item>
-    <item msgid="7627139816052121509">"Conectada"</item>
-    <item msgid="1598801023719359130">"Suspendida"</item>
-    <item msgid="9160765456671002324">"Desconectando…"</item>
-    <item msgid="8013176736494493734">"Desconectada"</item>
-    <item msgid="4077393480368783785">"Produciuse un erro"</item>
-    <item msgid="605372180740008604">"Bloqueada"</item>
-    <item msgid="5102306451432929048">"Evitando conexión deficiente temporalmente"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Buscando…"</item>
+    <item msgid="9055468790485684083">"Conectando…"</item>
+    <item msgid="6099499723199990208">"Autenticando…"</item>
+    <item msgid="6794055951297347103">"Obtendo enderezo IP…"</item>
+    <item msgid="5450920562291300229">"Conectada"</item>
+    <item msgid="6332116533879646145">"Suspendida"</item>
+    <item msgid="294459081501073818">"Desconectando…"</item>
+    <item msgid="1577368920272598676">"Desconectada"</item>
+    <item msgid="7655843177582495451">"Produciuse un erro"</item>
+    <item msgid="8953752690917593623">"Bloqueada"</item>
+    <item msgid="4400457817750243671">"Evitando conexión deficiente temporalmente"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-gl/strings.xml b/libs/WifiTrackerLib/res/values-gl/strings.xml
index 9847137..ac505f4 100644
--- a/libs/WifiTrackerLib/res/values-gl/strings.xml
+++ b/libs/WifiTrackerLib/res/values-gl/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"A conexión automática está desactivada"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Gardada por <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"A rede non se conectará automaticamente"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Sen acceso a Internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Produciuse un problema de autenticación"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Comproba o contrasinal e téntao de novo"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Produciuse un erro ao configurar o enderezo IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Desactivadas"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"O punto de acceso está temporalmente cheo"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Rede desconectada"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Gardada"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Rede sen tarifa plana"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Rede con tarifa plana"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Wifi conectada a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Dispoñible a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Wifi conectada automaticamente a través de: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Conectada automaticamente a través dun provedor de valoración de redes"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Pouca conexión"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Non se puido acceder ao servidor DNS privado"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Non hai conexión a Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"A conexión automática está desactivada"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Redes gardadas por <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"A rede non se conectará automaticamente"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Sen acceso a Internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problema de autenticación"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Comproba o contrasinal e téntao de novo"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Produciuse un erro ao configurar o enderezo IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Desactivada"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"O punto de acceso está temporalmente cheo"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Condicións de rede temporalmente deficientes"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Sinal feble. Proba a achegarte ao router."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"A rede está saturada. Téntao de novo máis tarde."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Non se puido establecer conexión. Téntao de novo máis tarde."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"A rede non é compatible con este dispositivo"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Desconectada"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Gardada"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Rede sen tarifa plana"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Rede con tarifa plana"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Conectada a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Dispoñible a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Conectada automaticamente a través de: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Conectada automaticamente a través dun provedor de valoración de redes"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Pouca conexión"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Non se puido acceder ao servidor DNS privado"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Estableceuse conexión co dispositivo. Internet non está dispoñible."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Pouca calidade"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Ningunha"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Caducou"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Toca para rexistrarte"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Toca para renovar a subscrición e conectarte"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Abrindo <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Non se puido conectar"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Completando rexistro…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Non se puido completar o rexistro. Toca para tentalo de novo."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Completouse o rexistro. Conectando…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Esta rede recibe un código exclusivo que se pode utilizar para realizar un seguimento da localización dos dispositivos. "<annotation id="url">"Máis información"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Moi lenta"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lenta"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Correcta"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Media"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Rápida"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Moi rápida"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Ningunha"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Caducou"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Toca para rexistrarte"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Toca para renovar a subscrición e conectarte"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Abrindo <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Non se puido establecer conexión"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Completando rexistro…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Non se puido completar o rexistro. Toca para tentalo de novo."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Completouse o rexistro. Conectando…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Esta rede recibe un código SIM que se pode utilizar para realizar un seguimento da localización do dispositivo. "<annotation id="url">"Máis información"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Moi lenta"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lenta"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Correcta"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Media"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Rápida"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Moi rápida"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"De momento, a wifi non se conectará automaticamente"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-gu/arrays.xml b/libs/WifiTrackerLib/res/values-gu/arrays.xml
index 1824bff..2e360ea 100644
--- a/libs/WifiTrackerLib/res/values-gu/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-gu/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"સ્કૅન કરી રહ્યાં છીએ…"</item>
-    <item msgid="6222852518007967736">"કનેક્ટ કરી રહ્યાં છીએ…"</item>
-    <item msgid="1176401854208153464">"પ્રમાણિત કરી રહ્યાં છીએ…"</item>
-    <item msgid="1377026397901197257">"IP ઍડ્રેસ મેળવી રહ્યાં છીએ…"</item>
-    <item msgid="7627139816052121509">"કનેક્ટ કર્યું છે"</item>
-    <item msgid="1598801023719359130">"સસ્પેન્ડ કર્યું છે"</item>
-    <item msgid="9160765456671002324">"ડિસ્કનેક્ટ થઈ રહ્યું છે…"</item>
-    <item msgid="8013176736494493734">"ડિસ્કનેક્ટ કર્યું છે"</item>
-    <item msgid="4077393480368783785">"અસફળ"</item>
-    <item msgid="605372180740008604">"બ્લૉક કરેલ"</item>
-    <item msgid="5102306451432929048">"નબળા કનેક્શનને અસ્થાયી રૂપે ટાળી રહ્યું છે"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"સ્કૅન કરી રહ્યા છીએ…"</item>
+    <item msgid="9055468790485684083">"કનેક્ટ કરી રહ્યા છીએ…"</item>
+    <item msgid="6099499723199990208">"પ્રમાણિત કરી રહ્યા છીએ…"</item>
+    <item msgid="6794055951297347103">"IP ઍડ્રેસ મેળવી રહ્યા છીએ…"</item>
+    <item msgid="5450920562291300229">"કનેક્ટ કર્યું છે"</item>
+    <item msgid="6332116533879646145">"સસ્પેન્ડ કર્યું છે"</item>
+    <item msgid="294459081501073818">"ડિસ્કનેક્ટ કરી રહ્યા છીએ…"</item>
+    <item msgid="1577368920272598676">"ડિસ્કનેક્ટ કર્યું છે"</item>
+    <item msgid="7655843177582495451">"અસફળ"</item>
+    <item msgid="8953752690917593623">"બ્લૉક કર્યું છે"</item>
+    <item msgid="4400457817750243671">"નબળા કનેક્શનને હંગામી રૂપે ટાળી રહ્યા છીએ"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-gu/strings.xml b/libs/WifiTrackerLib/res/values-gu/strings.xml
index 4e0cf01..6b5e442 100644
--- a/libs/WifiTrackerLib/res/values-gu/strings.xml
+++ b/libs/WifiTrackerLib/res/values-gu/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"ઑટો-કનેક્ટ બંધ છે"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> દ્વારા સચવાયું"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"ઑટોમૅટિક રીતે કનેક્ટ થશે નહીં"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"કોઈ ઇન્ટરનેટ ઍક્સેસ નથી"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"પ્રમાણીકરણમાં સમસ્યા"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"પાસવર્ડ તપાસો અને ફરી પ્રયાસ કરો"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP ગોઠવણીમાં નિષ્ફળતા"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"અક્ષમ કર્યો"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"ઍક્સેસ પૉઇન્ટ અસ્થાયીરૂપે ભરાયેલ છે"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"ડિસ્કનેક્ટ કર્યું"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"સાચવેલા"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"મીટર કરેલું"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"મીટર ન કરેલ"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> દ્વારા કનેક્ટ થયેલ"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> મારફતે ઉપલબ્ધ"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> મારફતે ઑટોમૅટિક રીતે કનેક્ટ કર્યું છે"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"નેટવર્ક રેટિંગ પ્રદાતા દ્વારા ઑટોમૅટિક રીતે કનેક્ટ થયું"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"મર્યાદિત કનેક્શન"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"ખાનગી DNS સર્વર ઍક્સેસ કરી શકાતા નથી"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"કોઈ ઇન્ટરનેટ નથી"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"ઑટો-કનેક્ટ બંધ છે"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> દ્વારા સચવાયેલ"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"ઑટોમૅટિક રીતે કનેક્ટ થશે નહીં"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"કોઈ ઇન્ટરનેટ ઍક્સેસ નથી"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"પ્રમાણીકરણમાં સમસ્યા"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"પાસવર્ડ ચેક કરો અને ફરી પ્રયાસ કરો"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP ગોઠવણીમાં નિષ્ફળતા"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"બંધ છે"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"ઍક્સેસ પૉઇન્ટમાં હંગામી રૂપે જગ્યા નથી"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"હંગામી રૂપે નેટવર્કની નબળી પરિસ્થિતિ"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"નબળું સિગ્નલ. રાઉટરની નજીક જઈને પ્રયાસ કરી જુઓ."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"નેટવર્ક પર ક્ષમતા કરતાં વધારે લોડ છે. થોડા સમય પછી ફરી પ્રયાસ કરો."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"કનેક્ટ કરી શકાતું નથી. થોડા સમય પછી ફરી પ્રયાસ કરો."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"નેટવર્ક આ ડિવાઇસ સાથે સુસંગત નથી"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"ડિસ્કનેક્ટ કર્યું છે"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"સાચવેલા"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"મીટર કરેલું"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"મીટર ન કરેલું"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> દ્વારા કનેક્ટ થયેલ"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> મારફતે ઉપલબ્ધ"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> મારફતે ઑટોમૅટિક રીતે કનેક્ટ કર્યું છે"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"નેટવર્ક રેટિંગ પ્રદાતા મારફતે ઑટોમૅટિક રીતે કનેક્ટ થયું"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"મર્યાદિત કનેક્શન"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"ખાનગી DNS સર્વર ઍક્સેસ કરી શકાતા નથી"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"ડિવાઇસ સાથે કનેક્ટેડ છે. ઇન્ટરનેટ સેવા પ્રદાન કરી શકાતી નથી."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"ઓછી ક્વૉલિટી"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"કોઈ નહીં"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"સમય સમાપ્ત થયો"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"સાઇન અપ કરવા માટે ટૅપ કરો"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"સબ્સ્ક્રિપ્શનને રિન્યૂ કરવા માટે ટૅપ કરો અને કનેક્ટ કરો"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ખોલી રહ્યાં છીએ"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"કનેક્ટ કરી શક્યા નથી"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"સાઇન અપ પૂર્ણ કરી રહ્યા છીએ…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"સાઇન અપ પૂર્ણ કરી શકાયું નથી. ફરી પ્રયાસ કરવા માટે ટૅપ કરો."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"સાઇન અપ પૂર્ણ. કનેક્ટ કરી રહ્યાં છીએ…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"આ નેટવર્ક એક વિશેષ ID મેળવે છે જેનો ઉપયોગ ડિવાઇસનું સ્થાન ટ્રૅક કરવા માટે થઈ શકે છે. "<annotation id="url">"વધુ જાણો"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"ખૂબ જ ધીમી"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"ધીમી"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ઓકે"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"મધ્યમ"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"ઝડપી"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"ખૂબ ઝડપી"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"કોઈ નહીં"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"સમય સમાપ્ત થયો"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"સાઇન અપ કરવા માટે ટૅપ કરો"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"સબ્સ્ક્રિપ્શનને રિન્યૂ કરવા માટે ટૅપ કરો અને કનેક્ટ કરો"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ખોલી રહ્યા છીએ"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"કનેક્ટ કરી શક્યા નથી"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"સાઇન અપ પૂર્ણ કરી રહ્યા છીએ…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"સાઇન અપ પૂર્ણ કરી શકાયું નથી. ફરી પ્રયાસ કરવા માટે ટૅપ કરો."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"સાઇન અપ પૂર્ણ. કનેક્ટ કરી રહ્યા છીએ…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"આ નેટવર્કને સિમ ID મળે છે જેનો ઉપયોગ ડિવાઇસનું સ્થાન ટ્રૅક કરવા માટે થઈ શકે છે. "<annotation id="url">"વધુ જાણો"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"ખૂબ જ ધીમી"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"ધીમી"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ઓકે"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"મધ્યમ"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"ઝડપી"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"ખૂબ ઝડપી"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-hi/arrays.xml b/libs/WifiTrackerLib/res/values-hi/arrays.xml
index 4302269..85d4bfb 100644
--- a/libs/WifiTrackerLib/res/values-hi/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-hi/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"स्कैन किया जा रहा है…"</item>
-    <item msgid="6222852518007967736">"कनेक्ट हो रहा है…"</item>
-    <item msgid="1176401854208153464">"पुष्टि की जा रही है…"</item>
-    <item msgid="1377026397901197257">"आईपी पते की जानकारी ली जा रही है…"</item>
-    <item msgid="7627139816052121509">"कनेक्ट है"</item>
-    <item msgid="1598801023719359130">"निलंबित"</item>
-    <item msgid="9160765456671002324">"डिसकनेक्ट किया जा रहा है…"</item>
-    <item msgid="8013176736494493734">"डिसकनेक्ट किया गया"</item>
-    <item msgid="4077393480368783785">"वाई-फ़ाई से कनेक्ट नहीं हो सका"</item>
-    <item msgid="605372180740008604">"ब्लॉक किया गया"</item>
-    <item msgid="5102306451432929048">"कुछ समय के लिए, खराब कनेक्शन से कनेक्ट नहीं किया जा रहा है"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"स्कैन किया जा रहा है…"</item>
+    <item msgid="9055468790485684083">"कनेक्ट हो रहा है…"</item>
+    <item msgid="6099499723199990208">"पुष्टि की जा रही है…"</item>
+    <item msgid="6794055951297347103">"आईपी पते की जानकारी ली जा रही है…"</item>
+    <item msgid="5450920562291300229">"कनेक्ट हो गया"</item>
+    <item msgid="6332116533879646145">"कुछ समय के लिए वाई-फ़ाई बंद किया गया"</item>
+    <item msgid="294459081501073818">"डिसकनेक्ट किया जा रहा है…"</item>
+    <item msgid="1577368920272598676">"डिसकनेक्ट किया गया"</item>
+    <item msgid="7655843177582495451">"वाई-फ़ाई से कनेक्ट नहीं हो सका"</item>
+    <item msgid="8953752690917593623">"ब्लॉक किया गया"</item>
+    <item msgid="4400457817750243671">"खराब कनेक्शन की वजह से, कुछ समय के लिए वाई-फ़ाई बंद किया जा रहा है"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-hi/strings.xml b/libs/WifiTrackerLib/res/values-hi/strings.xml
index 8ce4af1..6161be3 100644
--- a/libs/WifiTrackerLib/res/values-hi/strings.xml
+++ b/libs/WifiTrackerLib/res/values-hi/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"अपने-आप कनेक्ट होने की सुविधा बंद है"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> के द्वारा सहेजा गया"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"अपने-आप कनेक्ट नहीं होगा"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"इंटरनेट नहीं है"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"पुष्टि नहीं हो सकी"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"पासवर्ड जाँचें और दोबारा कोशिश करें"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP कॉन्‍फ़िगरेशन की विफलता"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"अक्षम"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"ऐक्सेस पॉइंट फ़िलहाल भरा हुआ है"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"डिसकनेक्ट किया गया"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"सेव किया गया"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"डेटा इस्तेमाल करने की सीमा तय की गई है"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"डेटा इस्तेमाल करने की सीमा तय नहीं की गई है"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> के ज़रिए कनेक्ट किया गया"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"यह <xliff:g id="NAME">%1$s</xliff:g> के ज़रिए उपलब्ध है"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> के ज़रिए अपने-आप कनेक्ट किया गया"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"नेटवर्क रेटिंग कंपनी के ज़रिए अपने आप कनेक्ट है"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"सीमित कनेक्शन"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"निजी डीएनएस सर्वर को ऐक्सेस नहीं किया जा सकता"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"इंटरनेट कनेक्शन नहीं है"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"वाई-फ़ाई से अपने-आप कनेक्ट होने की सुविधा बंद है"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> से सेव किया गया"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"अपने-आप कनेक्ट नहीं होगा"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"इंटरनेट नहीं है"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"पुष्टि नहीं हो सकी"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"पासवर्ड जांचें और फिर से कोशिश करें"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"आईपी पता कॉन्फ़िगर नहीं हो सका"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"बंद है"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"ऐक्सेस पॉइंट को फ़िलहाल इस्तेमाल नहीं किया जा सकता"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"फ़िलहाल, इंटरनेट कनेक्शन ठीक नहीं है"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"कमज़ोर सिग्नल. राऊटर के पास जाकर देखें."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"नेटवर्क पर उसकी क्षमता से ज़्यादा लोड है. कुछ देर बाद कोशिश करें."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"कनेक्ट नहीं किया जा सका. कुछ देर बाद कोशिश करें."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"यह नेटवर्क इस डिवाइस पर काम नहीं करता है"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"डिसकनेक्ट किया गया"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"नेटवर्क सेव किया गया"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"डेटा इस्तेमाल करने की सीमा तय की गई है"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"डेटा इस्तेमाल करने की सीमा तय नहीं की गई है"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> के ज़रिए कनेक्ट किया गया"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"यह नेटवर्क, <xliff:g id="NAME">%1$s</xliff:g> के ज़रिए उपलब्ध है"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"वाई-फ़ाई, <xliff:g id="NAME">%1$s</xliff:g> के ज़रिए अपने-आप कनेक्ट हो गया"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"वाई-फ़ाई, नेटवर्क रेटिंग देने वाली कंपनी के ज़रिए अपने-आप कनेक्ट हो गया"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"सीमित कनेक्शन"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"निजी डीएनएस सर्वर को ऐक्सेस नहीं किया जा सकता"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"डिवाइस से कनेक्ट है. इंटरनेट सेवा उपलब्ध नहीं है."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"खराब कनेक्शन"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"कोई नहीं"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"समयसीमा खत्म हो गई"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"साइन अप करने के लिए टैप करें"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"सदस्यता रिन्यू करने के लिए टैप करें और कनेक्ट करें"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> खोला जा रहा है"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"कनेक्ट नहीं किया जा सका"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"साइन अप किया जा रहा है…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"साइन अप नहीं हो सका. फिर से कोशिश करने के लिए टैप करें."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"साइन अप की प्रक्रिया पूरी हो गई. कनेक्ट हो रहा है…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"इस नेटवर्क को एक विशेष आईडी दिया जाता है जिसका इस्तेमाल डिवाइस की जगह की जानकारी का पता लगाने के लिए किया जा सकता है. "<annotation id="url">"ज़्यादा जानें"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"अत्‍यधिक धीमी"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"धीमी"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ठीक है"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"मध्यम"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"तेज़"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"बहुत ज़्यादा तेज़"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"कोई नहीं"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"समयसीमा खत्म हो गई"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"साइन अप करने के लिए टैप करें"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"सदस्यता रिन्यू करने के लिए टैप करें और कनेक्ट करें"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> खोला जा रहा है"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"कनेक्ट नहीं किया जा सका"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"साइन अप किया जा रहा है…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"साइन अप नहीं किया जा सका. फिर से कोशिश करने के लिए टैप करें."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"साइन अप की प्रक्रिया पूरी हो गई. कनेक्ट हो रहा है…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"इस नेटवर्क को एक सिम आईडी दिया जाता है जिसका इस्तेमाल डिवाइस की जगह की जानकारी का पता लगाने के लिए किया जा सकता है. "<annotation id="url">"ज़्यादा जानें"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"बहुत धीमी"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"धीमी"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ठीक-ठाक"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"औसत"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"तेज़"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"बहुत तेज़"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-hr/arrays.xml b/libs/WifiTrackerLib/res/values-hr/arrays.xml
index 8ffa760..ccf67fc 100644
--- a/libs/WifiTrackerLib/res/values-hr/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-hr/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Traženje…"</item>
-    <item msgid="6222852518007967736">"Povezivanje…"</item>
-    <item msgid="1176401854208153464">"Autentifikacija…"</item>
-    <item msgid="1377026397901197257">"Dohvaćanje IP adrese…"</item>
-    <item msgid="7627139816052121509">"Povezano"</item>
-    <item msgid="1598801023719359130">"Obustavljeno"</item>
-    <item msgid="9160765456671002324">"Prekidanje veze…"</item>
-    <item msgid="8013176736494493734">"Nije povezano"</item>
-    <item msgid="4077393480368783785">"Neuspješno"</item>
-    <item msgid="605372180740008604">"Blokirano"</item>
-    <item msgid="5102306451432929048">"Privremeno izbjegavanje loše veze"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Traženje…"</item>
+    <item msgid="9055468790485684083">"Povezivanje…"</item>
+    <item msgid="6099499723199990208">"Autentifikacija…"</item>
+    <item msgid="6794055951297347103">"Dohvaćanje IP adrese…"</item>
+    <item msgid="5450920562291300229">"Povezano"</item>
+    <item msgid="6332116533879646145">"Obustavljeno"</item>
+    <item msgid="294459081501073818">"Isključivanje…"</item>
+    <item msgid="1577368920272598676">"Nije povezano"</item>
+    <item msgid="7655843177582495451">"Neuspješno"</item>
+    <item msgid="8953752690917593623">"Blokirano"</item>
+    <item msgid="4400457817750243671">"Privremeno izbjegavanje loše veze"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-hr/strings.xml b/libs/WifiTrackerLib/res/values-hr/strings.xml
index 016b41a..8cb775d 100644
--- a/libs/WifiTrackerLib/res/values-hr/strings.xml
+++ b/libs/WifiTrackerLib/res/values-hr/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Automatsko povezivanje je isključeno"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Spremila aplik. <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Neće se povezati automatski"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Nema pristupa internetu"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problem u autentifikaciji"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Provjerite zaporku i pokušajte ponovo"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Konfiguracija IP-ja nije uspjela"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Onemogućeno"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Pristupna je točka privremeno puna"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Nije povezano"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Spremljeno"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"S ograničenim prometom"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Bez ograničenja prometa"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Povezan putem mreže <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Dostupno putem mreže <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatski povezano putem mreže <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatski povezan putem ocjenjivača mreže"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Ograničena veza"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Nije moguće pristupiti privatnom DNS poslužitelju"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Nema interneta"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatsko povezivanje je isključeno"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Spremila aplikacija <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Neće se povezati automatski"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Nema pristupa internetu"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problem u autentifikaciji"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Provjerite zaporku i pokušajte ponovo"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Konfiguracija IP-ja nije uspjela"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Onemogućeno"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Pristupna je točka privremeno puna"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Privremeno loši uvjeti mreže"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Signal je slab. Pokušajte se približiti usmjerivaču."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Premašen je kapacitet mreže. Pokušajte ponovo kasnije."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Povezivanje nije uspjelo. Pokušajte ponovo kasnije."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Mreža nije kompatibilna s ovim uređajem"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Nije povezano"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Spremljeno"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"S ograničenim prometom"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Bez ograničenja prometa"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Povezano putem aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Dostupno putem aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatski povezano putem aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatski povezano putem ocjenjivača mreže"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Ograničena veza"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Nije moguće pristupiti privatnom DNS poslužitelju"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Uspostavljena je veza s uređajem. Povezivanje s internetom nije moguće."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Niska kvaliteta"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Nema"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Isteklo"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Dodirnite da biste se registrirali"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Dodirnite da biste obnovili pretplatu i povezali se"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Otvaranje usluge <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Povezivanje nije uspjelo"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Dovršavanje registracije…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Registracija nije dovršena. Dodirnite za ponovni pokušaj."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Registracija je dovršena. Povezivanje…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Ova mreža prima jedinstveni ID koji se može koristiti za praćenje lokacije uređaja. "<annotation id="url">"Saznajte više"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Vrlo sporo"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Sporo"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"U redu"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Srednje"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Brzo"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Vrlo brzo"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Ništa"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Isteklo"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Dodirnite da biste se registrirali"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Dodirnite da biste obnovili pretplatu i povezali se"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Otvaranje usluge <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Povezivanje nije uspjelo"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Dovršavanje registracije…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Registracija nije dovršena. Dodirnite za ponovni pokušaj."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registracija je dovršena. Povezivanje…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Ova mreža prima ID SIM-a koji se može koristiti za praćenje lokacije uređaja. "<annotation id="url">"Saznajte više"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Vrlo sporo"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Sporo"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"U redu"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Srednje"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Brzo"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Vrlo brzo"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi se zasad neće automatski povezivati"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-hu/arrays.xml b/libs/WifiTrackerLib/res/values-hu/arrays.xml
index 62c2b4e..5cd6d32 100644
--- a/libs/WifiTrackerLib/res/values-hu/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-hu/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Keresés…"</item>
-    <item msgid="6222852518007967736">"Csatlakozás…"</item>
-    <item msgid="1176401854208153464">"Hitelesítés…"</item>
-    <item msgid="1377026397901197257">"IP-cím lekérése…"</item>
-    <item msgid="7627139816052121509">"Csatlakozva"</item>
-    <item msgid="1598801023719359130">"Felfüggesztve"</item>
-    <item msgid="9160765456671002324">"Leválasztás…"</item>
-    <item msgid="8013176736494493734">"Leválasztva"</item>
-    <item msgid="4077393480368783785">"Sikertelen"</item>
-    <item msgid="605372180740008604">"Letiltva"</item>
-    <item msgid="5102306451432929048">"A rossz minőségű kapcsolatok átmeneti elkerülése"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Keresés…"</item>
+    <item msgid="9055468790485684083">"Csatlakozás…"</item>
+    <item msgid="6099499723199990208">"Hitelesítés…"</item>
+    <item msgid="6794055951297347103">"IP-cím lekérése…"</item>
+    <item msgid="5450920562291300229">"Csatlakoztatva"</item>
+    <item msgid="6332116533879646145">"Felfüggesztve"</item>
+    <item msgid="294459081501073818">"Kapcsolat bontása…"</item>
+    <item msgid="1577368920272598676">"Szétkapcsolva"</item>
+    <item msgid="7655843177582495451">"Sikertelen"</item>
+    <item msgid="8953752690917593623">"Letiltva"</item>
+    <item msgid="4400457817750243671">"A rossz minőségű kapcsolatok átmeneti elkerülése"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-hu/strings.xml b/libs/WifiTrackerLib/res/values-hu/strings.xml
index baeda41..09b8b0c 100644
--- a/libs/WifiTrackerLib/res/values-hu/strings.xml
+++ b/libs/WifiTrackerLib/res/values-hu/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Automatikus csatlakozás kikapcsolva"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Mentette: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Nem csatlakozik automatikusan"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Nincs internet-hozzáférés"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Hitelesítési probléma"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Ellenőrizze a jelszót, majd próbálkozzon újra"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP-konfigurációs hiba"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Letiltva"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"A hozzáférési pont átmenetileg megtelt"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Leválasztva"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Mentve"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Forgalomkorlátos"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Nem forgalomkorlátos"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Kapcsolódva a következőn keresztül: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Rendelkezésre áll a(z) <xliff:g id="NAME">%1$s</xliff:g> alkalmazáson keresztül"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatikusan csatlakozva a következőn keresztül: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatikusan csatlakozott a hálózatértékelés szolgáltatóján keresztül"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Korlátozott kapcsolat"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"A privát DNS-kiszolgálóhoz nem lehet hozzáférni"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Nincs internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatikus csatlakozás kikapcsolva"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Mentette: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Nem csatlakozik automatikusan"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Nincs internet-hozzáférés"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Hitelesítési probléma"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Ellenőrizze a jelszót, majd próbálja újra"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP-konfigurációs hiba"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Letiltva"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"A hozzáférési pont átmenetileg megtelt"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"A hálózati kapcsolat átmenetileg gyenge"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Gyenge jel. Próbáljon közelebb helyezkedni a routerhez."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"A hálózat túllépte a rendelkezésre álló kapacitást. Próbálja meg később."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Nem lehet csatlakozni. Próbálja meg később."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"A hálózat nem kompatibilis ezzel az eszközzel."</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Szétkapcsolva"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Mentve"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Forgalomkorlátos"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Nem forgalomkorlátos"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Kapcsolódva a következőn keresztül: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Rendelkezésre áll a(z) <xliff:g id="NAME">%1$s</xliff:g> alkalmazáson keresztül"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatikusan csatlakozva a következőn keresztül: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatikusan csatlakozva a hálózatértékelés szolgáltatóján keresztül"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Korlátozott kapcsolat"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"A privát DNS-kiszolgálóhoz nem lehet hozzáférni"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Csatlakoztatva az eszközhöz. Nincs internethozzáférés."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Gyenge minőségű"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Nincs"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Lejárt"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Koppintson a regisztrációhoz"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Koppintson az előfizetés megújításához és a csatlakozáshoz"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> megnyitása"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Nem sikerült csatlakozni"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Regisztráció befejezése…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Nem sikerült a regisztráció befejezése. Koppintással újrapróbálkozhat."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"A regisztráció befejeződött. Csatlakozás…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Ez a hálózat egyedi azonosítót kap, amely felhasználható az eszköz helyadatainak követésére. "<annotation id="url">"További információ"</annotation>"."</string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Nagyon lassú"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lassú"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Rendben"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Közepes"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Gyors"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Nagyon gyors"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Nincs"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Lejárt"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Koppintson a regisztrációhoz"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Koppintson az előfizetés megújításához és a csatlakozáshoz"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> megnyitása"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Nem sikerült csatlakozni"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Regisztráció befejezése…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Nem sikerült a regisztráció befejezése. Koppintással újrapróbálkozhat."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"A regisztráció befejeződött. Csatlakozás…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Ez a hálózat SIM-azonosítót kap, amely felhasználható az eszköz helyadatainak követésére. "<annotation id="url">"További információ"</annotation>"."</string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Nagyon lassú"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lassú"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Közepes"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Gyors"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Nagyon gyors"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"A Wi-Fi-re történő csatlakozás jelenleg nem automatikus"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-hy/arrays.xml b/libs/WifiTrackerLib/res/values-hy/arrays.xml
index 82ed80b5..6a89431 100644
--- a/libs/WifiTrackerLib/res/values-hy/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-hy/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Որոնում…"</item>
-    <item msgid="6222852518007967736">"Միացում…"</item>
-    <item msgid="1176401854208153464">"Նույնականացում…"</item>
-    <item msgid="1377026397901197257">"IP հասցեի ստացում…"</item>
-    <item msgid="7627139816052121509">"Միացած է"</item>
-    <item msgid="1598801023719359130">"Կասեցված է"</item>
-    <item msgid="9160765456671002324">"Անջատվում է…"</item>
-    <item msgid="8013176736494493734">"Կապ չկա"</item>
-    <item msgid="4077393480368783785">"Սխալ առաջացավ"</item>
-    <item msgid="605372180740008604">"Արգելափակված է"</item>
-    <item msgid="5102306451432929048">"Անջատվել է վատ կապի պատճառով"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Որոնում…"</item>
+    <item msgid="9055468790485684083">"Միացում…"</item>
+    <item msgid="6099499723199990208">"Նույնականացում…"</item>
+    <item msgid="6794055951297347103">"IP հասցեի ստացում…"</item>
+    <item msgid="5450920562291300229">"Միացած է"</item>
+    <item msgid="6332116533879646145">"Կասեցված է"</item>
+    <item msgid="294459081501073818">"Անջատվում է…"</item>
+    <item msgid="1577368920272598676">"Կապը չեղարկված է"</item>
+    <item msgid="7655843177582495451">"Չհաջողվեց միանալ"</item>
+    <item msgid="8953752690917593623">"Արգելափակված է"</item>
+    <item msgid="4400457817750243671">"Անջատվել է վատ կապի պատճառով"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-hy/strings.xml b/libs/WifiTrackerLib/res/values-hy/strings.xml
index 9ef2f69..d51a53c 100644
--- a/libs/WifiTrackerLib/res/values-hy/strings.xml
+++ b/libs/WifiTrackerLib/res/values-hy/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Ավտոմատ միացումն անջատված է"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Ով է պահել՝ <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Չի միանա ավտոմատ"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Ինտերնետ կապ չկա"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Նույնականացման խնդիր"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Ստուգեք գաղտնաբառը և նորից փորձեք"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Չհաջողվեց կարգավորել IP-ն"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Անջատված"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Հասանելիության կետը ժամանակավորապես լիքն է"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Կապ չկա"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Պահված է"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Վճարովի թրաֆիկ"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Անսահմանափակ թրաֆիկ"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Միացված է <xliff:g id="NAME">%1$s</xliff:g>-ի միջոցով"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Հասանելի է հետևյալ հավելվածի միջոցով՝ <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Ավտոմատ միացված է <xliff:g id="NAME">%1$s</xliff:g>-ի միջոցով"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Ավտոմատ միացել է ցանցերի վարկանիշի մատակարարի միջոցով"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Սահմանափակ կապ"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Մասնավոր DNS սերվերն անհասանելի է"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Կապ չկա"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Ավտոմատ միացումն անջատված է"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Ով է պահել՝ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Չի միանա ավտոմատ"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Ինտերնետ կապ չկա"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Նույնականացման խնդիր"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Ստուգեք գաղտնաբառը և նորից փորձեք"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Չհաջողվեց կարգավորել IP-ն"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Անջատված է"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Մուտքի կետին չափազանց շատ սարքեր են միացված"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Կապը ժամանակավորապես թույլ է"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Ազդանշանը թույլ է։ Մոտեցեք երթուղիչին։"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Ցանցը գերծանրաբեռնված է։ Փորձեք ավելի ուշ։"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Կապ չկա։ Փորձեք ավելի ուշ։"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Ցանցն անհամատեղելի է այս սարքի հետ"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Կապը չեղարկված է"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Պահված է"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Վճարովի թրաֆիկ"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Անսահմանափակ թրաֆիկ"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Միացվել է <xliff:g id="NAME">%1$s</xliff:g> հավելվածի միջոցով"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Հասանելի է <xliff:g id="NAME">%1$s</xliff:g> հավելվածի միջոցով"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Ավտոմատ միացվել է <xliff:g id="NAME">%1$s</xliff:g> հավելվածի միջոցով"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Ավտոմատ միացել է ցանցերի վարկանիշի մատակարարի միջոցով"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Սահմանափակ կապ"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Մասնավոր DNS սերվերն անհասանելի է"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Միացված է սարքին։ Հնարավոր չէ տրամադրել ինտերնետ կապ։"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Ցածր որակ"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Ոչ մեկը"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Սպառվել է"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Հպեք՝ գրանցվելու համար"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Հպեք՝ բաժանորդագրությունը նորացնելու և միանալու համար"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>, բացվում է"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Չհաջողվեց միանալ"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Գրանցումն ավարտվում է…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Չհաջողվեց ավարտել գրանցումը։ Հպեք՝ նորից փորձելու համար։"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Գրանցումն ավարտված է։ Միացում…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Այս ցանցը ստանում է եզակի ID, որի օգնությամբ հնարավոր է հետագծել սարքի տեղադրությունը։ "<annotation id="url">"Իմանալ ավելին"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Շատ դանդաղ"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Դանդաղ"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Լավ"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Միջին"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Արագ"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Շատ արագ"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Չկա"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Սպառվել է"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Հպեք՝ գրանցվելու համար"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Հպեք՝ բաժանորդագրությունը նորացնելու և միանալու համար"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>, բացվում է"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Չհաջողվեց միանալ"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Գրանցումն ավարտվում է…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Չհաջողվեց ավարտել գրանցումը։ Հպեք՝ նորից փորձելու համար։"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Գրանցումն ավարտված է։ Միացում…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Այս ցանցը ստանում է SIM քարտի ID, որի օգնությամբ հնարավոր է հետագծել սարքի տեղադրությունը։ "<annotation id="url">"Իմանալ ավելին"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Շատ դանդաղ"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Դանդաղ"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Լավ"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Միջին"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Արագ"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Շատ արագ"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-in/arrays.xml b/libs/WifiTrackerLib/res/values-in/arrays.xml
index a6cd10e..c851e6e 100644
--- a/libs/WifiTrackerLib/res/values-in/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-in/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Memindai…"</item>
-    <item msgid="6222852518007967736">"Menyambungkan…"</item>
-    <item msgid="1176401854208153464">"Mengautentikasi…"</item>
-    <item msgid="1377026397901197257">"Mendapatkan alamat IP…"</item>
-    <item msgid="7627139816052121509">"Tersambung"</item>
-    <item msgid="1598801023719359130">"Ditangguhkan"</item>
-    <item msgid="9160765456671002324">"Memutus sambungan..."</item>
-    <item msgid="8013176736494493734">"Terputus"</item>
-    <item msgid="4077393480368783785">"Gagal"</item>
-    <item msgid="605372180740008604">"Diblokir"</item>
-    <item msgid="5102306451432929048">"Menghindari sambungan buruk untuk sementara"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Memindai …"</item>
+    <item msgid="9055468790485684083">"Menghubungkan …"</item>
+    <item msgid="6099499723199990208">"Mengautentikasi …"</item>
+    <item msgid="6794055951297347103">"Mendapatkan alamat IP …"</item>
+    <item msgid="5450920562291300229">"Terhubung"</item>
+    <item msgid="6332116533879646145">"Ditangguhkan"</item>
+    <item msgid="294459081501073818">"Memutus koneksi …"</item>
+    <item msgid="1577368920272598676">"Koneksi terputus"</item>
+    <item msgid="7655843177582495451">"Gagal"</item>
+    <item msgid="8953752690917593623">"Diblokir"</item>
+    <item msgid="4400457817750243671">"Menghindari koneksi buruk untuk sementara"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-in/strings.xml b/libs/WifiTrackerLib/res/values-in/strings.xml
index e870613..1fbb2ae 100644
--- a/libs/WifiTrackerLib/res/values-in/strings.xml
+++ b/libs/WifiTrackerLib/res/values-in/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Sambung-otomatis nonaktif"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Disimpan oleh <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Tidak akan terhubung otomatis"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Tidak ada akses internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Masalah autentikasi"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Periksa sandi dan coba lagi"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Kegagalan konfigurasi IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Nonaktif"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Titik akses penuh untuk sementara"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Terputus"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Disimpan"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Berbayar"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Tidak berbayar"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Tersambung melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Tersedia melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Terhubung otomatis melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Otomatis tersambung melalui penyedia rating jaringan"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Koneksi terbatas"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Server DNS pribadi tidak dapat diakses"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Tidak ada internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Hubung-otomatis nonaktif"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Disimpan oleh <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Tidak akan terhubung otomatis"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Tidak ada akses internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Masalah autentikasi"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Periksa sandi dan coba lagi"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Kegagalan konfigurasi IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Nonaktif"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Titik akses penuh untuk sementara"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Kondisi jaringan buruk untuk sementara"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Sinyal lemah. Coba mendekat ke router."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Jaringan melebihi kapasitas. Coba lagi nanti."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Tidak dapat terhubung. Coba lagi nanti."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Jaringan tidak kompatibel dengan perangkat ini"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Koneksi terputus"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Tersimpan"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Berbayar"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Tidak berbayar"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Terhubung melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Tersedia melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Terhubung otomatis melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Terhubung otomatis melalui penyedia rating jaringan"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Koneksi terbatas"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Server DNS pribadi tidak dapat diakses"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Terhubung ke perangkat. Tidak dapat menyediakan koneksi internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Kualitas rendah"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Tidak ada"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Sudah tidak berlaku"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Ketuk untuk mendaftar"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Ketuk untuk memperpanjang langganan dan menyambungkan"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Membuka <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Tidak dapat terhubung"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Menyelesaikan pendaftaran…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Tidak dapat menyelesaikan pendaftaran. Ketuk untuk mencoba lagi."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Pendaftaran selesai. Menyambungkan…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Jaringan ini menerima ID unik yang dapat digunakan untuk melacak lokasi perangkat. "<annotation id="url">"Pelajari lebih lanjut"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Sangat Lambat"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lambat"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Oke"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Sedang"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Cepat"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Sangat Cepat"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Tidak ada"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Sudah tidak berlaku"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Ketuk untuk mendaftar"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Ketuk untuk memperpanjang langganan dan menghubungkan"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Membuka <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Tidak dapat terhubung"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Menyelesaikan pendaftaran …"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Tidak dapat menyelesaikan pendaftaran. Ketuk untuk mencoba lagi."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Pendaftaran selesai. Menghubungkan …"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Jaringan ini menerima ID SIM yang dapat digunakan untuk melacak lokasi perangkat. "<annotation id="url">"Pelajari lebih lanjut"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Sangat Lambat"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lambat"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Oke"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Sedang"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Cepat"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Sangat Cepat"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi tidak akan terhubung otomatis untuk saat ini"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-is/arrays.xml b/libs/WifiTrackerLib/res/values-is/arrays.xml
index 6686488..d62b1d7 100644
--- a/libs/WifiTrackerLib/res/values-is/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-is/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Leitar…"</item>
-    <item msgid="6222852518007967736">"Tengist…"</item>
-    <item msgid="1176401854208153464">"Auðkennir…"</item>
-    <item msgid="1377026397901197257">"Sækir IP-tölu…"</item>
-    <item msgid="7627139816052121509">"Tengt"</item>
-    <item msgid="1598801023719359130">"Í bið"</item>
-    <item msgid="9160765456671002324">"Aftengist…"</item>
-    <item msgid="8013176736494493734">"Aftengt"</item>
-    <item msgid="4077393480368783785">"Mistókst"</item>
-    <item msgid="605372180740008604">"Lokað á"</item>
-    <item msgid="5102306451432929048">"Forðast lélega tengingu tímabundið"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Leitar…"</item>
+    <item msgid="9055468790485684083">"Tengist…"</item>
+    <item msgid="6099499723199990208">"Auðkennir…"</item>
+    <item msgid="6794055951297347103">"Sækir IP-tölu…"</item>
+    <item msgid="5450920562291300229">"Tengt"</item>
+    <item msgid="6332116533879646145">"Í bið"</item>
+    <item msgid="294459081501073818">"Aftengist…"</item>
+    <item msgid="1577368920272598676">"Aftengt"</item>
+    <item msgid="7655843177582495451">"Mistókst"</item>
+    <item msgid="8953752690917593623">"Lokað"</item>
+    <item msgid="4400457817750243671">"Forðast lélega tengingu tímabundið"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-is/strings.xml b/libs/WifiTrackerLib/res/values-is/strings.xml
index 2a535f3..5c3cf48 100644
--- a/libs/WifiTrackerLib/res/values-is/strings.xml
+++ b/libs/WifiTrackerLib/res/values-is/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Slökkt er á sjálfvirkri tengingu"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> vistaði"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Mun ekki tengjast sjálfkrafa"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Enginn netaðgangur"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Vandamál við auðkenningu"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Athugaðu aðgangsorðið og reyndu aftur"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP-stillingarvilla"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Óvirkt"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Aðgangsstaður tímabundið fullur"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Aftengt"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Vistað"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Mæld notkun"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Notkun ekki mæld"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Tenging í gegnum <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Í boði með <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Tengt sjálfkrafa með <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Sjálfkrafa tengt um netgæðaveitu"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Takmörkuð tenging"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Ekki næst í DNS-einkaþjón"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Engin nettenging"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Slökkt er á sjálfvirkri tengingu"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> vistaði"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Mun ekki tengjast sjálfkrafa"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Enginn netaðgangur"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Vandamál við auðkenningu"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Athugaðu aðgangsorðið og reyndu aftur"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP-stillingarvilla"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Slökkt"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Aðgangsstaður tímabundið fullur"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Léleg nettenging tímabundið"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Léleg tenging. Prófaðu að færa þig nær beininum."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Hámarki netkerfis er náð. Reyndu aftur síðar."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Ekki er hægt að tengjast. Reyndu aftur síðar."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Netið er ekki samhæft þessu tæki"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Aftengt"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Vistað"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Mæld notkun"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Notkun ekki mæld"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Tenging í gegnum <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Í boði með <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Tengt sjálfkrafa með <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Sjálfkrafa tengt um netgæðaveitu"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Takmörkuð tenging"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Ekki næst í DNS-einkaþjón"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Tengt við tæki. Nettenging næst ekki."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Lítil gæði"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Ekkert"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Útrunnin"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Ýttu til að skrá þig"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Ýttu til að endurnýja áskrift og tengjast"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Opnar <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Ekki tókst að tengjast"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Gengur frá skráningu…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Ekki tókst að ljúka við skráningu. Ýttu til að reyna aftur."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Skráningu lokið. Tengist…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Þetta net fær einkvæmt auðkenni sem hægt er að nota til að rekja staðsetningu tækis. "<annotation id="url">"Frekari upplýsingar"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Mjög hægt"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Hægt"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Í lagi"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Miðlungshratt"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Hratt"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Mjög hratt"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Ekkert"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Útrunnið"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Ýttu til að skrá þig"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Ýttu til að endurnýja áskrift og tengjast"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Opnar <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Ekki tókst að tengjast"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Gengur frá skráningu…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Ekki tókst að ljúka við skráningu. Ýttu til að reyna aftur."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Skráningu lokið. Tengist…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Þetta net fær SIM-auðkenni sem hægt er að nota til að rekja staðsetningu tækis. "<annotation id="url">"Frekari upplýsingar"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Mjög hægt"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Hægt"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Í lagi"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Miðlungs"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Hratt"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Mjög hratt"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi tengist ekki sjálfkrafa eins og er"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-it/arrays.xml b/libs/WifiTrackerLib/res/values-it/arrays.xml
index 04c4fe8..7b81856 100644
--- a/libs/WifiTrackerLib/res/values-it/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-it/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Ricerca…"</item>
-    <item msgid="6222852518007967736">"Connessione…"</item>
-    <item msgid="1176401854208153464">"Autenticazione…"</item>
-    <item msgid="1377026397901197257">"Acquisizione indirizzo IP…"</item>
-    <item msgid="7627139816052121509">"Connesso"</item>
-    <item msgid="1598801023719359130">"Sospeso"</item>
-    <item msgid="9160765456671002324">"Disconnessione…"</item>
-    <item msgid="8013176736494493734">"Disconnesso"</item>
-    <item msgid="4077393480368783785">"Operazione non riuscita"</item>
-    <item msgid="605372180740008604">"Bloccato"</item>
-    <item msgid="5102306451432929048">"Al momento vengono evitate connessioni deboli"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Ricerca…"</item>
+    <item msgid="9055468790485684083">"Connessione…"</item>
+    <item msgid="6099499723199990208">"Autenticazione…"</item>
+    <item msgid="6794055951297347103">"Acquisizione indirizzo IP…"</item>
+    <item msgid="5450920562291300229">"Rete connessa"</item>
+    <item msgid="6332116533879646145">"Connessione sospesa"</item>
+    <item msgid="294459081501073818">"Disconnessione…"</item>
+    <item msgid="1577368920272598676">"Rete disconnessa"</item>
+    <item msgid="7655843177582495451">"Operazione non riuscita"</item>
+    <item msgid="8953752690917593623">"Rete bloccata"</item>
+    <item msgid="4400457817750243671">"Al momento vengono evitate connessioni deboli"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-it/strings.xml b/libs/WifiTrackerLib/res/values-it/strings.xml
index b4bb149..5108c27 100644
--- a/libs/WifiTrackerLib/res/values-it/strings.xml
+++ b/libs/WifiTrackerLib/res/values-it/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Connessione automatica disattivata"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Salvata da <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Non verrà eseguita la connessione automatica"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Nessun accesso a Internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problema di autenticazione"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Controlla la password e riprova"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Errore configurazione IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Disattivata"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Punto di accesso momentaneamente al completo"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Nessuna connessione"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Salvata"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"A consumo"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Non a consumo"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Connesso tramite <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Disponibile tramite <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Connessa automaticamente tramite <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Collegato automaticamente tramite fornitore di servizi di valutazione rete"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Connessione limitata"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Non è possibile accedere al server DNS privato"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Internet assente"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Connessione automatica disattivata"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Salvata da <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Non verrà eseguita la connessione automatica"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Nessun accesso a Internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problema di autenticazione"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Controlla la password e riprova"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Errore configurazione IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Rete non attiva"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Punto di accesso momentaneamente al completo"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Condizioni della rete momentaneamente non ottimali"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Segnale debole. Prova ad avvicinarti al router."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"È stata superata la capacità della rete. Riprova più tardi."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Impossibile connettersi. Riprova più tardi."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Rete non compatibile con questo dispositivo"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Rete disconnessa"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Salvata"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"A consumo"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Non a consumo"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Connessione stabilita tramite <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Disponibile tramite <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Connessione automatica stabilita tramite <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Connessione automatica stabilita tramite fornitore di servizi di valutazione rete"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Connessione limitata"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Non è possibile accedere al server DNS privato"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Connessione al dispositivo effettuata. Impossibile accedere a Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Bassa qualità"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Nessuna"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Scaduta"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Tocca per registrarti"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Tocca per rinnovare l\'abbonamento e connetterti"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Apertura di <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Impossibile connettersi"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Completamento della registrazione…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Impossibile completare la registrazione. Tocca per riprovare."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Registrazione completata. Connessione…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Questa rete riceve un ID univoco che può essere usato per monitorare la posizione del dispositivo. "<annotation id="url">"Ulteriori informazioni"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Molto lenta"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lenta"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Media"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Veloce"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Molto veloce"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Nessuna"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Scaduta"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Tocca per registrarti"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Tocca per rinnovare l\'abbonamento e connetterti"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Apertura di <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Impossibile collegarsi"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Completamento della registrazione…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Impossibile completare la registrazione. Tocca per riprovare."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registrazione completata. Connessione…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Questa rete riceve un ID SIM che può essere usato per monitorare la posizione del dispositivo. "<annotation id="url">"Ulteriori informazioni"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Molto lenta"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lenta"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Discreta"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Media"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Veloce"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Molto veloce"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Per il momento la connessione automatica della rete Wi-Fi non funziona"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-iw/arrays.xml b/libs/WifiTrackerLib/res/values-iw/arrays.xml
index b88dd42..031be23 100644
--- a/libs/WifiTrackerLib/res/values-iw/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-iw/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"מתבצעת סריקה…"</item>
-    <item msgid="6222852518007967736">"מתחבר…"</item>
-    <item msgid="1176401854208153464">"מתבצע אימות…"</item>
-    <item msgid="1377026397901197257">"‏בתהליך של השגת כתובת IP…"</item>
-    <item msgid="7627139816052121509">"מחובר"</item>
-    <item msgid="1598801023719359130">"מושעה"</item>
-    <item msgid="9160765456671002324">"מתנתק…"</item>
-    <item msgid="8013176736494493734">"מנותק"</item>
-    <item msgid="4077393480368783785">"נכשל"</item>
-    <item msgid="605372180740008604">"חסומה"</item>
-    <item msgid="5102306451432929048">"מניעה זמנית של חיבור באיכות ירודה"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"מתבצעת סריקה…"</item>
+    <item msgid="9055468790485684083">"מתבצעת התחברות…"</item>
+    <item msgid="6099499723199990208">"בתהליך אימות…"</item>
+    <item msgid="6794055951297347103">"‏בתהליך של השגת כתובת IP…"</item>
+    <item msgid="5450920562291300229">"מחובר"</item>
+    <item msgid="6332116533879646145">"בהשעיה"</item>
+    <item msgid="294459081501073818">"מתבצע ניתוק…"</item>
+    <item msgid="1577368920272598676">"מנותק"</item>
+    <item msgid="7655843177582495451">"נכשל"</item>
+    <item msgid="8953752690917593623">"חסום"</item>
+    <item msgid="4400457817750243671">"מניעה זמנית של חיבור באיכות ירודה"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-iw/strings.xml b/libs/WifiTrackerLib/res/values-iw/strings.xml
index 3f02fda..110d047 100644
--- a/libs/WifiTrackerLib/res/values-iw/strings.xml
+++ b/libs/WifiTrackerLib/res/values-iw/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"החיבור האוטומטי כבוי"</string>
-    <string name="saved_network" msgid="6241977554502802914">"נשמרה על ידי <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"לא יתבצע חיבור באופן אוטומטי"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"אין גישה לאינטרנט"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"בעיית אימות"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"יש לבדוק את הסיסמה ולנסות שוב"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"‏כשל בתצורת IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"מושבתות"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"נקודת הגישה מלאה באופן זמני"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"מנותקת"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"נשמרה"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"חיוב לפי שימוש בנתונים"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"לא נמדדת"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"מחובר באמצעות <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"זמינה דרך <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"מחוברת אוטומטית באמצעות <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"מחובר אוטומטית דרך ספק של דירוג רשת"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"חיבור מוגבל"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"‏לא ניתן לגשת לשרת DNS הפרטי"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"אין אינטרנט"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"החיבור האוטומטי כבוי"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"נשמרה על-ידי <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"לא יתבצע חיבור באופן אוטומטי"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"אין גישה לאינטרנט"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"בעיית אימות"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"יש לבדוק את הסיסמה ולנסות שוב"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"‏כשל בהגדרת IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"מושבתת"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"נקודת הגישה מלאה באופן זמני"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"החיבור לאינטרנט חלש באופן זמני"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"אות חלש. כדאי לנסות להתקרב לנתב."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"הרשת בקיבולת יתר. יש לנסות שוב מאוחר יותר."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"לא ניתן להתחבר. יש לנסות שוב מאוחר יותר."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"הרשת לא תואמת למכשיר הזה"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"מנותקת"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"נשמרה"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"חיוב לפי שימוש בנתונים"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"שימוש חופשי"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"מחובר דרך <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"זמינה דרך <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"מחובר אוטומטית דרך <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"מחובר אוטומטית דרך ספק של דירוג רשת"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"חיבור מוגבל"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"‏לא ניתן לגשת לשרת DNS הפרטי"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"יש חיבור למכשיר. לא ניתן לספק חיבור לאינטרנט."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"איכות נמוכה"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"ללא"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"התוקף פג"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"יש להקיש כדי להירשם"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"יש להקיש כדי לחדש את המינוי ולהתחבר"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"מתבצעת פתיחה של <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"לא ניתן להתחבר"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"מתבצעת השלמה של ההרשמה…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"לא ניתן היה להשלים את ההרשמה. יש להקיש כדי לנסות שוב."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"תהליך ההרשמה הסתיים. בתהליך התחברות…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"הרשת הזו מקבלת מזהה ייחודי שיכול לשמש למעקב אחר מיקום המכשיר. "<annotation id="url">"מידע נוסף"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"איטית מאוד"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"איטית"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"אישור"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"בינונית"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"מהירה"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"מהירה מאוד"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"ללא"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"התוקף פג"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"יש להקיש כדי להירשם"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"יש להקיש כדי לחדש את המינוי ולהתחבר"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"מתבצעת פתיחה של <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"לא ניתן להתחבר"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"מתבצעת השלמה של ההרשמה…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"לא ניתן היה להשלים את ההרשמה. יש להקיש כדי לנסות שוב."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"תהליך ההרשמה הסתיים. בתהליך התחברות…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"‏הרשת הזו מקבלת מזהה SIM שיכול לשמש למעקב אחר מיקום של מכשיר. "<annotation id="url">"למידע נוסף"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"איטית מאוד"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"איטית"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"בסדר"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"בינונית"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"מהירה"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"מהירה מאוד"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ja/arrays.xml b/libs/WifiTrackerLib/res/values-ja/arrays.xml
index ad57957..7d9ba43 100644
--- a/libs/WifiTrackerLib/res/values-ja/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-ja/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"スキャン中…"</item>
-    <item msgid="6222852518007967736">"接続中…"</item>
-    <item msgid="1176401854208153464">"認証中…"</item>
-    <item msgid="1377026397901197257">"IP アドレスを取得中…"</item>
-    <item msgid="7627139816052121509">"接続完了"</item>
-    <item msgid="1598801023719359130">"停止中"</item>
-    <item msgid="9160765456671002324">"切断中…"</item>
-    <item msgid="8013176736494493734">"未接続"</item>
-    <item msgid="4077393480368783785">"エラー"</item>
-    <item msgid="605372180740008604">"ブロック中"</item>
-    <item msgid="5102306451432929048">"接続不良により一時的に無効"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"スキャン中…"</item>
+    <item msgid="9055468790485684083">"接続中…"</item>
+    <item msgid="6099499723199990208">"認証中…"</item>
+    <item msgid="6794055951297347103">"IP アドレスを取得中…"</item>
+    <item msgid="5450920562291300229">"接続済み"</item>
+    <item msgid="6332116533879646145">"停止中"</item>
+    <item msgid="294459081501073818">"切断中…"</item>
+    <item msgid="1577368920272598676">"未接続"</item>
+    <item msgid="7655843177582495451">"エラー"</item>
+    <item msgid="8953752690917593623">"ブロック済み"</item>
+    <item msgid="4400457817750243671">"接続不良により一時的に無効"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ja/strings.xml b/libs/WifiTrackerLib/res/values-ja/strings.xml
index 37114e1..03b7d59 100644
--- a/libs/WifiTrackerLib/res/values-ja/strings.xml
+++ b/libs/WifiTrackerLib/res/values-ja/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"自動接続が OFF です"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g>により保存"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"自動的に接続されません"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"インターネット接続なし"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"認証エラー"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"パスワードを再確認してください"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP設定エラー"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"無効"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"アクセス ポイントが一時的にいっぱいです"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"未接続"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"保存済み"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"従量制"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"定額制"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> で接続しました"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g>で利用可能"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> で自動的に接続しました"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"ネットワーク評価プロバイダ経由で自動的に接続しています"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"接続が制限されています"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"プライベート DNS サーバーにアクセスできません"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"インターネットに接続されていません"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"自動接続が OFF です"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g>により保存"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"自動的に接続されません"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"インターネットに接続されていません"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"認証エラー"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"パスワードを再確認してください"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP 設定エラー"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"無効"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"アクセス ポイントが一時的にいっぱいです"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"ネットワークが一時的に不安定な状態です"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"電波が安定していません。ルーターに近づいてみてください。"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"ネットワーク容量の上限を超えています。しばらくしてからもう一度お試しください。"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"接続できません。しばらくしてからもう一度お試しください。"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"ネットワークがこのデバイスに対応していません"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"未接続"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"保存済み"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"従量制"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"定額制"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g>で接続しました"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g>で利用可能"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g>で自動的に接続しました"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"ネットワーク評価プロバイダ経由で自動的に接続しました"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"接続が制限されています"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"プライベート DNS サーバーにアクセスできません"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"デバイスに接続されました。インターネットにアクセスできません。"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"低品質"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"なし"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"期限切れ"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"タップして登録してください"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"タップして定期購入を更新し、接続してください"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> を開いています"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"接続できませんでした"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"登録を完了しています…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"登録を完了できませんでした。タップしてもう一度お試しください。"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"登録が完了しました。接続しています…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"このネットワークは一意の ID を受信します。この ID を使ってデバイスの位置情報が追跡される可能性があります。"<annotation id="url">"詳細"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"とても遅い"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"遅い"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"普通"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"速い"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"非常に速い"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"なし"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"期限切れ"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"タップして登録してください"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"タップして定期購入を更新し、接続してください"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> を開いています"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"接続エラー"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"登録を完了しています…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"登録を完了できませんでした。タップしてもう一度お試しください。"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"登録が完了しました。接続しています…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"このネットワークは SIM ID を受信します。この ID を使ってデバイスの位置情報が追跡される可能性があります。"<annotation id="url">"詳細"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"非常に遅い"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"遅い"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"普通"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"速い"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"非常に速い"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ka/arrays.xml b/libs/WifiTrackerLib/res/values-ka/arrays.xml
index 8012aa5..33a8991 100644
--- a/libs/WifiTrackerLib/res/values-ka/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-ka/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"მიმდინარეობს სკანირება…"</item>
-    <item msgid="6222852518007967736">"მიმდინარეობს დაკავშირება…"</item>
-    <item msgid="1176401854208153464">"ავთენტიკაცია…"</item>
-    <item msgid="1377026397901197257">"მიმდინარეობს IP მისამართის მიღება…"</item>
-    <item msgid="7627139816052121509">"დაკავშირებული"</item>
-    <item msgid="1598801023719359130">"შეჩერებული"</item>
-    <item msgid="9160765456671002324">"კავშირი წყდება…"</item>
-    <item msgid="8013176736494493734">"კავშირი გაწყვეტილია"</item>
-    <item msgid="4077393480368783785">"ვერ განხორციელდა"</item>
-    <item msgid="605372180740008604">"დაბლოკილი"</item>
-    <item msgid="5102306451432929048">"სუსტი კავშირის დროებით თავიდან აცილება"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"მიმდინარეობს სკანირება…"</item>
+    <item msgid="9055468790485684083">"მიმდინარეობს დაკავშირება…"</item>
+    <item msgid="6099499723199990208">"მიმდინარეობს ავთენტიკაცია…"</item>
+    <item msgid="6794055951297347103">"მიმდინარეობს IP მისამართის მიღება…"</item>
+    <item msgid="5450920562291300229">"დაკავშირებული"</item>
+    <item msgid="6332116533879646145">"შეჩერებული"</item>
+    <item msgid="294459081501073818">"კავშირი წყდება…"</item>
+    <item msgid="1577368920272598676">"კავშირი გაწყვეტილია"</item>
+    <item msgid="7655843177582495451">"ვერ განხორციელდა"</item>
+    <item msgid="8953752690917593623">"დაბლოკილი"</item>
+    <item msgid="4400457817750243671">"სუსტი კავშირის დროებით თავიდან აცილება"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ka/strings.xml b/libs/WifiTrackerLib/res/values-ka/strings.xml
index a4f8e5e..52ff4d1 100644
--- a/libs/WifiTrackerLib/res/values-ka/strings.xml
+++ b/libs/WifiTrackerLib/res/values-ka/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"ავტოდაკავშირება გამორთულია"</string>
-    <string name="saved_network" msgid="6241977554502802914">"შენახული <xliff:g id="NAME">%1$s</xliff:g>-ის მიერ"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"ავტომატურად დაკავშირება ვერ ხერხდება"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"ინტერნეტ-კავშირი არ არის"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"ავთენტიკაციის პრობლემა"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"გადაამოწმეთ პაროლი და ხელახლა ცადეთ"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP კონფიგურაციის შეფერხება"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"გამორთულია"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"წვდომის წერტილი დროებით გადატვირთულია"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"კავშირი გაწყვეტილია"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"დამახსოვრებულია"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"ლიმიტირებული"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"არალიმიტირებული"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"დაკავშირებულია <xliff:g id="NAME">%1$s</xliff:g>-ით"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"ხელმისაწვდომია <xliff:g id="NAME">%1$s</xliff:g>-ის მეშვეობით"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"ავტომატურად დაკავშირებულია <xliff:g id="NAME">%1$s</xliff:g>-ით"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"ავტომატურად დაკავშირდა ქსელის ხარისხის შეფასების პროვაიდერის მეშვეობით"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"შეზღუდული კავშირი"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"პირად DNS სერვერზე წვდომა შეუძლებელია"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"ინტერნეტ-კავშირი არ არის"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"ავტოდაკავშირება გამორთულია"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"შენახული <xliff:g id="NAME">%1$s</xliff:g>-ის მიერ"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"ავტომატურად დაკავშირება ვერ ხერხდება"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"ინტერნეტ-კავშირი არ არის"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"ავთენტიკაციის პრობლემა"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"გადაამოწმეთ პაროლი და ხელახლა ცადეთ"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP კონფიგურაციის შეფერხება"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"გათიშული"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"წვდომის წერტილი დროებით გადატვირთულია"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"ქსელის სუსტი კავშირის დროებითი მდგომარეობა"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"სიგნალი სუსტია. ცადეთ როუტერთან მიახლოება."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"ქსელი გადატვირთულია. ცადეთ მოგვიანებით."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"დაკავშირება შეუძლებელია. ცადეთ მოგვიანებით."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"ქსელი არათავსებადია ამ მოწყობილობასთან"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"კავშირი გაწყვეტილია"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"შენახული"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"ლიმიტირებული"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"არალიმიტირებული"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"დაკავშირებულია <xliff:g id="NAME">%1$s</xliff:g>-ით"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"ხელმისაწვდომია <xliff:g id="NAME">%1$s</xliff:g>-ით"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"ავტომატურად დაკავშირებულია <xliff:g id="NAME">%1$s</xliff:g>-ით"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"ავტომატურად დაკავშირდა ქსელის ხარისხის შეფასების პროვაიდერის მეშვეობით"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"შეზღუდული კავშირი"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"პირად DNS სერვერზე წვდომა შეუძლებელია"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"დაუკავშირდა მოწყობილობას. ინტერნეტის მიწოდება ვერ ხერხდება."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"დაბალი ხარისხი"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"არცერთი"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"ვადაგასულია"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"შეეხეთ რეგისტრაციისთვის"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"შეეხეთ, რათა გაანაახლოთ გამოწერა და დაუკავშირდეთ"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"მიმდინარეობს <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>-ის გახსნა"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"დაკავშირება ვერ მოხერხდა"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"მიმდინარეობს რეგისტრაციის დასრულება…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"რეგისტრაციის დასრულება ვერ მოხერხდა. შეეხეთ ხელახლა საცდელად."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"რეგისტრაცია დასრულდა. მიმდინარეობს დაკავშირება…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"ეს ქსელი მიიღებს უნიკალურ ID-ს, რომლის მეშვეობითაც შესაძლებელია მოწყობილობის მდებარეობაზე თვალის დევნება. "<annotation id="url">"შეიტყვეთ მეტი"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"ძალიან ნელი"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"ნელი"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"კარგი"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"საშუალო"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"სწრაფი"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"ძალიან სწრაფი"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"არცერთი"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"ვადაგასული"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"შეეხეთ რეგისტრაციისთვის"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"შეეხეთ გამოწერის გასაახლებლად და დასაკავშირებლად"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"მიმდინარეობს <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>-ის გახსნა"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"დაკავშირება ვერ მოხერხდა"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"მიმდინარეობს რეგისტრაციის დასრულება…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"რეგისტრაციის დასრულება ვერ მოხერხდა. შეეხეთ ხელახლა საცდელად."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"რეგისტრაცია დასრულდა. მიმდინარეობს დაკავშირება…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"ეს ქსელი მიიღებს SIM-ის ID-ს, რომლის მეშვეობითაც შესაძლებელია მოწყობილობის მდებარეობაზე თვალის დევნება. "<annotation id="url">"შეიტყვეთ მეტი"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"ძალიან ნელი"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"ნელი"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"კარგი"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"საშუალო"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"სწრაფი"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"ძალიან სწრაფი"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi დროებით ინტერნეტს ავტომატურად არ დაუკავშირდება"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-kk/arrays.xml b/libs/WifiTrackerLib/res/values-kk/arrays.xml
index fcbab3c..475f925 100644
--- a/libs/WifiTrackerLib/res/values-kk/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-kk/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Іздеуде…"</item>
-    <item msgid="6222852518007967736">"Қосылуда…"</item>
-    <item msgid="1176401854208153464">"Аутентификациялауда…"</item>
-    <item msgid="1377026397901197257">"IP мекенжайы алынуда…"</item>
-    <item msgid="7627139816052121509">"Жалғанды"</item>
-    <item msgid="1598801023719359130">"Уақытша ажыратылды"</item>
-    <item msgid="9160765456671002324">"Ажыратылуда…"</item>
-    <item msgid="8013176736494493734">"Ажыратылған"</item>
-    <item msgid="4077393480368783785">"Сәтсіз"</item>
-    <item msgid="605372180740008604">"Бөгелді"</item>
-    <item msgid="5102306451432929048">"Нашар байланыс болғандықтан уақытша ажыратылды"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Іздеуде…"</item>
+    <item msgid="9055468790485684083">"Қосылып жатыр…"</item>
+    <item msgid="6099499723199990208">"Растауда…"</item>
+    <item msgid="6794055951297347103">"IP мекенжайы алынуда…"</item>
+    <item msgid="5450920562291300229">"Жалғанды"</item>
+    <item msgid="6332116533879646145">"Уақытша ажыратылды"</item>
+    <item msgid="294459081501073818">"Ажыратылуда…"</item>
+    <item msgid="1577368920272598676">"Ажыратылды"</item>
+    <item msgid="7655843177582495451">"Сәтсіз"</item>
+    <item msgid="8953752690917593623">"Бөгелді"</item>
+    <item msgid="4400457817750243671">"Нашар байланыс уақытша тоқтатылды."</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-kk/strings.xml b/libs/WifiTrackerLib/res/values-kk/strings.xml
index a26a896..78511ae 100644
--- a/libs/WifiTrackerLib/res/values-kk/strings.xml
+++ b/libs/WifiTrackerLib/res/values-kk/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Автоматты жалғау өшірулі"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> сақтаған"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Автоматты байланыстырылмайды."</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Интернетпен байланыс жоқ"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Аутентификация қатесі"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Құпия сөзді тексеріп, әрекетті қайталаңыз"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP конфигурациясының қатесі"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Өшірілген"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Кіру нүктесі уақытша бос емес"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Ажыратылған"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Сақталды"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Трафик саналатын желі"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Трафик саналмайды"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> арқылы жалғанған"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> арқылы қолжетімді"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> арқылы автоматты байланыстырылды."</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Желіні бағалау провайдері арқылы автоматты түрде қосылған"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Шектеулі байланыс"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Жеке DNS серверіне кіру мүмкін емес."</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Интернетпен байланыс жоқ"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Автоматты жалғау өшірулі"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> сақтаған"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Автоматты байланыстырылмайды."</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Интернетпен байланыс жоқ"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Аутентификация қатесі"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Құпия сөзді тексеріп, әрекетті қайталаңыз."</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP конфигурациясының қатесі"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Өшірулі"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Кіру нүктесі уақытша бос емес."</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Желі байланысы уақытша нашар."</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Сигнал әлсіз. Құрылғыны маршрутизаторға жақындатып көріңіз."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Желінің өткізу қабілеті шектен асып кетті. Кейінірек қайталап көріңіз."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Қосылу мүмкін емес. Кейінірек қайталап көріңіз."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Желі бұл құрылғымен үйлесімді емес."</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Ажыратылды"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Сақталған"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Трафик саналатын желі"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Трафик саналмайды"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> арқылы жалғанған"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> арқылы қолжетімді"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> арқылы автоматты байланыстырылды."</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Желі рейтингі провайдері арқылы автоматты түрде қосылған"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Шектеулі байланыс"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Жеке DNS серверіне кіру мүмкін емес."</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Құрылғыға қосылды. Интернетке қосылым жоқ."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Төмен сапа"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Жоқ"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Мерзімі өтті"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Тіркелу үшін түртіңіз."</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Жазылымды қайта жаңартып, қосылу үшін түртіңіз."</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ашылуда."</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Байланыстырылмады."</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Тіркелу аяқталуда…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Тіркелу аяқталмады. Әрекетті қайталау үшін түртіңіз."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Тіркелу аяқталды. Байланыс орнатылуда…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Бұл желіге бірегей идентификатор беріледі, оның көмегімен құрылғының орналасқан жері қадағаланады. "<annotation id="url">"Толығырақ"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Өте баяу"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Баяу"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Жарайды"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Орташа"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Жылдам"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Өте жылдам"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Жоқ"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Мерзімі өтіп кетті."</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Тіркелу үшін түртіңіз."</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Жазылымды қайта жаңартып, қосылу үшін түртіңіз."</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ашылуда"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Қосылмады"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Тіркелу аяқталуда…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Тіркелу аяқталмады. Әрекетті қайталау үшін түртіңіз."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Тіркелу аяқталды. Байланыс орнатылуда…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Бұл желіге SIM идентификаторы беріледі, оның көмегімен құрылғының орналасқан жері қадағаланады. "<annotation id="url">"Толығырақ"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Өте баяу"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Баяу"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Иә"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Орташа"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Жылдам"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Өте жылдам"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-km/arrays.xml b/libs/WifiTrackerLib/res/values-km/arrays.xml
index b26498c..5aff06f 100644
--- a/libs/WifiTrackerLib/res/values-km/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-km/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"កំពុងស្កេន…"</item>
-    <item msgid="6222852518007967736">"កំពុងភ្ជាប់…"</item>
-    <item msgid="1176401854208153464">"កំពុង​ផ្ទៀងផ្ទាត់…"</item>
-    <item msgid="1377026397901197257">"កំពុង​ទទួល​អាសយដ្ឋាន IP…"</item>
-    <item msgid="7627139816052121509">"បានភ្ជាប់"</item>
-    <item msgid="1598801023719359130">"បាន​ផ្អាក"</item>
-    <item msgid="9160765456671002324">"កំពុង​ផ្ដាច់…"</item>
-    <item msgid="8013176736494493734">"បាន​ផ្ដាច់"</item>
-    <item msgid="4077393480368783785">"មិន​ជោគជ័យ"</item>
-    <item msgid="605372180740008604">"បាន​ទប់ស្កាត់"</item>
-    <item msgid="5102306451432929048">"ជៀសវាង​ការ​តភ្ជាប់​​ខ្សោយ​ជា​បណ្ដោះអាសន្ន"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"កំពុងស្កេន…"</item>
+    <item msgid="9055468790485684083">"កំពុងភ្ជាប់…"</item>
+    <item msgid="6099499723199990208">"កំពុង​ផ្ទៀងផ្ទាត់…"</item>
+    <item msgid="6794055951297347103">"កំពុង​ទទួល​អាសយដ្ឋាន IP…"</item>
+    <item msgid="5450920562291300229">"បានភ្ជាប់"</item>
+    <item msgid="6332116533879646145">"បាន​ផ្អាក"</item>
+    <item msgid="294459081501073818">"កំពុង​ផ្ដាច់…"</item>
+    <item msgid="1577368920272598676">"បាន​ផ្ដាច់"</item>
+    <item msgid="7655843177582495451">"មិន​ជោគជ័យ"</item>
+    <item msgid="8953752690917593623">"បាន​ទប់ស្កាត់"</item>
+    <item msgid="4400457817750243671">"កំពុង​ជៀសវាង​ការតភ្ជាប់​ខ្សោយ​ជា​បណ្ដោះអាសន្ន"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-km/strings.xml b/libs/WifiTrackerLib/res/values-km/strings.xml
index e7466ea..0e815e7 100644
--- a/libs/WifiTrackerLib/res/values-km/strings.xml
+++ b/libs/WifiTrackerLib/res/values-km/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"ការភ្ជាប់​ដោយស្វ័យប្រវត្តិ​ត្រូវបានបិទ"</string>
-    <string name="saved_network" msgid="6241977554502802914">"បានរក្សាទុកដោយ <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"នឹងមិនភ្ជាប់ដោយស្វ័យប្រវត្តិទេ"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"មិនមាន​ការតភ្ជាប់​អ៊ីនធឺណិតទេ"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"បញ្ហា​ក្នុងការ​ផ្ទៀងផ្ទាត់"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"សូមពិនិត្យមើលពាក្យសម្ងាត់ រួចព្យាយាមម្ដងទៀត"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"ការ​កំណត់​រចនាសម្ព័ន្ធ IP បរាជ័យ"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"បាន​បិទ"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"ចំណុចចូលប្រើពេញជាបណ្តោះអាសន្ន"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"បាន​ផ្ដាច់"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"បាន​រក្សាទុក"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"មានការកំណត់"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"មិនមានការកំណត់"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"ភ្ជាប់​តាម <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"អាចប្រើបាន​តាមរយៈ <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"បានភ្ជាប់ដោយស្វ័យប្រវត្តិតាមរយៈ <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"បានភ្ជាប់​ដោយស្វ័យប្រវត្តិ​តាម​រយៈក្រុមហ៊ុនផ្តល់​ការ​វាយ​តម្លៃលើ​បណ្តាញ"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"ការតភ្ជាប់មានកម្រិត"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"មិនអាច​ចូលប្រើ​ម៉ាស៊ីនមេ DNS ឯកជន​បានទេ"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"គ្មាន​អ៊ីនធឺណិតទេ"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"ការភ្ជាប់​ដោយស្វ័យប្រវត្តិ​ត្រូវបានបិទ"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"បានរក្សាទុកដោយ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"នឹងមិនភ្ជាប់ដោយស្វ័យប្រវត្តិទេ"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"មិនមាន​ការតភ្ជាប់​អ៊ីនធឺណិតទេ"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"បញ្ហា​ការ​ផ្ទៀងផ្ទាត់"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"សូមពិនិត្យមើលពាក្យសម្ងាត់ រួចព្យាយាមម្ដងទៀត"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"ការ​កំណត់​រចនាសម្ព័ន្ធ IP មិនបានសម្រេច"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"បានបិទ"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"ដុំភ្ជាប់បណ្ដាញ​ឥតខ្សែពេញ​ជាបណ្តោះអាសន្ន"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"ស្ថានភាព​បណ្ដាញ​ខ្សោយ​ជាបណ្ដោះអាសន្ន"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"រលកសញ្ញាខ្សោយ។ សូមសាកល្បងខិតឱ្យកាន់តែជិតរ៉ោទ័រ។"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"បណ្ដាលកំពុងដំណើរការហួសសមត្ថភាព។ សូមព្យាយាម​ម្តងទៀត​នៅពេលក្រោយ។"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"មិនអាច​ភ្ជាប់​បានទេ។ សូមព្យាយាម​ម្តងទៀត​នៅពេលក្រោយ។"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"បណ្ដាញមិនត្រូវគ្នាជាមួយឧបករណ៍នេះទេ"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"បាន​ផ្ដាច់"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"បាន​រក្សាទុក"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"ផ្អែកតាម​ទិន្នន័យ​ដែលប្រើ"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"មិនផ្អែកតាម​ទិន្នន័យ​ដែលប្រើ"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"បានភ្ជាប់​តាមរយៈ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"អាចប្រើបាន​តាមរយៈ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"បានភ្ជាប់ដោយស្វ័យប្រវត្តិតាមរយៈ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"បានភ្ជាប់​ដោយស្វ័យប្រវត្តិ​តាម​រយៈក្រុមហ៊ុនផ្តល់​ការ​វាយ​តម្លៃលើ​បណ្តាញ"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"ការតភ្ជាប់មានកម្រិត"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"មិនអាច​ចូលប្រើ​ម៉ាស៊ីនមេ DNS ឯកជន​បានទេ"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"បានភ្ជាប់​ជាមួយ​ឧបករណ៍។ មិនអាចផ្ដល់​អ៊ីនធឺណិតបានទេ។"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"គុណភាព​ទាប"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"គ្មាន"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"បានផុតកំណត់"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"ចុច​ដើម្បី​ចុះឈ្មោះ"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"ចុច ដើម្បី​បន្តការ​ជាវជាថ្មី និង​ភ្ជាប់"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"កំពុង​បើក <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"មិន​អាចភ្ជាប់​បានទេ"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"កំពុង​បញ្ចប់​ការចុះឈ្មោះ…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"មិនអាច​បញ្ចប់​ការចុះឈ្មោះ​បានទេ។ សូមចុច ដើម្បី​ព្យាយាម​ម្ដង​ទៀត។"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"ការចុះ​ឈ្មោះ​បានបញ្ចប់។ កំពុងភ្ជាប់…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"បណ្ដាញនេះទទួលលេខសម្គាល់ពិសេស ដែលអាចប្រើ​សម្រាប់​តាមដាន​ទីតាំងឧបករណ៍។ "<annotation id="url">"ស្វែងយល់បន្ថែម"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"យឺតណាស់"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"យឺត"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"យល់ព្រម"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"មធ្យម"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"លឿន"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"លឿន​ខ្លាំង"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"គ្មាន"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"បាន​ផុត​កំណត់"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"ចុច​ដើម្បី​ចុះឈ្មោះ"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"ចុច ដើម្បី​បន្តការ​ជាវជាថ្មី និង​ភ្ជាប់"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"កំពុង​បើក <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"មិន​អាចភ្ជាប់​បានទេ"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"កំពុង​បញ្ចប់​ការចុះឈ្មោះ…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"មិនអាច​បញ្ចប់​ការចុះឈ្មោះ​បានទេ។ សូមចុច ដើម្បី​ព្យាយាម​ម្ដង​ទៀត។"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"ការចុះ​ឈ្មោះ​បានបញ្ចប់។ កំពុងភ្ជាប់…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"បណ្ដាញ​នេះ​ទទួលបាន​លេខសម្គាល់ស៊ីម ដែល​អាចប្រើ​ដើម្បី​តាមដាន​ទីតាំង​ឧបករណ៍។ "<annotation id="url">"ស្វែងយល់បន្ថែម"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"យឺតណាស់"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"យឺត"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"យល់ព្រម"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"មធ្យម"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"លឿន"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"លឿន​ណាស់"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-kn/arrays.xml b/libs/WifiTrackerLib/res/values-kn/arrays.xml
index d738de9..f6ce05f 100644
--- a/libs/WifiTrackerLib/res/values-kn/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-kn/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</item>
-    <item msgid="6222852518007967736">"ಕನೆಕ್ಟ್ ಆಗುತ್ತಿದೆ…"</item>
-    <item msgid="1176401854208153464">"ಪ್ರಮಾಣೀಕರಿಸಲಾಗುತ್ತಿದೆ..."</item>
-    <item msgid="1377026397901197257">"IP ವಿಳಾಸವನ್ನು ಪಡೆಯಲಾಗುತ್ತಿದೆ…"</item>
-    <item msgid="7627139816052121509">"ಕನೆಕ್ಟ್ ಆಗಿದೆ"</item>
-    <item msgid="1598801023719359130">"ತಡೆಹಿಡಿಯಲಾಗಿದೆ"</item>
-    <item msgid="9160765456671002324">"ಡಿಸ್‌ಕನೆಕ್ಟ್ ಆಗುತ್ತಿದೆ…"</item>
-    <item msgid="8013176736494493734">"ಡಿಸ್‌ಕನೆಕ್ಟ್ ಆಗಿದೆ"</item>
-    <item msgid="4077393480368783785">"ವಿಫಲಗೊಂಡಿದೆ"</item>
-    <item msgid="605372180740008604">"ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</item>
-    <item msgid="5102306451432929048">"ಕಳಪೆ ಗುಣಮಟ್ಟದ ಕನೆಕ್ಷನ್ ತಾತ್ಕಾಲಿಕವಾಗಿ ತಡೆಗಟ್ಟಲಾಗುತ್ತಿದೆ"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</item>
+    <item msgid="9055468790485684083">"ಕನೆಕ್ಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</item>
+    <item msgid="6099499723199990208">"ದೃಢೀಕರಿಸಲಾಗುತ್ತಿದೆ…"</item>
+    <item msgid="6794055951297347103">"IP ವಿಳಾಸವನ್ನು ಪಡೆಯಲಾಗುತ್ತಿದೆ…"</item>
+    <item msgid="5450920562291300229">"ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ"</item>
+    <item msgid="6332116533879646145">"ಅಮಾನತುಗೊಳಿಸಲಾಗಿದೆ"</item>
+    <item msgid="294459081501073818">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗುತ್ತಿದೆ…"</item>
+    <item msgid="1577368920272598676">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ"</item>
+    <item msgid="7655843177582495451">"ವಿಫಲವಾಗಿದೆ"</item>
+    <item msgid="8953752690917593623">"ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</item>
+    <item msgid="4400457817750243671">"ಕಳಪೆ ಗುಣಮಟ್ಟದ ಕನೆಕ್ಷನ್ ಅನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ತಡೆಗಟ್ಟಲಾಗುತ್ತಿದೆ"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-kn/strings.xml b/libs/WifiTrackerLib/res/values-kn/strings.xml
index 558892b..1a77c6c 100644
--- a/libs/WifiTrackerLib/res/values-kn/strings.xml
+++ b/libs/WifiTrackerLib/res/values-kn/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"ಸ್ವಯಂ ಕನೆಕ್ಟ್ ಆಫ್ ಆಗಿದೆ"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> ನಿಂದ ಉಳಿಸಲಾಗಿದೆ"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶವಿಲ್ಲ"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"ಪ್ರಮಾಣೀಕರಣ ಸಮಸ್ಯೆ"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"ಪಾಸ್‌ವರ್ಡ್ ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP ಕಾನ್ಫಿಗರೇಶನ್ ವಿಫಲತೆ"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"ಪ್ರವೇಶ ಕೇಂದ್ರ ತಾತ್ಕಾಲಿಕವಾಗಿ ಭರ್ತಿಯಾಗಿದೆ"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"ಉಳಿಸಲಾಗಿದೆ"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"ಮೀಟರ್ ಮಾಡಲಾಗಿದೆ"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"ಮೀಟರ್ ಮಾಡಲಾಗಿಲ್ಲ"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> ಆ್ಯಪ್ ಮೂಲಕ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> ಮೂಲಕ ಲಭ್ಯವಿದೆ"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> ಮೂಲಕ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"ನೆಟ್‌ವರ್ಕ್ ರೇಟಿಂಗ್ ಒದಗಿಸುವವರ ಮೂಲಕ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"ಸೀಮಿತ ಸಂಪರ್ಕ"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"ಖಾಸಗಿ DNS ಸರ್ವರ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"ಸ್ವಯಂ ಕನೆಕ್ಟ್ ಆಫ್ ಆಗಿದೆ"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> ನಿಂದ ಉಳಿಸಲಾಗಿದೆ"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶವಿಲ್ಲ"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"ದೃಢೀಕರಣದ ಸಮಸ್ಯೆ"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"ಪಾಸ್‌ವರ್ಡ್ ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP ಕಾನ್ಫಿಗರೇಶನ್ ವೈಫಲ್ಯ"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"ಪ್ರವೇಶ ಕೇಂದ್ರ ತಾತ್ಕಾಲಿಕವಾಗಿ ಭರ್ತಿಯಾಗಿದೆ"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"ತಾತ್ಕಾಲಿಕ ಕಳಪೆ ನೆಟ್‌ವರ್ಕ್ ಸ್ಥಿತಿಗಳು"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"ದುರ್ಬಲ ಸಿಗ್ನಲ್. ರೂಟರ್‌ನ ಹತ್ತಿರ ಹೋಗಿ ಕನೆಕ್ಟ್ ಮಾಡಿ ನೋಡಿ."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"ನೆಟ್‌ವರ್ಕ್ ಸಾಮರ್ಥ್ಯದ ಮಿತಿ ಮೀರಿದೆ. ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"ಈ ಸಾಧನದ ಜೊತೆ ನೆಟ್‌ವರ್ಕ್ ಹೊಂದಾಣಿಕೆಯಾಗುವುದಿಲ್ಲ"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"ಉಳಿಸಲಾಗಿದೆ"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"ಮೀಟರ್ ಮಾಡಲಾಗಿದೆ"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"ಮೀಟರ್ ಮಾಡಲಾಗಿಲ್ಲ"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> ಆ್ಯಪ್ ಮೂಲಕ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> ಮೂಲಕ ಲಭ್ಯವಿದೆ"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> ಮೂಲಕ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"ನೆಟ್‌ವರ್ಕ್ ರೇಟಿಂಗ್ ಒದಗಿಸುವವರ ಮೂಲಕ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"ಸೀಮಿತ ಸಂಪರ್ಕ"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"ಖಾಸಗಿ DNS ಸರ್ವರ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"ಸಾಧನಕ್ಕೆ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ. ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕ ಒದಗಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"ಕಳಪೆ ಕನೆಕ್ಷನ್"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"ಯಾವುದೂ ಇಲ್ಲ"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"ಅವಧಿ ಮುಕ್ತಾಯವಾಗಿದೆ"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"ಸೈನ್ ಅಪ್ ಮಾಡಲು ಟ್ಯಾಪ್‌ ಮಾಡಿ"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"ಸಬ್‌ಸ್ಕ್ರಿಪ್ಶನ್ ನವೀಕರಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ ಮತ್ತು ಸಂಪರ್ಕಿಸಿ"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ಅನ್ನು ತೆರೆಯಲಾಗುತ್ತಿದೆ"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"ಸೈನ್-ಅಪ್ ಪೂರ್ಣಗೊಳಿಸಲಾಗುತ್ತಿದೆ…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"ಸೈನ್-ಅಪ್ ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"ಸೈನ್-ಅಪ್ ಪೂರ್ಣಗೊಂಡಿದೆ. ಕನೆಕ್ಟ್ ಆಗುತ್ತಿದೆ…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"ಸಾಧನದ ಸ್ಥಳವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಬಳಸಬಹುದಾದ ಅನನ್ಯ ಐಡಿಯನ್ನು ಈ ನೆಟ್‌ವರ್ಕ್ ಸ್ವೀಕರಿಸುತ್ತದೆ. "<annotation id="url">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"ತುಂಬಾ ನಿಧಾನವಾಗಿದೆ"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"ನಿಧಾನ"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ಸರಿ"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"ಮಧ್ಯಮ"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"ವೇಗ"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"ತುಂಬಾ ವೇಗವಾಗಿದೆ"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"ಯಾವುದೂ ಇಲ್ಲ"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"ಅವಧಿ ಮುಕ್ತಾಯವಾಗಿದೆ"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"ಸೈನ್ ಅಪ್ ಮಾಡಲು ಟ್ಯಾಪ್‌ ಮಾಡಿ"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"ಸಬ್‌ಸ್ಕ್ರಿಪ್ಶನ್ ಅನ್ನು ನವೀಕರಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ ಮತ್ತು ಕನೆಕ್ಟ್ ಮಾಡಿ"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ಅನ್ನು ತೆರೆಯಲಾಗುತ್ತಿದೆ"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"ಸೈನ್-ಅಪ್ ಪೂರ್ಣಗೊಳಿಸಲಾಗುತ್ತಿದೆ…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"ಸೈನ್-ಅಪ್ ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"ಸೈನ್-ಅಪ್ ಪೂರ್ಣಗೊಂಡಿದೆ. ಕನೆಕ್ಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"ಸಾಧನದ ಸ್ಥಳವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಬಳಸಬಹುದಾದ SIM ಐಡಿಯನ್ನು ಈ ನೆಟ್‌ವರ್ಕ್ ಸ್ವೀಕರಿಸುತ್ತದೆ. "<annotation id="url">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"ಬಹಳ ನಿಧಾನವಾಗಿದೆ"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"ನಿಧಾನ"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ಸರಿ"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"ಮಧ್ಯಮ"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"ವೇಗ"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"ಬಹಳ ವೇಗವಾಗಿದೆ"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ko/arrays.xml b/libs/WifiTrackerLib/res/values-ko/arrays.xml
index 3ae58c2..b6d88f6 100644
--- a/libs/WifiTrackerLib/res/values-ko/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-ko/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"검색 중…"</item>
-    <item msgid="6222852518007967736">"연결 중…"</item>
-    <item msgid="1176401854208153464">"인증하는 중…"</item>
-    <item msgid="1377026397901197257">"IP 주소를 가져오는 중…"</item>
-    <item msgid="7627139816052121509">"연결됨"</item>
-    <item msgid="1598801023719359130">"정지됨"</item>
-    <item msgid="9160765456671002324">"연결 해제 중…"</item>
-    <item msgid="8013176736494493734">"연결 해제됨"</item>
-    <item msgid="4077393480368783785">"실패"</item>
-    <item msgid="605372180740008604">"차단됨"</item>
-    <item msgid="5102306451432929048">"신호가 약한 네트워크에 일시적으로 연결하지 않음"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"검색 중…"</item>
+    <item msgid="9055468790485684083">"연결 중…"</item>
+    <item msgid="6099499723199990208">"인증 중…"</item>
+    <item msgid="6794055951297347103">"IP 주소를 가져오는 중…"</item>
+    <item msgid="5450920562291300229">"연결됨"</item>
+    <item msgid="6332116533879646145">"정지됨"</item>
+    <item msgid="294459081501073818">"연결 해제 중…"</item>
+    <item msgid="1577368920272598676">"연결 해제됨"</item>
+    <item msgid="7655843177582495451">"실패"</item>
+    <item msgid="8953752690917593623">"차단됨"</item>
+    <item msgid="4400457817750243671">"신호가 약한 네트워크에 일시적으로 연결하지 않음"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ko/strings.xml b/libs/WifiTrackerLib/res/values-ko/strings.xml
index 6e32a8e..ad334bf 100644
--- a/libs/WifiTrackerLib/res/values-ko/strings.xml
+++ b/libs/WifiTrackerLib/res/values-ko/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"자동 연결 꺼짐"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g>(으)로 저장됨"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"자동으로 연결되지 않음"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"인터넷에 연결되어 있지 않음"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"인증 문제"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"비밀번호를 확인하고 다시 시도하세요."</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP 설정 실패"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"사용 중지됨"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"액세스 포인트가 일시적으로 가득 참"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"연결 끊김"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"저장됨"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"종량제 네트워크"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"무제한 네트워크"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g>을(를) 통해 연결됨"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g>을(를) 통해 사용 가능"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g>을(를) 통해 자동으로 연결됨"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"네트워크 평가 제공업체를 통해 자동으로 연결됨"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"제한된 연결"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"비공개 DNS 서버에 액세스할 수 없습니다."</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"인터넷 연결 없음"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"자동 연결 꺼짐"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> 앱으로 저장됨"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"자동으로 연결되지 않음"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"인터넷에 연결되어 있지 않음"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"인증 문제"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"비밀번호를 확인하고 다시 시도하세요."</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP 구성 실패"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"사용 안함"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"액세스 포인트가 일시적으로 가득 참"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"네트워크 연결이 일시적으로 불안정함"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"신호가 약합니다. 라우터 가까이 이동해 보세요."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"네트워크 용량을 초과했습니다. 나중에 다시 시도해 주세요."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"연결할 수 없습니다. 나중에 다시 시도해 주세요."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"네트워크가 이 기기와 호환되지 않습니다."</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"연결 해제됨"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"저장됨"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"종량제"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"무제한"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> 앱을 통해 연결됨"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> 앱을 통해 사용 가능"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> 앱을 통해 자동으로 연결됨"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"네트워크 평가 제공업체를 통해 자동으로 연결됨"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"제한된 연결"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"비공개 DNS 서버에 액세스할 수 없음"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"기기에 연결되었습니다. 인터넷을 이용할 수 없습니다."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"품질 낮음"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"없음"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"만료됨"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"가입하려면 탭하세요."</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"가입을 갱신하고 연결하려면 탭하세요."</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> 여는 중"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"연결할 수 없습니다."</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"가입 완료 중…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"가입을 완료할 수 없습니다. 다시 시도하려면 탭하세요."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"가입이 완료되었습니다. 연결 중…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"이 네트워크는 기기 위치 추적에 사용될 수 있는 고유 ID를 수신합니다. "<annotation id="url">"자세히 알아보기"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"매우 느림"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"느림"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"보통"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"보통"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"빠름"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"매우 빠름"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"없음"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"만료됨"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"탭하여 가입"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"탭하여 가입 갱신 및 연결"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> 여는 중"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"연결할 수 없음"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"가입 완료 중…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"가입을 완료할 수 없음. 탭하여 다시 시도"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"가입 완료. 연결 중…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"이 네트워크는 기기 위치 추적에 사용될 수 있는 SIM ID를 수신합니다. "<annotation id="url">"자세히 알아보기"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"매우 느림"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"느림"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"양호"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"보통"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"빠름"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"매우 빠름"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ky/arrays.xml b/libs/WifiTrackerLib/res/values-ky/arrays.xml
index 00ab8f6..186aee4 100644
--- a/libs/WifiTrackerLib/res/values-ky/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-ky/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Изделүүдө…"</item>
-    <item msgid="6222852518007967736">"Туташууда…"</item>
-    <item msgid="1176401854208153464">"Аныктыгы текшерилүүдө…"</item>
-    <item msgid="1377026397901197257">"IP дареги алынууда…"</item>
-    <item msgid="7627139816052121509">"Туташып турат"</item>
-    <item msgid="1598801023719359130">"Убактылуу токтотулду"</item>
-    <item msgid="9160765456671002324">"Ажыратылууда…"</item>
-    <item msgid="8013176736494493734">"Ажыратылды"</item>
-    <item msgid="4077393480368783785">"Ката"</item>
-    <item msgid="605372180740008604">"Бөгөттөлдү"</item>
-    <item msgid="5102306451432929048">"Байланыш начар болгондуктан өчүрүлдү"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Изделүүдө…"</item>
+    <item msgid="9055468790485684083">"Туташууда…"</item>
+    <item msgid="6099499723199990208">"Аутентификациядан өтүүдө…"</item>
+    <item msgid="6794055951297347103">"IP дареги алынууда…"</item>
+    <item msgid="5450920562291300229">"Туташып турат"</item>
+    <item msgid="6332116533879646145">"Убактылуу токтотулду"</item>
+    <item msgid="294459081501073818">"Ажыратылууда…"</item>
+    <item msgid="1577368920272598676">"Ажыратылды"</item>
+    <item msgid="7655843177582495451">"Ката"</item>
+    <item msgid="8953752690917593623">"Бөгөттөлдү"</item>
+    <item msgid="4400457817750243671">"Байланыш начар болгондуктан өчүрүлдү"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ky/strings.xml b/libs/WifiTrackerLib/res/values-ky/strings.xml
index d9c7a9f..f9cc107 100644
--- a/libs/WifiTrackerLib/res/values-ky/strings.xml
+++ b/libs/WifiTrackerLib/res/values-ky/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Автоматтык түрдө туташуу өчүк"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> тарабынан сакталды"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Автоматтык түрдө туташпайт"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Интернетке туташпай турат"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Аутентификация маселеси бар"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Сырсөздү текшерип, кайталап көрүңүз."</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP конфигурациясы бузулду"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Өчүрүлгөн"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Байланыш түйүнүнө өтө көп түзмөк туташып турат"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Ажыратылды"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Сакталды"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Трафик ченелет"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Чектелбеген тармак"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> аркылуу туташты"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> аркылуу жеткиликтүү"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> аркылуу автоматтык түрдө туташты"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Тармактар рейтингинин булагы аркылуу автоматтык түрдө туташты"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Байланыш чектелген"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Жеке DNS сервери жеткиликсиз"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Интернет жок"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Автоматтык түрдө туташуу өчүк"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> боюнча сакталган"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Автоматтык түрдө туташпайт"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Интернетке туташпай турат"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Аутентификация маселеси бар"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Сырсөздү текшерип, кайталап көрүңүз"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP конфигурациясы бузулду"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Өчүк"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Байланыш түйүнүнө өтө көп түзмөк туташып турат"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Тармак убактылуу начар иштеп жатат"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Начар сигнал. Роутерге жакын жылып көрүңүз."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Тармакка өтө көп түзмөк туташып турат. Кайталаңыз."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Туташпай жатат. Кайталаңыз."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Тармак бул түзмөк менен шайкеш келбейт"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Ажыратылды"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Сакталды"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Трафик ченелет"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Чектелбеген тармак"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> аркылуу туташты"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> аркылуу жеткиликтүү"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> аркылуу автоматтык түрдө туташты"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Тармактар рейтингинин булагы аркылуу автоматтык түрдө туташты"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Байланыш чектелген"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Жеке DNS сервери жеткиликсиз"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Түзмөккө туташты. Интернет жок."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Начар сапат"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Жок"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Эскирип калган"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Катталуу үчүн таптап коюңуз"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Жазылууну жаңыртып, туташуу үчүн таптап коюңуз"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ачылууда"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Туташпай койду"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Катталуу аяктоодо…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Катталуу аягына чыккан жок. Кайра аракет кылуу үчүн таптап коюңуз."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Катталуу аягына чыкты. Туташууда…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Бул тармакка өзгөчө идентификатор берилет жана аны түзмөктүн жайгашкан жерин көзөмөлдөп туруу үчүн колдонууга болот. "<annotation id="url">"Кеңири маалымат"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Өтө жай"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Жай"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Жарайт"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Орто"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Ылдам"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Абдан ылдам"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Жок"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Мөөнөтү бүткөн"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Катталуу үчүн таптап коюңуз"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Жазылууну жаңыртып, туташуу үчүн таптап коюңуз"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ачылууда"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Туташпай койду"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Катталуу аяктоодо…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Катталуу аягына чыккан жок. Кайра аракет кылуу үчүн таптап коюңуз."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Катталуу аягына чыкты. Туташууда…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Бул тармакка SIM-картанын идентификатору берилет жана аны түзмөктүн жайгашкан жерин көзөмөлдөп туруу үчүн колдонууга болот. "<annotation id="url">"Кеңири маалымат"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Өтө жай"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Жай"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Дурус"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Орто"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Ылдам"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Абдан ылдам"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-lo/arrays.xml b/libs/WifiTrackerLib/res/values-lo/arrays.xml
index 61588c2..6216bb5 100644
--- a/libs/WifiTrackerLib/res/values-lo/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-lo/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"ກຳລັງສະແກນ…"</item>
-    <item msgid="6222852518007967736">"ກຳລັງເຊື່ອມຕໍ່…"</item>
-    <item msgid="1176401854208153464">"ກຳລັງກວດຮັບຮອງຄວາມຖືກຕ້ອງ…"</item>
-    <item msgid="1377026397901197257">"ກຳລັງຂໍທີ່ຢູ່ IP…"</item>
-    <item msgid="7627139816052121509">"ເຊື່ອມຕໍ່ແລ້ວ"</item>
-    <item msgid="1598801023719359130">"ຖືກລະງັບໄວ້"</item>
-    <item msgid="9160765456671002324">"ກຳລັງຕັດການເຊື່ອມຕໍ່…"</item>
-    <item msgid="8013176736494493734">"ຕັດການເຊື່ອມຕໍ່ແລ້ວ"</item>
-    <item msgid="4077393480368783785">"ບໍ່ສຳເລັດ"</item>
-    <item msgid="605372180740008604">"ບລັອກແລ້ວ"</item>
-    <item msgid="5102306451432929048">"ຫຼີກເວັ້ນການເຊື່ອມຕໍ່ເຄືອຂ່າຍສັນຍານອ່ອນຊົ່ວຄາວ"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"ກຳລັງສະແກນ…"</item>
+    <item msgid="9055468790485684083">"ກຳລັງເຊື່ອມຕໍ່…"</item>
+    <item msgid="6099499723199990208">"ກຳລັງພິສູດຢືນຢັນ…"</item>
+    <item msgid="6794055951297347103">"ກຳລັງຂໍທີ່ຢູ່ IP…"</item>
+    <item msgid="5450920562291300229">"ເຊື່ອມຕໍ່ແລ້ວ"</item>
+    <item msgid="6332116533879646145">"ຖືກລະງັບໄວ້"</item>
+    <item msgid="294459081501073818">"ກຳລັງຕັດການເຊື່ອມຕໍ່…"</item>
+    <item msgid="1577368920272598676">"ຕັດການເຊື່ອມຕໍ່ແລ້ວ"</item>
+    <item msgid="7655843177582495451">"ບໍ່ສຳເລັດ"</item>
+    <item msgid="8953752690917593623">"ບລັອກແລ້ວ"</item>
+    <item msgid="4400457817750243671">"ຫຼີກເວັ້ນການເຊື່ອມຕໍ່ເຄືອຂ່າຍສັນຍານອ່ອນຊົ່ວຄາວ"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-lo/strings.xml b/libs/WifiTrackerLib/res/values-lo/strings.xml
index c9067d6..0269e22 100644
--- a/libs/WifiTrackerLib/res/values-lo/strings.xml
+++ b/libs/WifiTrackerLib/res/values-lo/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"ການເຊື່ອມຕໍ່ອັດຕະໂນມັດປິດຢູ່"</string>
-    <string name="saved_network" msgid="6241977554502802914">"ບັນທຶກ​​​ໂດຍ <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"ຈະບໍ່ເຊື່ອມຕໍ່ອັດຕະໂນມັດ"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"ບໍ່ມີການເຊື່ອມຕໍ່ອິນເຕີເນັດ"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"ເກີດບັນຫາການພິສູດຢືນຢັນ"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"ກະລຸນາກວດສອບລະຫັດຜ່ານແລ້ວລອງໃໝ່ອີກຄັ້ງ"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"ການຕັ້ງຄ່າ IP ບໍ່ສຳເລັດ"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"ປິດການນຳໃຊ້"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"ຈຸດການເຂົ້າເຖິງເຕັມຊົ່ວຄາວ"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"ຕັດການເຊື່ອມຕໍ່ແລ້ວ"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"ບັນ​ທຶກແລ້ວ"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"ມີການວັດແທກ"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"ບໍ່ໄດ້ວັດແທກ"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"ເຊື່ອມ​ຕໍ່​ຜ່ານ <xliff:g id="NAME">%1$s</xliff:g> ແລ້ວ"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"ສາມາດໃຊ້ໄດ້ຜ່ານ <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"ເຊື່ອມຕໍ່ອັດຕະໂນມັດຜ່ານ <xliff:g id="NAME">%1$s</xliff:g> ແລ້ວ"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"ເຊື່ອມຕໍ່ກັບອັດຕະໂນມັດແລ້ວຜ່ານຜູ້ໃຫ້ບໍລິການຄະແນນເຄືອຂ່າຍ"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"ການເຊື່ອມຕໍ່ຈຳກັດ"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"ບໍ່ສາມາດເຂົ້າເຖິງເຊີບເວີ DNS ສ່ວນຕົວໄດ້"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"ບໍ່ມີອິນເຕີເນັດ"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"ການເຊື່ອມຕໍ່ອັດຕະໂນມັດປິດຢູ່"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"ບັນທຶກໄວ້ໂດຍ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"ຈະບໍ່ເຊື່ອມຕໍ່ອັດຕະໂນມັດ"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"ບໍ່ມີການເຊື່ອມຕໍ່ອິນເຕີເນັດ"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"ເກີດບັນຫາການພິສູດຢືນຢັນ"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"ກະລຸນາກວດສອບລະຫັດຜ່ານແລ້ວລອງໃໝ່"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"ການຕັ້ງຄ່າ IP ບໍ່ສຳເລັດ"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"ປິດນຳໃຊ້ແລ້ວ"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"ຈຸດການເຂົ້າເຖິງເຕັມຊົ່ວຄາວ"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"ສະພາບເຄືອຂ່າຍສັນຍານບໍ່ດີຊົ່ວຄາວ"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"ສັນ​ຍານ​ອ່ອນ. ລອງຍ້າຍໄປໃກ້ເຣົາເຕີ."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"ເກີນຄວາມຈຸເຄືອຂ່າຍແລ້ວ. ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"ບໍ່ສາມາດເຊື່ອມຕໍ່ໄດ້. ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"ເຄືອຂ່າຍບໍ່ສາມາດໃຊ້ຮ່ວມກັບອຸປະກອນນີ້ໄດ້"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"ຕັດການເຊື່ອມຕໍ່ແລ້ວ"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"ບັນທຶກແລ້ວ"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"ມີການວັດແທກ"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"ບໍ່ໄດ້ວັດແທກ"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"ເຊື່ອມ​ຕໍ່​ຜ່ານ <xliff:g id="NAME">%1$s</xliff:g> ແລ້ວ"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"ສາມາດໃຊ້ໄດ້ຜ່ານ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"ເຊື່ອມຕໍ່ອັດຕະໂນມັດຜ່ານ <xliff:g id="NAME">%1$s</xliff:g> ແລ້ວ"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"ເຊື່ອມຕໍ່ກັບອັດຕະໂນມັດແລ້ວຜ່ານຜູ້ໃຫ້ບໍລິການຄະແນນເຄືອຂ່າຍ"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"ການເຊື່ອມຕໍ່ຈຳກັດ"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"ບໍ່ສາມາດເຂົ້າເຖິງເຊີບເວີ DNS ສ່ວນຕົວໄດ້"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"ເຊື່ອມຕໍ່ຫາອຸປະກອນແລ້ວ. ບໍ່ສາມາດໃຫ້ບໍລິການອິນເຕີເນັດໄດ້."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"ຄຸນນະພາບຕໍ່າ"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"ບໍ່ໃຊ້"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"ໝົດອາຍຸແລ້ວ"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"ແຕະເພື່ອສະໝັກ"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"ແຕະເພື່ອຕໍ່ອາຍຸການສະໝັກໃຊ້ ແລະ ເຊື່ອມຕ"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"ກຳລັງເປີດ <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"ບໍ່ສາມາດເຊື່ອມຕໍ່ໄດ້"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"ກຳລັງສຳເລັດການສະໝັກ…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"ບໍ່ສາມາດສຳເລັດການສະໝັກໄດ້. ແຕະເພື່ອລອງໃໝ່."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"ສະໝັກສຳເລັດແລ້ວ. ກຳລັງເຊື່ອມຕໍ່…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"ເຄືອຂ່າຍນີ້ຈະຮັບ unique ID ທີ່ສາມາດໃຊ້ເພື່ອຕິດຕາມສະຖານທີ່ອຸປະກອນ "<annotation id="url">"ສຶກສາເພີ່ມເຕີມ"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"ຊ້າຫຼາຍ"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"ຊ້າ"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ຕົກລົງ"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"ປານກາງ"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"ໄວ"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"ໄວຫຼາຍ"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"ບໍ່ມີ"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"ໝົດອາຍຸແລ້ວ"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"ແຕະເພື່ອສະໝັກ"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"ແຕະເພື່ອຕໍ່ອາຍຸການສະໝັກໃຊ້ ແລະ ເຊື່ອມຕໍ່"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"ກຳລັງເປີດ <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"ບໍ່ສາມາດເຊື່ອມຕໍ່ໄດ້"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"ກຳລັງສຳເລັດການສະໝັກ…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"ບໍ່ສາມາດສຳເລັດການສະໝັກໄດ້. ແຕະເພື່ອລອງໃໝ່."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"ສະໝັກສຳເລັດແລ້ວ. ກຳລັງເຊື່ອມຕໍ່…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"ເຄືອຂ່າຍນີ້ຈະຮັບ ID ຊິມທີ່ສາມາດໃຊ້ເພື່ອຕິດຕາມສະຖານທີ່ອຸປະກອນ "<annotation id="url">"ສຶກສາເພີ່ມເຕີມ"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"ຊ້າຫຼາຍ"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"ຊ້າ"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ຕົກລົງ"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"ປານກາງ"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"ໄວ"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"ໄວຫຼາຍ"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi ຈະບໍ່ເຊື່ອມຕໍ່ອັດຕະໂນມັດສຳລັບຕອນນີ້"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-lt/arrays.xml b/libs/WifiTrackerLib/res/values-lt/arrays.xml
index a78eb70..91e76d7 100644
--- a/libs/WifiTrackerLib/res/values-lt/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-lt/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Nuskaitoma…"</item>
-    <item msgid="6222852518007967736">"Prijungiama…"</item>
-    <item msgid="1176401854208153464">"Nustatoma tapatybė…"</item>
-    <item msgid="1377026397901197257">"Gaunamas IP adresas…"</item>
-    <item msgid="7627139816052121509">"Prisijungta"</item>
-    <item msgid="1598801023719359130">"Laikinai sustabdyta"</item>
-    <item msgid="9160765456671002324">"Atjungiama…"</item>
-    <item msgid="8013176736494493734">"Atjungta"</item>
-    <item msgid="4077393480368783785">"Nepavyko"</item>
-    <item msgid="605372180740008604">"Užblokuota"</item>
-    <item msgid="5102306451432929048">"Laikinai vengiama prasto ryšio"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Nuskaitoma…"</item>
+    <item msgid="9055468790485684083">"Prisijungiama…"</item>
+    <item msgid="6099499723199990208">"Autentifikuojama…"</item>
+    <item msgid="6794055951297347103">"Gaunamas IP adresas…"</item>
+    <item msgid="5450920562291300229">"Prisijungta"</item>
+    <item msgid="6332116533879646145">"Laikinai sustabdyta"</item>
+    <item msgid="294459081501073818">"Atsijungiama…"</item>
+    <item msgid="1577368920272598676">"Atsijungta"</item>
+    <item msgid="7655843177582495451">"Nepavyko"</item>
+    <item msgid="8953752690917593623">"Užblokuota"</item>
+    <item msgid="4400457817750243671">"Laikinai vengiama prasto ryšio"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-lt/strings.xml b/libs/WifiTrackerLib/res/values-lt/strings.xml
index f3848c4..7ac6c65 100644
--- a/libs/WifiTrackerLib/res/values-lt/strings.xml
+++ b/libs/WifiTrackerLib/res/values-lt/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Automatinio prisijungimo funkcija išjungta"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Išsaugojo <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Nebus automatiškai prisijungiama"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Nėra interneto ryšio"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Autentifikavimo problema"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Patikrinkite slaptažodį ir bandykite dar kartą"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP konfigūracijos triktis"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Neleidžiama"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Prieigos taškas laikinai visiškai užimtas"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Neprisijungta"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Išsaugotas"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Matuojamas"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Neišmatuotas"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Prisijungta naudojant programą „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Pasiekiama naudojant „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatiškai prisijungta per „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatiškai prisijungta naudojant tinklo įvertinimo paslaugos teikėjo paslaugomis"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Ribotas ryšys"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Privataus DNS serverio negalima pasiekti"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Nėra interneto ryšio"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatinio prisijungimo funkcija išjungta"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Išsaugojo: „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Nebus automatiškai prisijungiama"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Nėra interneto ryšio"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Autentifikavimo problema"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Patikrinkite slaptažodį ir bandykite dar kartą"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP konfigūracijos triktis"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Išjungta"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Prieigos taškas laikinai visiškai užimtas"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Laikinai prastos tinklo sąlygos"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Silpnas signalas. Pabandykite prieiti arčiau maršruto parinktuvo."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Tinklas pernelyg užimtas. Vėliau bandykite dar kartą."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Nepavyko prisijungti. Vėliau bandykite dar kartą."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Tinklas nesuderinamas su šiuo įrenginiu"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Atsijungta"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Išsaugota"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Matuojamas"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Nematuojamas"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Prisijungta naudojant programą „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Pasiekiama naudojant „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatiškai prisijungta per „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatiškai prisijungta naudojant tinklo įvertinimo paslaugos teikėjo paslaugomis"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Ribotas ryšys"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Privataus DNS serverio negalima pasiekti"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Prisijungta prie įrenginio. Nepavyksta prisijungti prie interneto."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Prastas ryšys"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Nėra"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Baigėsi galiojimo laikas"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Palieskite, kad prisiregistruotumėte"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Palieskite, kad atnaujintumėte prenumeratą ir prisijungtumėte"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Atidaroma: „<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>“"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Nepavyko prisijungti"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Baigiamas prisiregistravimas…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Nepavyko užbaigti prisiregistravimo. Jei norite bandyti dar kartą, palieskite."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Prisiregistravimas baigtas. Prijungiama…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Šis tinklas gauna unikalų ID, kurį galima naudoti įrenginio vietovei stebėti. "<annotation id="url">"Sužinokite daugiau"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Labai lėtas"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lėtas"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Gerai"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Vidutinis"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Greitas"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Labai greitas"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Nėra"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Negalioja"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Palieskite, kad prisiregistruotumėte"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Palieskite, kad atnaujintumėte prenumeratą ir prisijungtumėte"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Atidaroma: „<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>“"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Nepavyko prisijungti"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Baigiamas prisiregistravimas…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Nepavyko užbaigti prisiregistravimo. Jei norite bandyti dar kartą, palieskite."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Prisiregistravimas baigtas. Prisijungiama…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Šis tinklas gauna SIM kortelės ID, kurį galima naudoti įrenginio vietovei stebėti. "<annotation id="url">"Sužinokite daugiau"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Labai lėtas"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lėtas"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Geras"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Vidutinis"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Spartus"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Labai spartus"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-lv/arrays.xml b/libs/WifiTrackerLib/res/values-lv/arrays.xml
index fe50755..f155813 100644
--- a/libs/WifiTrackerLib/res/values-lv/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-lv/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Notiek meklēšana…"</item>
-    <item msgid="6222852518007967736">"Notiek savienojuma izveide…"</item>
-    <item msgid="1176401854208153464">"Notiek autentificēšana…"</item>
-    <item msgid="1377026397901197257">"Notiek IP adreses iegūšana…"</item>
-    <item msgid="7627139816052121509">"Izveidots savienojums"</item>
-    <item msgid="1598801023719359130">"Apturēts"</item>
-    <item msgid="9160765456671002324">"Notiek savienojuma pārtraukšana…"</item>
-    <item msgid="8013176736494493734">"Savienojums pārtraukts"</item>
-    <item msgid="4077393480368783785">"Neizdevās"</item>
-    <item msgid="605372180740008604">"Bloķēts"</item>
-    <item msgid="5102306451432929048">"Pagaidām netiek izmantots vājš savienojums."</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Notiek meklēšana…"</item>
+    <item msgid="9055468790485684083">"Notiek savienojuma izveide…"</item>
+    <item msgid="6099499723199990208">"Notiek autentificēšana…"</item>
+    <item msgid="6794055951297347103">"Notiek IP adreses iegūšana…"</item>
+    <item msgid="5450920562291300229">"Izveidots savienojums"</item>
+    <item msgid="6332116533879646145">"Apturēta darbība"</item>
+    <item msgid="294459081501073818">"Notiek savienojuma pārtraukšana…"</item>
+    <item msgid="1577368920272598676">"Savienojums pārtraukts"</item>
+    <item msgid="7655843177582495451">"Neizdevās"</item>
+    <item msgid="8953752690917593623">"Bloķēts"</item>
+    <item msgid="4400457817750243671">"Pagaidām netiek izmantots vājš savienojums."</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-lv/strings.xml b/libs/WifiTrackerLib/res/values-lv/strings.xml
index e0300d6..ee921d9 100644
--- a/libs/WifiTrackerLib/res/values-lv/strings.xml
+++ b/libs/WifiTrackerLib/res/values-lv/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Savienojuma automātiskā izveide ir izslēgta."</string>
-    <string name="saved_network" msgid="6241977554502802914">"Saglabāja: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Savienojums netiks izveidots automātiski"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Nav piekļuves internetam"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Autentificēšanas problēma"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Pārbaudiet paroli un mēģiniet vēlreiz."</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP konfigurācijas kļūme"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Atspējots"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Piekļuves punkts īslaicīgi ir pilns"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Savienojums pārtraukts"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Saglabāts"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Maksas"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Bezmaksas"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Savienojums ar <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Pieejams, izmantojot <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automātiski izveidots savienojums, izmantojot <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automātiski izveidots savienojums, izmantojot tīkla vērtējuma sniedzēju"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Ierobežots savienojums"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Nevar piekļūt privātam DNS serverim."</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Nav interneta"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Savienojuma automātiskā izveide ir izslēgta."</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Saglabāja: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Savienojums netiks izveidots automātiski."</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Nav piekļuves internetam."</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Autentificēšanas problēma"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Pārbaudiet paroli un mēģiniet vēlreiz."</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP konfigurācijas kļūme"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Atspējots"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Piekļuves punkts īslaicīgi ir pilns."</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Īslaicīgs slikts tīkla stāvoklis"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Vājš signāls. Pārvietojieties tuvāk maršrutētājam."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Tīkls ir pārslogots. Vēlāk mēģiniet vēlreiz."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Nevar izveidot savienojumu. Vēlāk mēģiniet vēlreiz."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Tīkls nav saderīgs ar šo ierīci."</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Savienojums pārtraukts"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Saglabāts"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Maksas"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Bezmaksas"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Izveidots savienojums, izmantojot <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Pieejams, izmantojot <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automātiski izveidots savienojums, izmantojot <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automātiski izveidots savienojums, izmantojot tīkla vērtējuma sniedzēju"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Ierobežots savienojums"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Nevar piekļūt privātam DNS serverim."</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Izveidots savienojums ar ierīci. Nav piekļuves internetam."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Zema kvalitāte"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Nav"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Beidzies derīguma termiņš"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Pieskarieties, lai reģistrētos."</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Pieskarieties, lai atjaunotu abonementu un izveidotu savienojumu"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Notiek nodrošinātāja <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> atvēršana."</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Nevarēja izveidot savienojumu."</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Notiek reģistrācijas pabeigšana…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Nevarēja pabeigt reģistrāciju. Pieskarieties, lai mēģinātu vēlreiz."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Reģistrācija ir pabeigta. Notiek savienojuma izveide…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Šis tīkls saņem unikālo ID, ko var izmantot, lai izsekotu ierīces atrašanās vietu. "<annotation id="url">"Uzziniet vairāk"</annotation>"."</string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Ļoti lēns"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lēns"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Labi"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Vidējs"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Ātrs"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Ļoti ātrs"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Nav"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Beidzies derīguma termiņš"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Pieskarieties, lai reģistrētos."</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Pieskarieties, lai atjaunotu abonementu un izveidotu savienojumu."</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Notiek nodrošinātāja <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> atvēršana."</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Nevarēja izveidot savienojumu"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Notiek reģistrācijas pabeigšana…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Nevarēja pabeigt reģistrāciju. Pieskarieties, lai mēģinātu vēlreiz."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Reģistrācija ir pabeigta. Notiek savienojuma izveide…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Šis tīkls saņem SIM ID, ko var izmantot, lai izsekotu ierīces atrašanās vietu. "<annotation id="url">"Uzziniet vairāk"</annotation>"."</string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Ļoti lēns"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lēns"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Pietiekams"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Vidējs"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Ātrs"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Ļoti ātrs"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-mk/arrays.xml b/libs/WifiTrackerLib/res/values-mk/arrays.xml
index 1ee619c..d37dfa7 100644
--- a/libs/WifiTrackerLib/res/values-mk/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-mk/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Се скенира…"</item>
-    <item msgid="6222852518007967736">"Се поврзува…"</item>
-    <item msgid="1176401854208153464">"Се проверува…"</item>
-    <item msgid="1377026397901197257">"Се добива IP-адресата…"</item>
-    <item msgid="7627139816052121509">"Поврзано"</item>
-    <item msgid="1598801023719359130">"Прекинато"</item>
-    <item msgid="9160765456671002324">"Се исклучува…"</item>
-    <item msgid="8013176736494493734">"Не е поврзано"</item>
-    <item msgid="4077393480368783785">"Неуспешно"</item>
-    <item msgid="605372180740008604">"Блокирано"</item>
-    <item msgid="5102306451432929048">"Привремено избегнува лоша врска"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Се скенира…"</item>
+    <item msgid="9055468790485684083">"Се поврзува…"</item>
+    <item msgid="6099499723199990208">"Се проверува…"</item>
+    <item msgid="6794055951297347103">"Се добива IP-адресата…"</item>
+    <item msgid="5450920562291300229">"Поврзано"</item>
+    <item msgid="6332116533879646145">"Прекинато"</item>
+    <item msgid="294459081501073818">"Се исклучува…"</item>
+    <item msgid="1577368920272598676">"Не е поврзано"</item>
+    <item msgid="7655843177582495451">"Неуспешно"</item>
+    <item msgid="8953752690917593623">"Блокирано"</item>
+    <item msgid="4400457817750243671">"Привремено избегнува лоша врска"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-mk/strings.xml b/libs/WifiTrackerLib/res/values-mk/strings.xml
index 15c419e..d21ea7a 100644
--- a/libs/WifiTrackerLib/res/values-mk/strings.xml
+++ b/libs/WifiTrackerLib/res/values-mk/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Автоматското поврзување е исклучено"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Зачувано од <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Не може да се поврзе автоматски"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Нема пристап до интернет"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Проблем при проверката"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Проверете ја лозинката и обидете се повторно"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Конфигурацијата на IP не успеа"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Оневозможено"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Пристапната точка привремено е преоптоварена"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Не е поврзано"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Зачувано"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Со ограничен интернет"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Без ограничен интернет"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Поврзано преку <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Достапна преку <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Автоматски поврзано преку <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Автоматски поврзано преку оценувач на мрежа"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Ограничена врска"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Не може да се пристапи до приватниот DNS-сервер"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Нема интернет"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Автоматското поврзување е исклучено"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Зачувана од <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Не може да се поврзе автоматски"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Нема пристап до интернет"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Проблем при проверката"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Проверете ја лозинката и обидете се повторно"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Конфигурацијата на IP не успеа"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Оневозможена"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Пристапната точка е привремено преоптоварена"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Привремено слаби услови на мрежата"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Слаб сигнал. Доближете се до рутерот."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Мрежата е преоптоварена. Обидете се повторно подоцна."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Не може да се поврзе. Обидете се повторно подоцна."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Мрежата не е компатибилна со уредов"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Не е поврзано"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Зачувана"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Со ограничен интернет"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Со неограничен интернет"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Поврзано преку <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Достапна преку <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Автоматски поврзано преку <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Автоматски поврзано преку оценувач на мрежа"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Ограничена врска"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Не може да се пристапи до приватниот DNS-сервер"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Поврзано со уредот. Не може да се обезбеди интернет."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Лош квалитет"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Нема"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Истечено"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Допрете за да се регистрирате"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Допрете за обновување на претплатата и поврзување"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Се отвора <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Не може да се поврзе"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Се завршува регистрацијата…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Не може да се заврши регистрацијата. Допрете за да се обидете повторно."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Регистрацијата е завршена. Се поврзува…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Мрежава прима уникатен ID што може да се користи за следење на локацијата на уредот. "<annotation id="url">"Дознајте повеќе"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Многу бавна"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Бавна"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Во ред"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Средна"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Брза"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Многу брза"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Нема"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Истечена"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Допрете за да се регистрирате"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Допрете за да ја обновите претплатата и да се поврзете"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Се отвора <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Не може да се поврзе"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Се завршува регистрацијата…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Не може да се заврши регистрацијата. Допрете за да се обидете повторно."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Регистрацијата е завршена. Се поврзува…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Мрежава прима уникатен ID на SIM што може да се користи за следење на локацијата на уредот. "<annotation id="url">"Дознајте повеќе"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Многу бавна"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Бавна"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Во ред"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Средна"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Брза"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Многу брза"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi нема да се поврзува автоматски засега"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ml/arrays.xml b/libs/WifiTrackerLib/res/values-ml/arrays.xml
index 78f9e27..41a01ba 100644
--- a/libs/WifiTrackerLib/res/values-ml/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-ml/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"സ്‌കാൻ ചെയ്യുന്നു..."</item>
-    <item msgid="6222852518007967736">"കണക്‌റ്റ് ചെയ്യുന്നു..."</item>
-    <item msgid="1176401854208153464">"പരിശോധിച്ചുറപ്പിക്കുന്നു…"</item>
-    <item msgid="1377026397901197257">"IP വിലാസം നേടുന്നു..."</item>
-    <item msgid="7627139816052121509">"കണ‌ക്റ്റ് ചെയ്‌തു"</item>
-    <item msgid="1598801023719359130">"താൽക്കാലികമായി റദ്ദാക്കി"</item>
-    <item msgid="9160765456671002324">"വിച്‌ഛേദിക്കുന്നു..."</item>
-    <item msgid="8013176736494493734">"വിച്ഛേദിച്ചു"</item>
-    <item msgid="4077393480368783785">"പരാജയപ്പെട്ടു"</item>
-    <item msgid="605372180740008604">"ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു"</item>
-    <item msgid="5102306451432929048">"മോശം കണക്ഷൻ താൽക്കാലികമായി ഒഴിവാക്കുന്നു"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"സ്‌കാൻ ചെയ്യുന്നു…"</item>
+    <item msgid="9055468790485684083">"കണക്‌റ്റ് ചെയ്യുന്നു…"</item>
+    <item msgid="6099499723199990208">"പരിശോധിച്ചുറപ്പിക്കുന്നു…"</item>
+    <item msgid="6794055951297347103">"IP വിലാസം നേടുന്നു…"</item>
+    <item msgid="5450920562291300229">"കണക്റ്റ് ചെയ്തു"</item>
+    <item msgid="6332116533879646145">"തൽക്കാലികമായി റദ്ദാക്കി"</item>
+    <item msgid="294459081501073818">"വിച്ഛേദിക്കുന്നു…"</item>
+    <item msgid="1577368920272598676">"വിച്ഛേദിച്ചു"</item>
+    <item msgid="7655843177582495451">"കണക്റ്റ് ചെയ്യാനായില്ല"</item>
+    <item msgid="8953752690917593623">"ബ്ലോക്ക് ചെയ്തു"</item>
+    <item msgid="4400457817750243671">"മോശം കണക്ഷൻ കാരണം വൈഫൈ താൽക്കാലികമായി ഒഴിവാക്കുന്നു"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ml/strings.xml b/libs/WifiTrackerLib/res/values-ml/strings.xml
index c90220a..1fce76c 100644
--- a/libs/WifiTrackerLib/res/values-ml/strings.xml
+++ b/libs/WifiTrackerLib/res/values-ml/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"ഓട്ടോ-കണക്റ്റ് ഓഫാണ്"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> സംരക്ഷിച്ചത്"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"സ്വയമേവ കണക്‌റ്റ് ചെയ്യില്ല"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"ഇന്റർനെറ്റ് ആക്‌സസ് ഇല്ല"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"പരിശോധിച്ചുറപ്പിക്കുന്നതിലെ പ്രശ്നം"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"പാസ്‌വേഡ് പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP കോൺഫിഗറേഷൻ പരാജയം"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"പ്രവർത്തനരഹിതമാക്കി"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"ആക്‌സസ് പോയിന്റ് താൽക്കാലികമായി നിറഞ്ഞിരിക്കുന്നു"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"വിച്ഛേദിച്ചു"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"സംരക്ഷിച്ചു"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"മീറ്റർ ചെയ്തത്"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"മീറ്റർമാപകമല്ലാത്തത്"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> മുഖേന കണക്‌റ്റ് ചെയ്‌തു"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> വഴി ലഭ്യമാണ്"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> മുഖേന സ്വയമേവ കണക്‌റ്റ് ചെയ്തിരിക്കുന്നു"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"നെറ്റ്‌വർക്ക് റേറ്റിംഗ് ദാതാവുമായി സ്വയം കണക്‌റ്റുചെയ്‌തു"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"പരിമിത കണക്‌ഷൻ"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"സ്വകാര്യ DNS സെർവർ ആക്‌സസ് ചെയ്യാനാവില്ല"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"ഇന്റർനെറ്റ് ഇല്ല"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"ഓട്ടോ-കണക്റ്റ് ഓഫാണ്"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> സംരക്ഷിച്ചത്"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"സ്വയമേവ കണക്‌റ്റ് ചെയ്യില്ല"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"ഇന്റർനെറ്റ് ആക്‌സസ് ഇല്ല"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"പരിശോധിച്ചുറപ്പിക്കുന്നതിൽ പ്രശ്‌നം"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"പാസ്‌വേഡ് പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP കോൺഫിഗർ ചെയ്യാനായില്ല"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"പ്രവർത്തനരഹിതമാക്കി"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"ആക്‌സസ് പോയിന്റ് താൽക്കാലികമായി നിറഞ്ഞു"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"നിലവിലെ നെറ്റ്‌വർക്ക് നില മോശം"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"സിഗ്‌നൽ ദുർബലമാണ്. റൂട്ടറിന് കൂടുതൽ അടുത്തേക്ക് നീക്കി ശ്രമിക്കുക."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"നിങ്ങളുടെ നെറ്റ്‌വർക്ക് ശേഷി കവിഞ്ഞു. പിന്നീട് വീണ്ടും ശ്രമിക്കുക."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"കണക്‌റ്റ് ചെയ്യാനാകുന്നില്ല. പിന്നീട് വീണ്ടും ശ്രമിക്കുക."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"നെറ്റ്‌വർക്ക് ഈ ഉപകരണവുമായി പൊരുത്തപ്പെടുന്നില്ല"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"വിച്ഛേദിച്ചു"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"സംരക്ഷിച്ചു"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"മീറ്റർ ചെയ്‌തത്"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"മീറ്റർമാപകമല്ലാത്തത്"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> മുഖേന കണക്‌റ്റ് ചെയ്‌തു"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> മുഖേന ലഭ്യമാണ്"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> മുഖേന സ്വയമേവ കണക്റ്റ് ചെയ്‌തു"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"നെറ്റ്‌വർക്ക് റേറ്റിംഗ് ദാതാവുമായി സ്വയമേവ കണക്‌റ്റ് ചെയ്‌തു"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"പരിമിത കണക്‌ഷൻ"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"സ്വകാര്യ DNS സെർവർ ആക്‌സസ് ചെയ്യാനാവുന്നില്ല"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"ഉപകരണത്തിലേക്ക് കണക്റ്റ് ചെയ്‌തു. ഇന്റർനെറ്റ് നൽകാനാകില്ല."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"കുറഞ്ഞ നിലവാരം"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"ഒന്നുമില്ല"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"കാലഹരണപ്പെട്ടത്"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"സൈൻ അപ്പ് ചെയ്യാൻ ടാപ്പ് ചെയ്യുക"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"സബ്‌സ്ക്രിപ്ഷൻ പുതുക്കാൻ ടാപ്പ് ചെയ്ത് കണക്റ്റ് ചെയ്യുക"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> തുറക്കുന്നു"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"കണക്റ്റ് ചെയ്യാനായില്ല"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"സൈൻ അപ്പ് പൂർത്തിയാക്കുന്നു…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"സൈൻ അപ്പ് പൂർത്തിയാക്കാനായില്ല. വീണ്ടും ശ്രമിക്കാൻ ടാപ്പ് ചെയ്യുക."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"സൈൻ അപ്പ് പൂർത്തിയായി. കണക്റ്റ് ചെയ്യുന്നു…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"ഉപകരണ ലൊക്കേഷൻ ട്രാക്ക് ചെയ്യാൻ ഉപയോഗിക്കാവുന്ന തനത് ഐഡി ഈ നെറ്റ്‌വർക്ക് സ്വീകരിക്കുന്നു. "<annotation id="url">"കൂടുതലറിയുക"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"വളരെ കുറഞ്ഞ വേഗത്തിൽ"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"കുറഞ്ഞ വേഗത്തിൽ"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ശരി"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"ഇടത്തരം"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"വേഗത്തിൽ"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"അതിവേഗം"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"ഒന്നുമില്ല"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"കാലഹരണപ്പെട്ടു"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"സൈൻ അപ്പ് ചെയ്യാൻ ടാപ്പ് ചെയ്യുക"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"സബ്‌സ്ക്രിപ്ഷൻ പുതുക്കാൻ ടാപ്പ് ചെയ്ത ശേഷം കണക്റ്റ് ചെയ്യുക"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> തുറക്കുന്നു"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"കണക്റ്റ് ചെയ്യാനായില്ല"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"സൈൻ അപ്പ് പൂർത്തിയാക്കുന്നു…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"സൈൻ അപ്പ് പൂർത്തിയാക്കാനായില്ല. വീണ്ടും ശ്രമിക്കാൻ ടാപ്പ് ചെയ്യുക."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"സൈൻ അപ്പ് പൂർത്തിയായി. കണക്റ്റ് ചെയ്യുന്നു…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"ഉപകരണ ലൊക്കേഷൻ ട്രാക്ക് ചെയ്യാൻ ഉപയോഗിക്കാവുന്ന സിം ഐഡി ഈ നെറ്റ്‌വർക്കിന് ലഭിക്കും. "<annotation id="url">"കൂടുതലറിയുക"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"വളരെ കുറഞ്ഞ വേഗത്തിൽ"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"കുറഞ്ഞ വേഗത്തിൽ"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ശരി"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"ഇടത്തരം"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"വേഗത്തിൽ"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"അതിവേഗം"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-mn/arrays.xml b/libs/WifiTrackerLib/res/values-mn/arrays.xml
index 654a1c2..b6dfc20 100644
--- a/libs/WifiTrackerLib/res/values-mn/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-mn/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Скан хийж байна…"</item>
-    <item msgid="6222852518007967736">"Холбогдож байна…"</item>
-    <item msgid="1176401854208153464">"Баталгаажуулж байна…"</item>
-    <item msgid="1377026397901197257">"IP хаягийг авч байна…"</item>
-    <item msgid="7627139816052121509">"Холбогдсон"</item>
-    <item msgid="1598801023719359130">"Түр хаасан"</item>
-    <item msgid="9160765456671002324">"Салгаж байна…"</item>
-    <item msgid="8013176736494493734">"Салгасан"</item>
-    <item msgid="4077393480368783785">"Амжилтгүй"</item>
-    <item msgid="605372180740008604">"Блоклосон"</item>
-    <item msgid="5102306451432929048">"Муу холболтоос түр зайлсхийж байна"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Скан хийж байна…"</item>
+    <item msgid="9055468790485684083">"Холбогдож байна…"</item>
+    <item msgid="6099499723199990208">"Баталгаажуулж байна…"</item>
+    <item msgid="6794055951297347103">"IP хаягийг авч байна…"</item>
+    <item msgid="5450920562291300229">"Холбогдсон"</item>
+    <item msgid="6332116533879646145">"Түр хаасан"</item>
+    <item msgid="294459081501073818">"Салгаж байна…"</item>
+    <item msgid="1577368920272598676">"Салгасан"</item>
+    <item msgid="7655843177582495451">"Амжилтгүй боллоо"</item>
+    <item msgid="8953752690917593623">"Блоклосон"</item>
+    <item msgid="4400457817750243671">"Сул холболтоос түр зайлсхийж байна"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-mn/strings.xml b/libs/WifiTrackerLib/res/values-mn/strings.xml
index e52776c..95eeeb3 100644
--- a/libs/WifiTrackerLib/res/values-mn/strings.xml
+++ b/libs/WifiTrackerLib/res/values-mn/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Автомат холболт унтраалттай байна"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> хадгалсан"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Автоматаар холбогдохгүй"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Интернэт хандалт байхгүй байна"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Баталгаажуулалтын асуудал"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Нууц үгийг шалгаад дахин оролдоно уу"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP тохируулга амжилтгүй боллоо"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Идэвхгүйжүүлсэн"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Хандах цэг түр хугацаанд дүүрсэн байна"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Салсан"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Хадгалагдсан"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Хязгаартай"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Хязгааргүй"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g>-р холбогдсон"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g>-р боломжтой байна"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g>-р автоматаар холбогдсон"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Сүлжээний үнэлгээ үзүүлэгчээр автоматаар холбогдох"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Хязгаарлагдмал холболт"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Хувийн DNS серверт хандах боломжгүй байна"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Интернэт алга"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Автомат холболт унтраалттай байна"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> хадгалсан"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Автоматаар холбогдохгүй"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Интернэт хандалт алга"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Баталгаажуулалтын асуудал"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Нууц үгийг шалгаад дахин оролдоно уу"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP тохируулга амжилтгүй боллоо"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Идэвхгүй болгосон"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Хандалтын цэг түр хугацаанд дүүрсэн байна"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Сүлжээний нөхцөл байдал түр хугацаанд муу байна"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Дохио сул байна. Рүүтэр лүүгээ ойртож үзнэ үү."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Сүлжээний хүчин чадал хэтэрсэн байна. Дараа дахин оролдоно уу."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Холбогдох боломжгүй байна. Дараа дахин оролдоно уу."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Сүлжээ энэ төхөөрөмжтэй тохиромжгүй байна"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Салгасан"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Хадгалсан"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Хязгаартай"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Хязгааргүй"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g>-р холбогдсон"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g>-р боломжтой"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g>-р автоматаар холбогдсон"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Сүлжээний үнэлгээ үзүүлэгчээр автоматаар холбогдсон"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Хязгаарлагдмал холболт"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Хувийн DNS серверт хандах боломжгүй байна"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Төхөөрөмжид холбогдсон байна. Интернэт олгох боломжгүй."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Чанар муу"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Байхгүй"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Хугацаа дууссан"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Бүртгүүлэхийн тулд товшино уу"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Захиалгыг шинэчилж, холбогдохын тулд товшино уу"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>-г нээж байна"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Холбогдож чадсангүй"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Бүртгэлийг дуусгаж байна…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Бүртгэлийг дуусгаж чадсангүй. Дахин оролдохын тулд товшино уу."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Бүртгэлийг дуусгалаа. Холбогдож байна…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Энэ сүлжээ нь төхөөрөмжийн байршлыг тандахад ашиглах боломжтой цор ганц дугаарыг хүлээн авдаг. "<annotation id="url">"Нэмэлт мэдээлэл авах"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Маш удаан"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Удаан"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ЗА"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Дунд"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Хурдан"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Маш хурдан"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Байхгүй"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Хугацаа дууссан"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Бүртгүүлэхийн тулд товшино уу"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Захиалгыг шинэчилж, холбогдохын тулд товшино уу"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>-г нээж байна"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Холбогдож чадсангүй"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Бүртгэлийг дуусгаж байна…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Бүртгэлийг дуусгаж чадсангүй. Дахин оролдохын тулд товшино уу."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Бүртгэлийг дуусгалаа. Холбогдож байна…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Энэ сүлжээ нь төхөөрөмжийн байршлыг тандахад ашиглах боломжтой SIM ID-г хүлээн авдаг. "<annotation id="url">"Нэмэлт мэдээлэл авах"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Маш удаан"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Удаан"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ОК"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Дундаж"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Хурдан"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Маш хурдан"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-mr/arrays.xml b/libs/WifiTrackerLib/res/values-mr/arrays.xml
index ed3cd8a..ec4d819 100644
--- a/libs/WifiTrackerLib/res/values-mr/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-mr/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"स्कॅन होत आहे…"</item>
-    <item msgid="6222852518007967736">"कनेक्ट करत आहे…"</item>
-    <item msgid="1176401854208153464">"ऑथेंटिकेट करत आहे…"</item>
-    <item msgid="1377026397901197257">"आयपी ॲड्रेस मिळवत आहे…"</item>
-    <item msgid="7627139816052121509">"कनेक्ट केले"</item>
-    <item msgid="1598801023719359130">"निलंबित"</item>
-    <item msgid="9160765456671002324">"डिस्कनेक्ट करत आहे…"</item>
-    <item msgid="8013176736494493734">"डिस्कनेक्ट केले"</item>
-    <item msgid="4077393480368783785">"अयशस्वी"</item>
-    <item msgid="605372180740008604">"ब्लॉक केले"</item>
-    <item msgid="5102306451432929048">"खराब कनेक्शन तात्पुरते टाळत आहे"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"स्कॅन करत आहे…"</item>
+    <item msgid="9055468790485684083">"कनेक्ट करत आहे…"</item>
+    <item msgid="6099499723199990208">"ऑथेंटिकेट करत आहे…"</item>
+    <item msgid="6794055951297347103">"आयपी ॲड्रेस मिळवत आहे…"</item>
+    <item msgid="5450920562291300229">"कनेक्ट केले"</item>
+    <item msgid="6332116533879646145">"निलंबित केले"</item>
+    <item msgid="294459081501073818">"डिस्कनेक्ट करत आहे…"</item>
+    <item msgid="1577368920272598676">"डिस्कनेक्ट केले"</item>
+    <item msgid="7655843177582495451">"अयशस्वी"</item>
+    <item msgid="8953752690917593623">"ब्लॉक केले"</item>
+    <item msgid="4400457817750243671">"खराब कनेक्शन तात्पुरते टाळत आहे"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-mr/strings.xml b/libs/WifiTrackerLib/res/values-mr/strings.xml
index d714d30..7103329 100644
--- a/libs/WifiTrackerLib/res/values-mr/strings.xml
+++ b/libs/WifiTrackerLib/res/values-mr/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"ऑटो-कनेक्ट बंद आहे"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> द्वारे सेव्ह केले"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"आपोआप कनेक्ट झाले नाही"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"इंटरनेट अ‍ॅक्सेस नाही"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"ऑथेंटिकेशन समस्या"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"पासवर्ड तपासा आणि पुन्‍हा प्रयत्‍न करा"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP कॉंफिगरेशन अयशस्वी"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"अक्षम"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"अ‍ॅक्सेस पॉइंट तात्पुरते भरलेले"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"डिस्कनेक्ट केले"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"सेव्ह केले"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"मीटरने मोजलेले"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"मीटरने न मोजलेले"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> द्वारे कनेक्ट केले"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> द्वारे उपलब्ध"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> वरून आपोआप कनेक्ट केले आहे"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"नेटवर्क रेटिंग प्रदात्याद्वारे स्वयंचलितपणे कनेक्ट केले"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"मर्यादित कनेक्शन"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"खाजगी DNS सर्व्हर ॲक्सेस करू शकत नाही"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"इंटरनेट नाही"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"ऑटो-कनेक्ट बंद आहे"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> ने सेव्ह केले"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"आपोआप कनेक्ट होणार नाही"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"इंटरनेट अ‍ॅक्सेस नाही"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"ऑथेंटिकेशनमध्ये समस्या आली"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"पासवर्ड तपासा आणि पुन्‍हा प्रयत्न करा"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"आयपी कॉंफिगरेशन पूर्ण करता आले नाही"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"बंद केली"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"अ‍ॅक्सेस पॉइंट तात्पुरता भरला आहे"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"नेटवर्कची स्थिती तात्पुरती खराब आहे"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"कमकुवत सिग्नल. राउटरच्‍या जवळ जाण्याचा प्रयत्‍न करा."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"नेटवर्कवर क्षमतेपेक्षा जास्त लोड आहे. नंतर पुन्हा प्रयत्न करा."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"कनेक्ट करू शकत नाही. नंतर पुन्हा प्रयत्न करा."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"नेटवर्क या डिव्हाइससह सुसंगत नाही"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"डिस्कनेक्ट केले"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"सेव्ह केलेले"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"मर्यादित आहे"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"डेटा वापरानुसार नाही"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> द्वारे कनेक्ट केले"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> द्वारे उपलब्ध"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> द्वारे आपोआप कनेक्ट केले"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"नेटवर्क रेटिंग पुरवठादाराद्वारे आपोआप कनेक्ट केले"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"मर्यादित कनेक्शन"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"खाजगी DNS सर्व्हर ॲक्सेस करू शकत नाही"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"डिव्हाइसशी कनेक्ट केले. इंटरनेट उपलब्ध नाही."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"कमी गुणवत्ता"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"काहीही नाही"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"मुदत संपली"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"साइन अप करण्यासाठी टॅप करा"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"सदस्यत्व रिन्यू करण्यासाठी टॅप करा आणि कनेक्ट करा"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> उघडत आहे"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"कनेक्ट करता आले नाही"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"साइन-अप पूर्ण होत आहे…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"साइन-अप पूर्ण करता आले नाही. पुन्हा प्रयत्न करण्यासाठी टॅप करा."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"साइन-अप पूर्ण झाले आहे. कनेक्ट करत आहे…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"हे नेटवर्क डिव्हाइसच्या स्थानाचा माग घेण्यासाठी वापरता येणारा युनिक आयडी मिळवते. "<annotation id="url">"अधिक जाणून घ्या"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"खूप हळू"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"हळू"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ठीक आहे"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"मध्‍यम"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"जलद"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"खूप जलद"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"काहीही नाही"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"एक्स्पायर झाला"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"साइन अप करण्यासाठी टॅप करा"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"सदस्यत्व रिन्यू करण्यासाठी टॅप करा आणि कनेक्ट करा"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> उघडत आहे"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"कनेक्ट करता आले नाही"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"साइन-अप करणे पूर्ण होत आहे…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"साइन-अप करणे पूर्ण करता आले नाही. पुन्हा प्रयत्न करण्यासाठी टॅप करा."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"साइन-अप करणे पूर्ण झाले. कनेक्ट करत आहे…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"हे नेटवर्क डिव्हाइसच्या स्थानाचा माग ठेवण्यासाठी वापरता येणारा सिम आयडी मिळवते. "<annotation id="url">"अधिक जाणून घ्या"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"खूप हळू"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"हळू"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ओके"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"मध्यम"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"जलद"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"खूप जलद"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"वाय-फाय सध्या ऑटो-कनेक्ट होणार नाही"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ms/arrays.xml b/libs/WifiTrackerLib/res/values-ms/arrays.xml
index b4fbeff..43a6dbf 100644
--- a/libs/WifiTrackerLib/res/values-ms/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-ms/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Mengimbas…"</item>
-    <item msgid="6222852518007967736">"Menyambung…"</item>
-    <item msgid="1176401854208153464">"Mengesahkan…"</item>
-    <item msgid="1377026397901197257">"Mendapatkan alamat IP…"</item>
-    <item msgid="7627139816052121509">"Disambungkan"</item>
-    <item msgid="1598801023719359130">"Digantung"</item>
-    <item msgid="9160765456671002324">"Memutuskan sambungan…"</item>
-    <item msgid="8013176736494493734">"Diputuskan sambungan"</item>
-    <item msgid="4077393480368783785">"Tidak berjaya"</item>
-    <item msgid="605372180740008604">"Disekat"</item>
-    <item msgid="5102306451432929048">"Mengelakkan sambungan lemah buat sementara waktu"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Mengimbas…"</item>
+    <item msgid="9055468790485684083">"Menyambung…"</item>
+    <item msgid="6099499723199990208">"Mengesahkan…"</item>
+    <item msgid="6794055951297347103">"Mendapatkan alamat IP…"</item>
+    <item msgid="5450920562291300229">"Disambungkan"</item>
+    <item msgid="6332116533879646145">"Digantung"</item>
+    <item msgid="294459081501073818">"Memutuskan sambungn…"</item>
+    <item msgid="1577368920272598676">"Diputuskan sambungan"</item>
+    <item msgid="7655843177582495451">"Tidak berjaya"</item>
+    <item msgid="8953752690917593623">"Disekat"</item>
+    <item msgid="4400457817750243671">"Mengelakkan sambungan lemah buat sementara waktu"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ms/strings.xml b/libs/WifiTrackerLib/res/values-ms/strings.xml
index 12da6ba..f0d354d 100644
--- a/libs/WifiTrackerLib/res/values-ms/strings.xml
+++ b/libs/WifiTrackerLib/res/values-ms/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Autosambung dimatikan"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Diselamatkan oleh <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Tidak akan menyambung secara automatik"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Tiada akses Internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Masalah pengesahan"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Semak kata laluan, kemudian cuba lagi"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Kegagalan konfigurasi IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Dinyahdayakan"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Titik akses penuh buat sementara waktu"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Diputuskan sambungan"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Disimpan"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Bermeter"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Tidak bermeter"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Disambungkan melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Tersedia melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Disambungkan secara automatik melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Disambungkan secara automatik melalui pembekal penilaian rangkaian"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Sambungan terhad"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Pelayan DNS peribadi tidak boleh diakses"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Tiada Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Autosambung dimatikan"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Disimpan oleh <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Tidak akan menyambung secara automatik"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Tiada akses Internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Masalah pengesahan"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Semak kata laluan, kemudian cuba lagi"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Kegagalan konfigurasi IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Dilumpuhkan"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Titik akses penuh buat sementara waktu"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Keadaan rangkaian teruk sementara"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Isyarat lemah. Cuba bergerak lebih rapat ke penghala."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Rangkaian melebihi kapasiti. Cuba lagi nanti."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Tidak dapat menyambung. Cuba lagi nanti."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Rangkaian tidak serasi dengan peranti ini"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Diputuskan sambungan"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Disimpan"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Bermeter"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Tidak bermeter"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Disambungkan melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Tersedia melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Disambungkan secara automatik melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Disambungkan secara automatik melalui pembekal penilaian rangkaian"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Sambungan terhad"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Pelayan DNS peribadi tidak boleh diakses"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Disambungkan pada peranti. Tidak dapat menyediakan Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Kualiti rendah"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Tiada"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Tamat tempoh"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Ketik untuk daftar"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Ketik untuk membaharui langganan dan sambung"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Membuka <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Tidak dapat menyambung"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Menyelesaikan pendaftaran…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Tidak dapat menyelesaikan pendaftaran. Ketik untuk mencuba lagi."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Pendaftaran selesai. Menyambung…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Rangkaian ini menerima ID unik yang boleh digunakan untuk menjejaki lokasi peranti. "<annotation id="url">"Ketahui lebih lanjut"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Sangat Perlahan"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Perlahan"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Sederhana"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Laju"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Sangat Laju"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Tiada"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Tamat tempoh"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Ketik untuk daftar"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Ketik untuk membaharui langganan dan sambung"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Membuka <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Tidak dapat menyambung"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Menyelesaikan pendaftaran…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Tidak dapat menyelesaikan pendaftaran. Ketik untuk mencuba lagi."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Pendaftaran selesai. Menyambung…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Rangkaian ini menerima ID SIM yang boleh digunakan untuk menjejaki lokasi peranti. "<annotation id="url">"Ketahui lebih lanjut"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Sangat Perlahan"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Perlahan"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Sederhana"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Laju"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Sangat Laju"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi tidak akan disambungkan secara automatik buat masa ini"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-my/arrays.xml b/libs/WifiTrackerLib/res/values-my/arrays.xml
index 2443e14..b09dab4 100644
--- a/libs/WifiTrackerLib/res/values-my/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-my/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"စကင်ဖတ်နေသည်…"</item>
-    <item msgid="6222852518007967736">"ချိတ်ဆက်နေသည်…"</item>
-    <item msgid="1176401854208153464">"အထောက်အထားစိစစ်နေသည်…"</item>
-    <item msgid="1377026397901197257">"အိုင်ပီလိပ်စာ ရယူနေသည်…"</item>
-    <item msgid="7627139816052121509">"ချိတ်ဆက်ပြီးပြီ"</item>
-    <item msgid="1598801023719359130">"ဆိုင်းငံ့ထားသည်"</item>
-    <item msgid="9160765456671002324">"ချိတ်ဆက်မှု ဖြတ်နေသည်…"</item>
-    <item msgid="8013176736494493734">"ချိတ်ဆက်မထားပါ"</item>
-    <item msgid="4077393480368783785">"မအောင်မြင်ပါ"</item>
-    <item msgid="605372180740008604">"ပိတ်ထားသည်"</item>
-    <item msgid="5102306451432929048">"အားနည်းသည့် ချိတ်ဆက်မှုကို ယာယီရှောင်ရှားသည်"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"ရှာဖွေနေသည်…"</item>
+    <item msgid="9055468790485684083">"ချိတ်ဆက်နေသည်…"</item>
+    <item msgid="6099499723199990208">"အထောက်အထားစိစစ်နေသည်…"</item>
+    <item msgid="6794055951297347103">"IP လိပ်စာ ရယူနေသည်…"</item>
+    <item msgid="5450920562291300229">"ချိတ်ဆက်ထားသည်"</item>
+    <item msgid="6332116533879646145">"ဆိုင်းငံ့ထားသည်"</item>
+    <item msgid="294459081501073818">"ချိတ်ဆက်မှု ဖြတ်နေသည်…"</item>
+    <item msgid="1577368920272598676">"ချိတ်ဆက်မထားပါ"</item>
+    <item msgid="7655843177582495451">"မအောင်မြင်ပါ"</item>
+    <item msgid="8953752690917593623">"ပိတ်ထားသည်"</item>
+    <item msgid="4400457817750243671">"နှေးကွေးသောဆက်သွယ်မှုကို ယာယီရှောင်ထားသည်"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-my/strings.xml b/libs/WifiTrackerLib/res/values-my/strings.xml
index 81f99a5..d6e0873 100644
--- a/libs/WifiTrackerLib/res/values-my/strings.xml
+++ b/libs/WifiTrackerLib/res/values-my/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"အော်တိုချိတ်ဆက်မှု ပိတ်ထားသည်"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> က သိမ်းဆည်းခဲ့သည်"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"အလိုအလျောက် ချိတ်ဆက်မည်မဟုတ်ပါ"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"အင်တာနက် ချိတ်ဆက်မှု မရှိပါ"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"အထောက်အထားစိစစ်မှု ပြဿနာ"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"စကားဝှက်ကို စစ်ဆေးပြီး ထပ်လုပ်ကြည့်ပါ"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP စီစဉ်သတ်မှတ်ခြင်း မအောင်မြင်ပါ"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"ပိတ်ထားသည်"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"ကွန်ရက်ချိတ်ဆက်မှု ယာယီပြည့်နေသည်"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"ချိတ်ဆက်မထားပါ"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"သိမ်းဆည်းပြီး"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"အခမဲ့ မဟုတ်ပါ"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"အခမဲ့"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> မှတစ်ဆင့် ချိတ်ဆက်ထားသည်"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g>မှတစ်ဆင့် ရနိုင်သည်"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> မှတစ်ဆင့် အလိုအလျောက် ချိတ်ဆက်ထားသည်"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"ကွန်ရက်အဆင့်သတ်မှတ်ပေးသူ မှတစ်ဆင့် အလိုအလျောက် ချိတ်ဆက်ထားပါသည်"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"ချိတ်ဆက်မှု ကန့်သတ်ထားသည်"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"သီးသန့် ဒီအန်အက်စ် (DNS) ဆာဗာကို သုံး၍မရပါ။"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"အင်တာနက် မရှိပါ"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"အော်တိုချိတ်ဆက်မှု ပိတ်ထားသည်"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> က သိမ်းထားသည်"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"အလိုအလျောက် ချိတ်ဆက်မည်မဟုတ်ပါ"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"အင်တာနက် ချိတ်ဆက်မှု မရှိပါ"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"အထောက်အထားစိစစ်မှု ပြဿနာ"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"စကားဝှက်ကို စစ်ဆေးပြီး ထပ်စမ်းကြည့်ပါ"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP စီစဉ်သတ်မှတ်ခြင်း မအောင်မြင်ပါ"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"ပိတ်ထားသည်"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"ချိတ်ဆက်ရန်နေရာ ယာယီပြည့်နေသည်"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"ကွန်ရက်အခြေအနေများ ယာယီအားနည်းနေသည်"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"အချက်ပြမှု အားနည်းသည်။ ရောက်တာအနီးသို့ ရွှေ့ကြည့်ပါ။"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"ကွန်ရက်က လက်ခံနိုင်စွမ်းကို ကျော်လွန်နေသည်။ နောက်မှ ထပ်စမ်းကြည့်ပါ။"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"ချိတ်ဆက်၍ မရပါ။ နောက်မှ ထပ်စမ်းကြည့်ပါ။"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"ကွန်ရက်က ဤစက်ပစ္စည်းနှင့် တွဲဖက်မသုံးနိုင်ပါ"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"ချိတ်ဆက်မထားပါ"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"သိမ်းပြီးပါပြီ"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"အခမဲ့ မဟုတ်ပါ"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"အခမဲ့"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> မှတစ်ဆင့် ချိတ်ဆက်ထားသည်"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g>မှတစ်ဆင့် ရနိုင်သည်"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> မှတစ်ဆင့် အလိုအလျောက် ချိတ်ဆက်ထားသည်"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"ကွန်ရက်အဆင့်သတ်မှတ်ပေးသူ မှတစ်ဆင့် အလိုအလျောက် ချိတ်ဆက်ထားပါသည်"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"ချိတ်ဆက်မှု ကန့်သတ်ထားသည်"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"သီးသန့် ဒီအန်အက်စ် (DNS) ဆာဗာကို သုံး၍မရပါ"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"စက်ပစ္စည်းသို့ ချိတ်ဆက်ထားသည်။ အင်တာနက်ကို မပေးနိုင်ပါ။"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"အရည်အသွေး နိမ့်သည်"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"မရှိ"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"သက်တမ်းကုန်သွားပါပြီ"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"အကောင့်ဖွင့်ရန် တို့ပါ"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"စာရင်းသွင်းမှာယူမှုကို သက်တမ်းတိုးပြီး ချိတ်ဆက်ရန် တို့ပါ"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ကို ဖွင့်နေသည်"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"ချိတ်ဆက်၍ မရပါ"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"အကောင့်ဖွင့်ခြင်း အပြီးသတ်နေသည်…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"အကောင့်ဖွင့်ခြင်း အပြီးသတ်၍ မရပါ။ ထပ်စမ်းကြည့်ရန် တို့ပါ။"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"အကောင့်ဖွင့်ပြီးပါပြီ။ ချိတ်ဆက်နေသည်…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"ဤကွန်ရက်က စက်တည်နေရာကို ခြေရာခံရန် အသုံးပြုနိုင်သည့် သီးသန့် ID ကို ရရှိပါသည်။ "<annotation id="url">"ပိုမိုလေ့လာရန်"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"အလွန်နှေး"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"နှေး"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"အတော်အသင့်"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"မြန်"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"အလွန်မြန်"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"မရှိ"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"သက်တမ်းကုန်သွားပါပြီ"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"အကောင့်ဖွင့်ရန် တို့ပါ"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"စာရင်းသွင်းမှာယူမှုကို သက်တမ်းတိုးပြီး ချိတ်ဆက်ရန် တို့ပါ"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ကို ဖွင့်နေသည်"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"ချိတ်ဆက်၍ မရပါ"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"အကောင့်ဖွင့်ခြင်း အပြီးသတ်နေသည်…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"အကောင့်ဖွင့်ခြင်းကို အပြီးသတ်၍ မရပါ။ ထပ်စမ်းကြည့်ရန် တို့ပါ။"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"အကောင့်ဖွင့်ပြီးပါပြီ။ ချိတ်ဆက်နေသည်…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"ဤကွန်ရက်က စက်တည်နေရာကို ခြေရာခံရန် အသုံးပြုနိုင်သည့် SIM ID တစ်ခုကို ရရှိပါသည်။ "<annotation id="url">"ပိုမိုလေ့လာရန်"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"အလွန်နှေး"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"အနှေး"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"အလယ်အလတ်"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"အမြန်"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"အလွန်မြန်"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-nb/arrays.xml b/libs/WifiTrackerLib/res/values-nb/arrays.xml
index ce4845e..108db49 100644
--- a/libs/WifiTrackerLib/res/values-nb/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-nb/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Skanner …"</item>
-    <item msgid="6222852518007967736">"Kobler til …"</item>
-    <item msgid="1176401854208153464">"Autentiserer …"</item>
-    <item msgid="1377026397901197257">"Henter IP-adresse …"</item>
-    <item msgid="7627139816052121509">"Tilkoblet"</item>
-    <item msgid="1598801023719359130">"Sperret midlertidig"</item>
-    <item msgid="9160765456671002324">"Kobler fra …"</item>
-    <item msgid="8013176736494493734">"Frakoblet"</item>
-    <item msgid="4077393480368783785">"Mislykket"</item>
-    <item msgid="605372180740008604">"Blokkert"</item>
-    <item msgid="5102306451432929048">"Unngår dårlig tilkobling midlertidig"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Skanner …"</item>
+    <item msgid="9055468790485684083">"Kobler til …"</item>
+    <item msgid="6099499723199990208">"Autentiserer …"</item>
+    <item msgid="6794055951297347103">"Henter IP-adresse …"</item>
+    <item msgid="5450920562291300229">"Tilkoblet"</item>
+    <item msgid="6332116533879646145">"Sperret midlertidig"</item>
+    <item msgid="294459081501073818">"Kobler fra …"</item>
+    <item msgid="1577368920272598676">"Frakoblet"</item>
+    <item msgid="7655843177582495451">"Mislykket"</item>
+    <item msgid="8953752690917593623">"Blokkert"</item>
+    <item msgid="4400457817750243671">"Unngår dårlig tilkobling midlertidig"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-nb/strings.xml b/libs/WifiTrackerLib/res/values-nb/strings.xml
index a4d3f88..5d45a50 100644
--- a/libs/WifiTrackerLib/res/values-nb/strings.xml
+++ b/libs/WifiTrackerLib/res/values-nb/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Automatisk tilkobling er av"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Lagret av <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Kobler ikke til automatisk"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Ingen internettilgang"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Autentiseringsproblem"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Sjekk passordet og prøv igjen"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP-konfigurasjonsfeil"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Slått av"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Tilgangspunktet er midlertidig fullt"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Frakoblet"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Lagret"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Med datamåling"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Uten datamåling"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Tilkoblet via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Tilgjengelig via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatisk tilkoblet via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatisk tilkoblet via leverandør av nettverksvurdering"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Begrenset tilkobling"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Den private DNS-tjeneren kan ikke nås"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Ingen internettilkobling"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatisk tilkobling er av"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Lagret av <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Kobler ikke til automatisk"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Ingen internettilgang"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Autentiseringsproblem"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Sjekk passordet og prøv igjen"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP-konfigurasjonsfeil"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Slått av"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Tilgangspunktet er midlertidig fullt"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Dårlige nettverksforhold midlertidig"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Svakt signal. Prøv å flytte deg nærmere ruteren."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Nettverket er over kapasitet. Prøv igjen senere."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Kan ikke koble til. Prøv igjen senere."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Nettverket er ikke kompatibelt med denne enheten"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Frakoblet"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Lagret"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Med datamåling"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Uten datamåling"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Tilkoblet via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Tilgjengelig via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatisk tilkoblet via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatisk tilkoblet via leverandør av nettverksvurdering"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Begrenset tilkobling"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Den private DNS-tjeneren kan ikke nås"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Koblet til enheten. Kan ikke gi internettilgang."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Lav kvalitet"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Ingen"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Utløpt"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Trykk for å registrere deg"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Trykk for å fornye abonnementet og koble til"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Åpner <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Kunne ikke koble til"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Fullfører registreringen …"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Kunne ikke fullføre registreringen. Trykk for å prøve på nytt."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Registreringen er fullført. Kobler til …"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Dette nettverket mottar en unik ID som kan brukes til å spore enhetsposisjonen. "<annotation id="url">"Finn ut mer"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Veldig treg"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Treg"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Ok"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Middels"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Rask"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Veldig rask"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Ingen"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Utløpt"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Trykk for å registrere deg"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Trykk for å fornye abonnementet og koble til"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Åpner <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Kunne ikke koble til"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Fullfører registreringen …"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Kunne ikke fullføre registreringen. Trykk for å prøve på nytt."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registreringen er fullført. Kobler til …"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Dette nettverket mottar en SIM-ID som kan brukes til å spore enhetsposisjonen. "<annotation id="url">"Finn ut mer"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Veldig treg"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Treg"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Medium"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Rask"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Veldig rask"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi kobles ikke til automatisk inntil videre"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ne/arrays.xml b/libs/WifiTrackerLib/res/values-ne/arrays.xml
index 804a6de..0c45162 100644
--- a/libs/WifiTrackerLib/res/values-ne/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-ne/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"स्क्यान गर्दै…"</item>
-    <item msgid="6222852518007967736">"जोड्दै…"</item>
-    <item msgid="1176401854208153464">"प्रमाणीकरण गर्दै…"</item>
-    <item msgid="1377026397901197257">"IP एड्रेस हासिल गर्दै…"</item>
-    <item msgid="7627139816052121509">"कनेक्ट गरिएको छ"</item>
-    <item msgid="1598801023719359130">"निलम्बित"</item>
-    <item msgid="9160765456671002324">"विच्छेद गर्दै…"</item>
-    <item msgid="8013176736494493734">"विच्छेद गरियो"</item>
-    <item msgid="4077393480368783785">"असफल"</item>
-    <item msgid="605372180740008604">"रोकियो"</item>
-    <item msgid="5102306451432929048">"कमजोर जडानलाई अस्थायी रूपमा बेवास्ता गर्दै"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"स्क्यान गर्दै…"</item>
+    <item msgid="9055468790485684083">"कनेक्ट गर्दै…"</item>
+    <item msgid="6099499723199990208">"प्रमाणीकरण गर्दै…"</item>
+    <item msgid="6794055951297347103">"IP एड्रेस हासिल गर्दै…"</item>
+    <item msgid="5450920562291300229">"कनेक्ट गरिएको छ"</item>
+    <item msgid="6332116533879646145">"निलम्बन गरियो"</item>
+    <item msgid="294459081501073818">"डिस्कनेक्ट गर्दै…"</item>
+    <item msgid="1577368920272598676">"डिस्कनेक्ट गरियो"</item>
+    <item msgid="7655843177582495451">"Wi-Fi कनेक्ट गर्न सकिएन"</item>
+    <item msgid="8953752690917593623">"रोक लगाइयो"</item>
+    <item msgid="4400457817750243671">"केही समयका लागि कमजोर इन्टरनेटलाई बेवास्ता गर्दै"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ne/strings.xml b/libs/WifiTrackerLib/res/values-ne/strings.xml
index 2ba8060..b84bcab 100644
--- a/libs/WifiTrackerLib/res/values-ne/strings.xml
+++ b/libs/WifiTrackerLib/res/values-ne/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"स्वतः कनेक्ट गर्ने सुविधा अफ छ"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> द्वारा सेभ गरियो"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"स्वतः जोडिने छैन"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"इन्टरनेटमाथिको पहुँच छैन"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"प्रमाणीकरणसम्बन्धी समस्या"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"पासवर्ड जाँच गरेर फेरि प्रयास गर्नुहोस्"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP कन्फिगरेसन असफल"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"असक्षम पारियो"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"पहुँचसम्बन्धी स्थान अस्थायी रूपमा भरिएको छ"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"विच्छेद गरियो"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"सेभ गरियो"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"सशुल्क वाइफाइ"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"मिटर नगरिएको"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> मार्फत जडान गरिएको"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> मार्फत उपलब्ध"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> मार्फत स्वतः जोडियो"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"नेटवर्क मूल्याङ्कनकर्ता मार्फत स्वत: जडान गरिएको"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"सीमित जडान"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"निजी DNS सर्भरमाथि पहुँच प्राप्त गर्न सकिँदैन"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"इन्टरनेट छैन"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"स्वतः कनेक्ट गर्ने सुविधा अफ छ"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> ले सेभ गरेको"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"स्वतः कनेक्ट हुने छैन"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"इन्टरनेट छैन"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"प्रमाणीकरण हुन सकेन"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"पासवर्ड जाँच गरेर फेरि प्रयास गर्नुहोस्"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP कन्फिगर गर्न सकिएन"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"असक्षम पारिएको छ"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"पहुँच बिन्दु केही समयका लागि भरिएको छ"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"अहिले इन्टरनेट राम्ररी चलिरहेको छैन"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"सिग्नल कमजोर छ। राउटरको नजिकै गई हेर्नुहोस्।"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"नेटवर्कमा अत्यधिक लोड छ। पछि फेरि प्रयास गर्नुहोस्।"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"कनेक्ट गर्न सकिएन। पछि फेरि प्रयास गर्नुहोस्।"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"यो डिभाइससँग नेटवर्क कम्प्याटिबल छैन"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"डिस्कनेक्ट गरियो"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"सेभ गरियो"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"सीमा तोकिएको इन्टरनेट"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"सीमा हटाइएको छ"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> मार्फत कनेक्ट गरियो"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> मार्फत उपलब्ध छ"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> मार्फत स्वतः कनेक्ट भयो"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"नेटवर्कको मूल्याङ्कन गर्ने सेवा प्रदायकमार्फत स्वतः कनेक्ट भयो"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"सीमित कनेक्सन"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"निजी DNS सर्भरमाथि पहुँच राख्न सकिँदैन"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"डिभाइसमा कनेक्ट गरियो। इन्टरनेट उपलब्ध छैन।"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"न्यून गुणस्तर"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"कुनै पनि होइन"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"म्याद सकियो"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"साइन अप गर्न ट्याप गर्नुहोस्"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"ट्याप गरेर सदस्यता नवीकरण गर्नुहोस् र इन्टरनेटमा कनेक्ट गर्नुहोस्"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> खोल्दै"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"जोडिन सकिएन"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"साइन अप गर्ने कार्य सम्पन्न गर्दै…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"साइन अप गर्ने कार्य सम्पन्न गर्न सकिएन। फेरि प्रयास गर्न ट्याप गर्नुहोस्।"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"साइन अप गर्ने कार्य सम्पन्न भयो। जोड्दै…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"यो नेटवर्कले डिभाइसको स्थान पहिल्याउन प्रयोग गर्न सकिने एउटा अद्वित्तीय ID प्राप्त गर्छ। "<annotation id="url">"थप जान्नुहोस्"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"धेरै ढिलो"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"बिस्तारै"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ठिक छ"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"मध्यम"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"छिटो"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"धेरै छिटो"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"कुनै पनि होइन"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"म्याद सकियो"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"साइन अप गर्न ट्याप गर्नुहोस्"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"ट्याप गरेर सदस्यता नवीकरण गर्नुहोस् र इन्टरनेटमा कनेक्ट गर्नुहोस्"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> खोल्दै"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"कनेक्ट गर्न सकिएन"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"साइन अप गर्ने कार्य सम्पन्न गर्दै…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"साइन अप गर्ने कार्य सम्पन्न गर्न सकिएन। फेरि प्रयास गर्न ट्याप गर्नुहोस्।"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"साइन अप गर्ने कार्य सम्पन्न भयो। कनेक्ट गर्दै…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"यो नेटवर्कलाई डिभाइसको स्थान पहिल्याउन प्रयोग गर्न मिल्ने एउटा अद्वितीय SIM कार्ड ID उपलब्ध गराइन्छ। "<annotation id="url">"थप जान्नुहोस्"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"धेरै सुस्त"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"सुस्त"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ठिकै"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"मध्यम"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"छिटो"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"धेरै छिटो"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-nl/arrays.xml b/libs/WifiTrackerLib/res/values-nl/arrays.xml
index ec2f523..ce64c22 100644
--- a/libs/WifiTrackerLib/res/values-nl/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-nl/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Scannen…"</item>
-    <item msgid="6222852518007967736">"Verbinden…"</item>
-    <item msgid="1176401854208153464">"Verifiëren…"</item>
-    <item msgid="1377026397901197257">"IP-adres ophalen…"</item>
-    <item msgid="7627139816052121509">"Verbonden"</item>
-    <item msgid="1598801023719359130">"Opgeschort"</item>
-    <item msgid="9160765456671002324">"Verbinding verbreken…"</item>
-    <item msgid="8013176736494493734">"Verbinding verbroken"</item>
-    <item msgid="4077393480368783785">"Mislukt"</item>
-    <item msgid="605372180740008604">"Geblokkeerd"</item>
-    <item msgid="5102306451432929048">"Slechte verbinding tijdelijk vermijden"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Scannen…"</item>
+    <item msgid="9055468790485684083">"Verbinden…"</item>
+    <item msgid="6099499723199990208">"Verifiëren…"</item>
+    <item msgid="6794055951297347103">"IP-adres ophalen…"</item>
+    <item msgid="5450920562291300229">"Verbonden"</item>
+    <item msgid="6332116533879646145">"Opgeschort"</item>
+    <item msgid="294459081501073818">"Verbinding verbreken…"</item>
+    <item msgid="1577368920272598676">"Verbinding verbroken"</item>
+    <item msgid="7655843177582495451">"Mislukt"</item>
+    <item msgid="8953752690917593623">"Geblokkeerd"</item>
+    <item msgid="4400457817750243671">"Slechte verbinding tijdelijk vermijden"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-nl/strings.xml b/libs/WifiTrackerLib/res/values-nl/strings.xml
index 2b21094..f5a42e4 100644
--- a/libs/WifiTrackerLib/res/values-nl/strings.xml
+++ b/libs/WifiTrackerLib/res/values-nl/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"\'Automatisch verbinding maken\' staat uit"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Opgeslagen door \'<xliff:g id="NAME">%1$s</xliff:g>\'"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Er wordt niet automatisch verbinding gemaakt"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Geen internettoegang"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Verificatieprobleem"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Controleer het wachtwoord en probeer het opnieuw"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP-configuratie mislukt"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Uitgezet"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Toegangspunt tijdelijk vol"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Verbinding verbroken"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Opgeslagen"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Met datalimiet"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Gratis"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Verbonden via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Beschikbaar via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatisch verbonden via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatisch verbonden via provider van netwerkbeoordelingen"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Beperkte verbinding"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Geen toegang tot privé-DNS-server"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Geen internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatisch verbinding maken staat uit"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Opgeslagen door <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Er wordt niet automatisch verbinding gemaakt"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Geen internettoegang"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Verificatieprobleem"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Check het wachtwoord en probeer het opnieuw"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP-configuratie mislukt"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Uitgezet"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Toegangspunt tijdelijk vol"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Tijdelijk slechte netwerkomstandigheden"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Zwak signaal. Ga dichter naar de router toe."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Netwerk is overbelast. Probeer het later opnieuw."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Kan geen verbinding maken. Probeer het later opnieuw."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Netwerk niet geschikt voor dit apparaat"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Verbinding verbroken"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Opgeslagen"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Met datalimiet"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Gratis"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Verbonden via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Beschikbaar via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatisch verbonden via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatisch verbonden via provider van netwerkbeoordelingen"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Beperkte verbinding"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Geen toegang tot privé-DNS-server"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Verbonden met apparaat. Kan geen internet bieden."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Lage kwaliteit"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Geen"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Verlopen"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Tik om aan te melden"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Tik om het abonnement te verlengen en verbinding te maken"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> openen"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Kan geen verbinding maken"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Aanmelding voltooien…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Kan aanmelding niet voltooien. Tik om het opnieuw te proberen."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Aanmelding voltooid. Verbinden…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Dit netwerk ontvangt een unieke ID die kan worden gebruikt om de apparaatlocatie bij te houden. "<annotation id="url">"Meer informatie"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Zeer langzaam"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Langzaam"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Redelijk"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Gemiddeld"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Snel"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Zeer snel"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Geen"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Verlopen"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Tik om aan te melden"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Tik om het abonnement te verlengen en verbinding te maken"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> openen"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Kan geen verbinding maken"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Aanmelding voltooien…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Kan aanmelding niet voltooien. Tik om het opnieuw te proberen."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Aanmelding voltooid. Verbinden…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Dit netwerk ontvangt een simkaart-ID die kan worden gebruikt om de apparaatlocatie bij te houden. "<annotation id="url">"Meer informatie"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Zeer langzaam"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Langzaam"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Normaal"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Snel"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Zeer snel"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wifi maakt momenteel niet automatisch verbinding"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-or/arrays.xml b/libs/WifiTrackerLib/res/values-or/arrays.xml
index 7aecb3f..607552e 100644
--- a/libs/WifiTrackerLib/res/values-or/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-or/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"ସ୍କାନ୍ ହେଉଛି…"</item>
-    <item msgid="6222852518007967736">"ସଂଯୋଗ ହେଉଛି…"</item>
-    <item msgid="1176401854208153464">"ପ୍ରାମାଣିକରଣ କରାଯାଉଛି…"</item>
-    <item msgid="1377026397901197257">"IP ଠିକଣା ହାସଲ କରୁଛି…"</item>
-    <item msgid="7627139816052121509">"ସଂଯୋଗ ହୋଇଛି"</item>
-    <item msgid="1598801023719359130">"ସାମୟିକ ଭାବରେ ବନ୍ଦ କରାଯାଇଛି"</item>
-    <item msgid="9160765456671002324">"ବିଚ୍ଛିନ୍ନ କରାଯାଉଛି…"</item>
-    <item msgid="8013176736494493734">"ବିଚ୍ଛିନ୍ନ କରାଯାଇଛି"</item>
-    <item msgid="4077393480368783785">"ଅସଫଳ"</item>
-    <item msgid="605372180740008604">"ବ୍ଲକ୍ କରାଯାଇଛି"</item>
-    <item msgid="5102306451432929048">"ଦୁର୍ବଳ ସଂଯୋଗକୂ ସାମୟିକ ଭାବେ ଏଡ଼ାଉଛି"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"ସ୍କାନ୍ କରାଯାଉଛି…"</item>
+    <item msgid="9055468790485684083">"ସଂଯୋଗ ହେଉଛି…"</item>
+    <item msgid="6099499723199990208">"ପ୍ରାମାଣିକରଣ କରାଯାଉଛି…"</item>
+    <item msgid="6794055951297347103">"IP ଠିକଣା ପ୍ରାପ୍ତ କରୁଛି…"</item>
+    <item msgid="5450920562291300229">"ସଂଯୋଗ ହୋଇଛି"</item>
+    <item msgid="6332116533879646145">"ସାମୟିକ ଭାବରେ ବନ୍ଦ କରାଯାଇଛି"</item>
+    <item msgid="294459081501073818">"ବିଚ୍ଛିନ୍ନ କରାଯାଉଛି…"</item>
+    <item msgid="1577368920272598676">"ବିଚ୍ଛିନ୍ନ କରାଯାଇଛି"</item>
+    <item msgid="7655843177582495451">"ଅସଫଳ"</item>
+    <item msgid="8953752690917593623">"ବ୍ଲକ୍ କରାଯାଇଛି"</item>
+    <item msgid="4400457817750243671">"ଦୁର୍ବଳ ସଂଯୋଗକୁ ସାମୟିକ ଭାବେ ଏଡ଼ାଉଛି"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-or/strings.xml b/libs/WifiTrackerLib/res/values-or/strings.xml
index 3e681b5..ab2411b 100644
--- a/libs/WifiTrackerLib/res/values-or/strings.xml
+++ b/libs/WifiTrackerLib/res/values-or/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"ସ୍ୱତଃ-ସଂଯୋଗ ବନ୍ଦ ଅଛି"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> ଦ୍ୱାରା ସେଭ କରାଯାଇଛି"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"ସ୍ୱଚାଳିତ ଭାବେ ସଂଯୋଗ ହେବ ନାହିଁ"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"କୌଣସି ଇଣ୍ଟର୍ନେଟ୍ ଆକ୍ସେସ୍ ନାହିଁ"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"ପ୍ରମାଣିକତା ସମସ୍ୟା"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"ପାସ୍‌ୱର୍ଡ ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP କନଫିଗରେସନ ବିଫଳ ହୋଇଛି"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"ଅକ୍ଷମ ହୋଇଛି"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"ଆକ୍ସେସ୍ ପଏଣ୍ଟ ସାମୟିକ ଭାବେ ପୂର୍ଣ୍ଣ"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"ବିଛିନ୍ନ କରାଯାଇଛି"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"ସେଭ୍‌ ହୋଇଗଲା"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"ମପାଯାଉଥିବା"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"ମପାଯାଉନଥିବା"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> ଦ୍ବାରା ସଂଯୋଗ କରାଯାଇଛି"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> ମାଧ୍ୟମରେ ଉପଲବ୍ଧ ଅଛି"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> ମାଧ୍ୟମରେ ସ୍ୱଚାଳିତ ଭାବେ ସଂଯୋଗ କରାଯାଇଛି"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"ନେଟୱର୍କ ମୂଲ୍ୟାୟନ ପ୍ରଦାତାଙ୍କ ମାଧ୍ୟମରେ ଅଟୋମେଟିକାଲ୍ୟ ସଂଯୁକ୍ତ"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"ସୀମିତ ସଂଯୋଗ"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"ବ୍ୟକ୍ତିଗତ DNS ସର୍ଭର୍ ଆକ୍ସେସ୍ କରିହେବ ନାହିଁ"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"ଇଣ୍ଟର୍ନେଟ୍ ସଂଯୋଗ ନାହିଁ"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"ସ୍ୱତଃ-ସଂଯୋଗ ବନ୍ଦ ଅଛି"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> ଦ୍ୱାରା ସେଭ୍ କରାଯାଇଛି"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"ସ୍ୱଚାଳିତ ଭାବେ ସଂଯୋଗ ହେବ ନାହିଁ"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"କୌଣସି ଇଣ୍ଟର୍ନେଟ୍ ଆକ୍ସେସ୍ ନାହିଁ"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"ପ୍ରାମାଣିକତା ସମସ୍ୟା"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"ପାସୱାର୍ଡ ଯାଞ୍ଚ କରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP କନଫିଗରେସନ୍ ବିଫଳ ହୋଇଛି"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"ଅକ୍ଷମ କରାଯାଇଛି"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"ଆକ୍ସେସ୍ ପଏଣ୍ଟ ସାମୟିକ ଭାବେ ପୂର୍ଣ୍ଣ ହୋଇଛି"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"ଅସ୍ଥାୟୀ ଭାବରେ ଖରାପ ନେଟୱାର୍କ ସ୍ଥିତି"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"ସିଗନାଲ୍ ଦୁର୍ବଳ ଅଟେ। ରାଉଟର୍ ପାଖକୁ ଯାଇ ଦେଖନ୍ତୁ।"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"ନେଟୱାର୍କ କ୍ଷମତାର ସର୍ବାଧିକ ସୀମାରେ ପହଞ୍ଚିଯାଇଛି। ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"ସଂଯୋଗ କରାଯାଇପାରିବ ନାହିଁ। ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"ନେଟୱାର୍କ ଏହି ଡିଭାଇସ୍ ସହିତ ସୁସଙ୍ଗତ ନୁହେଁ"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"ବିଚ୍ଛିନ୍ନ କରାଯାଇଛି"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"ସେଭ୍ କରାଯାଇଛି"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"ମିଟର ହୋଇଥିବା"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"ମିଟର ହୋଇନଥିବା"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> ମାଧ୍ୟମରେ ସଂଯୋଗ କରାଯାଇଛି"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> ମାଧ୍ୟମରେ ଉପଲବ୍ଧ ଅଛି"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> ମାଧ୍ୟମରେ ସ୍ୱଚାଳିତ ଭାବେ ସଂଯୋଗ କରାଯାଇଛି"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"ନେଟୱାର୍କ ମୂଲ୍ୟାଙ୍କନ ପ୍ରଦାନକାରୀଙ୍କ ମାଧ୍ୟମରେ ସ୍ୱଚାଳିତ ଭାବେ ସଂଯୋଗ କରାଯାଇଛି"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"ସୀମିତ ସଂଯୋଗ"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"ବ୍ୟକ୍ତିଗତ DNS ସର୍ଭରକୁ ଆକ୍ସେସ୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"ଡିଭାଇସ୍ ସହ ସଂଯୋଗ କରାଯାଇଛି। ଇଣ୍ଟରନେଟ୍ ପ୍ରଦାନ କରାଯାଇପାରିବ ନାହିଁ।"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"ନିମ୍ନ ଗୁଣବତ୍ତା"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"କିଛି ନାହିଁ"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"ମିଆଦ ଶେଷ ହୋଇଯାଇଛି"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"ସାଇନ୍ ଅପ୍ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"ସଦସ୍ୟତାକୁ ନବୀକରଣ କରି ସଂଯୋଗ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ଖୋଲୁଛି"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"ସଂଯୋଗ କରିହେଲା ନାହିଁ"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"ସାଇନ୍ ଅପ୍ ଶେଷ ହେଉଛି…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"ସାଇନ୍ ଅପ୍ ଶେଷ ହୋଇପାରିଲା ନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରିବାକୁ ଟାପ୍ କରନ୍ତୁ।"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"ସାଇନ୍ ଅପ୍ ଶେଷ ହୋଇଛି। ସଂଯୋଗ କରୁଛି…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"ଏହି ନେଟୱାର୍କ ଏକ ସ୍ୱତନ୍ତ୍ର ID ପ୍ରାପ୍ତ କରେ ଯାହାକୁ ଡିଭାଇସ୍ ଲୋକେସନ୍ ଟ୍ରାକ୍ କରିବା ପାଇଁ ବ୍ୟବହାର କରାଯାଇପାରିବ। "<annotation id="url">"ଅଧିକ ଜାଣନ୍ତୁ"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"ବହୁତ ମନ୍ଥର"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"କମ୍‌ ବେଗ"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ଠିକ୍‌ ଅଛି"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"ମଧ୍ୟମ"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"ଦ୍ରୁତ"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"ଅତି ଦ୍ରୁତ"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"କିଛି ନାହିଁ"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"ମିଆଦ ଶେଷ ହୋଇଯାଇଛି"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"ସାଇନ୍ ଅପ୍ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"ସଦସ୍ୟତାକୁ ନବୀକରଣ କରି ସଂଯୋଗ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ଖୋଲୁଛି"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"ସଂଯୋଗ କରାଯାଇପାରିଲା ନାହିଁ"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"ସାଇନ୍-ଅପ୍ ସମ୍ପୂର୍ଣ୍ଣ କରାଯାଉଛି…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"ସାଇନ୍ ଅପ୍ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇପାରିଲା ନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରିବାକୁ ଟାପ୍ କରନ୍ତୁ।"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"ସାଇନ୍ ଅପ୍ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି। ସଂଯୋଗ କରୁଛି…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"ଏହି ନେଟୱାର୍କ ଏକ SIM ID ପ୍ରାପ୍ତ କରେ ଯାହା ଡିଭାଇସର ଲୋକେସନ୍ ଟ୍ରାକ୍ କରିବାରେ ବ୍ୟବହାର କରାଯାଇପାରିବ। "<annotation id="url">"ଅଧିକ ଜାଣନ୍ତୁ"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"ଅତି ଧୀର"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"ଧୀର"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ଠିକ୍ ଅଛି"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"ମଧ୍ୟମ"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"ଦ୍ରୁତ"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"ଅତି ଦ୍ରୁତ"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-pa/arrays.xml b/libs/WifiTrackerLib/res/values-pa/arrays.xml
index 71be4c2..0129060 100644
--- a/libs/WifiTrackerLib/res/values-pa/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-pa/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"ਸਕੈਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</item>
-    <item msgid="6222852518007967736">"ਕਨੈਕਟ ਹੋ ਰਿਹਾ ਹੈ…"</item>
-    <item msgid="1176401854208153464">"ਪ੍ਰਮਾਣਿਤ ਕਰ ਰਿਹਾ ਹੈ…"</item>
-    <item msgid="1377026397901197257">"IP ਪਤਾ ਪ੍ਰਾਪਤ ਕਰ ਰਿਹਾ ਹੈ…"</item>
-    <item msgid="7627139816052121509">"ਕਨੈਕਟ ਹੈ"</item>
-    <item msgid="1598801023719359130">"ਮੁਅੱਤਲ ਕੀਤਾ"</item>
-    <item msgid="9160765456671002324">"ਡਿਸਕਨੈਕਟ ਹੋ ਰਿਹਾ ਹੈ…"</item>
-    <item msgid="8013176736494493734">"ਡਿਸਕਨੈਕਟ ਕੀਤਾ"</item>
-    <item msgid="4077393480368783785">"ਅਸਫਲ"</item>
-    <item msgid="605372180740008604">"ਬਲਾਕ ਕੀਤਾ ਗਿਆ"</item>
-    <item msgid="5102306451432929048">"ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਕਮਜ਼ੋਰ ਕਨੈਕਸ਼ਨ ਤੋਂ ਬਚਣ ਲਈ"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"ਸਕੈਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</item>
+    <item msgid="9055468790485684083">"ਕਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</item>
+    <item msgid="6099499723199990208">"ਪ੍ਰਮਾਣਿਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</item>
+    <item msgid="6794055951297347103">"IP ਪਤਾ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</item>
+    <item msgid="5450920562291300229">"ਕਨੈਕਟ ਹੈ"</item>
+    <item msgid="6332116533879646145">"ਮੁਅੱਤਲ ਕੀਤਾ"</item>
+    <item msgid="294459081501073818">"ਡਿਸਕਨੈਕਟ ਹੋ ਰਿਹਾ ਹੈ…"</item>
+    <item msgid="1577368920272598676">"ਡਿਸਕਨੈਕਟ ਹੋਇਆ"</item>
+    <item msgid="7655843177582495451">"ਅਸਫਲ"</item>
+    <item msgid="8953752690917593623">"ਬਲਾਕ ਕੀਤਾ ਗਿਆ"</item>
+    <item msgid="4400457817750243671">"ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਖਰਾਬ ਕਨੈਕਸ਼ਨ ਤੋਂ ਬਚਣ ਲਈ"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-pa/strings.xml b/libs/WifiTrackerLib/res/values-pa/strings.xml
index c66a988..2346a44 100644
--- a/libs/WifiTrackerLib/res/values-pa/strings.xml
+++ b/libs/WifiTrackerLib/res/values-pa/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"ਸਵੈ-ਕਨੈਕਟ ਬੰਦ ਹੈ"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> ਵੱਲੋਂ ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"ਕੋਈ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ ਨਹੀਂ"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"ਪ੍ਰਮਾਣੀਕਰਨ ਸਮੱਸਿਆ"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"ਪਾਸਵਰਡ ਦੀ ਜਾਂਚ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP ਸੰਰੂਪਣ ਅਸਫਲਤਾ"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"ਅਯੋਗ ਬਣਾਇਆ"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"ਐਕਸੈੱਸ ਪੁਆਇੰਟ ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਸੰਪੂਰਨ ਰੁਝੇਂਵੇਂ ਵਿੱਚ ਹੈ"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"ਡਿਸਕਨੈਕਟ ਕੀਤਾ"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"ਰੱਖਿਅਤ ਕੀਤਾ"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"ਮੀਟਰਬੱਧ ਕੀਤਾ ਗਿਆ"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"ਗੈਰ-ਮੀਟਰਬੱਧ ਕੀਤਾ ਗਿਆ"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> ਰਾਹੀਂ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> ਰਾਹੀਂ ਉਪਲਬਧ"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> ਰਾਹੀਂ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"ਨੈੱਟਵਰਕ ਰੇਟਿੰਗ ਪ੍ਰਦਾਨਕ ਰਾਹੀਂ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਕਨੈਕਟ ਹੋਇਆ"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"ਸੀਮਤ ਕਨੈਕਸ਼ਨ"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"ਨਿੱਜੀ ਡੋਮੇਨ ਨਾਮ ਪ੍ਰਣਾਲੀ (DNS) ਸਰਵਰ \'ਤੇ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"ਇੰਟਰਨੈੱਟ ਨਹੀਂ"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"ਸਵੈ-ਕਨੈਕਟ ਬੰਦ ਹੈ"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> ਵੱਲੋਂ ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"ਕੋਈ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ ਨਹੀਂ"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"ਪ੍ਰਮਾਣੀਕਰਨ ਸਮੱਸਿਆ"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"ਪਾਸਵਰਡ ਦੀ ਜਾਂਚ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP ਸੰਰੂਪਣ ਅਸਫਲਤਾ"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"ਪਹੁੰਚ ਬਿੰਦੂ ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਸੰਪੂਰਨ ਰੁਝੇਂਵੇਂ ਵਿੱਚ ਹੈ"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"ਅਸਥਾਈ ਖਰਾਬ ਨੈੱਟਵਰਕ ਸਥਿਤੀ"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"ਕਮਜ਼ੋਰ ਸਿਗਨਲ। ਰਾਊਟਰ ਦੇ ਨਜ਼ਦੀਕ ਜਾ ਕੇ ਦੇਖੋ।"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"ਨੈੱਟਵਰਕ ਦੀ ਸਮਰੱਥਾ ਪੂਰੀ ਹੋ ਗਈ ਹੈ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"ਨੈੱਟਵਰਕ ਇਸ ਡੀਵਾਈਸ ਦੇ ਅਨੁਰੂਪ ਨਹੀਂ ਹੈ"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"ਡਿਸਕਨੈਕਟ ਹੋਇਆ"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"ਮੀਟਰਬੱਧ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"ਗੈਰ-ਮੀਟਰਬੱਧ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> ਰਾਹੀਂ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> ਰਾਹੀਂ ਉਪਲਬਧ"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> ਰਾਹੀਂ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"ਨੈੱਟਵਰਕ ਰੇਟਿੰਗ ਪ੍ਰਦਾਨਕ ਰਾਹੀਂ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਕਨੈਕਟ ਹੋਇਆ"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"ਸੀਮਤ ਕਨੈਕਸ਼ਨ"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"ਨਿੱਜੀ DNS ਸਰਵਰ \'ਤੇ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"ਡੀਵਾਈਸ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ। ਇੰਟਰਨੈੱਟ ਮੁਹੱਈਆ ਨਹੀਂ ਹੋ ਸਕਦਾ।"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"ਠੀਕ-ਠਾਕ ਕਨੈਕਸ਼ਨ"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"ਕੋਈ ਨਹੀਂ"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"ਮਿਆਦ ਮੁੱਕ ਗਈ"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"ਸਾਈਨ-ਅੱਪ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"ਗਾਹਕੀ ਦੇ ਨਵੀਨੀਕਰਨ ਲਈ ਅਤੇ ਕਨੈਕਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ਨੂੰ ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"ਸਾਈਨ-ਅੱਪ ਮੁਕੰਮਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"ਸਾਈਨ-ਅੱਪ ਮੁਕੰਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"ਸਾਈਨ-ਅੱਪ ਮੁਕੰਮਲ ਹੋਇਆ। ਕਨੈਕਟ ਹੋ ਰਿਹਾ ਹੈ…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"ਇਹ ਨੈੱਟਵਰਕ ਇੱਕ ਵਿਲੱਖਣ ਆਈਡੀ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਜਿਸਨੂੰ ਡੀਵਾਈਸ ਦੇ ਟਿਕਾਣੇ ਨੂੰ ਟਰੈਕ ਕਰਨ ਲਈ ਵਰਤਿਆ ਦਾ ਸਕਦਾ ਹੈ। "<annotation id="url">"ਹੋਰ ਜਾਣੋ"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"ਬਹੁਤ ਹੌਲੀ"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"ਹੌਲੀ"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ਠੀਕ ਹੈ"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"ਔਸਤ"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"ਤੇਜ਼"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"ਬਹੁਤ ਤੇਜ਼"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"ਕੋਈ ਨਹੀਂ"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"ਮਿਆਦ ਮੁੱਕ ਗਈ"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"ਸਾਈਨ-ਅੱਪ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"ਗਾਹਕੀ ਦੇ ਨਵੀਨੀਕਰਨ ਅਤੇ ਕਨੈਕਟ ਹੋਣ ਲਈ ਟੈਪ ਕਰੋ"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"ਸਾਈਨ-ਅੱਪ ਮੁਕੰਮਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"ਸਾਈਨ-ਅੱਪ ਮੁਕੰਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"ਸਾਈਨ-ਅੱਪ ਮੁਕੰਮਲ ਹੋਇਆ। ਕਨੈਕਟ ਹੋ ਰਿਹਾ ਹੈ…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"ਇਹ ਨੈੱਟਵਰਕ ਇੱਕ ਸਿਮ ਆਈਡੀ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਜਿਸਨੂੰ ਡੀਵਾਈਸ ਦੇ ਟਿਕਾਣੇ ਨੂੰ ਟਰੈਕ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। "<annotation id="url">"ਹੋਰ ਜਾਣੋ"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"ਬਹੁਤ ਹੌਲੀ"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"ਹੌਲੀ"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ਠੀਕ ਹੈ"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"ਮੱਧਮ"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"ਤੇਜ਼"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"ਬਹੁਤ ਤੇਜ਼"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-pl/arrays.xml b/libs/WifiTrackerLib/res/values-pl/arrays.xml
index 74edefe..bdb1b51 100644
--- a/libs/WifiTrackerLib/res/values-pl/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-pl/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Skanuję…"</item>
-    <item msgid="6222852518007967736">"Łączę…"</item>
-    <item msgid="1176401854208153464">"Uwierzytelniam…"</item>
-    <item msgid="1377026397901197257">"Uzyskuję adres IP…"</item>
-    <item msgid="7627139816052121509">"Połączono"</item>
-    <item msgid="1598801023719359130">"Zawieszono"</item>
-    <item msgid="9160765456671002324">"Rozłączam…"</item>
-    <item msgid="8013176736494493734">"Odłączono"</item>
-    <item msgid="4077393480368783785">"Niepowodzenie"</item>
-    <item msgid="605372180740008604">"Zablokowano"</item>
-    <item msgid="5102306451432929048">"Tymczasowo, by uniknąć połączenia o niskiej jakości"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Skanuję…"</item>
+    <item msgid="9055468790485684083">"Łączę…"</item>
+    <item msgid="6099499723199990208">"Uwierzytelniam…"</item>
+    <item msgid="6794055951297347103">"Uzyskuję adres IP…"</item>
+    <item msgid="5450920562291300229">"Połączono"</item>
+    <item msgid="6332116533879646145">"Zawieszono"</item>
+    <item msgid="294459081501073818">"Rozłączam…"</item>
+    <item msgid="1577368920272598676">"Odłączono"</item>
+    <item msgid="7655843177582495451">"Niepowodzenie"</item>
+    <item msgid="8953752690917593623">"Zablokowano"</item>
+    <item msgid="4400457817750243671">"Tymczasowe unikanie połączenia o niskiej jakości"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-pl/strings.xml b/libs/WifiTrackerLib/res/values-pl/strings.xml
index b3287e0..9bf50c6 100644
--- a/libs/WifiTrackerLib/res/values-pl/strings.xml
+++ b/libs/WifiTrackerLib/res/values-pl/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Łączenie automatyczne wyłączone"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Zapisane przez: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Nie można połączyć automatycznie"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Brak dostępu do internetu"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problem z uwierzytelnianiem"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Sprawdź hasło i spróbuj ponownie"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Błąd konfiguracji IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Wyłączona"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Punkt dostępu jest tymczasowo zajęty"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Rozłączono"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Zapisana"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Użycie danych jest mierzone"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Użycie danych nie jest mierzone"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Połączenie przez: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Dostęp przez aplikację <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatyczne połączenie przez <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatycznie połączono przez dostawcę ocen jakości sieci"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Ograniczone połączenie"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Brak dostępu do prywatnego serwera DNS"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Brak internetu"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Łączenie automatyczne wyłączone"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Zapisane przez aplikację <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Nie można połączyć automatycznie"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Brak dostępu do internetu"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problem z uwierzytelnianiem"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Sprawdź hasło i spróbuj ponownie"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Błąd konfiguracji IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Wyłączono"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Punkt dostępu jest tymczasowo zajęty"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Tymczasowo niska jakość połączenia sieciowego"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Słaby sygnał. Przysuń się do routera."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Sieć jest przeciążona. Spróbuj ponownie później."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Nie udało się połączyć. Spróbuj ponownie później."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Sieć niezgodna z tym urządzeniem"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Odłączono"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Zapisano"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Użycie danych jest mierzone"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Bez pomiaru"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Połączenie przez aplikację <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Dostęp przez aplikację <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatyczne połączenie przez aplikację <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatyczne połączenie przez aplikację dostawcy ocen jakości sieci"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Ograniczone połączenie"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Brak dostępu do prywatnego serwera DNS"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Podłączono do urządzenia. Nie można zapewnić dostępu do internetu."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Niska jakość"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Brak"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Ważność wygasła"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Kliknij, by się zarejestrować"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Kliknij, by odnowić subskrypcję i nawiązać połączenie"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Otwieram: <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Nie udało się połączyć"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Kończę rejestrować…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Nie udało się dokończyć rejestracji. Kliknij, by spróbować ponownie."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Rejestracja zakończona. Łączę…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Ta sieć otrzymuje unikalny identyfikator, który można wykorzystać do śledzenia lokalizacji urządzenia. "<annotation id="url">"Więcej informacji"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Bardzo wolna"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Wolna"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Średnia"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Szybka"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Bardzo szybka"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Brak"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Ważność wygasła"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Kliknij, by się zarejestrować"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Kliknij, by odnowić subskrypcję i nawiązać połączenie"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Otwieram: <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Nie udało się połączyć"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Kończę rejestrować…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Nie udało się dokończyć rejestracji. Kliknij, by spróbować ponownie."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Rejestracja zakończona. Łączę…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Ta sieć otrzymuje identyfikator SIM, który można wykorzystać do śledzenia lokalizacji urządzenia. "<annotation id="url">"Więcej informacji"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Bardzo wolna"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Wolna"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Średnia"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Szybka"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Bardzo szybka"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-pt-rBR/arrays.xml b/libs/WifiTrackerLib/res/values-pt-rBR/arrays.xml
index 5330614..e55c77a 100644
--- a/libs/WifiTrackerLib/res/values-pt-rBR/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-pt-rBR/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Buscando…"</item>
-    <item msgid="6222852518007967736">"Conectando…"</item>
-    <item msgid="1176401854208153464">"Autenticando…"</item>
-    <item msgid="1377026397901197257">"Recebendo endereço IP…"</item>
-    <item msgid="7627139816052121509">"Conectada"</item>
-    <item msgid="1598801023719359130">"Suspensa"</item>
-    <item msgid="9160765456671002324">"Desconectando…"</item>
-    <item msgid="8013176736494493734">"Desconectada"</item>
-    <item msgid="4077393480368783785">"Falha"</item>
-    <item msgid="605372180740008604">"Bloqueada"</item>
-    <item msgid="5102306451432929048">"Evitando temporariamente uma conexão ruim"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Buscando…"</item>
+    <item msgid="9055468790485684083">"Conectando…"</item>
+    <item msgid="6099499723199990208">"Autenticando…"</item>
+    <item msgid="6794055951297347103">"Recebendo endereço IP…"</item>
+    <item msgid="5450920562291300229">"Conectada"</item>
+    <item msgid="6332116533879646145">"Suspenso"</item>
+    <item msgid="294459081501073818">"Desconectando…"</item>
+    <item msgid="1577368920272598676">"Desconectado"</item>
+    <item msgid="7655843177582495451">"Falha"</item>
+    <item msgid="8953752690917593623">"Bloqueado"</item>
+    <item msgid="4400457817750243671">"Evitando temporariamente uma conexão ruim"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-pt-rBR/strings.xml b/libs/WifiTrackerLib/res/values-pt-rBR/strings.xml
index 408cc66..b4f7e3a 100644
--- a/libs/WifiTrackerLib/res/values-pt-rBR/strings.xml
+++ b/libs/WifiTrackerLib/res/values-pt-rBR/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"A conexão automática está desativada"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Salva por <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Não se conectará automaticamente"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Sem acesso à Internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problema de autenticação"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Verifique a senha e tente novamente"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Falha na configuração de IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Desativado"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Ponto de acesso temporariamente cheio"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Desconectada"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Salva"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Limitada"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Ilimitada"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Conectado via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Disponível via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Conectada automaticamente via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Conectado automaticamente via provedor de avaliação de rede"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Conexão limitada"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Não é possível acessar o servidor DNS privado"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Sem Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"A conexão automática está desativada"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Salva por <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Não se conectará automaticamente"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Sem acesso à Internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problema de autenticação"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Verifique a senha e tente novamente"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Falha na configuração de IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Desativada"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Ponto de acesso temporariamente cheio"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Conexão de rede temporariamente fraca"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"O sinal está fraco. Tente se aproximar do roteador."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"A rede está sobrecarregada. Tente novamente mais tarde."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Não foi possível conectar. Tente novamente mais tarde."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"A rede não é compatível com este dispositivo"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Desconectada"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Salva"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Limitada"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Ilimitada"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Conectado via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Disponível via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Conectado automaticamente via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Conectado automaticamente via provedor de avaliação de rede"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Conexão limitada"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Não é possível acessar o servidor DNS particular"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Conectada ao dispositivo. Sem acesso à Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Conexão lenta"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Nenhuma"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Expirada"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Toque para se inscrever"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Toque para renovar a assinatura e se conectar"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Abrindo <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Não foi possível conectar"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Concluindo inscrição…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Não foi possível concluir a inscrição. Toque para tentar novamente."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Inscrição concluída. Conectando…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Esta rede recebe um código exclusivo que pode ser usado para rastrear a localização do dispositivo. "<annotation id="url">"Saiba mais"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Muito lenta"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lenta"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Ok"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Média"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Rápida"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Muito rápida"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Nenhuma"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Expirado"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Toque para se inscrever"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Toque para renovar a assinatura e se conectar"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Abrindo <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Não foi possível conectar"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Concluindo inscrição…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Não foi possível concluir a inscrição. Toque para tentar novamente."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Inscrição concluída. Conectando…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Essa rede recebe um ID de chip que pode ser usado para monitorar o local do dispositivo. "<annotation id="url">"Saiba mais"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Muito lenta"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lenta"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Ok"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Média"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Rápida"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Muito rápida"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"A conexão automática ao Wi-Fi não está disponível no momento"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-pt-rPT/arrays.xml b/libs/WifiTrackerLib/res/values-pt-rPT/arrays.xml
index b15b6a5..822b091 100644
--- a/libs/WifiTrackerLib/res/values-pt-rPT/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-pt-rPT/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"A procurar…"</item>
-    <item msgid="6222852518007967736">"A ligar…"</item>
-    <item msgid="1176401854208153464">"A autenticar…"</item>
-    <item msgid="1377026397901197257">"A obter endereço IP…"</item>
-    <item msgid="7627139816052121509">"Ligado"</item>
-    <item msgid="1598801023719359130">"Suspenso"</item>
-    <item msgid="9160765456671002324">"A desligar…"</item>
-    <item msgid="8013176736494493734">"Desligado"</item>
-    <item msgid="4077393480368783785">"Sem êxito"</item>
-    <item msgid="605372180740008604">"Bloqueado"</item>
-    <item msgid="5102306451432929048">"A evitar temporariamente uma ligação fraca…"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"A procurar…"</item>
+    <item msgid="9055468790485684083">"A ligar…"</item>
+    <item msgid="6099499723199990208">"A autenticar…"</item>
+    <item msgid="6794055951297347103">"A obter endereço IP…"</item>
+    <item msgid="5450920562291300229">"Ligado"</item>
+    <item msgid="6332116533879646145">"Suspenso"</item>
+    <item msgid="294459081501073818">"A desligar…"</item>
+    <item msgid="1577368920272598676">"Desligado"</item>
+    <item msgid="7655843177582495451">"Sem êxito"</item>
+    <item msgid="8953752690917593623">"Bloqueado"</item>
+    <item msgid="4400457817750243671">"A evitar temporariamente uma ligação fraca…"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-pt-rPT/strings.xml b/libs/WifiTrackerLib/res/values-pt-rPT/strings.xml
index 10f3dfb..80aeb19 100644
--- a/libs/WifiTrackerLib/res/values-pt-rPT/strings.xml
+++ b/libs/WifiTrackerLib/res/values-pt-rPT/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"A ligação automática está desativada"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Guardada por <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Não é efetuada uma ligação automaticamente."</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Sem acesso à Internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problema de autenticação"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Verifique a palavra-passe e tente novamente"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Falha de configuração de IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Desativado"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Ponto de acesso temporariamente cheio"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Desligada"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Guardada"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Acesso limitado"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Acesso ilimitado"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Ligado via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Disponível através da app <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Ligado automaticamente através de <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Ligado automaticamente através do fornecedor de classificação de rede"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Ligação limitada"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Não é possível aceder ao servidor DNS."</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Sem Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"A ligação automática está desativada"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Guardada por <xliff:g id="NAME">%1$s</xliff:g>."</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Não é efetuada uma ligação automaticamente."</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Sem acesso à Internet."</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problema de autenticação"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Verifique a palavra-passe e tente novamente."</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Falha de configuração de IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Desativada"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Ponto de acesso temporariamente cheio."</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Condições de rede fraca temporárias"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Sinal fraco. Experimente aproximar-se do router."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"A capacidade da rede foi excedida. Tente novamente mais tarde."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Não é possível ligar. Tente novamente mais tarde."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"A rede não é compatível com este dispositivo"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Desligada"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Guardada."</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Com acesso limitado"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Com acesso ilimitado"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Ligado através de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Disponível através de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Ligado automaticamente através de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Ligado automaticamente através do fornecedor de classificação de rede"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Ligação limitada."</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Não é possível aceder ao servidor DNS privado."</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Ligado ao dispositivo. Não é possível disponibilizar Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Baixa qualidade"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Nenhuma"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Expirada"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Toque para se inscrever."</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Toque para renovar a subscrição e estabelecer ligação."</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"A abrir <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>…"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Não foi possível estabelecer ligação."</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"A concluir a inscrição…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Não foi possível concluir a inscrição. Toque para tentar novamente."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Inscrição concluída. A estabelecer ligação…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Esta rede recebe um ID exclusivo que pode ser utilizado para monitorizar a localização do dispositivo. "<annotation id="url">"Saber mais"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Muito lenta"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lenta"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Média"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Rápida"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Muito rápida"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Nenhuma"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Expirado."</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Toque para se inscrever."</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Toque para renovar a subscrição e estabelecer ligação."</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"A abrir <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>…"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Não foi possível estabelecer ligação"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"A concluir a inscrição…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Não foi possível concluir a inscrição. Toque para tentar novamente."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Inscrição concluída. A estabelecer ligação…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Esta rede recebe um ID do SIM que pode ser utilizado para monitorizar a localização do dispositivo. "<annotation id="url">"Saiba mais"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Muito lenta"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lenta"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Razoável"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Média"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Rápida"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Muito rápida"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Por agora, o Wi-Fi não irá estabelecer ligação automaticamente"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-pt/arrays.xml b/libs/WifiTrackerLib/res/values-pt/arrays.xml
index 5330614..e55c77a 100644
--- a/libs/WifiTrackerLib/res/values-pt/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-pt/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Buscando…"</item>
-    <item msgid="6222852518007967736">"Conectando…"</item>
-    <item msgid="1176401854208153464">"Autenticando…"</item>
-    <item msgid="1377026397901197257">"Recebendo endereço IP…"</item>
-    <item msgid="7627139816052121509">"Conectada"</item>
-    <item msgid="1598801023719359130">"Suspensa"</item>
-    <item msgid="9160765456671002324">"Desconectando…"</item>
-    <item msgid="8013176736494493734">"Desconectada"</item>
-    <item msgid="4077393480368783785">"Falha"</item>
-    <item msgid="605372180740008604">"Bloqueada"</item>
-    <item msgid="5102306451432929048">"Evitando temporariamente uma conexão ruim"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Buscando…"</item>
+    <item msgid="9055468790485684083">"Conectando…"</item>
+    <item msgid="6099499723199990208">"Autenticando…"</item>
+    <item msgid="6794055951297347103">"Recebendo endereço IP…"</item>
+    <item msgid="5450920562291300229">"Conectada"</item>
+    <item msgid="6332116533879646145">"Suspenso"</item>
+    <item msgid="294459081501073818">"Desconectando…"</item>
+    <item msgid="1577368920272598676">"Desconectado"</item>
+    <item msgid="7655843177582495451">"Falha"</item>
+    <item msgid="8953752690917593623">"Bloqueado"</item>
+    <item msgid="4400457817750243671">"Evitando temporariamente uma conexão ruim"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-pt/strings.xml b/libs/WifiTrackerLib/res/values-pt/strings.xml
index 408cc66..b4f7e3a 100644
--- a/libs/WifiTrackerLib/res/values-pt/strings.xml
+++ b/libs/WifiTrackerLib/res/values-pt/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"A conexão automática está desativada"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Salva por <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Não se conectará automaticamente"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Sem acesso à Internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problema de autenticação"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Verifique a senha e tente novamente"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Falha na configuração de IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Desativado"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Ponto de acesso temporariamente cheio"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Desconectada"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Salva"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Limitada"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Ilimitada"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Conectado via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Disponível via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Conectada automaticamente via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Conectado automaticamente via provedor de avaliação de rede"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Conexão limitada"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Não é possível acessar o servidor DNS privado"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Sem Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"A conexão automática está desativada"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Salva por <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Não se conectará automaticamente"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Sem acesso à Internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problema de autenticação"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Verifique a senha e tente novamente"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Falha na configuração de IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Desativada"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Ponto de acesso temporariamente cheio"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Conexão de rede temporariamente fraca"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"O sinal está fraco. Tente se aproximar do roteador."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"A rede está sobrecarregada. Tente novamente mais tarde."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Não foi possível conectar. Tente novamente mais tarde."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"A rede não é compatível com este dispositivo"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Desconectada"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Salva"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Limitada"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Ilimitada"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Conectado via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Disponível via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Conectado automaticamente via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Conectado automaticamente via provedor de avaliação de rede"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Conexão limitada"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Não é possível acessar o servidor DNS particular"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Conectada ao dispositivo. Sem acesso à Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Conexão lenta"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Nenhuma"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Expirada"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Toque para se inscrever"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Toque para renovar a assinatura e se conectar"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Abrindo <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Não foi possível conectar"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Concluindo inscrição…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Não foi possível concluir a inscrição. Toque para tentar novamente."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Inscrição concluída. Conectando…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Esta rede recebe um código exclusivo que pode ser usado para rastrear a localização do dispositivo. "<annotation id="url">"Saiba mais"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Muito lenta"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lenta"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Ok"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Média"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Rápida"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Muito rápida"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Nenhuma"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Expirado"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Toque para se inscrever"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Toque para renovar a assinatura e se conectar"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Abrindo <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Não foi possível conectar"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Concluindo inscrição…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Não foi possível concluir a inscrição. Toque para tentar novamente."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Inscrição concluída. Conectando…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Essa rede recebe um ID de chip que pode ser usado para monitorar o local do dispositivo. "<annotation id="url">"Saiba mais"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Muito lenta"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lenta"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Ok"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Média"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Rápida"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Muito rápida"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"A conexão automática ao Wi-Fi não está disponível no momento"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ro/arrays.xml b/libs/WifiTrackerLib/res/values-ro/arrays.xml
index 5512f8b..83730ec 100644
--- a/libs/WifiTrackerLib/res/values-ro/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-ro/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Se scanează…"</item>
-    <item msgid="6222852518007967736">"Se conectează…"</item>
-    <item msgid="1176401854208153464">"Se autentifică…"</item>
-    <item msgid="1377026397901197257">"Se obține adresa IP…"</item>
-    <item msgid="7627139816052121509">"Conectată"</item>
-    <item msgid="1598801023719359130">"Suspendată"</item>
-    <item msgid="9160765456671002324">"Se deconectează…"</item>
-    <item msgid="8013176736494493734">"Deconectată"</item>
-    <item msgid="4077393480368783785">"Nereușită"</item>
-    <item msgid="605372180740008604">"Blocată"</item>
-    <item msgid="5102306451432929048">"Evitarea temporară a conexiunii slabe"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Se scanează…"</item>
+    <item msgid="9055468790485684083">"Se conectează…"</item>
+    <item msgid="6099499723199990208">"Se autentifică…"</item>
+    <item msgid="6794055951297347103">"Se obține adresa IP…"</item>
+    <item msgid="5450920562291300229">"Conectată"</item>
+    <item msgid="6332116533879646145">"Suspendată"</item>
+    <item msgid="294459081501073818">"Se deconectează…"</item>
+    <item msgid="1577368920272598676">"Deconectată"</item>
+    <item msgid="7655843177582495451">"Nereușită"</item>
+    <item msgid="8953752690917593623">"Blocată"</item>
+    <item msgid="4400457817750243671">"Se evită temporar conexiunea slabă"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ro/strings.xml b/libs/WifiTrackerLib/res/values-ro/strings.xml
index 47b137f..0ae9a3a 100644
--- a/libs/WifiTrackerLib/res/values-ro/strings.xml
+++ b/libs/WifiTrackerLib/res/values-ro/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Conectarea automată este dezactivată"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Salvată de <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Nu se va conecta automat"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Nu există acces la internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problemă la autentificare"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Verificați parola și încercați din nou"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Eroare de configurare a IP-ului"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Dezactivată"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Punctul de acces este temporar plin"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Deconectat"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Salvată"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Contorizată"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Necontorizată"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Conectat prin <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Disponibil prin <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Conectată automat prin <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Conectată automat prin furnizor de evaluări ale rețelei"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Conexiune limitată"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Serverul DNS privat nu poate fi accesat"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Fără conexiune la internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Conectarea automată este dezactivată"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Salvate de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Nu se va conecta automat"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Nu există acces la internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problemă la autentificare"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Verificați parola și încercați din nou"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Eroare de configurare a IP-ului"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Dezactivată"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Punctul de acces este temporar plin"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Momentan, conexiunea la rețea este slabă"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Semnal slab. Apropiați-vă de router."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Capacitatea rețelei a fost depășită. Încercați din nou mai târziu."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Nu se poate conecta. Încercați din nou mai târziu."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Rețeaua nu este compatibilă cu dispozitivul"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Deconectată"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Salvată"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Contorizată"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Necontorizată"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Conectată prin <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Disponibilă prin <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Conectată automat prin <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Conectată automat prin furnizor de evaluări ale rețelei"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Conexiune limitată"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Serverul DNS privat nu poate fi accesat"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"S-a conectat la dispozitiv. Nu se poate stabili o conexiune la internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Calitate slabă"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Niciuna"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Expirat"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Atingeți pentru a vă înscrie"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Atingeți pentru a reînnoi abonamentul și a vă conecta"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Se deschide <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Nu s-a putut conecta"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Se finalizează înscrierea…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Nu s-a putut finaliza înscrierea. Atingeți pentru a încerca din nou."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Înscrierea a fost finalizată. Se conectează…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Această rețea primește un ID unic care se poate folosi pentru a urmări locația dispozitivului. "<annotation id="url">"Aflați mai multe"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Foarte lentă"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Lentă"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Bine"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Medie"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Rapidă"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Foarte rapidă"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Fără"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Expirată"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Atingeți pentru a vă înscrie"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Atingeți pentru a reînnoi abonamentul și a vă conecta"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Se deschide <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Nu s-a putut conecta"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Se finalizează înscrierea…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Nu s-a putut finaliza înscrierea. Atingeți pentru a încerca din nou."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Înscrierea a fost finalizată. Se conectează…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Această rețea primește un cod SIM care se poate folosi pentru a urmări locația dispozitivului. "<annotation id="url">"Aflați mai multe"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Foarte lentă"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Lentă"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Medie"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Rapidă"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Foarte rapidă"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ru/arrays.xml b/libs/WifiTrackerLib/res/values-ru/arrays.xml
index dd93fbf..783681b 100644
--- a/libs/WifiTrackerLib/res/values-ru/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-ru/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Поиск…"</item>
-    <item msgid="6222852518007967736">"Подключение…"</item>
-    <item msgid="1176401854208153464">"Аутентификация…"</item>
-    <item msgid="1377026397901197257">"Получение IP-адреса…"</item>
-    <item msgid="7627139816052121509">"Подключено"</item>
-    <item msgid="1598801023719359130">"Приостановлено"</item>
-    <item msgid="9160765456671002324">"Отключение…"</item>
-    <item msgid="8013176736494493734">"Нет подключения"</item>
-    <item msgid="4077393480368783785">"Сбой"</item>
-    <item msgid="605372180740008604">"Заблокировано"</item>
-    <item msgid="5102306451432929048">"Отключено из-за плохого соединения"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Поиск…"</item>
+    <item msgid="9055468790485684083">"Подключение…"</item>
+    <item msgid="6099499723199990208">"Аутентификация…"</item>
+    <item msgid="6794055951297347103">"Получение IP-адреса…"</item>
+    <item msgid="5450920562291300229">"Подключено"</item>
+    <item msgid="6332116533879646145">"Приостановлено"</item>
+    <item msgid="294459081501073818">"Отключение…"</item>
+    <item msgid="1577368920272598676">"Не подключено"</item>
+    <item msgid="7655843177582495451">"Сбой"</item>
+    <item msgid="8953752690917593623">"Заблокировано"</item>
+    <item msgid="4400457817750243671">"Временно отключено из-за плохого соединения"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ru/strings.xml b/libs/WifiTrackerLib/res/values-ru/strings.xml
index 85b7bae..a021366 100644
--- a/libs/WifiTrackerLib/res/values-ru/strings.xml
+++ b/libs/WifiTrackerLib/res/values-ru/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Автоподключение выключено"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Сохранено: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Подключение не будет выполняться автоматически"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Без доступа к Интернету"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Ошибка аутентификации"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Возможно, вы указали неверный пароль. Повторите попытку."</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Ошибка конфигурации IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Отключено"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"К точке доступа подключено слишком много устройств"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Не подключено"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Сохранено"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Сеть с тарификацией трафика"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Сеть без тарификации трафика"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Подключено через приложение \"<xliff:g id="NAME">%1$s</xliff:g>\"."</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Доступно через приложение \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Автоматически подключено через <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Автоматически подключено через автора рейтинга сетей"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Подключение к сети ограничено."</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Доступа к частному DNS-серверу нет."</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Нет подключения к Интернету"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Автоподключение отключено"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Сохранено: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Подключение не будет выполняться автоматически"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Без доступа к Интернету"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Ошибка аутентификации"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Похоже, вы указали неверный пароль. Повторите попытку."</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Ошибка конфигурации IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Отключено"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"К точке доступа подключено слишком много устройств"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Временное нестабильное подключение к сети."</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Слабый сигнал. Попробуйте разместить устройство ближе к роутеру."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Превышена пропускная способность сети. Повторите попытку позже."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Ошибка подключения. Повторите попытку позже."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Сеть несовместима с этим устройством."</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Не подключено"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Сохранено"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Сеть с тарификацией трафика"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Сеть без тарификации трафика"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Подключено через приложение \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Доступно через приложение \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Автоматически подключено через <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Автоматически подключено через автора рейтинга сетей"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Подключение к сети ограничено"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Доступа к частному DNS-серверу нет"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Подключено к устройству. Нет доступа к Интернету."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"низкое качество"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Без защиты"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Срок действия истек"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Нажмите, чтобы зарегистрироваться."</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Нажмите, чтобы обновить подписку и установить подключение"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Открывается <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>…"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Не удалось подключиться."</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Завершение регистрации…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Не удалось завершить регистрацию. Нажмите, чтобы повторить попытку."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Регистрация завершена. Подключение…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Эта сеть получает уникальный идентификатор, с помощью которого можно отследить местоположение устройства. "<annotation id="url">"Подробнее…"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Очень медленная"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Медленная"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ОК"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Средняя"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Быстрая"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Очень быстрая"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Нет"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Срок действия истек"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Нажмите, чтобы зарегистрироваться"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Нажмите, чтобы обновить подписку и установить подключение"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Открывается <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>…"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Ошибка подключения"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Завершение регистрации…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Не удалось завершить регистрацию. Нажмите, чтобы повторить попытку."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Регистрация завершена. Подключение…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Этой сети будет передан идентификатор SIM-карты, с помощью которого можно отследить местоположение устройства. "<annotation id="url">"Подробнее…"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Очень медленная"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Низкая"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ОК"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Средняя"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Быстрая"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Очень быстрая"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Подключение по Wi-Fi не установится автоматически."</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-si/arrays.xml b/libs/WifiTrackerLib/res/values-si/arrays.xml
index f716ab8..59a348e 100644
--- a/libs/WifiTrackerLib/res/values-si/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-si/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"ස්කෑන් කරමින්…"</item>
-    <item msgid="6222852518007967736">"සබැඳෙමින්…"</item>
-    <item msgid="1176401854208153464">"සත්‍යාපනය කරමින්…"</item>
-    <item msgid="1377026397901197257">"IP ලිපිනය ලබා ගනිමින්…"</item>
-    <item msgid="7627139816052121509">"සම්බන්ධිතයි"</item>
-    <item msgid="1598801023719359130">"තහනම් කරන ලද"</item>
-    <item msgid="9160765456671002324">"විසන්ධි වෙමින්…"</item>
-    <item msgid="8013176736494493734">"විසන්ධි විය"</item>
-    <item msgid="4077393480368783785">"අසාර්ථකයි"</item>
-    <item msgid="605372180740008604">"අවහිරයි"</item>
-    <item msgid="5102306451432929048">"දුර්වල සම්බන්ධතාව තාවකාලිකව මගහරිමින්"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"ස්කෑන් කරමින්…"</item>
+    <item msgid="9055468790485684083">"සබැඳෙමින්…"</item>
+    <item msgid="6099499723199990208">"සත්‍යාපනය කරමින්…"</item>
+    <item msgid="6794055951297347103">"IP ලිපිනය ලබා ගනිමින්…"</item>
+    <item msgid="5450920562291300229">"සම්බන්ධිතයි"</item>
+    <item msgid="6332116533879646145">"තහනම් කරන ලදි"</item>
+    <item msgid="294459081501073818">"විසන්ධි වෙමින්…"</item>
+    <item msgid="1577368920272598676">"විසන්ධි විය"</item>
+    <item msgid="7655843177582495451">"අසාර්ථකයි"</item>
+    <item msgid="8953752690917593623">"අවහිරයි"</item>
+    <item msgid="4400457817750243671">"දුර්වල සම්බන්ධතාව තාවකාලිකව මග හරිමින්"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-si/strings.xml b/libs/WifiTrackerLib/res/values-si/strings.xml
index 0cbd370..322a295 100644
--- a/libs/WifiTrackerLib/res/values-si/strings.xml
+++ b/libs/WifiTrackerLib/res/values-si/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"ස්වයං සබැඳීම ක්‍රියාවිරහිතයි"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> විසින් සුරකින ලදී"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"ස්වයංක්‍රියව නැවත සම්බන්ධ නොවනු ඇත"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"අන්තර්ජාල ප්‍රවේශය නැත"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"සත්‍යාපනයේ ගැටලුවකි"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"මුරපදය පරික්ෂා කර නැවත උත්සාහ කරන්න"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP වින්‍යාස කිරීම අසාර්ථකයි"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"අබලයි"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"ප්‍රවේශ ලක්ෂ්‍ය තාවකාලිකව පිරී ඇත"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"විසන්ධි විය"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"සුරකින ලදි"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"මනිනු ලැබේ"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"මනින්නේ නැත"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> හරහා සම්බන්ධයි"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> හරහා ලබා ගත හැකිය"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> හරහා ස්වයංක්‍රියව සම්බන්ධ විය"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"ජාල ශ්‍රේණිගත සපයන්නා හරහා ස්වයංක්‍රියව සම්බන්ධ විය"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"සීමිත සම්බන්ධතාව"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"පුද්ගලික DNS සේවාදායකයට ප්‍රවේශ වීමට නොහැකිය"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"අන්තර්ජාලය නැත"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"ස්වයං සබැඳීම ක්‍රියාවිරහිතයි"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> විසින් සුරකින ලදී"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"ස්වයංක්‍රියව සම්බන්ධ නොවනු ඇත"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"අන්තර්ජාල ප්‍රවේශය නැත"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"සත්‍යාපනයේ ගැටලුවකි"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"මුරපදය පරික්ෂා කර නැවත උත්සාහ කරන්න"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP වින්‍යාස කිරීම අසාර්ථකයි"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"අබල කළ"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"ප්‍රවේශ ලක්ෂ්‍යය තාවකාලිකව පිරී ඇත"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"තාවකාලික දුර්වල ජාල තත්ත්ව"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"දුර්වල සංඥා. රවුටරය වෙත වඩාත් සමීප වීමට උත්සාහ කරන්න."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"ජාලයේ ධාරිතාව ඉක්මවා ඇත. පසුව නැවත උත්සාහ කරන්න."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"සම්බන්ධ විය නොහැකිය. පසුව නැවත උත්සාහ කරන්න."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"ජාලය මෙම උපාංගය සමඟ නොගැළපේ"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"විසන්ධි විය"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"සුරකින ලදි"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"මනුගත"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"මනුගත නොකළ"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> හරහා සම්බන්ධිතයි"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> හරහා ලබා ගත හැකිය"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> හරහා ස්වයංක්‍රියව සම්බන්ධ විය"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"ජාල ශ්‍රේණිගත සපයන්නා හරහා ස්වයංක්‍රියව සම්බන්ධ විය"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"සීමිත සම්බන්ධතාව"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"පුද්ගලික DNS සේවාදායකයට ප්‍රවේශ වීමට නොහැකිය"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"උපාංගයට සම්බන්ධයි. අන්තර්ජාලය සැපයීමට නොහැකිය."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"අඩු ගුණත්වය"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"කිසිවක් නැත"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"කල් ඉකුත් විය"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"ලියාපදිංචි වීමට තට්ටු කරන්න"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"දායකත්වය අලුත් කිරීමට තට්ටු කර සම්බන්ධ වන්න"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> විවෘත කරමින්"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"සබැඳීමට නොහැකි විය"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"ලියාපදිංචිය සම්පූර්ණ කරමින්…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"ලියාපදිංචිය සම්පූර්ණ කළ නොහැකි විය. නැවත උත්සාහ කිරීමට තට්ටු කරන්න."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"ලියාපදිංචිය සම්පූර්ණයි. සබැඳෙමින්…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"උපාංග ස්ථානය නිරීක්ෂණය කිරීමට භාවිත කළ හැකි අනන්‍ය ID එකක් මෙම ජාලයට ලැබේ "<annotation id="url">"තව දැන ගන්න"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"ඉතා මන්දගාමී"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"මන්දගාමී"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"හරි"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"මධ්‍යම"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"වේගවත්"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"ඉතා වේගවත්"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"කිසිවක් නැත"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"කල් ඉකුත් විය"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"ලියාපදිංචි වීමට තට්ටු කරන්න"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"දායකත්වය අලුත් කිරීමට තට්ටු කර සම්බන්ධ වන්න"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> විවෘත කරමින්"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"සබැඳීමට නොහැකි විය"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"ලියාපදිංචිය සම්පූර්ණ කරමින්…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"ලියාපදිංචිය සම්පූර්ණ කළ නොහැකි විය. නැවත උත්සාහ කිරීමට තට්ටු කරන්න."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"ලියාපදිංචිය සම්පූර්ණයි. සබැඳෙමින්…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"උපාංග ස්ථානය නිරීක්ෂණය කිරීමට භාවිත කළ හැකි SIM ID එකක් මෙම ජාලයට ලැබේ "<annotation id="url">"තව දැන ගන්න"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"ඉතා මන්දගාමී"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"මන්දගාමී"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"හරි"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"මධ්‍යම"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"වේගවත්"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"ඉතා වේගවත්"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi දැනට ස්වයංක්‍රියව සබැඳි නොවනු ඇත"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-sk/arrays.xml b/libs/WifiTrackerLib/res/values-sk/arrays.xml
index 6e06d63..2c6af22 100644
--- a/libs/WifiTrackerLib/res/values-sk/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-sk/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Vyhľadáva sa…"</item>
-    <item msgid="6222852518007967736">"Pripája sa…"</item>
-    <item msgid="1176401854208153464">"Overuje sa…"</item>
-    <item msgid="1377026397901197257">"Získava sa adresa IP…"</item>
-    <item msgid="7627139816052121509">"Pripojená"</item>
-    <item msgid="1598801023719359130">"Pozastavená"</item>
-    <item msgid="9160765456671002324">"Odpája sa…"</item>
-    <item msgid="8013176736494493734">"Odpojená"</item>
-    <item msgid="4077393480368783785">"Nedá sa pripojiť"</item>
-    <item msgid="605372180740008604">"Blokovaná"</item>
-    <item msgid="5102306451432929048">"Dočasne bolo zabránené slabému pripojeniu"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Vyhľadáva sa…"</item>
+    <item msgid="9055468790485684083">"Pripája sa…"</item>
+    <item msgid="6099499723199990208">"Overuje sa…"</item>
+    <item msgid="6794055951297347103">"Získava sa adresa IP…"</item>
+    <item msgid="5450920562291300229">"Pripojené"</item>
+    <item msgid="6332116533879646145">"Pozastavené"</item>
+    <item msgid="294459081501073818">"Odpája sa…"</item>
+    <item msgid="1577368920272598676">"Odpojené"</item>
+    <item msgid="7655843177582495451">"Neúspešné"</item>
+    <item msgid="8953752690917593623">"Blokované"</item>
+    <item msgid="4400457817750243671">"Dočasne bolo zabránené slabému pripojeniu"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-sk/strings.xml b/libs/WifiTrackerLib/res/values-sk/strings.xml
index 1c28870..7bb2128 100644
--- a/libs/WifiTrackerLib/res/values-sk/strings.xml
+++ b/libs/WifiTrackerLib/res/values-sk/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Automatické pripojenie je vypnuté"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Uložila aplikácia <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Nedôjde k automatickému pripojeniu"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Žiadny prístup k internetu"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problém s overením"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Skontrolujte heslo a skúste to znova"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Zlyhanie konfigurácie adresy IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Vypnuté"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Prístupový bod je dočasne plný"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Odpojené"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Uložené"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Merané"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Bez merania dát"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Pripojené prostredníctvom siete <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"K dispozícii prostredníctvom aplikácie <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automaticky pripojené prostredníctvom poskytovateľa <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automaticky pripojené prostredníctvom poskytovateľa hodnotenia siete"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Obmedzené pripojenie"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"K súkromnému serveru DNS sa nepodarilo získať prístup"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Bez internetu"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatické pripojenie je vypnuté"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Uložil používateľ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Nedôjde k automatickému pripojeniu"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Bez prístupu k internetu"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problém s overením"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Skontrolujte heslo a skúste to znova"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Zlyhanie konfigurácie adresy IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Vypnuté"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Prístupový bod je dočasne plný"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Dočasne nízka kvalita siete"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Slabý signál. Skúste sa priblížiť k smerovaču."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Bola prekročená kapacita siete. Skúste to neskôr."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Nedá sa pripojiť. Skúste to neskôr."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Sieť nie je kompatibilná s týmto zariadením"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Odpojené"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Uložené"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Merané"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Nemerané"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Pripojené prostredníctvom siete <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"K dispozícii prostredníctvom aplikácie <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automaticky pripojené prostredníctvom poskytovateľa <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automaticky pripojené prostredníctvom poskytovateľa hodnotenia siete"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Obmedzené pripojenie"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"K súkromnému serveru DNS sa nepodarilo získať prístup"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Pripojené k zariadeniu. Internet nie je možné poskytnúť."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Nízka kvalita"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Žiadne"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Platnosť vypršala"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Prihláste sa klepnutím"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Klepnutím obnovíte odber a pripojíte sa"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Otvára sa <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Nepodarilo sa pripojiť"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Dokončuje sa registrácia…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Registráciu sa nepodarilo dokončiť. Klepnutím to skúste znova."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Registrácia je dokončená. Pripája sa…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Táto sieť prijíma jedinečný identifikátor, pomocou ktorého je možné sledovať polohu zariadenia. "<annotation id="url">"Ďalšie informácie"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Veľmi pomalá"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Pomalá"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Stredná"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Rýchla"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Veľmi rýchla"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Žiadne"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Platnosť vypršala"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Prihláste sa klepnutím"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Klepnutím obnovíte odber a pripojíte sa"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Otvára sa <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Nepodarilo sa pripojiť"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Dokončuje sa registrácia…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Registráciu sa nepodarilo dokončiť. Klepnutím to skúste znova."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registrácia je dokončená. Pripája sa…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Táto sieť dostáva jedinečný identifikátor SIM karty, pomocou ktorého je možné sledovať polohu zariadenia. "<annotation id="url">"Ďalšie informácie"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Veľmi nízka"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Nízka"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Stredná"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Rýchla"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Veľmi vysoká"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi sa momentálne automaticky nepripojí"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-sl/arrays.xml b/libs/WifiTrackerLib/res/values-sl/arrays.xml
index 10c7272..0082575 100644
--- a/libs/WifiTrackerLib/res/values-sl/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-sl/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Iskanje …"</item>
-    <item msgid="6222852518007967736">"Povezovanje …"</item>
-    <item msgid="1176401854208153464">"Preverjanje pristnosti …"</item>
-    <item msgid="1377026397901197257">"Pridobivanje naslova IP …"</item>
-    <item msgid="7627139816052121509">"Povezano"</item>
-    <item msgid="1598801023719359130">"Začasno ustavljeno"</item>
-    <item msgid="9160765456671002324">"Prekinjanje povezave …"</item>
-    <item msgid="8013176736494493734">"Povezava je prekinjena"</item>
-    <item msgid="4077393480368783785">"Neuspešno"</item>
-    <item msgid="605372180740008604">"Blokirano"</item>
-    <item msgid="5102306451432929048">"Začasno izogibanje slabi povezavi"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Iskanje …"</item>
+    <item msgid="9055468790485684083">"Povezovanje …"</item>
+    <item msgid="6099499723199990208">"Preverjanje pristnosti …"</item>
+    <item msgid="6794055951297347103">"Pridobivanje naslova IP …"</item>
+    <item msgid="5450920562291300229">"Povezano"</item>
+    <item msgid="6332116533879646145">"Onemogočeno"</item>
+    <item msgid="294459081501073818">"Prekinjanje povezave …"</item>
+    <item msgid="1577368920272598676">"Ni povezave"</item>
+    <item msgid="7655843177582495451">"Neuspešno"</item>
+    <item msgid="8953752690917593623">"Blokirano"</item>
+    <item msgid="4400457817750243671">"Začasno izogibanje slabi povezavi"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-sl/strings.xml b/libs/WifiTrackerLib/res/values-sl/strings.xml
index 3be8f0e..5599ef6 100644
--- a/libs/WifiTrackerLib/res/values-sl/strings.xml
+++ b/libs/WifiTrackerLib/res/values-sl/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Samodejno povezovanje izklopljeno"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Shranil(-a): <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Povezava ne bo samodejno vzpostavljena"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Ni dostopa do interneta"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Težava pri preverjanju pristnosti"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Preverite geslo in poskusite znova"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Konfiguracija IP-ja ni uspela"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Onemogočeno"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Dostopna točka je trenutno zasedena"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Ni povezave"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Shranjeno"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Omejen prenos podatkov"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Z neomejenim prenosom podatkov"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Povezava vzpostavljena prek omrežja <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Na voljo prek aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Povezava je samodejno vzpostavljena prek: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Samodejno vzpostavljena povezava prek ponudnika ocenjevanja omrežij"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Omejena povezava"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Do zasebnega strežnika DNS ni mogoče dostopati"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Ni internetne povezave"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Samodejno povezovanje izklopljeno"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Shranila aplikacija <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Povezava ne bo samodejno vzpostavljena"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Ni dostopa do interneta"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Težava preverjanja pristnosti"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Preverite geslo in poskusite znova"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Konfiguracija IP-ja ni uspela"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Onemogočeno"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Dostopna točka je trenutno zasedena"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Začasno slabo stanje omrežja"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Šibek signal. Poskusite se premakniti bliže k usmerjevalniku."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Omrežje je prezasedeno. Poskusite znova pozneje."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Povezave ni mogoče vzpostaviti. Poskusite znova pozneje."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Omrežje ni združljivo s to napravo."</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Ni povezave"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Shranjeno"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Z omejenim prenosom podatkov"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Z neomejenim prenosom podatkov"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Povezava vzpostavljena prek omrežja <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Na voljo prek aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Povezava je samodejno vzpostavljena prek: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Samodejno vzpostavljena povezava prek ponudnika ocenjevanja omrežij"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Omejena povezava"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Do zasebnega strežnika DNS ni mogoče dostopati"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Povezava z napravo je vzpostavljena. Dostop do interneta ni na voljo."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Nizka kakovost"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Brez"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Poteklo"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Dotaknite se, če se želite registrirati"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Dotaknite se za podaljšanje naročnine in vzpostavitev povezave"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Odpiranje ponudnika <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Povezave ni bilo mogoče vzpostaviti"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Dokončevanje registracije …"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Registracije ni bilo mogoče dokončati. Če želite poskusiti znova, se dotaknite."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Registracija je končana. Povezovanje …"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"To omrežje prejme enolični ID, s katerim je mogoče spremljati lokacijo naprave. "<annotation id="url">"Več o tem"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Zelo počasna"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Počasna"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"V redu"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Srednje hitra"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Hitra"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Zelo hitra"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Brez"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Poteklo"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Dotaknite se, če se želite registrirati"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Dotaknite se za podaljšanje naročnine in vzpostavitev povezave"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Odpiranje ponudnika <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Povezave ni bilo mogoče vzpostaviti"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Dokončevanje registracije …"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Registracije ni bilo mogoče dokončati. Če želite poskusiti znova, se dotaknite."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registracija je končana. Povezovanje …"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"To omrežje prejme ID kartice SIM, s katerim je mogoče spremljati lokacijo naprave. "<annotation id="url">"Več o tem"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Zelo počasna"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Počasna"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"V redu"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Srednje hitra"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Hitra"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Zelo hitra"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Vmesnik Wi-Fi trenutno ne bo samodejno vzpostavil povezave."</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-sq/arrays.xml b/libs/WifiTrackerLib/res/values-sq/arrays.xml
index ac1f301..97c35ed 100644
--- a/libs/WifiTrackerLib/res/values-sq/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-sq/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Po skanon…"</item>
-    <item msgid="6222852518007967736">"Po lidhet…"</item>
-    <item msgid="1176401854208153464">"Po vërtetohet…"</item>
-    <item msgid="1377026397901197257">"Po merr adresën IP…"</item>
-    <item msgid="7627139816052121509">"Lidhur"</item>
-    <item msgid="1598801023719359130">"Pezulluar"</item>
-    <item msgid="9160765456671002324">"Po shkëputet…"</item>
-    <item msgid="8013176736494493734">"Shkëputur"</item>
-    <item msgid="4077393480368783785">"Pa sukses"</item>
-    <item msgid="605372180740008604">"Bllokuar"</item>
-    <item msgid="5102306451432929048">"Po shmang përkohësisht lidhje të dobët"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Po skanon…"</item>
+    <item msgid="9055468790485684083">"Po lidhet…"</item>
+    <item msgid="6099499723199990208">"Po vërtetohet…"</item>
+    <item msgid="6794055951297347103">"Po merr adresën IP…"</item>
+    <item msgid="5450920562291300229">"Lidhur"</item>
+    <item msgid="6332116533879646145">"Pezulluar"</item>
+    <item msgid="294459081501073818">"Po shkëputet…"</item>
+    <item msgid="1577368920272598676">"Shkëputur"</item>
+    <item msgid="7655843177582495451">"Pa sukses"</item>
+    <item msgid="8953752690917593623">"Bllokuar"</item>
+    <item msgid="4400457817750243671">"Po shmang përkohësisht një lidhje të dobët"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-sq/strings.xml b/libs/WifiTrackerLib/res/values-sq/strings.xml
index 78dc083..0e7e3f4 100644
--- a/libs/WifiTrackerLib/res/values-sq/strings.xml
+++ b/libs/WifiTrackerLib/res/values-sq/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Lidhja automatike është joaktive"</string>
-    <string name="saved_network" msgid="6241977554502802914">"E ruajtur nga <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Nuk do të lidhet automatikisht"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Nuk ka qasje në internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problem me vërtetimin"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Kontrollo fjalëkalimin dhe provo sërish"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Dështim në konfigurimin e IP-së"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Të çaktivizuara"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Pika e qasjes është përkohësisht plot"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Shkëputur"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"U ruajt"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Me matje"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Pa matje"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Lidhur përmes <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Ofrohet përmes <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Është lidhur automatikisht nëpërmjet <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Lidhur automatikisht nëpërmjet ofruesit të vlerësimit të rrjetit"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Lidhje e kufizuar"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Serveri privat DNS nuk mund të qaset"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Nuk ka internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Lidhja automatike është joaktive"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Ruajtur nga <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Nuk do të lidhet automatikisht"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Nuk ka qasje në internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problem me vërtetimin"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Kontrollo fjalëkalimin dhe provo përsëri"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Dështim në konfigurimin e IP-së"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Çaktivizuar"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Pika e qasjes është përkohësisht plot"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Kushte përkohësisht të këqija rrjeti"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Sinjal i dobët. Provo të lëvizësh më pranë ruterit."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Rrjeti është mbi kapacitet Provo sërish më vonë."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Nuk mund të lidhet. Provo sërish më vonë."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Rrjeti nuk është i pajtueshëm me këtë pajisje"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Shkëputur"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Ruajtur"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Me matje"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Pa matje"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Lidhur përmes <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Ofrohet përmes <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Lidhur automatikisht nëpërmjet <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Lidhur automatikisht nëpërmjet ofruesit të vlerësimit të rrjetit"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Lidhje e kufizuar"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Nuk mund të qasesh në serverin privat DNS"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"U lidh me pajisjen. Interneti nuk mund të ofrohet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Cilësi e ulët"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Asnjë"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Skaduar"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Trokit për t\'u regjistruar"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Trokit për të rinovuar abonimin dhe për t\'u lidhur"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Po hapet <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Nuk mund të lidhej"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Po përfundon regjistrimin…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Regjistrimi nuk mund të përfundonte. Trokit për të provuar përsëri."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Regjistrimi përfundoi. Po lidhet…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Ky rrjet merr një ID unike që mund të përdoret për të monitoruar vendndodhjen e pajisjes. "<annotation id="url">"Mëso më shumë"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Shumë e ulët"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"E ngadaltë"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Në rregull"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Mesatare"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"E shpejtë"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Shumë e shpejtë"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Asnjë"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Skaduar"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Trokit për t\'u regjistruar"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Trokit për të rinovuar abonimin dhe për t\'u lidhur"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Po hapet <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Nuk mund të lidhej"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Po përfundon regjistrimin…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Regjistrimi nuk mund të përfundonte. Trokit për të provuar përsëri."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Regjistrimi përfundoi. Po lidhet…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Ky rrjet merr një ID karte SIM që mund të përdoret për të monitoruar vendndodhjen e pajisjes. "<annotation id="url">"Mëso më shumë"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Shumë e ngadaltë"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"E ngadaltë"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"E pranueshme"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Mesatare"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"E shpejtë"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Shumë e shpejtë"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-sr/arrays.xml b/libs/WifiTrackerLib/res/values-sr/arrays.xml
index b392954..1d8e0d7 100644
--- a/libs/WifiTrackerLib/res/values-sr/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-sr/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Тражи се…"</item>
-    <item msgid="6222852518007967736">"Повезује се…"</item>
-    <item msgid="1176401854208153464">"Потврђује се идентитет…"</item>
-    <item msgid="1377026397901197257">"Преузима се IP адреса…"</item>
-    <item msgid="7627139816052121509">"Повезано"</item>
-    <item msgid="1598801023719359130">"Суспендовано"</item>
-    <item msgid="9160765456671002324">"Прекида се веза…"</item>
-    <item msgid="8013176736494493734">"Веза је прекинута"</item>
-    <item msgid="4077393480368783785">"Није успело"</item>
-    <item msgid="605372180740008604">"Блокирано"</item>
-    <item msgid="5102306451432929048">"Привремено избегавање лоше везе"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Тражи се…"</item>
+    <item msgid="9055468790485684083">"Повезује се…"</item>
+    <item msgid="6099499723199990208">"Потврђује се идентитет…"</item>
+    <item msgid="6794055951297347103">"Преузима се IP адреса…"</item>
+    <item msgid="5450920562291300229">"Повезано је"</item>
+    <item msgid="6332116533879646145">"Суспендовано"</item>
+    <item msgid="294459081501073818">"Прекида се веза…"</item>
+    <item msgid="1577368920272598676">"Веза је прекинута"</item>
+    <item msgid="7655843177582495451">"Није успело"</item>
+    <item msgid="8953752690917593623">"Блокирано"</item>
+    <item msgid="4400457817750243671">"Привремено избегавање лоше везе"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-sr/strings.xml b/libs/WifiTrackerLib/res/values-sr/strings.xml
index 87cc17c..c519f34 100644
--- a/libs/WifiTrackerLib/res/values-sr/strings.xml
+++ b/libs/WifiTrackerLib/res/values-sr/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Аутоматско повезивање је искључено"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Сачувао/ла је <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Аутоматско повезивање није успело"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Нема приступа интернету"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Проблем са потврдом идентитета"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Проверите лозинку и пробајте поново"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP конфигурација је отказала"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Онемогућено"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Приступна тачка је привремено заузета"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Веза је прекинута"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Сачувано"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Са ограничењем"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Без ограничења"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Повезано преко: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Доступно преко апликације <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Аутоматски повезано преко: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Аутоматски повезано преко добављача оцене мреже"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Ограничена веза"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Приступ приватном DNS серверу није успео"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Нема интернета"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Аутоматско повезивање је искључено"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Сачувао/ла: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Аутоматско повезивање није успело"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Нема приступа интернету"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Проблем са потврдом идентитета"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Проверите лозинку и пробајте поново"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP конфигурација је отказала"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Онемогућено"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Приступна тачка је привремено заузета"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Привремено слаба мрежа"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Слаб сигнал. Пробајте да се приближите рутеру."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Капацитет мреже је премашен. Пробајте поново касније."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Повезивање није успело. Пробајте поново касније."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Мрежа није компатибилна са овим уређајем"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Веза је прекинута"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Сачувано"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Са ограничењем"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Без ограничења"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Повезано помоћу апликације <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Доступно преко апликације <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Аутоматски повезано помоћу апликације <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Аутоматски повезано преко добављача оцене мреже"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Ограничена веза"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Приступ приватном DNS серверу није успео"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Уређај је повезан. Пружање интернета није успело."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Лош квалитет"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Ништа"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Истекло"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Додирните да бисте се регистровали"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Додирните да бисте обновили претплату и повезали"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Отвара се <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Повезивање није успело"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Регистрација се довршава…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Довршавање регистрације није успело. Додирните да бисте пробали поново."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Регистрација је довршена. Повезује се…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Ова мрежа захтева јединствени ИД који може да се користи за праћење локације уређаја. "<annotation id="url">"Сазнајте више"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Веома спора"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Спора"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Потврди"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Средња"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Брза"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Веома брза"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Ништа"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Истекла"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Додирните да бисте се регистровали"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Додирните да бисте обновили претплату и повезали се"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Отвара се <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Повезивање није успело"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Регистрација се довршава…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Довршавање регистрације није успело. Додирните да бисте пробали поново."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Регистрација је довршена. Повезује се…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Ова мрежа добија ИД SIM картице који може да се користи за праћење локације уређаја. "<annotation id="url">"Сазнајте више"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Веома споро"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Споро"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"У реду"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Средње"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Брзо"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Веома брзо"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"WiFi тренутно не може да се аутоматски повеже"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-sv/arrays.xml b/libs/WifiTrackerLib/res/values-sv/arrays.xml
index 7f3ee92..f3d0979 100644
--- a/libs/WifiTrackerLib/res/values-sv/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-sv/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Söker …"</item>
-    <item msgid="6222852518007967736">"Ansluter …"</item>
-    <item msgid="1176401854208153464">"Autentiserar …"</item>
-    <item msgid="1377026397901197257">"Hämtar IP-adress …"</item>
-    <item msgid="7627139816052121509">"Ansluten"</item>
-    <item msgid="1598801023719359130">"Avstängt"</item>
-    <item msgid="9160765456671002324">"Kopplar från …"</item>
-    <item msgid="8013176736494493734">"Frånkopplat"</item>
-    <item msgid="4077393480368783785">"Misslyckades"</item>
-    <item msgid="605372180740008604">"Blockerad"</item>
-    <item msgid="5102306451432929048">"Undviker just nu dålig anslutning"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Söker …"</item>
+    <item msgid="9055468790485684083">"Ansluter …"</item>
+    <item msgid="6099499723199990208">"Autentiserar …"</item>
+    <item msgid="6794055951297347103">"Hämtar IP-adress …"</item>
+    <item msgid="5450920562291300229">"Ansluten"</item>
+    <item msgid="6332116533879646145">"Avstängt"</item>
+    <item msgid="294459081501073818">"Kopplar från …"</item>
+    <item msgid="1577368920272598676">"Frånkopplad"</item>
+    <item msgid="7655843177582495451">"Misslyckades"</item>
+    <item msgid="8953752690917593623">"Blockerat"</item>
+    <item msgid="4400457817750243671">"Undviker just nu dålig anslutning"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-sv/strings.xml b/libs/WifiTrackerLib/res/values-sv/strings.xml
index bea6449..89caf5c 100644
--- a/libs/WifiTrackerLib/res/values-sv/strings.xml
+++ b/libs/WifiTrackerLib/res/values-sv/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Automatisk anslutning har inaktiverats"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Sparades av <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Det går inte att ansluta automatiskt"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Ingen internetåtkomst"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Autentiseringsproblem"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Kontrollera lösenordet och försök igen"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP-konfigurationsfel"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Inaktiverad"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Åtkomstpunkten har inga platser över för tillfället"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Frånkopplad"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Sparat"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Med datapriser"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Utan datapriser"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Anslutet via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Tillgängligt via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Automatiskt ansluten via <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Automatiskt ansluten via leverantör av nätverksbetyg"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Begränsad anslutning"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Det går inte att komma åt den privata DNS-servern."</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Inget internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatisk anslutning har inaktiverats"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Sparades av <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Det går inte att ansluta automatiskt"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Ingen internetåtkomst"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Autentiseringsproblem"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Kontrollera lösenordet och försök igen"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP-konfigurationsfel"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Inaktiverat"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Åtkomstpunkten har inga platser över för tillfället"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Tillfälligt dåliga nätverksförhållanden"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Svag signal. Gå närmare routern."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Nätverket är överbelastat. Försök igen senare."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Det gick inte att ansluta. Försök igen senare."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Nätverket är inte kompatibelt med denna enhet"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Frånkopplad"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Sparat"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Med datapriser"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Utan datapriser"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Ansluten via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Tillgängligt via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Automatiskt ansluten via <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Automatiskt ansluten via leverantör av nätverksbetyg"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Begränsad anslutning"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Det går inte att komma åt den privata DNS-servern."</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Ansluten till enheten. Det går inte att ansluta till internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Låg kvalitet"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Ingen"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Har upphört att gälla"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Tryck för att registrera dig"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Tryck här om du vill förnya prenumerationen och ansluta"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Öppnar <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Det gick inte att ansluta"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Registreringen slutförs …"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Det gick inte att slutföra registreringen. Tryck för att försöka igen."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Registrering har slutförts. Ansluter …"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Det här nätverket får ett unikt id som kan användas till att spåra enhetens plats. "<annotation id="url">"Läs mer"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Mycket långsam"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Långsam"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Okej"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Medelsnabb"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Snabb"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Mycket snabb"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Ingen"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Utgått"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Tryck för att logga in"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Tryck här om du vill förnya prenumerationen och ansluta"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Öppnar <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Det gick inte att ansluta"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Registreringen slutförs …"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Det gick inte att slutföra registreringen. Tryck för att försöka igen."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registrering har slutförts. Ansluter …"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Det här nätverket får ett SIM-id som kan användas till att spåra enhetens plats. "<annotation id="url">"Läs mer"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Mycket långsam"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Långsam"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Medel"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Snabb"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Mycket snabb"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Du ansluts inte till Wi-Fi automatiskt för närvarande"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-sw/arrays.xml b/libs/WifiTrackerLib/res/values-sw/arrays.xml
index 6e7f23f..1b5fb0b 100644
--- a/libs/WifiTrackerLib/res/values-sw/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-sw/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Inatafuta…"</item>
-    <item msgid="6222852518007967736">"Inaunganisha…"</item>
-    <item msgid="1176401854208153464">"Inathibitisha…"</item>
-    <item msgid="1377026397901197257">"Inapata anwani ya IP…"</item>
-    <item msgid="7627139816052121509">"Imeunganisha"</item>
-    <item msgid="1598801023719359130">"Imesimamishwa"</item>
-    <item msgid="9160765456671002324">"Inatenganisha…"</item>
-    <item msgid="8013176736494493734">"Imetenganishwa"</item>
-    <item msgid="4077393480368783785">"Imeshindwa kuunganisha"</item>
-    <item msgid="605372180740008604">"Imezuiwa"</item>
-    <item msgid="5102306451432929048">"Inaepuka muunganisho hafifu kwa muda"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Inatafuta…"</item>
+    <item msgid="9055468790485684083">"Inaunganisha…"</item>
+    <item msgid="6099499723199990208">"Inathibitisha…"</item>
+    <item msgid="6794055951297347103">"Inapata anwani ya IP…"</item>
+    <item msgid="5450920562291300229">"Imeunganishwa"</item>
+    <item msgid="6332116533879646145">"Imesimamishwa"</item>
+    <item msgid="294459081501073818">"Inatenganisha…"</item>
+    <item msgid="1577368920272598676">"Imetenganishwa"</item>
+    <item msgid="7655843177582495451">"Imeshindwa kuunganisha"</item>
+    <item msgid="8953752690917593623">"Imezuiwa"</item>
+    <item msgid="4400457817750243671">"Inaepuka kwa muda muunganisho mbovu"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-sw/strings.xml b/libs/WifiTrackerLib/res/values-sw/strings.xml
index 10bcf89..7981cc9 100644
--- a/libs/WifiTrackerLib/res/values-sw/strings.xml
+++ b/libs/WifiTrackerLib/res/values-sw/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Kuunganisha kiotomatiki kumezimwa"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Ilihifadhiwa na <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Haiwezi kuunganisha kiotomatiki"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Hakuna muunganisho wa intaneti"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Tatizo la uthibitishaji"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Angalia nenosiri na ujaribu tena"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Imeshindwa kuweka mipangilio ya IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Imezimwa"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Lango la mtandao lina shughuli nyingi kwa sasa"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Hujaunganishwa"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Umehifadhiwa"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Mtandao unapima data"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Mtandao usiopima data"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Imeunganishwa kupitia <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Inapatikana kupitia <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Umeunganishwa kiotomatiki kupitia <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Imeunganishwa kiotomatiki kupitia mtoa huduma wa ukadiriaji wa mtandao"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Muunganisho hafifu"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Seva ya faragha ya DNS haiwezi kufikiwa"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Hakuna intaneti"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Kipengele cha kuunganisha kiotomatiki kimezimwa"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Ilihifadhiwa na <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Haiwezi kuunganisha kiotomatiki"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Hakuna muunganisho wa intaneti"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Tatizo la uthibitishaji"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Angalia nenosiri na ujaribu tena"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Imeshindwa kuweka mipangilio ya IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Umezimwa"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Mlango wa mtandao una shughuli nyingi kwa sasa"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Hali ya muda ya mtandao dhaifu"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Muunganisho si thabiti. Jaribu kusogea karibu na kisambaza data."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Kuna msongamano kwenye mtandao. Jaribu tena baadaye."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Imeshindwa kuunganisha. Jaribu tena baadaye."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Mtandao hauoani na kifaa hiki"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Imetenganishwa"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Uliohifadhiwa"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Mtandao unaopima data"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Mtandao usiopima data"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Imeunganishwa kupitia <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Inapatikana kupitia <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Imeunganishwa kiotomatiki kupitia <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Imeunganishwa kiotomatiki kupitia kampuni ya kukadiria mitandao"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Muunganisho hafifu"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Seva ya faragha ya DNS haiwezi kufikiwa"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Imeunganishwa kwenye kifaa. Imeshindwa kusambaza intaneti."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Ubora wa chini"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Hamna"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Muda umeisha"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Gusa ili ujisajili"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Gusa ili usasishe usajili na uunganishe"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Inafungua <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Imeshindwa kuunganisha"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Inakamilisha usajili…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Imeshindwa kukamilisha usajili. Gusa ili ujaribu tena."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Imekamilisha usajili. Inaunganisha…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Mtandao huu hupokea kitambulisho cha kipekee ambacho kinaweza kutumiwa kufuatilia mahali kifaa kilipo. "<annotation id="url">"Pata maelezo zaidi"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Polepole Sana"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Polepole"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Sawa"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Wastani"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Haraka"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Haraka Sana"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Hamna"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Muda wake umeisha"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Gusa ili ujisajili"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Gusa ili usasishe usajili na uunganishe"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Inafungua <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Imeshindwa kuunganisha"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Inakamilisha usajili…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Imeshindwa kukamilisha usajili. Gusa ili ujaribu tena."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Imekamilisha usajili. Inaunganisha…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Mtandao huu hupokea kitambulisho cha SIM ambacho kinaweza kutumiwa kufuatilia mahali kifaa kilipo. "<annotation id="url">"Pata maelezo zaidi"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Polepole Sana"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Polepole"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Sawa"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Wastani"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Haraka"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Haraka Sana"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi haitaunganishwa kiotomatiki kwa sasa"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ta/arrays.xml b/libs/WifiTrackerLib/res/values-ta/arrays.xml
index 8329cc3..69670cc 100644
--- a/libs/WifiTrackerLib/res/values-ta/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-ta/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"ஸ்கேன் செய்கிறது…"</item>
-    <item msgid="6222852518007967736">"இணைக்கிறது…"</item>
-    <item msgid="1176401854208153464">"அங்கீகரிக்கிறது…"</item>
-    <item msgid="1377026397901197257">"IP முகவரியைப் பெறுகிறது…"</item>
-    <item msgid="7627139816052121509">"இணைக்கப்பட்டது"</item>
-    <item msgid="1598801023719359130">"இடைநிறுத்தப்பட்டது"</item>
-    <item msgid="9160765456671002324">"துண்டிக்கிறது…"</item>
-    <item msgid="8013176736494493734">"தொடர்பு துண்டிக்கப்பட்டது"</item>
-    <item msgid="4077393480368783785">"தோல்வி"</item>
-    <item msgid="605372180740008604">"தடுக்கப்பட்டன"</item>
-    <item msgid="5102306451432929048">"வேகம் குறைவான இணைப்பைத் தற்காலிகமாகத் தவிர்க்கிறது"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"தேடுகிறது…"</item>
+    <item msgid="9055468790485684083">"இணைக்கிறது…"</item>
+    <item msgid="6099499723199990208">"அங்கீகரிக்கிறது…"</item>
+    <item msgid="6794055951297347103">"IP முகவரியைப் பெறுகிறது…"</item>
+    <item msgid="5450920562291300229">"இணைக்கப்பட்டது"</item>
+    <item msgid="6332116533879646145">"இடைநிறுத்தப்பட்டது"</item>
+    <item msgid="294459081501073818">"துண்டிக்கிறது…"</item>
+    <item msgid="1577368920272598676">"தொடர்பு துண்டிக்கப்பட்டது"</item>
+    <item msgid="7655843177582495451">"தோல்வி"</item>
+    <item msgid="8953752690917593623">"தடுக்கப்பட்டது"</item>
+    <item msgid="4400457817750243671">"வேகம் குறைவான இணைப்பைத் தற்காலிகமாகத் தவிர்க்கிறது"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ta/strings.xml b/libs/WifiTrackerLib/res/values-ta/strings.xml
index bc21c8e..4d46062 100644
--- a/libs/WifiTrackerLib/res/values-ta/strings.xml
+++ b/libs/WifiTrackerLib/res/values-ta/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"தானியங்கு இணைப்பு ஆஃப் செய்யப்பட்டுள்ளது"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> சேமித்தது"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"தானாக இணைக்கப்படாது"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"இணைய அணுகல் இல்லை"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"அங்கீகரிப்புச் சிக்கல்"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"கடவுச்சொல்லைச் சரிபார்த்து, மீண்டும் முயலவும்"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP உள்ளமைவில் தோல்வி"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"முடக்கப்பட்டது"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"தற்காலிகமாக அணுகல் புள்ளி நிரம்பியுள்ளது"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"தொடர்பு துண்டிக்கப்பட்டது"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"சேமிக்கப்பட்டது"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"கட்டண நெட்வொர்க்"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"கட்டணமில்லா நெட்வொர்க்"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> மூலம் இணைக்கப்பட்டது"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> மூலம் கிடைக்கும்"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> மூலம் தானாக இணைக்கப்பட்டது"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"நெட்வொர்க் மதிப்பீடு வழங்குநரால் தானாக இணைக்கப்பட்டது"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"வரம்பிற்கு உட்பட்ட இணைப்பு"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"தனிப்பட்ட DNS சேவையகத்தை அணுக இயலாது"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"இணைய இணைப்பு இல்லை"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"தானியங்கு இணைப்பு ஆஃப் செய்யப்பட்டுள்ளது"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> சேமித்தது"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"தானாக இணைக்கப்படாது"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"இணைய அணுகல் இல்லை"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"அங்கீகரிப்புச் சிக்கல்"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"கடவுச்சொல்லைச் சரிபார்த்து மீண்டும் முயலவும்"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP உள்ளமைவில் தோல்வி"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"முடக்கப்பட்டது"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"தற்காலிகமாக ஆக்சஸ் பாயிண்ட் நிரம்பியுள்ளது"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"தற்காலிகமாக நெட்வொர்க் சரியில்லை"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"வலுவற்ற சிக்னல். ரூட்டருக்கு அருகில் சென்று சிக்னல் வலுவாகக் கிடைக்கிறதா எனப் பாருங்கள்."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"நெட்வொர்க் பிசியாக உள்ளது. பிறகு முயலவும்."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"இணைக்க முடியவில்லை. பிறகு முயலவும்."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"இந்தச் சாதனத்துடன் நெட்வொர்க் இணங்கவில்லை"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"தொடர்பு துண்டிக்கப்பட்டது"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"சேமித்தது"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"கட்டண நெட்வொர்க்"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"கட்டணமில்லா நெட்வொர்க்"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> மூலம் இணைக்கப்பட்டது"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> மூலம் கிடைக்கும்"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> மூலம் தானாக இணைக்கப்பட்டது"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"நெட்வொர்க் மதிப்பீடு வழங்குநர் மூலம் தானாக இணைக்கப்பட்டது"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"வரம்பிற்கு உட்பட்ட இணைப்பு"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"தனிப்பட்ட DNS சேவையகத்தை அணுக இயலாது"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"சாதனத்துடன் இணைக்கப்பட்டது. இணைய இணைப்பு இல்லை."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"குறைந்த தரம்"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"ஏதுமில்லை"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"காலாவதியாகிவிட்டது"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"பதிவு செய்ய தட்டவும்"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"சந்தாவைப் புதுப்பித்து இணைக்க தட்டவும்"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> திறக்கப்படுகிறது"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"இணைக்க இயலவில்லை"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"பதிவு செய்தல் நிறைவடைகிறது…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"பதிவு செய்தலை நிறைவுசெய்ய முடியவில்லை. மீண்டும் முயல தட்டவும்."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"பதிவு செய்தல் நிறைவடைந்தது. இணைக்கிறது…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"இந்த நெட்வொர்க்கானது சாதன இருப்பிடத்தை டிராக் செய்யப் பயன்படுத்தப்படும் தனித்துவமான ஐடியைப் பெறும். "<annotation id="url">"மேலும் அறிக"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"மிகவும் வேகம் குறைவானது"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"வேகம் குறைவு"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"சரி"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"நடுத்தரம்"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"வேகம்"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"மிகவும் வேகமானது"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"ஏதுமில்லை"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"காலாவதியானது"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"பதிவு செய்ய தட்டவும்"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"சந்தாவைப் புதுப்பித்து இணைக்க தட்டவும்"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> திறக்கப்படுகிறது"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"இணைக்க இயலவில்லை"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"பதிவு செய்வது நிறைவடைகிறது…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"பதிவு செய்தலை நிறைவுசெய்ய முடியவில்லை. மீண்டும் முயல தட்டவும்."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"பதிவு செய்தல் நிறைவடைந்தது. இணைக்கிறது…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"சாதன இருப்பிடத்தைக் கண்காணிக்கப் பயன்படுத்தப்படும் சிம் ஐடியை இந்த நெட்வொர்க் பெறும். "<annotation id="url">"மேலும் அறிக"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"மிகவும் மெதுவானது"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"மெதுவானது"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"சரி"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"நடுத்தரம்"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"வேகமானது"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"மிகவும் வேகமானது"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-te/arrays.xml b/libs/WifiTrackerLib/res/values-te/arrays.xml
index 9c26bf7..efff29a 100644
--- a/libs/WifiTrackerLib/res/values-te/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-te/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"స్కాన్ చేస్తోంది…"</item>
-    <item msgid="6222852518007967736">"కనెక్ట్ అవుతోంది…"</item>
-    <item msgid="1176401854208153464">"ప్రామాణీకరిస్తోంది…"</item>
-    <item msgid="1377026397901197257">"IP చిరునామాను పొందుతోంది…"</item>
-    <item msgid="7627139816052121509">"కనెక్ట్ చేయబడింది"</item>
-    <item msgid="1598801023719359130">"తాత్కాలికంగా రద్దు చేయబడింది"</item>
-    <item msgid="9160765456671002324">"డిస్‌కనెక్ట్ చేస్తోంది…"</item>
-    <item msgid="8013176736494493734">"డిస్‌కనెక్ట్ అయ్యింది"</item>
-    <item msgid="4077393480368783785">"విఫలమైంది"</item>
-    <item msgid="605372180740008604">"బ్లాక్ చేయబడింది"</item>
-    <item msgid="5102306451432929048">"బలహీన కనెక్షన్‌ను తాత్కాలికంగా నివారిస్తోంది"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"స్కాన్ చేస్తోంది…"</item>
+    <item msgid="9055468790485684083">"కనెక్ట్ అవుతోంది…"</item>
+    <item msgid="6099499723199990208">"ప్రామాణీకరిస్తోంది…"</item>
+    <item msgid="6794055951297347103">"IP అడ్రస్‌ను పొందుతోంది…"</item>
+    <item msgid="5450920562291300229">"కనెక్ట్ అయింది"</item>
+    <item msgid="6332116533879646145">"సస్పెండ్ చేయబడింది"</item>
+    <item msgid="294459081501073818">"డిస్‌కనెక్ట్ అవుతోంది…"</item>
+    <item msgid="1577368920272598676">"డిస్‌కనెక్ట్ అయింది"</item>
+    <item msgid="7655843177582495451">"విఫలమైంది"</item>
+    <item msgid="8953752690917593623">"బ్లాక్ చేయబడింది"</item>
+    <item msgid="4400457817750243671">"బలహీన కనెక్షన్‌ను తాత్కాలికంగా నివారిస్తుంది"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-te/strings.xml b/libs/WifiTrackerLib/res/values-te/strings.xml
index 13a2c98..5699ef7 100644
--- a/libs/WifiTrackerLib/res/values-te/strings.xml
+++ b/libs/WifiTrackerLib/res/values-te/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"ఆటో-కనెక్ట్ ఆఫ్‌లో ఉంది"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> ద్వారా సేవ్ చేయబడింది"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"ఆటోమేటిక్‌గా కనెక్ట్ కాదు"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"ఇంటర్నెట్ యాక్సెస్ లేదు"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"ప్రామాణీకరణ సమస్య"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"పాస్‌వర్డ్‌ను తనిఖీ చేసి, మళ్లీ ప్రయత్నించండి"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP కాన్ఫిగరేషన్ వైఫల్యం"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"డిజేబుల్ చేయబడింది"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"యాక్సెస్ పాయింట్ తాత్కాలికంగా నిండుకుంది"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"డిస్‌కనెక్ట్ అయ్యింది"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"సేవ్ చేయబడింది"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"గణించబడుతోంది"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"గణించబడటం లేదు"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> ద్వారా కనెక్ట్ చేయబడింది"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> ద్వారా అందుబాటులో ఉంది"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> ద్వారా ఆటోమేటిక్‌గా కనెక్ట్ చేయబడింది"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"నెట్‌వర్క్ రేటింగ్ ప్రదాత ద్వారా స్వయంచాలకంగా కనెక్ట్ చేయబడింది"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"పరిమిత కనెక్షన్"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"ప్రైవేట్ DNS సర్వర్‌ను యాక్సెస్ చేయడం సాధ్యపడదు"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"ఇంటర్నెట్ లేదు"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"ఆటో-కనెక్ట్ ఆఫ్‌లో ఉంది"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> చేత సేవ్ చేయబడింది"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"ఆటోమేటిక్‌గా కనెక్ట్ కాదు"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"ఇంటర్నెట్ యాక్సెస్ లేదు"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"ప్రామాణీకరణ సమస్య"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"పాస్‌వర్డ్‌ను తనిఖీ చేసి, మళ్లీ ట్రై చేయండి"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP కాన్ఫిగరేషన్ వైఫల్యం"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"డిజేబుల్ చేయబడింది"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"యాక్సెస్ పాయింట్ తాత్కాలికంగా నిండి ఉంది"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"తాత్కాలికంగా పేలవమైన నెట్‌వర్క్ పరిస్థితులు ఉన్నాయి"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"పేలవమైన సిగ్నల్. రూటర్‌కు కొద్దిగా దగ్గరికి వెళ్ళడానికి ట్రై చేయండి."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"నెట్‌వర్క్ సామర్థ్యం మించిపోయింది. తర్వాత మళ్లీ ట్రై చేయండి."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"కనెక్ట్ చేయడం సాధ్యపడదు. తర్వాత మళ్లీ ట్రై చేయండి."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"నెట్‌వర్క్ ఈ పరికరంతో అనుకూలంగా లేదు"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"డిస్‌కనెక్ట్ అయింది"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"సేవ్ అయింది"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"గణించబడింది"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"గణించబడటం లేదు"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> ద్వారా కనెక్ట్ చేయబడింది"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> ద్వారా అందుబాటులో ఉంది"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> ద్వారా ఆటోమేటిక్‌గా కనెక్ట్ చేయబడింది"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"నెట్‌వర్క్ రేటింగ్ ప్రొవైడర్ ద్వారా ఆటోమేటిక్‌గా కనెక్ట్ చేయబడింది"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"పరిమిత కనెక్షన్"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"ప్రైవేట్ DNS సర్వర్‌ను యాక్సెస్ చేయడం సాధ్యపడదు"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"పరికరానికి కనెక్ట్ అయింది. ఇంటర్నెట్‌ను అందిచడం సాధ్యం కాదు."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"తక్కువ క్వాలిటీ"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"ఏదీ లేదు"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"గడువు ముగిసింది"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"సైన్ అప్ చేయడానికి ట్యాప్ చేయండి"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"సభ్యత్వాన్ని రెన్యూ చేసి, కనెక్ట్ చేయడానికి నొక్కండి"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> తెరవబడుతోంది"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"కనెక్ట్ చేయడం సాధ్యపడలేదు"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"సైన్ అప్ పూర్తవుతోంది…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"సైన్ అప్‌ను పూర్తి చేయడం సాధ్యపడలేదు. మళ్ళీ ప్రయత్నించడానికి ట్యాప్ చేయండి."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"సైన్ అప్ పూర్తయింది. కనెక్ట్ చేయబడుతోంది…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"పరికర లొకేషన్‌ను ట్రాక్ చేయడానికి ఉపయోగపడే యూనిక్ IDని ఈ నెట్‌వర్క్ అందుకుంటుంది. "<annotation id="url">"మరింత తెలుసుకోండి"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"చాలా నెమ్మది"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"నెమ్మది"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"సరే"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"మధ్యస్థం"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"వేగవంతం"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"చాలా వేగవంతం"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"ఏవీ లేవు"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"గడువు ముగిసింది"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"సైన్ అప్ చేయడానికి ట్యాప్ చేయండి"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"సభ్యత్వాన్ని రెన్యూ చేసి, కనెక్ట్ చేయడానికి ట్యాప్ చేయండి"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> తెరవబడుతోంది"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"కనెక్ట్ చేయడం సాధ్యపడలేదు"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"సైన్ అప్ పూర్తి కావస్తోంది…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"సైన్ అప్‌ను పూర్తి చేయడం సాధ్యపడలేదు. మళ్ళీ ట్రై చేయడానికి ట్యాప్ చేయండి."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"సైన్ అప్ పూర్తయింది. కనెక్ట్ చేయబడుతోంది…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"పరికర లొకేషన్‌ను ట్రాక్ చేయడానికి ఉపయోగపడే SIM IDని ఈ నెట్‌వర్క్ అందుకుంటుంది. "<annotation id="url">"మరింత తెలుసుకోండి"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"చాలా నెమ్మది"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"నెమ్మది"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"సరే"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"మధ్యస్థం"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"వేగవంతం"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"చాలా వేగవంతం"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-th/arrays.xml b/libs/WifiTrackerLib/res/values-th/arrays.xml
index 2be3409..878febf 100644
--- a/libs/WifiTrackerLib/res/values-th/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-th/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"กำลังสแกน…"</item>
-    <item msgid="6222852518007967736">"กำลังเชื่อมต่อ…"</item>
-    <item msgid="1176401854208153464">"กำลังตรวจสอบสิทธิ์…"</item>
-    <item msgid="1377026397901197257">"กำลังรับที่อยู่ IP…"</item>
-    <item msgid="7627139816052121509">"เชื่อมต่อแล้ว"</item>
-    <item msgid="1598801023719359130">"ถูกระงับ"</item>
-    <item msgid="9160765456671002324">"กำลังยกเลิกการเชื่อมต่อ…"</item>
-    <item msgid="8013176736494493734">"ยกเลิกการเชื่อมต่อแล้ว"</item>
-    <item msgid="4077393480368783785">"ไม่สำเร็จ"</item>
-    <item msgid="605372180740008604">"ถูกบล็อก"</item>
-    <item msgid="5102306451432929048">"หลีกเลี่ยงการเชื่อมต่อกับสัญญาณที่ไม่แรงพอชั่วคราว"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"กำลังสแกน…"</item>
+    <item msgid="9055468790485684083">"กำลังเชื่อมต่อ…"</item>
+    <item msgid="6099499723199990208">"กำลังตรวจสอบสิทธิ์…"</item>
+    <item msgid="6794055951297347103">"กำลังรับที่อยู่ IP…"</item>
+    <item msgid="5450920562291300229">"เชื่อมต่อแล้ว"</item>
+    <item msgid="6332116533879646145">"ถูกระงับ"</item>
+    <item msgid="294459081501073818">"กำลังยกเลิกการเชื่อมต่อ…"</item>
+    <item msgid="1577368920272598676">"เลิกเชื่อมต่อแล้ว"</item>
+    <item msgid="7655843177582495451">"ไม่สำเร็จ"</item>
+    <item msgid="8953752690917593623">"ถูกบล็อก"</item>
+    <item msgid="4400457817750243671">"หลีกเลี่ยงการเชื่อมต่อกับสัญญาณที่ไม่แรงพอชั่วคราว"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-th/strings.xml b/libs/WifiTrackerLib/res/values-th/strings.xml
index 3dd09ad..5985310 100644
--- a/libs/WifiTrackerLib/res/values-th/strings.xml
+++ b/libs/WifiTrackerLib/res/values-th/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"การเชื่อมต่ออัตโนมัติปิดอยู่"</string>
-    <string name="saved_network" msgid="6241977554502802914">"บันทึกโดย<xliff:g id="NAME">%1$s</xliff:g> แล้ว"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"จะไม่เชื่อมต่อโดยอัตโนมัติ"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"เข้าถึงอินเทอร์เน็ตไม่ได้"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"ปัญหาในการตรวจสอบสิทธิ์"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"ตรวจสอบรหัสผ่านและลองอีกครั้ง"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"การกำหนดค่า IP ล้มเหลว"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"ปิดอยู่"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"จุดเข้าใช้งานเต็มชั่วคราว"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"ยกเลิกการเชื่อมต่อแล้ว"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"บันทึกแล้ว"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"แบบจำกัดปริมาณ"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"ไม่มีการวัดปริมาณอินเทอร์เน็ต"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"เชื่อมต่อแล้วผ่าน <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"ใช้งานได้ผ่านทาง <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"เชื่อมต่อโดยอัตโนมัติผ่าน <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"เชื่อมต่ออัตโนมัติผ่านผู้ให้บริการการจัดอันดับเครือข่าย"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"การเชื่อมต่อที่จำกัด"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"เข้าถึงเซิร์ฟเวอร์ DNS ไม่ได้"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"ไม่มีอินเทอร์เน็ต"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"การเชื่อมต่ออัตโนมัติปิดอยู่"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"บันทึกโดย <xliff:g id="NAME">%1$s</xliff:g> แล้ว"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"จะไม่เชื่อมต่อโดยอัตโนมัติ"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"เข้าถึงอินเทอร์เน็ตไม่ได้"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"ปัญหาในการตรวจสอบสิทธิ์"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"ตรวจสอบรหัสผ่านและลองอีกครั้ง"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"การกำหนดค่า IP ล้มเหลว"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"ปิดใช้"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"จุดเข้าใช้งานเต็มชั่วคราว"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"สภาพเครือข่ายไม่เสถียรชั่วคราว"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"สัญญาณไม่ดี ลองเข้าไปใกล้กับเราเตอร์"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"มีการใช้งานเครือข่ายเกินความจุ ลองอีกครั้งในภายหลัง"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"เชื่อมต่อไม่ได้ ลองอีกครั้งในภายหลัง"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"เครือข่ายใช้งานร่วมกับอุปกรณ์นี้ไม่ได้"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"เลิกเชื่อมต่อแล้ว"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"บันทึกแล้ว"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"แบบจำกัดปริมาณ"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"ไม่มีการวัดปริมาณอินเทอร์เน็ต"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"เชื่อมต่อแล้วผ่าน <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"ใช้งานได้ผ่านทาง <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"เชื่อมต่อโดยอัตโนมัติผ่าน <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"เชื่อมต่ออัตโนมัติผ่านผู้ให้บริการการจัดอันดับเครือข่าย"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"การเชื่อมต่อที่จำกัด"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"เข้าถึงเซิร์ฟเวอร์ DNS ส่วนตัวไม่ได้"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"เชื่อมต่ออุปกรณ์แล้ว แต่ไม่มีอินเทอร์เน็ต"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"คุณภาพต่ำ"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"ไม่มี"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"หมดอายุแล้ว"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"แตะเพื่อลงชื่อสมัครใช้"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"แตะเพื่อต่ออายุการสมัครใช้บริการและเชื่อมต่อ"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"กำลังเปิด <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"เชื่อมต่อไม่สำเร็จ"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"กำลังลงชื่อสมัครใช้ให้เสร็จสิ้น…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"ลงชื่อสมัครใช้ไม่สำเร็จ แตะเพื่อลองอีกครั้ง"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"การลงชื่อสมัครใช้เสร็จสมบูรณ์ กำลังเชื่อมต่อ…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"เครือข่ายนี้ได้รับรหัสที่ไม่ซ้ำกันซึ่งใช้ติดตามตำแหน่งอุปกรณ์ได้ "<annotation id="url">"ดูข้อมูลเพิ่มเติม"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"ช้ามาก"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"ช้า"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ตกลง"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"ปานกลาง"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"เร็ว"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"เร็วมาก"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"ไม่มี"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"หมดอายุ"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"แตะเพื่อลงชื่อสมัครใช้"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"แตะเพื่อต่ออายุการสมัครใช้บริการและเชื่อมต่อ"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"กำลังเปิด <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"เชื่อมต่อไม่ได้"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"กำลังลงชื่อสมัครใช้ให้เสร็จสิ้น…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"ลงชื่อสมัครใช้ไม่สำเร็จ แตะเพื่อลองอีกครั้ง"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"การลงชื่อสมัครใช้เสร็จสมบูรณ์ กำลังเชื่อมต่อ…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"เครือข่ายนี้จะได้รับรหัส SIM ซึ่งใช้ติดตามตำแหน่งอุปกรณ์ได้ "<annotation id="url">"ดูข้อมูลเพิ่มเติม"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"ช้ามาก"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"ช้า"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"พอใช้"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"กลาง"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"เร็ว"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"เร็วมาก"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-tl/arrays.xml b/libs/WifiTrackerLib/res/values-tl/arrays.xml
index 1a511cf..70ed924 100644
--- a/libs/WifiTrackerLib/res/values-tl/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-tl/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Nagsa-scan…"</item>
-    <item msgid="6222852518007967736">"Kumokonekta…"</item>
-    <item msgid="1176401854208153464">"Ino-authenticate…"</item>
-    <item msgid="1377026397901197257">"Kinukuha ang IP address…"</item>
-    <item msgid="7627139816052121509">"Konektado"</item>
-    <item msgid="1598801023719359130">"Sinuspinde"</item>
-    <item msgid="9160765456671002324">"Dinidiskonekta…"</item>
-    <item msgid="8013176736494493734">"Nadiskonekta"</item>
-    <item msgid="4077393480368783785">"Hindi Matagumpay"</item>
-    <item msgid="605372180740008604">"Naka-block"</item>
-    <item msgid="5102306451432929048">"Pansamantalang iniiwasan ang mabagal na koneksyon"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Nagsa-scan…"</item>
+    <item msgid="9055468790485684083">"Kumokonekta…"</item>
+    <item msgid="6099499723199990208">"Ino-authenticate…"</item>
+    <item msgid="6794055951297347103">"Kinukuha ang IP address…"</item>
+    <item msgid="5450920562291300229">"Konektado"</item>
+    <item msgid="6332116533879646145">"Nasuspinde"</item>
+    <item msgid="294459081501073818">"Nagdidiskonekta…"</item>
+    <item msgid="1577368920272598676">"Nadiskonekta"</item>
+    <item msgid="7655843177582495451">"Hindi matagumpay"</item>
+    <item msgid="8953752690917593623">"Naka-block"</item>
+    <item msgid="4400457817750243671">"Pansamantalang iniiwasan ang mahinang koneksyon"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-tl/strings.xml b/libs/WifiTrackerLib/res/values-tl/strings.xml
index 88c0d39..8d21cc6 100644
--- a/libs/WifiTrackerLib/res/values-tl/strings.xml
+++ b/libs/WifiTrackerLib/res/values-tl/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Naka-off ang Auto-connect"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Na-save ng <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Hindi awtomatikong kokonekta"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Walang access sa internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Problema sa pag-authenticate"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Suriin ang password at subukang muli"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Hindi na-configure ang IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Naka-disable"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Pansamantalang puno ang access point"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Nadiskonekta"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Na-save"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Nakametro"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Hindi Nakametro"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Nakakonekta sa pamamagitan ng <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Available sa pamamagitan ng <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Awtomatikong nakakonekta sa pamamagitan ng <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Awtomatikong nakakonekta sa pamamagitan ng provider ng rating ng network"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Limitadong koneksyon"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Hindi ma-access ang pribadong DNS server"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Walang internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Naka-off ang Auto-connect"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Na-save ng/ni <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Hindi awtomatikong kokonekta"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Walang access sa internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problema sa pag-authenticate"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Suriin ang password at subukan ulit"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Hindi na-configure ang IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Naka-disable"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Pansamantalang puno ang access point"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Pansamantalang hindi magandang kundisyon ng network"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Mahinang signal. Subukang mas lumapit sa router."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Lampas na sa kapasidad ang network. Subukan ulit sa ibang pagkakataon."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Hindi makakonekta. Subukan ulit sa ibang pagkakataon."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Hindi compatible ang network sa device na ito"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Nadiskonekta"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Naka-save"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Nakametro"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Hindi nakametro"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Nakakonekta sa pamamagitan ng <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Available sa pamamagitan ng <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Awtomatikong nakakonekta sa pamamagitan ng <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Awtomatikong nakakonekta sa pamamagitan ng provider ng rating ng network"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Limitadong koneksyon"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Hindi ma-access ang pribadong DNS server"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Nakakonekta sa device. Hindi makapagbigay ng internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Mababang kalidad"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Wala"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Nag-expire na"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"I-tap para mag-sign up"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"I-tap para i-renew ang subscription at kumonekta"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Binubuksan ang <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Hindi makakonekta"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Kinukumpleto ang pag-sign up…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Hindi makumpleto ang pag-sign up. I-tap para subukan ulit."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Kumpleto na ang pag-sign up. Kumokonekta…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Tumatanggap ang network na ito ng natatanging ID na magagamit sa pag-track ng lokasyon ng device. "<annotation id="url">"Matuto pa"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Napakabagal"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Mabagal"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Katamtaman"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Mabilis"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Napakabilis"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Wala"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Nag-expire na"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"I-tap para mag-sign up"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"I-tap para i-renew ang subscription at kumonekta"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Binubuksan ang <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Hindi makakonekta"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Kinukumpleto ang pag-sign up…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Hindi makumpleto ang pag-sign up. I-tap para subukan ulit."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Kumpleto na ang pag-sign up. Kumokonekta…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Tumatanggap ang network na ito ng SIM ID na magagamit sa pag-track sa lokasyon ng device. "<annotation id="url">"Matuto pa"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Napakabagal"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Mabagal"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Katamtaman"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Mabilis"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Napakabilis"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Hindi awtomatikong kokonekta ang Wi-Fi sa ngayon"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-tr/arrays.xml b/libs/WifiTrackerLib/res/values-tr/arrays.xml
index 59eb7a1..9e7db2e 100644
--- a/libs/WifiTrackerLib/res/values-tr/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-tr/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Taranıyor…"</item>
-    <item msgid="6222852518007967736">"Bağlanıyor…"</item>
-    <item msgid="1176401854208153464">"Kimlik doğrulanıyor…"</item>
-    <item msgid="1377026397901197257">"IP adresi alınıyor…"</item>
-    <item msgid="7627139816052121509">"Bağlı"</item>
-    <item msgid="1598801023719359130">"Askıya alındı"</item>
-    <item msgid="9160765456671002324">"Bağlantı kesiliyor…"</item>
-    <item msgid="8013176736494493734">"Bağlı değil"</item>
-    <item msgid="4077393480368783785">"Başarısız"</item>
-    <item msgid="605372180740008604">"Engellendi"</item>
-    <item msgid="5102306451432929048">"Zayıf bağlantıdan geçici olarak kaçınılıyor"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Taranıyor…"</item>
+    <item msgid="9055468790485684083">"Bağlanıyor…"</item>
+    <item msgid="6099499723199990208">"Kimlik doğrulanıyor…"</item>
+    <item msgid="6794055951297347103">"IP adresi alınıyor…"</item>
+    <item msgid="5450920562291300229">"Bağlı"</item>
+    <item msgid="6332116533879646145">"Askıya alındı"</item>
+    <item msgid="294459081501073818">"Bağlantı kesiliyor…"</item>
+    <item msgid="1577368920272598676">"Bağlı değil"</item>
+    <item msgid="7655843177582495451">"Başarısız"</item>
+    <item msgid="8953752690917593623">"Engellendi"</item>
+    <item msgid="4400457817750243671">"Zayıf bağlantıdan geçici olarak kaçınılıyor"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-tr/strings.xml b/libs/WifiTrackerLib/res/values-tr/strings.xml
index 9c165cd..fa99bd5 100644
--- a/libs/WifiTrackerLib/res/values-tr/strings.xml
+++ b/libs/WifiTrackerLib/res/values-tr/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Otomatik bağlanma kapalı"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> tarafından kaydedildi"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Otomatik olarak bağlanmayacak"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"İnternet erişimi yok"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Kimlik doğrulama sorunu"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Şifreyi kontrol edin ve tekrar deneyin"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP yapılandırması hatası"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Devre dışı"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Erişim noktası geçici olarak dolu"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Bağlı değil"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Kaydedildi"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Sayaçlı"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Sayaçsız"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> ile bağlandı"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> ile kullanılabilir"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> ile otomatik olarak bağlandı"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Ağ derecelendirme sağlayıcı aracılığıyla otomatik olarak bağlandı"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Sınırlı bağlantı"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Gizli DNS sunucusuna erişilemiyor"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"İnternet yok"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Otomatik bağlanma kapalı"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"<xliff:g id="NAME">%1$s</xliff:g> tarafından kaydedildi"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Otomatik olarak bağlanmayacak"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"İnternet erişimi yok"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Kimlik doğrulama sorunu"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Şifreyi kontrol edip tekrar deneyin"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP yapılandırması hatası"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Devre dışı"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Erişim noktası geçici olarak dolu"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Geçici kötü ağ koşulları"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Sinyal gücü zayıf. Yönlendiriciye yaklaşmayı deneyin."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Ağ kapasitesi aşıldı. Daha sonra tekrar deneyin."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Bağlanılamıyor. Daha sonra tekrar deneyin."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Ağ bu cihazla uyumlu değil"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Bağlı değil"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Kayıtlı"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Sayaçlı"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Sınırsız"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> ile bağlandı"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> ile kullanılabilir"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> ile otomatik olarak bağlandı"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Ağ derecelendirme sağlayıcısı aracılığıyla otomatik olarak bağlandı"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Sınırlı bağlantı"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Gizli DNS sunucusuna erişilemiyor"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Cihaza bağlandı. İnternet bağlantısı sağlanamıyor."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Düşük kalite"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Yok"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Süresi sona erdi"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Kaydolmak için dokunun"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Aboneliği yenilemek ve bağlanmak için dokunun"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> açılıyor"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Bağlanılamadı"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Kayıt işlemi tamamlanıyor…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Kayıt işlemi tamamlanamadı. Tekrar denemek için dokunun."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Kayıt tamamlandı. Bağlanıyor…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Bu ağ, cihaz konumunu izlemek için kullanılabilecek benzersiz bir kimlik alır. "<annotation id="url">"Daha fazla bilgi"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Çok Yavaş"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Yavaş"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Tamam"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Orta"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Hızlı"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Çok Hızlı"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Yok"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Süresi doldu"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Kaydolmak için dokunun"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Aboneliği yenilemek ve bağlanmak için dokunun"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> açılıyor"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Bağlanılamadı"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Kayıt işlemi tamamlanıyor…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Kayıt işlemi tamamlanamadı. Tekrar denemek için dokunun."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Kayıt tamamlandı. Bağlanıyor…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Bu ağ, cihaz konumunu izlemek için kullanılabilecek bir SIM kimliği alır. "<annotation id="url">"Daha fazla bilgi"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Çok Yavaş"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Yavaş"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Normal"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Orta"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Hızlı"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Çok Hızlı"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Kablosuz ağa şu anda otomatik olarak bağlanılamıyor"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-uk/arrays.xml b/libs/WifiTrackerLib/res/values-uk/arrays.xml
index 69158c0..5e2cf54 100644
--- a/libs/WifiTrackerLib/res/values-uk/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-uk/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Пошук…"</item>
-    <item msgid="6222852518007967736">"Підключення…"</item>
-    <item msgid="1176401854208153464">"Автентифікація…"</item>
-    <item msgid="1377026397901197257">"Отримання ІР-адреси…"</item>
-    <item msgid="7627139816052121509">"Підключено"</item>
-    <item msgid="1598801023719359130">"Заблоковано"</item>
-    <item msgid="9160765456671002324">"Відключення…"</item>
-    <item msgid="8013176736494493734">"Відключено"</item>
-    <item msgid="4077393480368783785">"Помилка"</item>
-    <item msgid="605372180740008604">"Заблоковано"</item>
-    <item msgid="5102306451432929048">"Перевірка підключення"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Пошук…"</item>
+    <item msgid="9055468790485684083">"Підключення…"</item>
+    <item msgid="6099499723199990208">"Автентифікація…"</item>
+    <item msgid="6794055951297347103">"Отримання ІР-адреси…"</item>
+    <item msgid="5450920562291300229">"Підключено"</item>
+    <item msgid="6332116533879646145">"Заблоковано"</item>
+    <item msgid="294459081501073818">"Відключення…"</item>
+    <item msgid="1577368920272598676">"Відключено"</item>
+    <item msgid="7655843177582495451">"Помилка"</item>
+    <item msgid="8953752690917593623">"Заблоковано"</item>
+    <item msgid="4400457817750243671">"Перевірка підключення"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-uk/strings.xml b/libs/WifiTrackerLib/res/values-uk/strings.xml
index dbb1b89..6b3a5b0 100644
--- a/libs/WifiTrackerLib/res/values-uk/strings.xml
+++ b/libs/WifiTrackerLib/res/values-uk/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Автоматичне підключення вимкнено"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Збережено додатком <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Не підключатиметься автоматично"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Немає доступу до Інтернету"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Проблема з автентифікацією"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Перевірте пароль і повторіть спробу"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Помилка конфігурації IP-адреси"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Вимкнено"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Точка доступу тимчасово переповнена"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Від’єднано"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Збережено"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"З тарифікацією трафіку"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Без тарифікації трафіку"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Підключено через додаток <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Доступно в додатку <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Автоматично підключено через <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Автоматично під’єднано через постачальника оцінки якості мережі"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Обмежене з’єднання"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Немає доступу до приватного DNS-сервера"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Немає Інтернету"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Автоматичне підключення вимкнено"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Збережено додатком <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Не підключатиметься автоматично"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Немає доступу до Інтернету"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Проблема з автентифікацією"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Перевірте пароль і повторіть спробу"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Помилка конфігурації IP-адреси"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Вимкнено"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Точка доступу тимчасово переповнена"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Тимчасові проблеми з\'єднання з мережею"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Слабкий сигнал. Підійдіть ближче до маршрутизатора."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Мережа перенавантажена. Повторіть спробу пізніше."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Не вдалося підключитися. Повторіть спробу пізніше."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Мережа несумісна з цим пристроєм"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Відключено"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Збережено"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"З тарифікацією трафіку"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Без тарифікації трафіку"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Підключено через додаток <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Доступно в додатку <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Автоматично підключено через додаток <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Автоматично підключено через постачальника оцінки якості мережі"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Обмежене підключення"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Немає доступу до приватного DNS-сервера"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Підключено до пристрою. Інтернет-з\'єднання відсутнє."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Низька якість"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Немає"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Термін дії минув"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Торкніться, щоб зареєструватись"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Натисніть, щоб поновити підписку та підключитися"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> відкривається"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Не вдалося підключитись"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Завершення реєстрації…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Не вдалося завершити реєстрацію. Торкніться, щоб повторити спробу."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Реєстрацію завершено. Підключення…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Ця мережа отримує унікальний ідентифікатор, за допомогою якого можна відстежити місцезнаходження пристрою. "<annotation id="url">"Докладніше"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Дуже повільна"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Повільна"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ОК"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Середня"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Швидка"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Дуже швидка"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Немає"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Термін дії минув"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Торкніться, щоб увійти"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Натисніть, щоб поновити підписку та підключитися"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> відкривається"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Не вдалося підключитись"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Завершення реєстрації…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Не вдалося завершити реєстрацію. Торкніться, щоб повторити спробу."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Реєстрацію завершено. Підключення…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Ця мережа отримує ідентифікатор SIM-карти, за допомогою якого можна відстежити місцезнаходження пристрою. "<annotation id="url">"Докладніше"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Дуже повільна"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Повільна"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Середня"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Швидка"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Дуже швидка"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ur/arrays.xml b/libs/WifiTrackerLib/res/values-ur/arrays.xml
index bd68c6d..fa30498 100644
--- a/libs/WifiTrackerLib/res/values-ur/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-ur/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"اسکین ہو رہا ہے…"</item>
-    <item msgid="6222852518007967736">"منسلک ہو رہا ہے…"</item>
-    <item msgid="1176401854208153464">"توثیق ہو رہی ہے…"</item>
-    <item msgid="1377026397901197257">"‏IP پتہ حاصل کر رہا ہے…"</item>
-    <item msgid="7627139816052121509">"منسلک ہے"</item>
-    <item msgid="1598801023719359130">"معطل ہے"</item>
-    <item msgid="9160765456671002324">"غیر منسلک ہو رہا ہے…"</item>
-    <item msgid="8013176736494493734">"غیر منسلک ہے"</item>
-    <item msgid="4077393480368783785">"ناکام"</item>
-    <item msgid="605372180740008604">"مسدود"</item>
-    <item msgid="5102306451432929048">"عارضی طور پر خراب کنکشن سے اجتناب کر رہا ہے"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"اسکین ہو رہا ہے…"</item>
+    <item msgid="9055468790485684083">"منسلک ہو رہا ہے…"</item>
+    <item msgid="6099499723199990208">"توثیق ہو رہی ہے…"</item>
+    <item msgid="6794055951297347103">"‏IP پتہ حاصل کر رہا ہے…"</item>
+    <item msgid="5450920562291300229">"منسلک"</item>
+    <item msgid="6332116533879646145">"معطل"</item>
+    <item msgid="294459081501073818">"غیر منسلک ہو رہا ہے…"</item>
+    <item msgid="1577368920272598676">"غیر منسلک"</item>
+    <item msgid="7655843177582495451">"ناکام"</item>
+    <item msgid="8953752690917593623">"مسدود"</item>
+    <item msgid="4400457817750243671">"عارضی طور پر خراب کنکشن سے اجتناب کر رہا ہے"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-ur/strings.xml b/libs/WifiTrackerLib/res/values-ur/strings.xml
index 3d7d2ba..f0dc044 100644
--- a/libs/WifiTrackerLib/res/values-ur/strings.xml
+++ b/libs/WifiTrackerLib/res/values-ur/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"خود کار طور پر منسلک کریں آف ہے"</string>
-    <string name="saved_network" msgid="6241977554502802914">"<xliff:g id="NAME">%1$s</xliff:g> کی جانب سے محفوظ کردہ"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"خودکار طور پر منسلک نہیں ہو گا"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"انٹرنیٹ تک کوئی رسائی نہیں"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"توثیق کا مسئلہ"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"پاس ورڈ چیک کر کے دوبارہ کوشش کریں"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"‏IP کنفیگریشن کی ناکامی"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"غیر فعال"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"رسائی پوائنٹ عارضی طور پر فُل ہے"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"غیر منسلک"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"محفوظ کردیا گیا"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"میٹرڈ"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"غیر میٹر شدہ"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> کے ذریعے منسلک"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"دستیاب بذریعہ <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"خودکار طور پر <xliff:g id="NAME">%1$s</xliff:g> کے ذریعے منسلک"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"نیٹ ورک درجہ بندی کے فراہم کنندہ کے ذریعے از خود منسلک"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"محدود کنکشن"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"‏نجی DNS سرور تک رسائی حاصل نہیں کی جا سکی"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"انٹرنیٹ نہیں ہے"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"خود کار طور پر منسلک ہونا آف ہے"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"‫<xliff:g id="NAME">%1$s</xliff:g> کی جانب سے محفوظ کردہ"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"خودکار طور پر منسلک نہیں ہو گا"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"انٹرنیٹ تک کوئی رسائی نہیں"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"توثیق کا مسئلہ"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"پاس ورڈ چیک کرکے دوبارہ کوشش کریں"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"‏‫IP کنفیگریشن کی ناکامی"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"غیر فعال"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"رسائی پوائنٹ عارضی طور پر فُل ہے"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"عارضی خراب نیٹ ورک کے حالات"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"کمزور سگنل۔ روٹر کے قریب منتقل کرنے کی کوشش کریں۔"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"نیٹ ورک کی گنجائش حد سے زیادہ ہے۔ بعد میں دوبارہ کوشش کریں۔"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"منسلک نہیں ہو سکا۔ بعد میں دوبارہ کوشش کریں۔"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"نیٹ ورک اس آلے کے ساتھ موافقت نہیں رکھتا ہے"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"غیر منسلک"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"محفوظ کردہ"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"میٹرڈ"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"غیر میٹر شدہ"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"‫<xliff:g id="NAME">%1$s</xliff:g> کے ذریعے منسلک"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"دستیاب بذریعہ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"خودکار طور پر <xliff:g id="NAME">%1$s</xliff:g> کے ذریعے منسلک"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"نیٹ ورک درجہ بندی کے فراہم کنندہ کے ذریعے از خود منسلک"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"محدود کنکشن"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"‏نجی DNS سرور تک رسائی حاصل نہیں کی جا سکی"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"آلے سے منسلک ہے۔ انٹرنیٹ فراہم نہیں کیا جا سکتا۔"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"ادنٰی معیار"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"کوئی نہیں"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"میعاد ختم ہو گئی"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"سائن اپ کے لیے تھپتھپائیں"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"سبسکرپشن کی تجدید کرنے اور منسلک ہونے کے لیے تھپتھپائیں"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> کھل رہا ہے"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"منسلک نہیں کیا جا سکا"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"سائن اپ مکمل ہو رہا ہے…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"سائن اپ مکمل نہیں ہو سکا۔ دوبارہ کوشش کرنے کے لیے تھپتھپائیں۔"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"سائن اپ مکمل ہو گیا۔ منسلک ہو رہا ہے…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"‏اس نیٹ ورک کو ایک منفرد ID موصول ہوتی ہے جو آلہ کے مقام کو ٹریک کرنے کیلئے استعمال ہو سکتی ہے۔ "<annotation id="url">"مزید جانیں"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"بہت سست"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"سست"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"ٹھیک ہے"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"متوسط"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"تیز"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"بہت تیز"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"کوئی نہیں"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"میعاد ختم شدہ"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"سائن اپ کے لیے تھپتھپائیں"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"سبسکرپشن کی تجدید کرنے اور منسلک ہونے کے لیے تھپتھپائیں"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"‫<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> کھل رہا ہے"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"منسلک نہیں کیا جا سکا"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"سائن اپ مکمل ہو رہا ہے…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"سائن اپ مکمل نہیں ہو سکا۔ دوبارہ کوشش کرنے کے لیے تھپتھپائیں۔"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"سائن اپ مکمل ہو گیا۔ منسلک ہو رہا ہے…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"‏اس نیٹ ورک کو ایک SIM ID موصول ہوتی ہے جو آلہ کے مقام کو ٹریک کرنے کیلئے استعمال ہو سکتی ہے۔ "<annotation id="url">"مزید جانیں"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"بہت سست"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"سست"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"ٹھیک ہے"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"متوسط"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"تیز"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"بہت تیز"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-uz/arrays.xml b/libs/WifiTrackerLib/res/values-uz/arrays.xml
index 56c2e91..d6decee 100644
--- a/libs/WifiTrackerLib/res/values-uz/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-uz/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Qidirilmoqda…"</item>
-    <item msgid="6222852518007967736">"Ulanmoqda…"</item>
-    <item msgid="1176401854208153464">"Autentifikatsiya qilinmoqda…"</item>
-    <item msgid="1377026397901197257">"IP manzil olinmoqda…"</item>
-    <item msgid="7627139816052121509">"Ulangan"</item>
-    <item msgid="1598801023719359130">"Vaqtincha uzilgan"</item>
-    <item msgid="9160765456671002324">"Uzilmoqda…"</item>
-    <item msgid="8013176736494493734">"Uzilgan"</item>
-    <item msgid="4077393480368783785">"Ulanmadi"</item>
-    <item msgid="605372180740008604">"Bloklandi"</item>
-    <item msgid="5102306451432929048">"Signali kuchsiz tarmoqqa vaqtinchalik ulanilmasin"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Qidirilmoqda…"</item>
+    <item msgid="9055468790485684083">"Ulanmoqda…"</item>
+    <item msgid="6099499723199990208">"Autentifikatsiya qilinmoqda…"</item>
+    <item msgid="6794055951297347103">"IP manzil olinmoqda…"</item>
+    <item msgid="5450920562291300229">"Ulandi"</item>
+    <item msgid="6332116533879646145">"Bloklangan"</item>
+    <item msgid="294459081501073818">"Uzilmoqda…"</item>
+    <item msgid="1577368920272598676">"Uzildi"</item>
+    <item msgid="7655843177582495451">"Ulanmadi"</item>
+    <item msgid="8953752690917593623">"Bloklandi"</item>
+    <item msgid="4400457817750243671">"Signali kuchsiz tarmoqqa vaqtinchalik ulanilmasin"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-uz/strings.xml b/libs/WifiTrackerLib/res/values-uz/strings.xml
index 4a6e805..e421c77 100644
--- a/libs/WifiTrackerLib/res/values-uz/strings.xml
+++ b/libs/WifiTrackerLib/res/values-uz/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Avtomatik ulanish yoqilmagan"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Saqlangan: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Avtomatik ravishda ulanilmaydi"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Internetga ulanmagan"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Haqiqiylikni tekshirishda muammo"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Parolni tekshirib, qaytadan urining"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP manzil sozlanmadi"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Yoqilmagan"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Internet kirish nuqtasi vaqtinchalik to‘lgan"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Ulanmagan"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Saqlangan"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Trafik hisoblanadigan tarmoq"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Trafik hisobi yuritilmaydigan tarmoq"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> orqali ulandi"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> ilovasi orqali mavjud"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> orqali avtomatik ulandi"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Tarmoqlar reytingi muallifi orqali avtomatik ulandi"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Cheklangan aloqa"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Xususiy DNS server ishlamayapti"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Internetga ulanmagansiz"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Avtomatik ulash yoqilmagan"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Saqlangan: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Avtomatik ravishda ulanilmaydi"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Internetga ulanmagan"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Haqiqiylikni tekshirishda muammo"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Parolni tekshirib, qaytadan urining"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP manzil sozlanmadi"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Yoqilmagan"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Ulanish nuqtasi vaqtinchalik toʻlgan"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Tarmoq signali vaqtincha kuchsiz"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Signal kuchsiz. Routerga yaqinlashtiring."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Tarmoqda joy qolmadi. Keyinroq urining."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Ulanish imkonsiz. Keyinroq urining."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Tarmoq bu qurilma bilan mos emas."</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Uzildi"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Saqlangan"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Trafik hisoblanadi"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Trafik hisoblanmaydi"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> orqali ulandi"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"<xliff:g id="NAME">%1$s</xliff:g> ilovasi orqali mavjud"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"<xliff:g id="NAME">%1$s</xliff:g> orqali avtomatik ulandi"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Tarmoqlar reytingi muallifi orqali avtomatik ulandi"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Cheklangan aloqa"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Xususiy DNS server ishlamayapti"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Qurilmaga ulandi. Internetga ulanmagan."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Sifati past"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Hech qanday"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Muddati tugagan"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Registratsiya qilish uchun bosing"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Obunani davom ettirish va ulanish uchun bosing"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ochilmoqda"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Ulanmadi"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Registratsiya tamomlanmoqda…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Registratsiya tamomlanmadi. Qayta urinish uchun tegining."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Registratsiya qilindi. Ulanmoqda…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Bu tarmoqqa qurilma joylashuvini aniqlash imkonini beruvchi maxsus identifikator beriladi. "<annotation id="url">"Batafsil"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Juda sekin"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Sekin"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"OK"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"O‘rtacha"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Tez"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Juda tez"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"–"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Muddati tugagan"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Yozilish uchun bosing"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Obunani davom ettirish va ulanish uchun bosing"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> ochilmoqda"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Ulanmadi"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Registratsiya tamomlanmoqda…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Registratsiya tamomlanmadi. Qayta urinish uchun tegining."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Registratsiya qilindi. Ulanmoqda…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Bu tarmoqqa qurilma joylashuvini aniqlash imkonini beruvchi SIM identifikator beriladi. "<annotation id="url">"Batafsil"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Juda sekin"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Sekin"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"OK"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Oʻrtacha"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Tez"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Juda tez"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"Wi-Fi hozir avtomatik ulanmaydi"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-vi/arrays.xml b/libs/WifiTrackerLib/res/values-vi/arrays.xml
index 4294b6e..730a108 100644
--- a/libs/WifiTrackerLib/res/values-vi/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-vi/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Đang quét…"</item>
-    <item msgid="6222852518007967736">"Đang kết nối…"</item>
-    <item msgid="1176401854208153464">"Đang xác thực…"</item>
-    <item msgid="1377026397901197257">"Đang lấy địa chỉ IP…"</item>
-    <item msgid="7627139816052121509">"Đã kết nối"</item>
-    <item msgid="1598801023719359130">"Bị tạm ngưng"</item>
-    <item msgid="9160765456671002324">"Đang ngắt kết nối…"</item>
-    <item msgid="8013176736494493734">"Đã ngắt kết nối"</item>
-    <item msgid="4077393480368783785">"Không thành công"</item>
-    <item msgid="605372180740008604">"Bị chặn"</item>
-    <item msgid="5102306451432929048">"Tạm thời tránh kết nối kém"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Đang quét…"</item>
+    <item msgid="9055468790485684083">"Đang kết nối…"</item>
+    <item msgid="6099499723199990208">"Đang xác thực…"</item>
+    <item msgid="6794055951297347103">"Đang lấy địa chỉ IP…"</item>
+    <item msgid="5450920562291300229">"Đã kết nối"</item>
+    <item msgid="6332116533879646145">"Bị tạm ngưng"</item>
+    <item msgid="294459081501073818">"Đang ngắt kết nối…"</item>
+    <item msgid="1577368920272598676">"Đã ngắt kết nối"</item>
+    <item msgid="7655843177582495451">"Không thành công"</item>
+    <item msgid="8953752690917593623">"Bị chặn"</item>
+    <item msgid="4400457817750243671">"Tạm thời tránh kết nối kém"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-vi/strings.xml b/libs/WifiTrackerLib/res/values-vi/strings.xml
index 0dbce3a..ea69e9b 100644
--- a/libs/WifiTrackerLib/res/values-vi/strings.xml
+++ b/libs/WifiTrackerLib/res/values-vi/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Tính năng tự động kết nối đang tắt"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Do ứng dụng <xliff:g id="NAME">%1$s</xliff:g> lưu"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Sẽ không tự động kết nối"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Không có kết nối Internet"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Sự cố xác thực"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Kiểm tra mật khẩu và thử lại"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Lỗi cấu hình IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Đã tắt"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Điểm truy cập tạm thời đã đạt đến giới hạn số lượng thiết bị truy cập."</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Đã ngắt kết nối"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Đã lưu"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Đo lượng dữ liệu"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Không đo lượng dữ liệu"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Đã kết nối qua <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Được cung cấp qua <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Đã tự động kết nối qua <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Tự động được kết nối qua nhà cung cấp dịch vụ xếp hạng mạng"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Kết nối giới hạn"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Không thể truy cập máy chủ DNS riêng tư"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Không có Internet"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Tính năng tự động kết nối đang tắt"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Do ứng dụng <xliff:g id="NAME">%1$s</xliff:g> lưu"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Sẽ không tự động kết nối"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Không có kết nối Internet"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Sự cố xác thực"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Kiểm tra mật khẩu và thử lại"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Lỗi cấu hình IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Đã tắt"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Điểm truy cập đã tạm thời đạt đến giới hạn số lượng thiết bị truy cập"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Tình trạng mạng kém tạm thời"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Tín hiệu yếu. Hãy thử di chuyển đến gần bộ định tuyến hơn."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Mạng bị quá tải. Hãy thử lại sau."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Không thể kết nối. Hãy thử lại sau."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Mạng không tương thích với thiết bị này"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Đã ngắt kết nối"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Đã lưu"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Đo lượng dữ liệu"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Không đo lượng dữ liệu"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Đã kết nối qua <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Được cung cấp qua <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Đã tự động kết nối qua <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Đã tự động kết nối qua nhà cung cấp dịch vụ xếp hạng mạng"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Kết nối giới hạn"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Không thể truy cập máy chủ DNS riêng tư"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Đã kết nối với thiết bị. Không thể cung cấp Internet."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Chất lượng thấp"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Không"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Đã hết hạn"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Nhấn để đăng ký"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Nhấn để gia hạn gói đăng ký và kết nối"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Đang mở <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Không thể kết nối"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Đang hoàn tất việc đăng ký…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Không thể hoàn tất việc đăng ký. Hãy nhấn để thử lại."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Đã đăng ký xong. Đang kết nối…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Mạng này nhận được một mã nhận dạng duy nhất có thể dùng để theo dõi vị trí của thiết bị. "<annotation id="url">"Tìm hiểu thêm"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Rất chậm"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Chậm"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"Khá tốt"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Trung bình"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Nhanh"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Rất nhanh"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Không có"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Đã hết hạn"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Nhấn để đăng ký"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Nhấn để gia hạn gói đăng ký và kết nối"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Đang mở <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Không thể kết nối"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Đang hoàn tất đăng ký…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Không thể hoàn tất quá trình đăng ký. Hãy nhấn để thử lại."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Đã đăng ký xong. Đang kết nối…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Mạng này nhận được một mã nhận dạng SIM có thể dùng để theo dõi vị trí của thiết bị. "<annotation id="url">"Tìm hiểu thêm"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Rất chậm"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Chậm"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"Khá tốt"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Trung bình"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Nhanh"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Rất nhanh"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-zh-rCN/arrays.xml b/libs/WifiTrackerLib/res/values-zh-rCN/arrays.xml
index 72c3cf4..530080a 100644
--- a/libs/WifiTrackerLib/res/values-zh-rCN/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-zh-rCN/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"正在扫描…"</item>
-    <item msgid="6222852518007967736">"正在连接…"</item>
-    <item msgid="1176401854208153464">"正在验证身份…"</item>
-    <item msgid="1377026397901197257">"正在获取 IP 地址…"</item>
-    <item msgid="7627139816052121509">"已连接"</item>
-    <item msgid="1598801023719359130">"已暂停"</item>
-    <item msgid="9160765456671002324">"正在断开连接…"</item>
-    <item msgid="8013176736494493734">"已断开连接"</item>
-    <item msgid="4077393480368783785">"失败"</item>
-    <item msgid="605372180740008604">"已屏蔽"</item>
-    <item msgid="5102306451432929048">"暂时关闭(网络状况不佳)"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"正在扫描…"</item>
+    <item msgid="9055468790485684083">"正在连接…"</item>
+    <item msgid="6099499723199990208">"正在验证身份…"</item>
+    <item msgid="6794055951297347103">"正在获取 IP 地址…"</item>
+    <item msgid="5450920562291300229">"已连接"</item>
+    <item msgid="6332116533879646145">"已暂停"</item>
+    <item msgid="294459081501073818">"正在断开连接…"</item>
+    <item msgid="1577368920272598676">"已断开连接"</item>
+    <item msgid="7655843177582495451">"失败"</item>
+    <item msgid="8953752690917593623">"已屏蔽"</item>
+    <item msgid="4400457817750243671">"连接状况不佳,暂时停用"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-zh-rCN/strings.xml b/libs/WifiTrackerLib/res/values-zh-rCN/strings.xml
index 4b8e777..1ca7472 100644
--- a/libs/WifiTrackerLib/res/values-zh-rCN/strings.xml
+++ b/libs/WifiTrackerLib/res/values-zh-rCN/strings.xml
@@ -16,42 +16,49 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"自动连接已关闭"</string>
-    <string name="saved_network" msgid="6241977554502802914">"由“<xliff:g id="NAME">%1$s</xliff:g>”保存"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"无法自动连接"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"无法访问互联网"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"身份验证出现问题"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"请检查密码,然后重试"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP 配置失败"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"已停用"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"接入点暂时满载"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"已断开连接"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"已保存"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"按流量计费"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"不按流量计费"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"已通过<xliff:g id="NAME">%1$s</xliff:g>连接到网络"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"可通过“<xliff:g id="NAME">%1$s</xliff:g>”使用"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"已通过<xliff:g id="NAME">%1$s</xliff:g>自动连接"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"已自动连接(通过网络评分服务提供方)"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"网络连接受限"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"无法访问私人 DNS 服务器"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"无法访问互联网"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"自动连接已关闭"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"已由<xliff:g id="NAME">%1$s</xliff:g>保存"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"无法自动连接"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"无法访问互联网"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"身份验证出现问题"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"请检查密码是否正确,然后重试"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP 配置失败"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"已停用"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"接入点暂时满载"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"临时性网络连接状况不佳"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"信号微弱。请尝试移到离路由器更近的地方。"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"网络已过载。请稍后重试。"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"无法连接。请稍后重试。"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"网络与此设备不兼容"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"已断开连接"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"已保存"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"按流量计费"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"不按流量计费"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"已通过<xliff:g id="NAME">%1$s</xliff:g>连接"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"可通过<xliff:g id="NAME">%1$s</xliff:g>使用"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"已通过<xliff:g id="NAME">%1$s</xliff:g>自动连接"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"已通过网络评分服务提供方自动连接"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"网络连接受限"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"无法访问专用 DNS 服务器"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"已连接到设备,但无法提供互联网连接。"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"质量不佳"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"无"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"已失效"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"点按即可注册"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"点按即可续订并连接"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"正在打开<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"无法连接"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"正在完成注册…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"无法完成注册。点按即可重试。"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"注册完毕。正在连接…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"此网络会收到可用于跟踪设备位置的唯一 ID。"<annotation id="url">"了解详情"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"很慢"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"慢"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"良好"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"适中"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"快"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"很快"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"无"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"已过期"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"点按即可注册"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"点按即可续订并连接"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"正在打开<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"无法连接"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"正在完成注册…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"无法完成注册。点按即可重试。"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"注册完毕。正在连接…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"此网络会收到可用于跟踪设备位置的 SIM 卡 ID。"<annotation id="url">"了解详情"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"很慢"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"慢"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"尚可"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"中"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"快"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"很快"</string>
+    <!-- no translation found for wifitrackerlib_wifi_wont_autoconnect_for_now (4923161724964349851) -->
+    <skip />
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-zh-rHK/arrays.xml b/libs/WifiTrackerLib/res/values-zh-rHK/arrays.xml
index b7306d6..71e4821 100644
--- a/libs/WifiTrackerLib/res/values-zh-rHK/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-zh-rHK/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"正在掃瞄…"</item>
-    <item msgid="6222852518007967736">"正在連線…"</item>
-    <item msgid="1176401854208153464">"正在認證…"</item>
-    <item msgid="1377026397901197257">"正在取得 IP 位址…"</item>
-    <item msgid="7627139816052121509">"已連線"</item>
-    <item msgid="1598801023719359130">"已暫停"</item>
-    <item msgid="9160765456671002324">"正在解除連接…"</item>
-    <item msgid="8013176736494493734">"連線中斷"</item>
-    <item msgid="4077393480368783785">"失敗"</item>
-    <item msgid="605372180740008604">"已封鎖"</item>
-    <item msgid="5102306451432929048">"暫不使用訊號較弱的連線"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"正在掃瞄…"</item>
+    <item msgid="9055468790485684083">"正在連線…"</item>
+    <item msgid="6099499723199990208">"正在認證…"</item>
+    <item msgid="6794055951297347103">"正在取得 IP 位址…"</item>
+    <item msgid="5450920562291300229">"已連線"</item>
+    <item msgid="6332116533879646145">"已暫停"</item>
+    <item msgid="294459081501073818">"正在中斷連線…"</item>
+    <item msgid="1577368920272598676">"已中斷連線"</item>
+    <item msgid="7655843177582495451">"失敗"</item>
+    <item msgid="8953752690917593623">"已封鎖"</item>
+    <item msgid="4400457817750243671">"暫不使用訊號較弱的連線"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-zh-rHK/strings.xml b/libs/WifiTrackerLib/res/values-zh-rHK/strings.xml
index 81d8212..85d1c56 100644
--- a/libs/WifiTrackerLib/res/values-zh-rHK/strings.xml
+++ b/libs/WifiTrackerLib/res/values-zh-rHK/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"自動連線功能已關閉"</string>
-    <string name="saved_network" msgid="6241977554502802914">"由「<xliff:g id="NAME">%1$s</xliff:g>」儲存"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"不會自動連線"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"無法連接互聯網"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"驗證問題"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"請檢查密碼,然後再試一次"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"無法設定 IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"已停用"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"存取點暫時已滿"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"已解除連接"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"已儲存"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"按用量收費"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"不限數據用量收費"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"已透過「<xliff:g id="NAME">%1$s</xliff:g>」連線"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"可透過「<xliff:g id="NAME">%1$s</xliff:g>」連線"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"已透過「<xliff:g id="NAME">%1$s</xliff:g>」自動連線"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"已透過網絡評分供應商自動連線"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"連線受限"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"無法存取私人 DNS 伺服器"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"沒有互聯網連線"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"自動連線功能已關閉"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"由「<xliff:g id="NAME">%1$s</xliff:g>」儲存"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"不會自動連線"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"沒有互聯網連線"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"驗證問題"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"請檢查密碼,然後再試一次"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"無法設定 IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"已停用"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"存取點暫時已滿"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"暫時網絡連線欠佳"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"訊號偏弱,請嘗試移近路由器。"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"網絡流量超出上限,請稍後再試。"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"無法連線,請稍後再試。"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"網絡與此裝置不兼容"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"已中斷連線"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"已儲存"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"按用量收費"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"非按用量收費"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"已透過「<xliff:g id="NAME">%1$s</xliff:g>」連線"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"可透過「<xliff:g id="NAME">%1$s</xliff:g>」連線"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"已透過「<xliff:g id="NAME">%1$s</xliff:g>」自動連線"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"已透過網絡評分供應商自動連線"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"連線受限"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"無法存取私人 DNS 伺服器"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"已連接裝置,但無法提供互聯網連線。"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"品質欠佳"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"無"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"已過期"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"輕按即可登入"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"輕按即可續購訂閱並連線"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"正在開啟 <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"無法連接"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"正在完成申請…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"無法完成申請。輕按即可重試。"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"已完成申請。連接中…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"此網絡會接收可用於追蹤裝置位置的獨特 ID。"<annotation id="url">"瞭解詳情"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"非常慢"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"慢"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"良好"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"適中"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"快"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"非常快"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"無"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"已過期"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"輕按即可登入"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"輕按即可續購訂閱並連線"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"正在開啟 <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"無法連線"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"正在完成申請…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"無法完成申請。輕按即可重試。"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"已完成申請。連接中…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"此網絡會接收可用於追蹤裝置位置的 SIM 卡 ID。"<annotation id="url">"瞭解詳情"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"非常慢"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"慢"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"好"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"中"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"快"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"非常快"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"目前不會自動連上 Wi-Fi"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-zh-rTW/arrays.xml b/libs/WifiTrackerLib/res/values-zh-rTW/arrays.xml
index b89603d..0685745 100644
--- a/libs/WifiTrackerLib/res/values-zh-rTW/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-zh-rTW/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"掃描中…"</item>
-    <item msgid="6222852518007967736">"連線中…"</item>
-    <item msgid="1176401854208153464">"驗證中…"</item>
-    <item msgid="1377026397901197257">"正在取得 IP 位址…"</item>
-    <item msgid="7627139816052121509">"已連線"</item>
-    <item msgid="1598801023719359130">"已暫停使用"</item>
-    <item msgid="9160765456671002324">"正在中斷連線…"</item>
-    <item msgid="8013176736494493734">"已中斷連線"</item>
-    <item msgid="4077393480368783785">"不成功"</item>
-    <item msgid="605372180740008604">"已封鎖"</item>
-    <item msgid="5102306451432929048">"暫時不使用訊號較弱的連線"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"掃描中…"</item>
+    <item msgid="9055468790485684083">"連線中…"</item>
+    <item msgid="6099499723199990208">"驗證中…"</item>
+    <item msgid="6794055951297347103">"正在取得 IP 位址…"</item>
+    <item msgid="5450920562291300229">"已連線"</item>
+    <item msgid="6332116533879646145">"已暫停使用"</item>
+    <item msgid="294459081501073818">"正在中斷連線…"</item>
+    <item msgid="1577368920272598676">"已中斷連線"</item>
+    <item msgid="7655843177582495451">"失敗"</item>
+    <item msgid="8953752690917593623">"已封鎖"</item>
+    <item msgid="4400457817750243671">"暫時不使用訊號較弱的連線"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-zh-rTW/strings.xml b/libs/WifiTrackerLib/res/values-zh-rTW/strings.xml
index 4195427..d6636d5 100644
--- a/libs/WifiTrackerLib/res/values-zh-rTW/strings.xml
+++ b/libs/WifiTrackerLib/res/values-zh-rTW/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"自動連線功能已關閉"</string>
-    <string name="saved_network" msgid="6241977554502802914">"由「<xliff:g id="NAME">%1$s</xliff:g>」儲存"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"不會自動連線"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"沒有可用的網際網路連線"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"驗證問題"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"請檢查密碼,然後再試一次"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP 設定失敗"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"已停用"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"存取點暫時滿載"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"已中斷連線"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"已儲存"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"計量付費"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"非計量付費"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"透過「<xliff:g id="NAME">%1$s</xliff:g>」連線"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"可透過「<xliff:g id="NAME">%1$s</xliff:g>」使用"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"透過「<xliff:g id="NAME">%1$s</xliff:g>」自動連線"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"已透過網路評分供應商自動連線"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"連線能力受限"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"無法存取私人 DNS 伺服器"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"沒有網際網路連線"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"自動連線功能已關閉"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"由「<xliff:g id="NAME">%1$s</xliff:g>」儲存"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"不會自動連線"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"沒有網際網路連線"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"驗證問題"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"請檢查密碼,然後再試一次"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"無法設定 IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"已停用"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"存取點暫時滿載"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"暫時性網路連線品質不佳"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"網路訊號微弱,建議你移動到比較靠近路由器的位置。"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"網路流量超載,請稍後再試。"</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"無法連線,請稍後再試。"</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"找不到與這部裝置相容的網路"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"已中斷連線"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"已儲存"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"計量付費"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"非計量付費"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"已透過「<xliff:g id="NAME">%1$s</xliff:g>」連線"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"可透過「<xliff:g id="NAME">%1$s</xliff:g>」使用"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"已透過「<xliff:g id="NAME">%1$s</xliff:g>」自動連線"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"已透過連線品質評估供應商自動連線"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"連線能力受限"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"無法存取私人 DNS 伺服器"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"已連上裝置,但無法提供網際網路連線。"</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"品質不佳"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"無"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"已失效"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"輕觸即可註冊"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"輕觸即可續訂並連線"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"正在開啟「<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>」"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"無法連線"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"正在完成註冊程序…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"無法完成註冊程序。輕觸即可重試。"</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"註冊完成。連線中…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"這個網路會收到可用於追蹤裝置位置的唯一 ID。"<annotation id="url">"瞭解詳情"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"非常慢"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"慢"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"確定"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"適中"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"快"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"非常快"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"無"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"已失效"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"輕觸即可註冊"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"輕觸即可續訂並連線"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"正在開啟「<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>」"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"無法連線"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"正在完成註冊程序…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"無法完成註冊程序。輕觸即可重試。"</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"註冊完成。連線中…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"這個網路會收到可用於追蹤裝置位置的 SIM 卡 ID。"<annotation id="url">"瞭解詳情"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"非常慢"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"慢"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"尚可"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"中"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"快"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"非常快"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"目前不會自動連上 Wi-Fi"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-zu/arrays.xml b/libs/WifiTrackerLib/res/values-zu/arrays.xml
index 867c568..9429219 100644
--- a/libs/WifiTrackerLib/res/values-zu/arrays.xml
+++ b/libs/WifiTrackerLib/res/values-zu/arrays.xml
@@ -20,18 +20,18 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="wifi_status">
-    <item msgid="8763475525292171481"></item>
-    <item msgid="903308535197209786">"Iyaskena…"</item>
-    <item msgid="6222852518007967736">"Iyaxhuma…"</item>
-    <item msgid="1176401854208153464">"Iyaqinisekisa…"</item>
-    <item msgid="1377026397901197257">"Ithola ikheli le-IP…"</item>
-    <item msgid="7627139816052121509">"Ixhunyiwe"</item>
-    <item msgid="1598801023719359130">"Kumiswe okwesikhashana"</item>
-    <item msgid="9160765456671002324">"Iyanqamula…"</item>
-    <item msgid="8013176736494493734">"Inqamukile"</item>
-    <item msgid="4077393480368783785">"Akuphumelelanga"</item>
-    <item msgid="605372180740008604">"Ivinjiwe"</item>
-    <item msgid="5102306451432929048">"Ivimbela ukuxhumeka okungekho kuhle kahle okwesikhashana"</item>
+  <string-array name="wifitrackerlib_wifi_status">
+    <item msgid="4878873480828298657"></item>
+    <item msgid="5782995872855767551">"Iyaskena…"</item>
+    <item msgid="9055468790485684083">"Iyaxhuma…"</item>
+    <item msgid="6099499723199990208">"Iyaqinisekisa…"</item>
+    <item msgid="6794055951297347103">"Ithola ikheli lasesizindeni se-inthanethi…"</item>
+    <item msgid="5450920562291300229">"Ixhunyiwe"</item>
+    <item msgid="6332116533879646145">"Kumiswe okwesikhashana"</item>
+    <item msgid="294459081501073818">"Iyanqamula…"</item>
+    <item msgid="1577368920272598676">"Inqamukile"</item>
+    <item msgid="7655843177582495451">"Akuphumelelanga"</item>
+    <item msgid="8953752690917593623">"Ivinjiwe"</item>
+    <item msgid="4400457817750243671">"Okwesikhashana ivikela ukuxhumana okungaqinile"</item>
   </string-array>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values-zu/strings.xml b/libs/WifiTrackerLib/res/values-zu/strings.xml
index 2f405d8..77eb706 100644
--- a/libs/WifiTrackerLib/res/values-zu/strings.xml
+++ b/libs/WifiTrackerLib/res/values-zu/strings.xml
@@ -16,42 +16,48 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="summary_separator" msgid="6533720408587140819">" / "</string>
-    <string name="auto_connect_disable" msgid="1078319396240632542">"Ukuxhuma ngokuzenzakalelayo kuvaliwe"</string>
-    <string name="saved_network" msgid="6241977554502802914">"Kulondolozwe ngu-<xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"Ngeke ixhume ngokuzenzekelayo"</string>
-    <string name="wifi_no_internet" msgid="4461212237521310895">"Akukho ukufinyelela kwe-inthanethi"</string>
-    <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"Inkinga yokufakazela ubuqiniso"</string>
-    <string name="wifi_check_password_try_again" msgid="2643230209986217827">"Hlola iphasiwedi uphinde uzame futhi"</string>
-    <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"Ukwehluleka kokulungiswa kwe-IP"</string>
-    <string name="wifi_disabled_generic" msgid="8307050327779256414">"Akusebenzi"</string>
-    <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"Iphoyinti lokufinyelela ligcwele okwesikhashana"</string>
-    <string name="wifi_disconnected" msgid="3720926757662831062">"Inqamukile"</string>
-    <string name="wifi_remembered" msgid="5126903736498678708">"Kulondoloziwe"</string>
-    <string name="wifi_metered_label" msgid="1362621600006544014">"Kulinganisiwe"</string>
-    <string name="wifi_unmetered_label" msgid="499466875639448350">"Akulinganiselwa"</string>
-    <string name="connected_via_app" msgid="1818040967936972127">"Ixhumeke nge-<xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="available_via_app" msgid="9110324040292242769">"Kutholakala nge-<xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer" msgid="209764314005159012">"Kuxhunywe ngokuzenzekelayo nge-<xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"Kuxhunywe ngokuzenzakalelayo ngomhlinzeki wesilinganiso wenethiwekhi"</string>
-    <string name="wifi_limited_connection" msgid="3646701342701276239">"Iqoqo elikhawulelwe"</string>
-    <string name="private_dns_broken" msgid="2212227512243587416">"Iseva eyimfihlo ye-DNS ayikwazi ukufinyelelwa"</string>
-    <string name="wifi_connected_no_internet" msgid="7273909077465731259">"Ayikho i-inthanethi"</string>
+    <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string>
+    <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Ukuxhuma ngokuzenzakalelayo kuvaliwe"</string>
+    <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Kulondolozwe ngu-<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Ngeke ixhume ngokuzenzekelayo"</string>
+    <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Akukho ukufinyelela kwe-inthanethi"</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Inkinga yokufakazela ubuqiniso"</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Hlola iphasiwedi uphinde uzame futhi"</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Ukwehluleka kokulungiswa kwe-IP"</string>
+    <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Ikhutshaziwe"</string>
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta" msgid="931922372010639716">"Iphoyinti lokufinyelela ligcwele okwesikhashana"</string>
+    <string name="wifitrackerlib_wifi_poor_channel_conditions" msgid="26484680900376236">"Izimo zesikhashana zenethiwekhi engasimeme"</string>
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi" msgid="5078611817423181773">"Isignali ebuthakathaka. Zama ukusondela eduze nomzila."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated" msgid="4418848919914618807">"Inethiwekhi ingaphezu komthamo. Zama futhi emuva kwesikhathi."</string>
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"Ayikwazi ukuxhuma. Zama futhi emuva kwesikhathi."</string>
+    <string name="wifitrackerlib_wifi_network_not_found" msgid="2208793323700267293">"Inethiwekhi ayihambisani nale divayisi"</string>
+    <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"Inqamukile"</string>
+    <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"Kulondoloziwe"</string>
+    <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"Kulinganisiwe"</string>
+    <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"Akulinganiselwa"</string>
+    <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"Ixhumeke nge-<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_available_via_app" msgid="8556844256194837469">"Kutholakala nge-<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer" msgid="6306655070903763086">"Kuxhunywe ngokuzenzekelayo nge-<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default" msgid="3436792128688839692">"Kuxhunywe ngokuzenzakalelayo ngomhlinzeki wesilinganiso wenethiwekhi"</string>
+    <string name="wifitrackerlib_wifi_limited_connection" msgid="4234326409980991740">"Iqoqo elikhawulelwe"</string>
+    <string name="wifitrackerlib_private_dns_broken" msgid="6049401148262718707">"Iseva eyimfihlo ye-DNS ayikwazi ukufinyelelwa"</string>
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet" msgid="3803471522215612745">"Ixhunywe kudivayisi. Ayikwazi ukunikeza i-inthanethi."</string>
     <string name="wifi_connected_low_quality" msgid="4478331645458058445">"Ikhwalithi ephansi"</string>
-    <string name="wifi_security_none" msgid="6680263031386719053">"Lutho"</string>
-    <string name="wifi_passpoint_expired" msgid="3257021415099577815">"Iphelelwe isikhathi"</string>
-    <string name="tap_to_sign_up" msgid="2409214576606918295">"Thepha ukuze ubhalisele"</string>
-    <string name="tap_to_renew_subscription_and_connect" msgid="375976298920840105">"Thepha ukuze wenze kabusha okubhalisile futhi uxhume"</string>
-    <string name="osu_opening_provider" msgid="5633521771769175139">"Ivula i-<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
-    <string name="osu_connect_failed" msgid="8503501619299851793">"Ayikwazanga ukuxhumeka"</string>
-    <string name="osu_completing_sign_up" msgid="7188493241442946231">"Iqedela ukubhalisa…"</string>
-    <string name="osu_sign_up_failed" msgid="2725057866968590279">"Ayikwazanga ukuqedelela ukubhalisa. Thepha ukuze uzame futhi."</string>
-    <string name="osu_sign_up_complete" msgid="7013805426618985953">"Ukubhalisa kuqediwe. Iyaxhuma…"</string>
-    <string name="imsi_protection_warning" msgid="3207104049473134195">"Le nethiwekhi ithola i-ID ehlukile engasetshenziselwa ukulandelela indawo yedivayisi. "<annotation id="url">"Funda kabanzi"</annotation></string>
-    <string name="speed_label_very_slow" msgid="2401582671941367179">"Phansi kakhulu"</string>
-    <string name="speed_label_slow" msgid="8410385703344502127">"Phansi"</string>
-    <string name="speed_label_okay" msgid="3741857805086997968">"KULUNGILE"</string>
-    <string name="speed_label_medium" msgid="3175703848952862009">"Okumaphakathi"</string>
-    <string name="speed_label_fast" msgid="8344116097613544322">"Sheshayo"</string>
-    <string name="speed_label_very_fast" msgid="1595806641512447877">"Kushesha kakhulu"</string>
+    <string name="wifitrackerlib_wifi_security_none" msgid="2686062484642847280">"Lutho"</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired" msgid="7974960573887452566">"Iphelelwe isikhathi"</string>
+    <string name="wifitrackerlib_tap_to_sign_up" msgid="3897017015910817402">"Thepha ukuze ubhalisele"</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect" msgid="6048420776676138069">"Thepha ukuze wenze kabusha okubhalisile futhi uxhume"</string>
+    <string name="wifitrackerlib_osu_opening_provider" msgid="7128677439450712558">"Ivula i-<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+    <string name="wifitrackerlib_osu_connect_failed" msgid="3872233609000700930">"Ayikwazanga ukuxhumeka"</string>
+    <string name="wifitrackerlib_osu_completing_sign_up" msgid="4359503050543182480">"Iqedela ukubhalisa…"</string>
+    <string name="wifitrackerlib_osu_sign_up_failed" msgid="3964140125523395898">"Ayikwazanga ukuqedelela ukubhalisa. Thepha ukuze uzame futhi."</string>
+    <string name="wifitrackerlib_osu_sign_up_complete" msgid="3279606633343124580">"Ukubhalisa kuqediwe. Iyaxhuma…"</string>
+    <string name="wifitrackerlib_imsi_protection_warning" msgid="7202210931586169466">"Le nethiwekhi ithola i-ISIM D engasetshenziselwa ukulandelela indawo yedivayisi. "<annotation id="url">"Funda kabanzi"</annotation></string>
+    <string name="wifitrackerlib_speed_label_very_slow" msgid="6606409259798814244">"Phansi kakhulu"</string>
+    <string name="wifitrackerlib_speed_label_slow" msgid="7327906382011957760">"Phansi"</string>
+    <string name="wifitrackerlib_speed_label_okay" msgid="6656684124654881956">"KULUNGILE"</string>
+    <string name="wifitrackerlib_speed_label_medium" msgid="2249280306855290094">"Okulingene"</string>
+    <string name="wifitrackerlib_speed_label_fast" msgid="2593921008376044650">"Sheshayo"</string>
+    <string name="wifitrackerlib_speed_label_very_fast" msgid="4162759416291355173">"Kushesha kakhulu"</string>
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now" msgid="4923161724964349851">"I-Wi-Fi ngeke ixhume ngokuzenzakalelayo okwamanje"</string>
 </resources>
diff --git a/libs/WifiTrackerLib/res/values/arrays.xml b/libs/WifiTrackerLib/res/values/arrays.xml
index 9292a5e..93a827c 100644
--- a/libs/WifiTrackerLib/res/values/arrays.xml
+++ b/libs/WifiTrackerLib/res/values/arrays.xml
@@ -23,7 +23,7 @@
 
     <!-- Match this with the order of NetworkInfo.DetailedState. --> <skip />
     <!-- Wi-Fi settings. The status messages when the network is unknown. -->
-    <string-array name="wifi_status">
+    <string-array name="wifitrackerlib_wifi_status">
         <!-- Status message of Wi-Fi when it is idle. -->
         <item></item>
         <!-- Status message of Wi-Fi when it is scanning. -->
diff --git a/libs/WifiTrackerLib/res/values/strings.xml b/libs/WifiTrackerLib/res/values/strings.xml
index 0436982..4b4741a 100644
--- a/libs/WifiTrackerLib/res/values/strings.xml
+++ b/libs/WifiTrackerLib/res/values/strings.xml
@@ -15,184 +15,211 @@
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <!-- Summary text separator for short descriptions (eg. "Fast / Connected"). [CHAR LIMIT=NONE] -->
-    <string name="summary_separator">" / "</string>
+    <string name="wifitrackerlib_summary_separator">" / "</string>
 
     <!-- Strings for labeling Wi-Fi Auto-Connection is disabled. Wi-Fi Auto-Connection is a feature
          for users to specify if a Wi-Fi network will be auto connected when it's reachable. [CHAR LIMIT=60] -->
-    <string name="auto_connect_disable">Auto-connect is off</string>
+    <string name="wifitrackerlib_auto_connect_disable">Auto-connect is off</string>
 
     <!-- Package name for Settings app-->
-    <string name="settings_package" translatable="false">com.android.settings</string>
+    <string name="wifitrackerlib_settings_package" translatable="false">com.android.settings</string>
 
     <!-- Package name for Certinstaller app-->
-    <string name="certinstaller_package" translatable="false">com.android.certinstaller</string>
+    <string name="wifitrackerlib_certinstaller_package" translatable="false">com.android.certinstaller</string>
 
     <!-- Summary for saved networks [CHAR LIMIT=NONE]-->
-    <string name="saved_network">Saved by <xliff:g id="name" example="Wifi App">%1$s</xliff:g></string>
+    <string name="wifitrackerlib_saved_network">Saved by <xliff:g id="name" example="Wifi App">%1$s</xliff:g></string>
 
     <!-- Summary for the network but no internet connection was detected. [CHAR LIMIT=NONE] -->
-    <string name="wifi_no_internet_no_reconnect">Won\u2019t automatically connect</string>
+    <string name="wifitrackerlib_wifi_no_internet_no_reconnect">Won\u2019t automatically connect</string>
 
     <!-- Summary for the remembered network but no internet connection was detected. [CHAR LIMIT=NONE] -->
-    <string name="wifi_no_internet">No internet access</string>
+    <string name="wifitrackerlib_wifi_no_internet">No internet access</string>
 
     <!-- Status for networks disabled from authentication failure (wrong password
          or certificate). [CHAR LIMIT=NONE] -->
-    <string name="wifi_disabled_password_failure">Authentication problem</string>
+    <string name="wifitrackerlib_wifi_disabled_password_failure">Authentication problem</string>
 
     <!-- Message shown when the user likely entered an incorrect password for a wifi network [CHAR LIMIT=NONE] -->
-    <string name="wifi_check_password_try_again">Check password and try again</string>
+    <string name="wifitrackerlib_wifi_check_password_try_again">Check password and try again</string>
 
     <!-- Status for networked disabled from a DNS or DHCP failure [CHAR LIMIT=NONE] -->
-    <string name="wifi_disabled_network_failure">IP configuration failure</string>
+    <string name="wifitrackerlib_wifi_disabled_network_failure">IP configuration failure</string>
 
     <!-- Status for networks disabled for unknown reason [CHAR LIMIT=NONE] -->
-    <string name="wifi_disabled_generic">Disabled</string>
+    <string name="wifitrackerlib_wifi_disabled_generic">Disabled</string>
 
-    <!-- Summary for networks failing to connect due to association rejection status 17, AP full [CHAR LIMIT=NONE] -->
-    <string name="wifi_ap_unable_to_handle_new_sta">Access point temporarily full</string>
+    <!-- Summary for networks failing to connect due to one of the following reasons:
+     association rejection status 17 - AP full,
+     association rejection status 30 - AP rejected the device temporarily
+     disconnection reason code 5 - AP can't handle all existing stations [CHAR LIMIT=NONE] -->
+    <string name="wifitrackerlib_wifi_ap_unable_to_handle_new_sta">Access point temporarily full</string>
+
+    <!-- Summary for networks failing to connect due to association rejection status 34, poor channel conditions [CHAR LIMIT=NONE] -->
+    <string name="wifitrackerlib_wifi_poor_channel_conditions">Temporary poor network conditions</string>
+
+    <!-- Summary for networks failing to connect due to association rejection status 17 or 30, with
+         MBO association disallowed indication attribute reason code: Insufficient RSSI,
+         or association rejection status 34, with OCE RSSI based association rejection information [CHAR LIMIT=NONE] -->
+    <string name="wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi">Weak signal. Try moving closer to the router.</string>
+
+    <!-- Summary for networks failing to connect due to association rejection status 17 or 30, with
+         MBO association disallowed indication attribute reason code: maximum number of associated stations reached, [CHAR LIMIT=NONE] -->
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated">Network is over capacity. Try again later.</string>
+
+    <!-- Summary for networks failing to connect due to association rejection status 17 or 30, with
+         MBO association disallowed indication attribute with one of the following reason codes:
+         Air interface is overloaded,
+         Authentication server overloaded,
+         Reserved/Unspecified [CHAR LIMIT=NONE] -->
+    <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect">Can\'t connect. Try again later.</string>
+
+    <!-- Summary for networks failing to connect due to failed to find a network in supplicant scan result
+         which matches the network requested by framework for connection (including network capabilities) [CHAR LIMIT=NONE] -->
+    <string name="wifitrackerlib_wifi_network_not_found">Can\'t connect. Try again later.</string>
 
     <!-- Summary for the disconnected network. [CHAR LIMIT=40] -->
-    <string name="wifi_disconnected">Disconnected</string>
+    <string name="wifitrackerlib_wifi_disconnected">Disconnected</string>
 
     <!-- Summary for the remembered network. [CHAR LIMIT=NONE] -->
-    <string name="wifi_remembered">Saved</string>
+    <string name="wifitrackerlib_wifi_remembered">Saved</string>
 
     <!-- Label indicating network has been manually marked as metered [CHAR LIMIT=NONE] -->
-    <string name="wifi_metered_label">Metered</string>
+    <string name="wifitrackerlib_wifi_metered_label">Metered</string>
 
     <!-- Label indicating network has been manually marked as unmetered [CHAR LIMIT=NONE] -->
-    <string name="wifi_unmetered_label">Unmetered</string>
+    <string name="wifitrackerlib_wifi_unmetered_label">Unmetered</string>
 
     <!-- Status message of Wi-Fi when it is connected by a app (via suggestion or network request). [CHAR LIMIT=NONE] -->
-    <string name="connected_via_app">Connected via <xliff:g id="name" example="Wifi App">%1$s</xliff:g></string>
+    <string name="wifitrackerlib_connected_via_app">Connected via <xliff:g id="name" example="Wifi App">%1$s</xliff:g></string>
 
     <!-- Summary for a network suggested by an app. [CHAR LIMIT=NONE] -->
-    <string name="available_via_app">Available via <xliff:g id="name" example="Wifi App">%1$s</xliff:g></string>
+    <string name="wifitrackerlib_available_via_app">Available via <xliff:g id="name" example="Wifi App">%1$s</xliff:g></string>
 
     <!-- Status message of Wi-Fi when it is automatically connected by a network recommendation provider. [CHAR LIMIT=NONE] -->
-    <string name="connected_via_network_scorer">Automatically connected via <xliff:g id="name" example="Wifi App">%1$s</xliff:g></string>
+    <string name="wifitrackerlib_connected_via_network_scorer">Automatically connected via <xliff:g id="name" example="Wifi App">%1$s</xliff:g></string>
 
     <!-- Status message of Wi-Fi when it is automatically connected by a default network recommendation provider. [CHAR LIMIT=NONE] -->
-    <string name="connected_via_network_scorer_default">Automatically connected via network rating provider</string>
+    <string name="wifitrackerlib_connected_via_network_scorer_default">Automatically connected via network rating provider</string>
 
     <!-- Summary for connected wifi network with partial internet connectivity [CHAR LIMIT=50] -->
-    <string name="wifi_limited_connection">Limited connection</string>
+    <string name="wifitrackerlib_wifi_limited_connection">Limited connection</string>
 
     <!-- Summary for connected network without internet due to private dns validation failed [CHAR LIMIT=NONE] -->
-    <string name="private_dns_broken">Private DNS server cannot be accessed</string>
+    <string name="wifitrackerlib_private_dns_broken">Private DNS server cannot be accessed</string>
 
-    <!-- Summary for Connected wifi network without internet [CHAR LIMIT=NONE] -->
-    <string name="wifi_connected_no_internet">No internet</string>
+    <!-- Summary for connected wifi network without internet [CHAR LIMIT=NONE] -->
+    <string name="wifitrackerlib_wifi_connected_cannot_provide_internet">
+        Connected to device. Can\'t provide internet.</string>
 
     <!-- Summary for Connected wifi network with a low quality connection [CHAR LIMIT=NONE] -->
     <string name="wifi_connected_low_quality">Low quality</string>
 
-    <!-- Do not translate.  Concise terminology for wifi with 802.1x EAP security -->
-    <string name="wifi_security_short_eap" translatable="false">802.1x</string>
+    <!-- Do not translate.  Concise terminology for wifi with WPA/WPA2 802.1x EAP security -->
+    <string name="wifitrackerlib_wifi_security_short_eap_wpa_wpa2" translatable="false">WPA/WPA2-EAP</string>
 
-    <!-- Do not translate.  Concise terminology for wifi with 802.1x EAP security -->
-    <string name="wifi_security_eap" translatable="false">WPA/WPA2/WPA3-Enterprise</string>
+    <!-- Do not translate.  Concise terminology for wifi with WPA/WPA2 802.1x EAP security -->
+    <string name="wifitrackerlib_wifi_security_eap_wpa_wpa2" translatable="false">WPA/WPA2-Enterprise</string>
 
-    <!-- Do not translate.  Concise terminology for wifi with WPA 802.1x EAP security -->
-    <string name="wifi_security_short_eap_wpa" translatable="false">WPA-EAP</string>
+    <!-- Do not translate.  Concise terminology for wifi with WPA3 802.1x EAP security -->
+    <string name="wifitrackerlib_wifi_security_short_eap_wpa3" translatable="false">WPA3-EAP</string>
 
-    <!-- Do not translate.  Concise terminology for wifi with WPA 802.1x EAP security -->
-    <string name="wifi_security_eap_wpa" translatable="false">WPA-Enterprise</string>
+    <!-- Do not translate.  Concise terminology for wifi with WPA3 802.1x EAP security -->
+    <string name="wifitrackerlib_wifi_security_eap_wpa3" translatable="false">WPA3-Enterprise</string>
 
-    <!-- Do not translate.  Concise terminology for wifi with WPA2/WPA3 802.1x EAP security -->
-    <string name="wifi_security_short_eap_wpa2_wpa3" translatable="false">RSN-EAP</string>
+    <!-- Do not translate.  Concise terminology for wifi with WPA/WPA2/WPA3 802.1x EAP security -->
+    <string name="wifitrackerlib_wifi_security_short_eap_wpa_wpa2_wpa3" translatable="false">WPA/WPA2/WPA3-EAP</string>
 
-    <!-- Do not translate.  Concise terminology for wifi with WPA2/WPA3 802.1x EAP security -->
-    <string name="wifi_security_eap_wpa2_wpa3" translatable="false">WPA2/WPA3-Enterprise</string>
+    <!-- Do not translate.  Concise terminology for wifi with WPA/WPA2/WPA3 802.1x EAP security -->
+    <string name="wifitrackerlib_wifi_security_eap_wpa_wpa2_wpa3" translatable="false">WPA/WPA2/WPA3-Enterprise</string>
 
     <!-- Do not translate.  Concise terminology for wifi with 802.1x EAP Suite-B-192 security -->
-    <string name="wifi_security_short_eap_suiteb" translatable="false">Suite-B-192</string>
+    <string name="wifitrackerlib_wifi_security_short_eap_suiteb" translatable="false">Suite-B-192</string>
 
     <!-- Do not translate.  Concise terminology for wifi with 802.1x EAP Suite-B-192 security -->
-    <string name="wifi_security_eap_suiteb" translatable="false">WPA3-Enterprise 192-bit</string>
+    <string name="wifitrackerlib_wifi_security_eap_suiteb" translatable="false">WPA3-Enterprise 192-bit</string>
 
-    <!-- Do not translate.  Concise terminology for wifi with WPA security -->
-    <string name="wifi_security_short_wpa" translatable="false">WPA</string>
+    <!-- Do not translate.  Concise terminology for wifi with both WPA/WPA2 security -->
+    <string name="wifitrackerlib_wifi_security_short_wpa_wpa2" translatable="false">WPA/WPA2</string>
 
-    <!-- Do not translate.  Terminology for wifi with WPA security -->
-    <string name="wifi_security_wpa" translatable="false">WPA-Personal</string>
-
-    <!-- Do not translate.  Concise terminology for wifi with WPA2/WPA3 security -->
-    <string name="wifi_security_short_wpa2_wpa3" translatable="false">WPA2/WPA3</string>
-
-    <!-- Do not translate.  Terminology for wifi with WPA2/WPA3 security -->
-    <string name="wifi_security_wpa2_wpa3" translatable="false">WPA2/WPA3-Personal</string>
+    <!-- Do not translate.  Terminology for wifi with both WPA/WPA2 security -->
+    <string name="wifitrackerlib_wifi_security_wpa_wpa2" translatable="false">WPA/WPA2-Personal</string>
 
     <!-- Do not translate.  Concise terminology for wifi with both WPA/WPA2/WPA3 security -->
-    <string name="wifi_security_short_wpa_wpa2_wpa3" translatable="false">WPA/WPA2/WPA3</string>
+    <string name="wifitrackerlib_wifi_security_short_wpa_wpa2_wpa3" translatable="false">WPA/WPA2/WPA3</string>
 
-    <!-- Do not translate.  Terminology for wifi with both WPA/WPA2/WPA3 security, or unknown -->
-    <string name="wifi_security_wpa_wpa2_wpa3" translatable="false">WPA/WPA2/WPA3-Personal</string>
+    <!-- Do not translate.  Terminology for wifi with both WPA/WPA2/WPA3 security -->
+    <string name="wifitrackerlib_wifi_security_wpa_wpa2_wpa3" translatable="false">WPA/WPA2/WPA3-Personal</string>
 
     <!-- Do not translate.  Terminology for wifi with WEP security -->
-    <string name="wifi_security_wep" translatable="false">WEP</string>
+    <string name="wifitrackerlib_wifi_security_wep" translatable="false">WEP</string>
 
     <!-- Do not translate.  Concise terminology for wifi with WPA3 security -->
-    <string name="wifi_security_short_sae" translatable="false">WPA3</string>
+    <string name="wifitrackerlib_wifi_security_short_sae" translatable="false">WPA3</string>
 
     <!-- Do not translate.  Terminology for wifi with WPA3 security -->
-    <string name="wifi_security_sae" translatable="false">WPA3-Personal</string>
+    <string name="wifitrackerlib_wifi_security_sae" translatable="false">WPA3-Personal</string>
 
     <!-- Do not translate.  Concise terminology for wifi with OWE security -->
-    <string name="wifi_security_short_owe" translatable="false">OWE</string>
+    <string name="wifitrackerlib_wifi_security_short_owe" translatable="false">OWE</string>
 
     <!-- Do not translate.  Terminology for wifi with OWE security -->
-    <string name="wifi_security_owe" translatable="false">Enhanced Open</string>
+    <string name="wifitrackerlib_wifi_security_owe" translatable="false">Enhanced Open</string>
 
     <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. [CHAR LIMIT=40] -->
-    <string name="wifi_security_none">None</string>
+    <string name="wifitrackerlib_wifi_security_none">None</string>
+
+    <!-- Do not translate.  Terminology for wifi with Passpoint security -->
+    <string name="wifitrackerlib_wifi_security_passpoint">Passpoint</string>
 
     <!-- Passpoint summary for an expired passpoint [CHAR LIMIT=40] -->
-    <string name="wifi_passpoint_expired">Expired</string>
+    <string name="wifitrackerlib_wifi_passpoint_expired">Expired</string>
 
     <!-- Status message of OSU Provider network when not connected. [CHAR LIMIT=NONE] -->
-    <string name="tap_to_sign_up">Tap to sign up</string>
+    <string name="wifitrackerlib_tap_to_sign_up">Tap to sign up</string>
 
     <!-- Status message of OSU Provider network when existing profile is expired. [CHAR LIMIT=NONE] -->
-    <string name="tap_to_renew_subscription_and_connect">Tap to renew subscription and connect</string>
+    <string name="wifitrackerlib_tap_to_renew_subscription_and_connect">Tap to renew subscription and connect</string>
 
     <!-- Status message of OSU Provider upon initiating provisioning flow [CHAR LIMIT=NONE] -->
-    <string name="osu_opening_provider">Opening <xliff:g id="passpointProvider" example="Passpoint Provider">%1$s</xliff:g></string>
+    <string name="wifitrackerlib_osu_opening_provider">Opening <xliff:g id="passpointProvider" example="Passpoint Provider">%1$s</xliff:g></string>
 
     <!-- Status message of OSU Provider when connection fails [CHAR LIMIT=NONE] -->
-    <string name="osu_connect_failed">Couldn\u2019t connect</string>
+    <string name="wifitrackerlib_osu_connect_failed">Couldn\u2019t connect</string>
 
     <!-- Status message of OSU Provider after user completes provisioning flow [CHAR LIMIT=NONE] -->
-    <string name="osu_completing_sign_up">Completing sign-up\u2026</string>
+    <string name="wifitrackerlib_osu_completing_sign_up">Completing sign-up\u2026</string>
 
     <!-- Status message of OSU Provider when sign up could not be completed [CHAR LIMIT=NONE] -->
-    <string name="osu_sign_up_failed">Couldn\u2019t complete sign-up. Tap to try again.</string>
+    <string name="wifitrackerlib_osu_sign_up_failed">Couldn\u2019t complete sign-up. Tap to try again.</string>
 
     <!-- Status message of OSU Provider on completing provisioning. [CHAR LIMIT=NONE] -->
-    <string name="osu_sign_up_complete">Sign-up complete. Connecting\u2026</string>
+    <string name="wifitrackerlib_osu_sign_up_complete">Sign-up complete. Connecting\u2026</string>
 
     <!-- IMSI protection warning for non-protection network [CHAR LIMIT=NONE] -->
-    <string name="imsi_protection_warning">This network receives a unique ID that can be used to track device location. <annotation id="url">Learn more</annotation></string>
+    <string name="wifitrackerlib_imsi_protection_warning">This network receives a SIM ID that can be used to track device location. <annotation id="url">Learn more</annotation></string>
 
     <!-- Help URL, IMSI protection [DO NOT TRANSLATE] -->
-    <string name="help_url_imsi_protection" translatable="false"></string>
+    <string name="wifitrackerlib_help_url_imsi_protection" translatable="false"></string>
 
     <!-- Speed label for very slow network speed -->
-    <string name="speed_label_very_slow">Very Slow</string>
+    <string name="wifitrackerlib_speed_label_very_slow">Very Slow</string>
 
     <!-- Speed label for slow network speed -->
-    <string name="speed_label_slow">Slow</string>
+    <string name="wifitrackerlib_speed_label_slow">Slow</string>
 
     <!-- Speed label for okay network speed -->
-    <string name="speed_label_okay">OK</string>
+    <string name="wifitrackerlib_speed_label_okay">OK</string>
 
     <!-- Speed label for medium network speed -->
-    <string name="speed_label_medium">Medium</string>
+    <string name="wifitrackerlib_speed_label_medium">Medium</string>
 
     <!-- Speed label for fast network speed -->
-    <string name="speed_label_fast">Fast</string>
+    <string name="wifitrackerlib_speed_label_fast">Fast</string>
 
     <!-- Speed label for very fast network speed -->
-    <string name="speed_label_very_fast">Very Fast</string>
+    <string name="wifitrackerlib_speed_label_very_fast">Very Fast</string>
+
+    <!-- Toast message for when the user selects cellular as the internet provider and Wi-Fi auto-connect is temporarily disabled -->
+    <string name="wifitrackerlib_wifi_wont_autoconnect_for_now">Wi-Fi won\u2019t auto-connect for now</string>
 </resources>
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java
index 8eaef6e..b041541 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java
@@ -34,10 +34,14 @@
 import android.net.NetworkRequest;
 import android.net.NetworkScoreManager;
 import android.net.ScoredNetwork;
+import android.net.TransportInfo;
+import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.net.wifi.WifiNetworkScoreCache;
 import android.os.Handler;
 import android.os.Looper;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
 import android.util.Log;
 
 import androidx.annotation.AnyThread;
@@ -88,11 +92,18 @@
         return BaseWifiTracker.sVerboseLogging;
     }
 
+    private boolean mIsStarted;
+
     // Registered on the worker thread
     private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
         @Override
         @WorkerThread
         public void onReceive(Context context, Intent intent) {
+            if (!mIsStarted) {
+                mIsStarted = true;
+                handleOnStart();
+            }
+
             String action = intent.getAction();
 
             if (isVerboseLoggingEnabled()) {
@@ -119,6 +130,9 @@
                 handleNetworkStateChangedAction(intent);
             } else if (WifiManager.RSSI_CHANGED_ACTION.equals(action)) {
                 handleRssiChangedAction();
+            } else if (TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED.equals(action)) {
+                handleDefaultSubscriptionChanged(intent.getIntExtra(
+                        "subscription", SubscriptionManager.INVALID_SUBSCRIPTION_ID));
             }
         }
     };
@@ -143,19 +157,39 @@
     // Network request for listening on changes to Wifi link properties and network capabilities
     // such as captive portal availability.
     private final NetworkRequest mNetworkRequest = new NetworkRequest.Builder()
-            .clearCapabilities().addTransportType(TRANSPORT_WIFI).build();
+            .clearCapabilities()
+            .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
+            .addTransportType(TRANSPORT_WIFI)
+            .build();
 
     private final ConnectivityManager.NetworkCallback mNetworkCallback =
             new ConnectivityManager.NetworkCallback() {
                 @Override
+                @WorkerThread
                 public void onLinkPropertiesChanged(@NonNull Network network,
                         @NonNull LinkProperties lp) {
+                    if (!mIsStarted) {
+                        mIsStarted = true;
+                        handleOnStart();
+                    }
+                    if (!isPrimaryWifiNetwork(
+                            mConnectivityManager.getNetworkCapabilities(network))) {
+                        return;
+                    }
                     handleLinkPropertiesChanged(lp);
                 }
 
                 @Override
+                @WorkerThread
                 public void onCapabilitiesChanged(@NonNull Network network,
                         @NonNull NetworkCapabilities networkCapabilities) {
+                    if (!mIsStarted) {
+                        mIsStarted = true;
+                        handleOnStart();
+                    }
+                    if (!isPrimaryWifiNetwork(networkCapabilities)) {
+                        return;
+                    }
                     final boolean oldWifiValidated = mIsWifiValidated;
                     mIsWifiValidated = networkCapabilities.hasCapability(NET_CAPABILITY_VALIDATED);
                     if (isVerboseLoggingEnabled() && mIsWifiValidated != oldWifiValidated) {
@@ -165,7 +199,16 @@
                 }
 
                 @Override
+                @WorkerThread
                 public void onLost(@NonNull Network network) {
+                    if (!mIsStarted) {
+                        mIsStarted = true;
+                        handleOnStart();
+                    }
+                    if (!isPrimaryWifiNetwork(
+                            mConnectivityManager.getNetworkCapabilities(network))) {
+                        return;
+                    }
                     mIsWifiValidated = false;
                 }
             };
@@ -173,10 +216,16 @@
     private final ConnectivityManager.NetworkCallback mDefaultNetworkCallback =
             new ConnectivityManager.NetworkCallback() {
                 @Override
+                @WorkerThread
                 public void onCapabilitiesChanged(@NonNull Network network,
                         @NonNull NetworkCapabilities networkCapabilities) {
+                    if (!mIsStarted) {
+                        mIsStarted = true;
+                        handleOnStart();
+                    }
                     final boolean oldWifiDefault = mIsWifiDefaultRoute;
                     final boolean oldCellDefault = mIsCellDefaultRoute;
+                    // raw Wifi or VPN-over-Wifi is default => Wifi is default.
                     mIsWifiDefaultRoute = networkCapabilities.hasTransport(TRANSPORT_WIFI);
                     mIsCellDefaultRoute = networkCapabilities.hasTransport(TRANSPORT_CELLULAR);
                     if (mIsWifiDefaultRoute != oldWifiDefault
@@ -189,7 +238,12 @@
                     }
                 }
 
+                @WorkerThread
                 public void onLost(@NonNull Network network) {
+                    if (!mIsStarted) {
+                        mIsStarted = true;
+                        handleOnStart();
+                    }
                     mIsWifiDefaultRoute = false;
                     mIsCellDefaultRoute = false;
                     if (isVerboseLoggingEnabled()) {
@@ -200,6 +254,17 @@
                 }
             };
 
+    private boolean isPrimaryWifiNetwork(@Nullable NetworkCapabilities networkCapabilities) {
+        if (networkCapabilities == null) {
+            return false;
+        }
+        final TransportInfo transportInfo = networkCapabilities.getTransportInfo();
+        if (!(transportInfo instanceof WifiInfo)) {
+            return false;
+        }
+        return ((WifiInfo) transportInfo).isPrimary();
+    }
+
     /**
      * Constructor for BaseWifiTracker.
      *
@@ -262,6 +327,7 @@
         filter.addAction(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION);
         filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
         filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
+        filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
         mContext.registerReceiver(mBroadcastReceiver, filter,
                 /* broadcastPermission */ null, mWorkerHandler);
         mConnectivityManager.registerNetworkCallback(mNetworkRequest, mNetworkCallback,
@@ -286,12 +352,12 @@
                 NetworkKey.TYPE_WIFI,
                 mWifiNetworkScoreCache,
                 NetworkScoreManager.SCORE_FILTER_SCAN_RESULTS);
-        if (mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED) {
-            mWorkerHandler.post(mScanner::start);
-        } else {
-            mWorkerHandler.post(mScanner::stop);
-        }
-        mWorkerHandler.post(this::handleOnStart);
+        mWorkerHandler.post(() -> {
+            if (!mIsStarted) {
+                mIsStarted = true;
+                handleOnStart();
+            }
+        });
     }
 
     /**
@@ -307,6 +373,7 @@
         mNetworkScoreManager.unregisterNetworkScoreCache(NetworkKey.TYPE_WIFI,
                 mWifiNetworkScoreCache);
         mWorkerHandler.post(mRequestedScoreKeys::clear);
+        mIsStarted = false;
     }
 
     /**
@@ -406,6 +473,14 @@
     }
 
     /**
+     * Handle updates to the default data subscription id from SubscriptionManager.
+     */
+    @WorkerThread
+    protected void handleDefaultSubscriptionChanged(int defaultSubId) {
+        // Do nothing.
+    }
+
+    /**
      * Scanner to handle starting scans every SCAN_INTERVAL_MILLIS
      */
     @WorkerThread
@@ -413,19 +488,24 @@
         private static final int SCAN_RETRY_TIMES = 3;
 
         private int mRetry = 0;
+        private boolean mIsActive;
 
         private Scanner(Looper looper) {
             super(looper);
         }
 
         private void start() {
-            if (isVerboseLoggingEnabled()) {
-                Log.v(mTag, "Scanner start");
+            if (!mIsActive) {
+                mIsActive = true;
+                if (isVerboseLoggingEnabled()) {
+                    Log.v(mTag, "Scanner start");
+                }
+                postScan();
             }
-            postScan();
         }
 
         private void stop() {
+            mIsActive = false;
             if (isVerboseLoggingEnabled()) {
                 Log.v(mTag, "Scanner stop");
             }
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/MergedCarrierEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/MergedCarrierEntry.java
new file mode 100644
index 0000000..5dea44c
--- /dev/null
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/MergedCarrierEntry.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wifitrackerlib;
+
+import static android.net.wifi.WifiInfo.DEFAULT_MAC_ADDRESS;
+import static android.net.wifi.WifiInfo.sanitizeSsid;
+
+import static com.android.wifitrackerlib.Utils.getVerboseLoggingDescription;
+
+import android.content.Context;
+import android.net.NetworkInfo;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.net.wifi.WifiNetworkScoreCache;
+import android.os.Handler;
+import android.text.TextUtils;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
+import java.util.StringJoiner;
+
+/**
+ * WifiEntry representation of merged carrier network, uniquely identified by subscription id.
+ */
+public class MergedCarrierEntry extends WifiEntry {
+    static final String KEY_PREFIX = "MergedCarrierEntry:";
+
+    private final int mSubscriptionId;
+    @NonNull private final String mKey;
+    @NonNull private final Context mContext;
+    boolean mIsCellDefaultRoute;
+
+    MergedCarrierEntry(@NonNull Handler callbackHandler,
+            @NonNull WifiManager wifiManager,
+            @NonNull WifiNetworkScoreCache scoreCache,
+            boolean forSavedNetworksPage,
+            @NonNull Context context,
+            int subscriptionId) throws IllegalArgumentException {
+        super(callbackHandler, wifiManager, scoreCache, forSavedNetworksPage);
+        mContext = context;
+        mSubscriptionId = subscriptionId;
+        mKey = KEY_PREFIX + subscriptionId;
+    }
+
+    @Override
+    public String getKey() {
+        return mKey;
+    }
+
+    @Override
+    public String getSummary(boolean concise) {
+        StringJoiner sj = new StringJoiner(mContext.getString(
+                R.string.wifitrackerlib_summary_separator));
+        if (!concise) {
+            final String verboseLoggingDescription = getVerboseLoggingDescription(this);
+            if (!TextUtils.isEmpty(verboseLoggingDescription)) {
+                sj.add(verboseLoggingDescription);
+            }
+        }
+        return sj.toString();
+    }
+
+    @Override
+    public synchronized String getSsid() {
+        if (mWifiInfo != null) {
+            return sanitizeSsid(mWifiInfo.getSSID());
+        }
+        return null;
+    }
+
+    @Override
+    public synchronized String getMacAddress() {
+        if (mWifiInfo != null) {
+            final String wifiInfoMac = mWifiInfo.getMacAddress();
+            if (!TextUtils.isEmpty(wifiInfoMac)
+                    && !TextUtils.equals(wifiInfoMac, DEFAULT_MAC_ADDRESS)) {
+                return wifiInfoMac;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public synchronized boolean canConnect() {
+        return getConnectedState() == CONNECTED_STATE_DISCONNECTED && !mIsCellDefaultRoute;
+    }
+
+    @Override
+    public synchronized void connect(@Nullable ConnectCallback callback) {
+        mConnectCallback = callback;
+        mWifiManager.startRestrictingAutoJoinToSubscriptionId(mSubscriptionId);
+        Toast.makeText(mContext,
+                R.string.wifitrackerlib_wifi_wont_autoconnect_for_now, Toast.LENGTH_SHORT).show();
+        if (mConnectCallback != null) {
+            mCallbackHandler.post(() -> {
+                final ConnectCallback connectCallback = mConnectCallback;
+                if (connectCallback != null) {
+                    connectCallback.onConnectResult(ConnectCallback.CONNECT_STATUS_SUCCESS);
+                }
+            });
+        }
+    }
+
+    @Override
+    public boolean canDisconnect() {
+        return getConnectedState() == CONNECTED_STATE_CONNECTED;
+    }
+
+    @Override
+    public synchronized void disconnect(@Nullable DisconnectCallback callback) {
+        mDisconnectCallback = callback;
+        mWifiManager.stopRestrictingAutoJoinToSubscriptionId();
+        mWifiManager.startScan();
+        if (mDisconnectCallback != null) {
+            mCallbackHandler.post(() -> {
+                final DisconnectCallback disconnectCallback = mDisconnectCallback;
+                if (disconnectCallback != null) {
+                    disconnectCallback.onDisconnectResult(
+                            DisconnectCallback.DISCONNECT_STATUS_SUCCESS);
+                }
+            });
+        }
+    }
+
+    @WorkerThread
+    protected boolean connectionInfoMatches(@NonNull WifiInfo wifiInfo,
+            @NonNull NetworkInfo networkInfo) {
+        return wifiInfo.isCarrierMerged() && mSubscriptionId == wifiInfo.getSubscriptionId();
+    }
+
+    /** Returns whether or not carrier network offload is enabled for this subscription **/
+    public boolean isEnabled() {
+        return mWifiManager.isCarrierNetworkOffloadEnabled(mSubscriptionId, true);
+    }
+
+    /** Enables/disables the carrier network */
+    public void setEnabled(boolean enabled) {
+        mWifiManager.setCarrierNetworkOffloadEnabled(mSubscriptionId, true, enabled);
+        if (!enabled) {
+            mWifiManager.stopRestrictingAutoJoinToSubscriptionId();
+            mWifiManager.startScan();
+        }
+    }
+
+    /* package */ int getSubscriptionId() {
+        return mSubscriptionId;
+    }
+
+    /* package */ synchronized void updateIsCellDefaultRoute(boolean isCellDefaultRoute) {
+        mIsCellDefaultRoute = isCellDefaultRoute;
+        notifyOnUpdated();
+    }
+}
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NetworkDetailsTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NetworkDetailsTracker.java
index be50679..dd3819d 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NetworkDetailsTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NetworkDetailsTracker.java
@@ -71,8 +71,7 @@
             long maxScanAgeMillis,
             long scanIntervalMillis,
             String key) {
-        if (key.startsWith(StandardWifiEntry.KEY_PREFIX)
-                || key.startsWith(NetworkRequestEntry.KEY_PREFIX)) {
+        if (key.startsWith(StandardWifiEntry.KEY_PREFIX)) {
             return new StandardNetworkDetailsTracker(lifecycle, context, wifiManager,
                     connectivityManager, networkScoreManager, mainHandler, workerHandler, clock,
                     maxScanAgeMillis, scanIntervalMillis, key);
@@ -111,7 +110,7 @@
     @Override
     protected void handleNetworkStateChangedAction(@NonNull Intent intent) {
         checkNotNull(intent, "Intent cannot be null!");
-        mCurrentNetworkInfo = (NetworkInfo) intent.getExtra(WifiManager.EXTRA_NETWORK_INFO);
+        mCurrentNetworkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
         getWifiEntry().updateConnectionInfo(mWifiManager.getConnectionInfo(), mCurrentNetworkInfo);
     }
 
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NetworkRequestEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NetworkRequestEntry.java
index ccda30d..422d349 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NetworkRequestEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NetworkRequestEntry.java
@@ -16,12 +16,6 @@
 
 package com.android.wifitrackerlib;
 
-import static android.net.wifi.WifiInfo.sanitizeSsid;
-
-import static androidx.core.util.Preconditions.checkNotNull;
-
-import static com.android.wifitrackerlib.Utils.getSecurityTypeFromWifiConfiguration;
-
 import android.content.Context;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
@@ -35,14 +29,16 @@
 
 /**
  * WifiEntry representation of network requested through the NetworkRequest API,
- * uniquely identified by SSID and security.
+ * uniquely identified by SSID, security, and profile key.
  */
 @VisibleForTesting
 public class NetworkRequestEntry extends StandardWifiEntry {
-    static final String KEY_PREFIX = "NetworkRequestEntry:";
+    // TODO(b/187073621): This isn't used but is still referenced by clients of WifiTrackerLib.
+    //                    Remove once String keys are removed entirely.
+    public static final String KEY_PREFIX = "NetworkRequestEntry:";
 
     NetworkRequestEntry(@NonNull Context context, @NonNull Handler callbackHandler,
-            @NonNull String key, @NonNull WifiManager wifiManager,
+            @NonNull StandardWifiEntryKey key, @NonNull WifiManager wifiManager,
             @NonNull WifiNetworkScoreCache scoreCache,
             boolean forSavedNetworksPage) throws IllegalArgumentException {
         super(context, callbackHandler, key, wifiManager, scoreCache, forSavedNetworksPage);
@@ -149,12 +145,4 @@
     public void setAutoJoinEnabled(boolean enabled) {
         return;
     }
-
-    @NonNull
-    static String wifiConfigToNetworkRequestEntryKey(@NonNull WifiConfiguration config) {
-        checkNotNull(config, "Cannot create key with null config!");
-        checkNotNull(config.SSID, "Cannot create key with null SSID in config!");
-        return KEY_PREFIX + sanitizeSsid(config.SSID) + ","
-                + getSecurityTypeFromWifiConfiguration(config);
-    }
 }
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/OsuWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/OsuWifiEntry.java
index b1d7d4a..35e5825 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/OsuWifiEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/OsuWifiEntry.java
@@ -37,7 +37,6 @@
 import android.text.TextUtils;
 import android.util.Pair;
 
-import androidx.annotation.GuardedBy;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.WorkerThread;
@@ -53,14 +52,12 @@
 class OsuWifiEntry extends WifiEntry {
     static final String KEY_PREFIX = "OsuWifiEntry:";
 
-    private final Object mLock = new Object();
     // Scan result list must be thread safe for generating the verbose scan summary
-    @GuardedBy("mLock")
     @NonNull private final List<ScanResult> mCurrentScanResults = new ArrayList<>();
 
     @NonNull private final String mKey;
     @NonNull private final Context mContext;
-    @NonNull private OsuProvider mOsuProvider;
+    @NonNull private final OsuProvider mOsuProvider;
     private String mSsid;
     private String mOsuStatusString;
     private boolean mIsAlreadyProvisioned = false;
@@ -88,7 +85,7 @@
     }
 
     @Override
-    public String getTitle() {
+    public synchronized String getTitle() {
         final String friendlyName = mOsuProvider.getFriendlyName();
         if (!TextUtils.isEmpty(friendlyName)) {
             return friendlyName;
@@ -104,179 +101,51 @@
     }
 
     @Override
-    public String getSummary(boolean concise) {
+    public synchronized String getSummary(boolean concise) {
         // TODO(b/70983952): Add verbose summary
         if (mOsuStatusString != null) {
             return mOsuStatusString;
         } else if (isAlreadyProvisioned()) {
-            return concise ? mContext.getString(R.string.wifi_passpoint_expired)
-                    : mContext.getString(R.string.tap_to_renew_subscription_and_connect);
+            return concise ? mContext.getString(R.string.wifitrackerlib_wifi_passpoint_expired)
+                    : mContext.getString(
+                    R.string.wifitrackerlib_tap_to_renew_subscription_and_connect);
         } else {
-            return mContext.getString(R.string.tap_to_sign_up);
+            return mContext.getString(R.string.wifitrackerlib_tap_to_sign_up);
         }
     }
 
     @Override
-    public String getSsid() {
+    public synchronized String getSsid() {
         return mSsid;
     }
 
     @Override
-    @Security
-    public int getSecurity() {
-        return SECURITY_NONE;
-    }
-
-    @Override
     public String getMacAddress() {
         // TODO(b/70983952): Fill this method in in case we need the mac address for verbose logging
         return null;
     }
 
     @Override
-    public boolean isMetered() {
-        return false;
-    }
-
-    @Override
-    public boolean isSaved() {
-        return false;
-    }
-
-    @Override
-    public boolean isSuggestion() {
-        return false;
-    }
-
-    @Override
-    public boolean isSubscription() {
-        return false;
-    }
-
-    @Override
-    public WifiConfiguration getWifiConfiguration() {
-        return null;
-    }
-
-    @Override
-    public boolean canConnect() {
+    public synchronized boolean canConnect() {
         return mLevel != WIFI_LEVEL_UNREACHABLE
                 && getConnectedState() == CONNECTED_STATE_DISCONNECTED;
     }
 
     @Override
-    public void connect(@Nullable ConnectCallback callback) {
+    public synchronized void connect(@Nullable ConnectCallback callback) {
         mConnectCallback = callback;
+        mWifiManager.stopRestrictingAutoJoinToSubscriptionId();
         mWifiManager.startSubscriptionProvisioning(mOsuProvider, mContext.getMainExecutor(),
                 new OsuWifiEntryProvisioningCallback());
     }
 
-    // Exiting from the OSU flow should disconnect from the network.
-    @Override
-    public boolean canDisconnect() {
-        return false;
-    }
-
-    @Override
-    public void disconnect(@Nullable DisconnectCallback callback) {
-    }
-
-    @Override
-    public boolean canForget() {
-        return false;
-    }
-
-    @Override
-    public void forget(@Nullable ForgetCallback callback) {
-    }
-
-    @Override
-    public boolean canSignIn() {
-        return false;
-    }
-
-    @Override
-    public void signIn(@Nullable SignInCallback callback) {
-        return;
-    }
-
-    @Override
-    public boolean canShare() {
-        return false;
-    }
-
-    @Override
-    public boolean canEasyConnect() {
-        return false;
-    }
-
-    @Override
-    @MeteredChoice
-    public int getMeteredChoice() {
-        // Metered choice is meaningless for OSU entries
-        return METERED_CHOICE_AUTO;
-    }
-
-    @Override
-    public boolean canSetMeteredChoice() {
-        return false;
-    }
-
-    @Override
-    public void setMeteredChoice(int meteredChoice) {
-        // Metered choice is meaningless for OSU entries
-    }
-
-    @Override
-    @Privacy
-    public int getPrivacy() {
-        // MAC Randomization choice is meaningless for OSU entries.
-        return PRIVACY_UNKNOWN;
-    }
-
-    @Override
-    public boolean canSetPrivacy() {
-        return false;
-    }
-
-    @Override
-    public void setPrivacy(int privacy) {
-        // MAC Randomization choice is meaningless for OSU entries.
-    }
-
-    @Override
-    public boolean isAutoJoinEnabled() {
-        return false;
-    }
-
-    @Override
-    public boolean canSetAutoJoinEnabled() {
-        return false;
-    }
-
-    @Override
-    public void setAutoJoinEnabled(boolean enabled) {
-    }
-
-    @Override
-    public String getSecurityString(boolean concise) {
-        return "";
-    }
-
-    @Override
-    public boolean isExpired() {
-        return false;
-    }
-
     @WorkerThread
-    void updateScanResultInfo(@Nullable List<ScanResult> scanResults)
+    synchronized void updateScanResultInfo(@Nullable List<ScanResult> scanResults)
             throws IllegalArgumentException {
         if (scanResults == null) scanResults = new ArrayList<>();
 
-        synchronized (mLock) {
-            mCurrentScanResults.clear();
-            mCurrentScanResults.addAll(scanResults);
-        }
+        mCurrentScanResults.clear();
+        mCurrentScanResults.addAll(scanResults);
 
         final ScanResult bestScanResult = getBestScanResultByLevel(scanResults);
         if (bestScanResult != null) {
@@ -306,7 +175,7 @@
     }
 
     @Override
-    String getScanResultDescription() {
+    protected String getScanResultDescription() {
         // TODO(b/70983952): Fill this method in.
         return "";
     }
@@ -315,25 +184,31 @@
         return mOsuProvider;
     }
 
-    boolean isAlreadyProvisioned() {
+    synchronized boolean isAlreadyProvisioned() {
         return mIsAlreadyProvisioned;
     }
 
-    void setAlreadyProvisioned(boolean isAlreadyProvisioned) {
+    synchronized void setAlreadyProvisioned(boolean isAlreadyProvisioned) {
         mIsAlreadyProvisioned = isAlreadyProvisioned;
     }
 
     class OsuWifiEntryProvisioningCallback extends ProvisioningCallback {
         @Override
         @MainThread public void onProvisioningFailure(int status) {
-            if (TextUtils.equals(
-                    mOsuStatusString, mContext.getString(R.string.osu_completing_sign_up))) {
-                mOsuStatusString = mContext.getString(R.string.osu_sign_up_failed);
-            } else {
-                mOsuStatusString = mContext.getString(R.string.osu_connect_failed);
+            synchronized (OsuWifiEntry.this) {
+                if (TextUtils.equals(
+                        mOsuStatusString, mContext.getString(
+                                R.string.wifitrackerlib_osu_completing_sign_up))) {
+                    mOsuStatusString =
+                            mContext.getString(R.string.wifitrackerlib_osu_sign_up_failed);
+                } else {
+                    mOsuStatusString =
+                            mContext.getString(R.string.wifitrackerlib_osu_connect_failed);
+                }
             }
-            if (mConnectCallback != null) {
-                mConnectCallback.onConnectResult(CONNECT_STATUS_FAILURE_UNKNOWN);
+            final ConnectCallback connectCallback = mConnectCallback;
+            if (connectCallback != null) {
+                connectCallback.onConnectResult(CONNECT_STATUS_FAILURE_UNKNOWN);
             }
             notifyOnUpdated();
         }
@@ -350,35 +225,41 @@
                 case OSU_STATUS_INIT_SOAP_EXCHANGE:
                 case OSU_STATUS_WAITING_FOR_REDIRECT_RESPONSE:
                     newStatusString = String.format(mContext.getString(
-                            R.string.osu_opening_provider),
+                            R.string.wifitrackerlib_osu_opening_provider),
                             getTitle());
                     break;
                 case OSU_STATUS_REDIRECT_RESPONSE_RECEIVED:
                 case OSU_STATUS_SECOND_SOAP_EXCHANGE:
                 case OSU_STATUS_THIRD_SOAP_EXCHANGE:
                 case OSU_STATUS_RETRIEVING_TRUST_ROOT_CERTS:
-                    newStatusString = mContext.getString(R.string.osu_completing_sign_up);
+                    newStatusString = mContext.getString(
+                    R.string.wifitrackerlib_osu_completing_sign_up);
                     break;
             }
-            boolean updated = !TextUtils.equals(mOsuStatusString, newStatusString);
-            mOsuStatusString = newStatusString;
-            if (updated) {
-                notifyOnUpdated();
+            synchronized (OsuWifiEntry.this) {
+                boolean updated = !TextUtils.equals(mOsuStatusString, newStatusString);
+                mOsuStatusString = newStatusString;
+                if (updated) {
+                    notifyOnUpdated();
+                }
             }
         }
 
         @Override
         @MainThread public void onProvisioningComplete() {
-            mOsuStatusString = mContext.getString(R.string.osu_sign_up_complete);
+            synchronized (OsuWifiEntry.this) {
+                mOsuStatusString = mContext.getString(R.string.wifitrackerlib_osu_sign_up_complete);
+            }
             notifyOnUpdated();
 
             PasspointConfiguration passpointConfig = mWifiManager
                     .getMatchingPasspointConfigsForOsuProviders(Collections.singleton(mOsuProvider))
                     .get(mOsuProvider);
+            final ConnectCallback connectCallback = mConnectCallback;
             if (passpointConfig == null) {
                 // Failed to find the config we just provisioned
-                if (mConnectCallback != null) {
-                    mConnectCallback.onConnectResult(CONNECT_STATUS_FAILURE_UNKNOWN);
+                if (connectCallback != null) {
+                    connectCallback.onConnectResult(CONNECT_STATUS_FAILURE_UNKNOWN);
                 }
                 return;
             }
@@ -406,8 +287,8 @@
             }
 
             // Failed to find the network we provisioned for
-            if (mConnectCallback != null) {
-                mConnectCallback.onConnectResult(CONNECT_STATUS_FAILURE_UNKNOWN);
+            if (connectCallback != null) {
+                connectCallback.onConnectResult(CONNECT_STATUS_FAILURE_UNKNOWN);
             }
         }
     }
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointNetworkDetailsTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointNetworkDetailsTracker.java
index e4efcb9..42f816f 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointNetworkDetailsTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointNetworkDetailsTracker.java
@@ -50,7 +50,7 @@
 /**
  * Implementation of NetworkDetailsTracker that tracks a single PasspointWifiEntry.
  */
-class PasspointNetworkDetailsTracker extends NetworkDetailsTracker {
+public class PasspointNetworkDetailsTracker extends NetworkDetailsTracker {
     private static final String TAG = "PasspointNetworkDetailsTracker";
 
     private final PasspointWifiEntry mChosenEntry;
@@ -58,7 +58,7 @@
     private NetworkInfo mCurrentNetworkInfo;
     private WifiConfiguration mCurrentWifiConfig;
 
-    PasspointNetworkDetailsTracker(@NonNull Lifecycle lifecycle,
+    public PasspointNetworkDetailsTracker(@NonNull Lifecycle lifecycle,
             @NonNull Context context,
             @NonNull WifiManager wifiManager,
             @NonNull ConnectivityManager connectivityManager,
@@ -99,6 +99,10 @@
                         "Cannot find config for given PasspointWifiEntry key!");
             }
         }
+        // It is safe to call updateStartInfo() in the main thread here since onStart() won't have
+        // a chance to post handleOnStart() on the worker thread until the main thread finishes
+        // calling this constructor.
+        updateStartInfo();
     }
 
     @AnyThread
@@ -111,17 +115,7 @@
     @WorkerThread
     @Override
     protected  void handleOnStart() {
-        conditionallyUpdateScanResults(true /* lastScanSucceeded */);
-        conditionallyUpdateConfig();
-        final WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
-        final Network currentNetwork = mWifiManager.getCurrentNetwork();
-        mCurrentNetworkInfo = mConnectivityManager.getNetworkInfo(currentNetwork);
-        mChosenEntry.updateConnectionInfo(wifiInfo, mCurrentNetworkInfo);
-        handleNetworkCapabilitiesChanged(
-                mConnectivityManager.getNetworkCapabilities(currentNetwork));
-        handleLinkPropertiesChanged(mConnectivityManager.getLinkProperties(currentNetwork));
-        mChosenEntry.setIsDefaultNetwork(mIsWifiDefaultRoute);
-        mChosenEntry.setIsLowQuality(mIsWifiValidated && mIsCellDefaultRoute);
+        updateStartInfo();
     }
 
     @WorkerThread
@@ -146,6 +140,21 @@
     }
 
     @WorkerThread
+    private void updateStartInfo() {
+        conditionallyUpdateScanResults(true /* lastScanSucceeded */);
+        conditionallyUpdateConfig();
+        final WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
+        final Network currentNetwork = mWifiManager.getCurrentNetwork();
+        mCurrentNetworkInfo = mConnectivityManager.getNetworkInfo(currentNetwork);
+        mChosenEntry.updateConnectionInfo(wifiInfo, mCurrentNetworkInfo);
+        handleNetworkCapabilitiesChanged(
+                mConnectivityManager.getNetworkCapabilities(currentNetwork));
+        handleLinkPropertiesChanged(mConnectivityManager.getLinkProperties(currentNetwork));
+        mChosenEntry.setIsDefaultNetwork(mIsWifiDefaultRoute);
+        mChosenEntry.setIsLowQuality(mIsWifiValidated && mIsCellDefaultRoute);
+    }
+
+    @WorkerThread
     private void updatePasspointWifiEntryScans(@NonNull List<ScanResult> scanResults) {
         checkNotNull(scanResults, "Scan Result list should not be null!");
 
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java
index 1f0a34b..59994a9 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java
@@ -17,27 +17,28 @@
 package com.android.wifitrackerlib;
 
 import static android.net.wifi.WifiInfo.DEFAULT_MAC_ADDRESS;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_PASSPOINT_R1_R2;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_PASSPOINT_R3;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_UNKNOWN;
 import static android.net.wifi.WifiInfo.sanitizeSsid;
 
 import static androidx.core.util.Preconditions.checkNotNull;
 
-import static com.android.wifitrackerlib.Utils.getAppLabel;
 import static com.android.wifitrackerlib.Utils.getAutoConnectDescription;
 import static com.android.wifitrackerlib.Utils.getAverageSpeedFromScanResults;
 import static com.android.wifitrackerlib.Utils.getBestScanResultByLevel;
-import static com.android.wifitrackerlib.Utils.getCarrierNameForSubId;
-import static com.android.wifitrackerlib.Utils.getCurrentNetworkCapabilitiesInformation;
-import static com.android.wifitrackerlib.Utils.getDisconnectedStateDescription;
+import static com.android.wifitrackerlib.Utils.getConnectedDescription;
+import static com.android.wifitrackerlib.Utils.getConnectingDescription;
+import static com.android.wifitrackerlib.Utils.getDisconnectedDescription;
 import static com.android.wifitrackerlib.Utils.getImsiProtectionDescription;
 import static com.android.wifitrackerlib.Utils.getMeteredDescription;
-import static com.android.wifitrackerlib.Utils.getNetworkDetailedState;
-import static com.android.wifitrackerlib.Utils.getSecurityTypeFromWifiConfiguration;
 import static com.android.wifitrackerlib.Utils.getSpeedDescription;
 import static com.android.wifitrackerlib.Utils.getSpeedFromWifiInfo;
-import static com.android.wifitrackerlib.Utils.getSubIdForConfig;
 import static com.android.wifitrackerlib.Utils.getVerboseLoggingDescription;
 
 import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkCapabilities;
 import android.net.NetworkInfo;
 import android.net.wifi.ScanResult;
 import android.net.wifi.WifiConfiguration;
@@ -47,8 +48,8 @@
 import android.net.wifi.hotspot2.PasspointConfiguration;
 import android.os.Handler;
 import android.text.TextUtils;
+import android.util.Log;
 
-import androidx.annotation.GuardedBy;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.WorkerThread;
@@ -56,6 +57,7 @@
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.StringJoiner;
 
@@ -64,25 +66,25 @@
  */
 @VisibleForTesting
 public class PasspointWifiEntry extends WifiEntry implements WifiEntry.WifiEntryCallback {
-    static final String KEY_PREFIX = "PasspointWifiEntry:";
+    static final String TAG = "PasspointWifiEntry";
+    public static final String KEY_PREFIX = "PasspointWifiEntry:";
 
-    private final Object mLock = new Object();
-    // Scan result list must be thread safe for generating the verbose scan summary
-    @GuardedBy("mLock")
     private final List<ScanResult> mCurrentHomeScanResults = new ArrayList<>();
-    @GuardedBy("mLock")
     private final List<ScanResult> mCurrentRoamingScanResults = new ArrayList<>();
 
     @NonNull private final String mKey;
-    @NonNull private String mFqdn;
-    @NonNull private String mFriendlyName;
+    @NonNull private final String mFqdn;
+    @NonNull private final String mFriendlyName;
     @NonNull private final Context mContext;
     @Nullable
     private PasspointConfiguration mPasspointConfig;
     @Nullable private WifiConfiguration mWifiConfig;
-    private @Security int mSecurity = SECURITY_EAP;
+    private List<Integer> mTargetSecurityTypes =
+            List.of(SECURITY_TYPE_PASSPOINT_R1_R2, SECURITY_TYPE_PASSPOINT_R3);
+
     private boolean mIsRoaming = false;
     private OsuWifiEntry mOsuWifiEntry;
+    private boolean mShouldAutoOpenCaptivePortal = false;
 
     protected long mSubscriptionExpirationTimeInMillis;
 
@@ -109,6 +111,7 @@
         mPasspointConfig = passpointConfig;
         mKey = uniqueIdToPasspointWifiEntryKey(passpointConfig.getUniqueId());
         mFqdn = passpointConfig.getHomeSp().getFqdn();
+        checkNotNull(mFqdn, "Cannot construct with null PasspointConfiguration FQDN!");
         mFriendlyName = passpointConfig.getHomeSp().getFriendlyName();
         mSubscriptionExpirationTimeInMillis =
                 passpointConfig.getSubscriptionExpirationTimeMillis();
@@ -127,7 +130,7 @@
             boolean forSavedNetworksPage) throws IllegalArgumentException {
         super(callbackHandler, wifiManager, scoreCache, forSavedNetworksPage);
 
-        checkNotNull(wifiConfig, "Cannot construct with null PasspointConfiguration!");
+        checkNotNull(wifiConfig, "Cannot construct with null WifiConfiguration!");
         if (!wifiConfig.isPasspoint()) {
             throw new IllegalArgumentException("Given WifiConfiguration is not for Passpoint!");
         }
@@ -136,6 +139,7 @@
         mWifiConfig = wifiConfig;
         mKey = uniqueIdToPasspointWifiEntryKey(wifiConfig.getKey());
         mFqdn = wifiConfig.FQDN;
+        checkNotNull(mFqdn, "Cannot construct with null WifiConfiguration FQDN!");
         mFriendlyName = mWifiConfig.providerFriendlyName;
     }
 
@@ -146,7 +150,7 @@
 
     @Override
     @ConnectedState
-    public int getConnectedState() {
+    public synchronized int getConnectedState() {
         if (isExpired()) {
             if (super.getConnectedState() == CONNECTED_STATE_DISCONNECTED
                     && mOsuWifiEntry != null) {
@@ -162,43 +166,43 @@
     }
 
     @Override
-    public String getSummary(boolean concise) {
-        StringJoiner sj = new StringJoiner(mContext.getString(R.string.summary_separator));
+    public synchronized String getSummary(boolean concise) {
+        StringJoiner sj = new StringJoiner(mContext.getString(
+                R.string.wifitrackerlib_summary_separator));
 
         if (isExpired()) {
             if (mOsuWifiEntry != null) {
                 sj.add(mOsuWifiEntry.getSummary(concise));
             } else {
-                sj.add(mContext.getString(R.string.wifi_passpoint_expired));
-            }
-        } else if (getConnectedState() == CONNECTED_STATE_DISCONNECTED) {
-            String disconnectDescription = getDisconnectedStateDescription(mContext, this);
-            if (TextUtils.isEmpty(disconnectDescription)) {
-                if (concise) {
-                    sj.add(mContext.getString(R.string.wifi_disconnected));
-                } else if (!mForSavedNetworksPage) {
-                    if (mWifiConfig != null && mWifiConfig.fromWifiNetworkSuggestion) {
-                        String carrierName = getCarrierNameForSubId(mContext,
-                                getSubIdForConfig(mContext, mWifiConfig));
-                        String suggestorLabel = getAppLabel(mContext, mWifiConfig.creatorName);
-                        if (TextUtils.isEmpty(suggestorLabel)) {
-                            // Fall-back to the package name in case the app label is missing
-                            suggestorLabel = mWifiConfig.creatorName;
-                        }
-                        sj.add(mContext.getString(R.string.available_via_app, carrierName != null
-                                ? carrierName
-                                : suggestorLabel));
-                    } else {
-                        sj.add(mContext.getString(R.string.wifi_remembered));
-                    }
-                }
-            } else {
-                sj.add(disconnectDescription);
+                sj.add(mContext.getString(R.string.wifitrackerlib_wifi_passpoint_expired));
             }
         } else {
-            String connectDescription = getConnectStateDescription();
-            if (!TextUtils.isEmpty(connectDescription)) {
-                sj.add(connectDescription);
+            final String connectedStateDescription;
+            final @ConnectedState int connectedState = getConnectedState();
+            switch (connectedState) {
+                case CONNECTED_STATE_DISCONNECTED:
+                    connectedStateDescription = getDisconnectedDescription(mContext,
+                            mWifiConfig,
+                            mForSavedNetworksPage,
+                            concise);
+                    break;
+                case CONNECTED_STATE_CONNECTING:
+                    connectedStateDescription = getConnectingDescription(mContext, mNetworkInfo);
+                    break;
+                case CONNECTED_STATE_CONNECTED:
+                    connectedStateDescription = getConnectedDescription(mContext,
+                            mWifiConfig,
+                            mNetworkCapabilities,
+                            null /* recommendationServiceLabel */,
+                            mIsDefaultNetwork,
+                            mIsLowQuality);
+                    break;
+                default:
+                    Log.e(TAG, "getConnectedState() returned unknown state: " + connectedState);
+                    connectedStateDescription = null;
+            }
+            if (!TextUtils.isEmpty(connectedStateDescription)) {
+                sj.add(connectedStateDescription);
             }
         }
 
@@ -227,47 +231,14 @@
         return sj.toString();
     }
 
-    private String getConnectStateDescription() {
-        if (getConnectedState() == CONNECTED_STATE_CONNECTED) {
-            // For network suggestions
-            final String suggestionOrSpecifierPackageName = mWifiInfo != null
-                    ? mWifiInfo.getRequestingPackageName() : null;
-            if (!TextUtils.isEmpty(suggestionOrSpecifierPackageName)) {
-                String carrierName = mWifiConfig != null
-                        ? getCarrierNameForSubId(mContext, getSubIdForConfig(mContext, mWifiConfig))
-                        : null;
-                String suggestorLabel = getAppLabel(mContext, suggestionOrSpecifierPackageName);
-                if (TextUtils.isEmpty(suggestorLabel)) {
-                    // Fall-back to the package name in case the app label is missing
-                    suggestorLabel = suggestionOrSpecifierPackageName;
-                }
-                return mContext.getString(R.string.connected_via_app, carrierName != null
-                        ? carrierName
-                        : suggestorLabel);
-            }
-
-            if (mIsLowQuality) {
-                return mContext.getString(R.string.wifi_connected_low_quality);
-            }
-
-            String networkCapabilitiesinformation =
-                    getCurrentNetworkCapabilitiesInformation(mContext, mNetworkCapabilities);
-            if (!TextUtils.isEmpty(networkCapabilitiesinformation)) {
-                return networkCapabilitiesinformation;
-            }
-        }
-
-        return getNetworkDetailedState(mContext, mNetworkInfo);
-    }
-
     @Override
-    public CharSequence getSecondSummary() {
+    public synchronized CharSequence getSecondSummary() {
         return getConnectedState() == CONNECTED_STATE_CONNECTED
                 ? getImsiProtectionDescription(mContext, mWifiConfig) : "";
     }
 
     @Override
-    public String getSsid() {
+    public synchronized String getSsid() {
         if (mWifiInfo != null) {
             return sanitizeSsid(mWifiInfo.getSSID());
         }
@@ -276,13 +247,12 @@
     }
 
     @Override
-    @Security
-    public int getSecurity() {
-        return mSecurity;
+    public synchronized List<Integer> getSecurityTypes() {
+        return new ArrayList<>(mTargetSecurityTypes);
     }
 
     @Override
-    public String getMacAddress() {
+    public synchronized String getMacAddress() {
         if (mWifiInfo != null) {
             final String wifiInfoMac = mWifiInfo.getMacAddress();
             if (!TextUtils.isEmpty(wifiInfoMac)
@@ -301,33 +271,23 @@
     }
 
     @Override
-    public boolean isMetered() {
+    public synchronized boolean isMetered() {
         return getMeteredChoice() == METERED_CHOICE_METERED
                 || (mWifiConfig != null && mWifiConfig.meteredHint);
     }
 
     @Override
-    public boolean isSaved() {
-        return false;
-    }
-
-    @Override
-    public boolean isSuggestion() {
+    public synchronized boolean isSuggestion() {
         return mWifiConfig != null && mWifiConfig.fromWifiNetworkSuggestion;
     }
 
     @Override
-    public boolean isSubscription() {
+    public synchronized boolean isSubscription() {
         return mPasspointConfig != null;
     }
 
     @Override
-    public WifiConfiguration getWifiConfiguration() {
-        return null;
-    }
-
-    @Override
-    public boolean canConnect() {
+    public synchronized boolean canConnect() {
         if (isExpired()) {
             return mOsuWifiEntry != null && mOsuWifiEntry.canConnect();
         }
@@ -337,20 +297,23 @@
     }
 
     @Override
-    public void connect(@Nullable ConnectCallback callback) {
+    public synchronized void connect(@Nullable ConnectCallback callback) {
         if (isExpired()) {
             if (mOsuWifiEntry != null) {
                 mOsuWifiEntry.connect(callback);
                 return;
             }
         }
-
+        // We should flag this network to auto-open captive portal since this method represents
+        // the user manually connecting to a network (i.e. not auto-join).
+        mShouldAutoOpenCaptivePortal = true;
         mConnectCallback = callback;
 
         if (mWifiConfig == null) {
             // We should not be able to call connect() if mWifiConfig is null
             new ConnectActionListener().onFailure(0);
         }
+        mWifiManager.stopRestrictingAutoJoinToSubscriptionId();
         mWifiManager.connect(mWifiConfig, new ConnectActionListener());
     }
 
@@ -360,7 +323,7 @@
     }
 
     @Override
-    public void disconnect(@Nullable DisconnectCallback callback) {
+    public synchronized void disconnect(@Nullable DisconnectCallback callback) {
         if (canDisconnect()) {
             mCalledDisconnect = true;
             mDisconnectCallback = callback;
@@ -370,18 +333,18 @@
                             DisconnectCallback.DISCONNECT_STATUS_FAILURE_UNKNOWN);
                 }
             }, 10_000 /* delayMillis */);
-            mWifiManager.disableEphemeralNetwork(mWifiConfig.FQDN);
+            mWifiManager.disableEphemeralNetwork(mFqdn);
             mWifiManager.disconnect();
         }
     }
 
     @Override
-    public boolean canForget() {
+    public synchronized boolean canForget() {
         return !isSuggestion() && mPasspointConfig != null;
     }
 
     @Override
-    public void forget(@Nullable ForgetCallback callback) {
+    public synchronized void forget(@Nullable ForgetCallback callback) {
         if (!canForget()) {
             return;
         }
@@ -392,28 +355,8 @@
     }
 
     @Override
-    public boolean canSignIn() {
-        return false;
-    }
-
-    @Override
-    public void signIn(@Nullable SignInCallback callback) {
-        return;
-    }
-
-    @Override
-    public boolean canShare() {
-        return false;
-    }
-
-    @Override
-    public boolean canEasyConnect() {
-        return false;
-    }
-
-    @Override
     @MeteredChoice
-    public int getMeteredChoice() {
+    public synchronized int getMeteredChoice() {
         if (mMeteredOverride == WifiConfiguration.METERED_OVERRIDE_METERED) {
             return METERED_CHOICE_METERED;
         } else if (mMeteredOverride == WifiConfiguration.METERED_OVERRIDE_NOT_METERED) {
@@ -423,13 +366,13 @@
     }
 
     @Override
-    public boolean canSetMeteredChoice() {
+    public synchronized boolean canSetMeteredChoice() {
         return !isSuggestion() && mPasspointConfig != null;
     }
 
     @Override
-    public void setMeteredChoice(int meteredChoice) {
-        if (!canSetMeteredChoice()) {
+    public synchronized void setMeteredChoice(int meteredChoice) {
+        if (mPasspointConfig == null || !canSetMeteredChoice()) {
             return;
         }
 
@@ -452,13 +395,13 @@
     }
 
     @Override
-    public boolean canSetPrivacy() {
+    public synchronized boolean canSetPrivacy() {
         return !isSuggestion() && mPasspointConfig != null;
     }
 
     @Override
     @Privacy
-    public int getPrivacy() {
+    public synchronized int getPrivacy() {
         if (mPasspointConfig == null) {
             return PRIVACY_RANDOMIZED_MAC;
         }
@@ -468,8 +411,8 @@
     }
 
     @Override
-    public void setPrivacy(int privacy) {
-        if (!canSetPrivacy()) {
+    public synchronized void setPrivacy(int privacy) {
+        if (mPasspointConfig == null || !canSetPrivacy()) {
             return;
         }
 
@@ -479,7 +422,7 @@
     }
 
     @Override
-    public boolean isAutoJoinEnabled() {
+    public synchronized boolean isAutoJoinEnabled() {
         // Suggestion network; use WifiConfig instead
         if (mPasspointConfig != null) {
             return mPasspointConfig.isAutojoinEnabled();
@@ -491,12 +434,12 @@
     }
 
     @Override
-    public boolean canSetAutoJoinEnabled() {
+    public synchronized boolean canSetAutoJoinEnabled() {
         return mPasspointConfig != null || mWifiConfig != null;
     }
 
     @Override
-    public void setAutoJoinEnabled(boolean enabled) {
+    public synchronized void setAutoJoinEnabled(boolean enabled) {
         if (mPasspointConfig != null) {
             mWifiManager.allowAutojoinPasspoint(mPasspointConfig.getHomeSp().getFqdn(), enabled);
         } else if (mWifiConfig != null) {
@@ -506,12 +449,11 @@
 
     @Override
     public String getSecurityString(boolean concise) {
-        return concise ? mContext.getString(R.string.wifi_security_short_eap) :
-                mContext.getString(R.string.wifi_security_eap);
+        return mContext.getString(R.string.wifitrackerlib_wifi_security_passpoint);
     }
 
     @Override
-    public boolean isExpired() {
+    public synchronized boolean isExpired() {
         if (mSubscriptionExpirationTimeInMillis <= 0) {
             // Expiration time not specified.
             return false;
@@ -521,10 +463,9 @@
     }
 
     @WorkerThread
-    void updatePasspointConfig(@Nullable PasspointConfiguration passpointConfig) {
+    synchronized void updatePasspointConfig(@Nullable PasspointConfiguration passpointConfig) {
         mPasspointConfig = passpointConfig;
         if (mPasspointConfig != null) {
-            mFriendlyName = passpointConfig.getHomeSp().getFriendlyName();
             mSubscriptionExpirationTimeInMillis =
                     passpointConfig.getSubscriptionExpirationTimeMillis();
             mMeteredOverride = passpointConfig.getMeteredOverride();
@@ -533,24 +474,21 @@
     }
 
     @WorkerThread
-    void updateScanResultInfo(@Nullable WifiConfiguration wifiConfig,
+    synchronized void updateScanResultInfo(@Nullable WifiConfiguration wifiConfig,
             @Nullable List<ScanResult> homeScanResults,
             @Nullable List<ScanResult> roamingScanResults)
             throws IllegalArgumentException {
         mIsRoaming = false;
         mWifiConfig = wifiConfig;
-        synchronized (mLock) {
-            mCurrentHomeScanResults.clear();
-            mCurrentRoamingScanResults.clear();
-            if (homeScanResults != null) {
-                mCurrentHomeScanResults.addAll(homeScanResults);
-            }
-            if (roamingScanResults != null) {
-                mCurrentRoamingScanResults.addAll(roamingScanResults);
-            }
+        mCurrentHomeScanResults.clear();
+        mCurrentRoamingScanResults.clear();
+        if (homeScanResults != null) {
+            mCurrentHomeScanResults.addAll(homeScanResults);
+        }
+        if (roamingScanResults != null) {
+            mCurrentRoamingScanResults.addAll(roamingScanResults);
         }
         if (mWifiConfig != null) {
-            mSecurity = getSecurityTypeFromWifiConfiguration(wifiConfig);
             List<ScanResult> currentScanResults = new ArrayList<>();
             ScanResult bestScanResult = null;
             if (homeScanResults != null && !homeScanResults.isEmpty()) {
@@ -576,19 +514,28 @@
         notifyOnUpdated();
     }
 
+    @Override
+    protected synchronized void updateSecurityTypes() {
+        if (mWifiInfo != null) {
+            final int wifiInfoSecurity = mWifiInfo.getCurrentSecurityType();
+            if (wifiInfoSecurity != SECURITY_TYPE_UNKNOWN) {
+                mTargetSecurityTypes = Collections.singletonList(wifiInfoSecurity);
+                return;
+            }
+        }
+    }
+
     @WorkerThread
-    void onScoreCacheUpdated() {
+    synchronized void onScoreCacheUpdated() {
         if (mWifiInfo != null) {
             mSpeed = getSpeedFromWifiInfo(mScoreCache, mWifiInfo);
         } else {
-            synchronized (mLock) {
-                // Average speed is used to prevent speed label flickering from multiple APs.
-                if (!mCurrentHomeScanResults.isEmpty()) {
-                    mSpeed = getAverageSpeedFromScanResults(mScoreCache, mCurrentHomeScanResults);
-                } else {
-                    mSpeed = getAverageSpeedFromScanResults(mScoreCache,
-                            mCurrentRoamingScanResults);
-                }
+            // Average speed is used to prevent speed label flickering from multiple APs.
+            if (!mCurrentHomeScanResults.isEmpty()) {
+                mSpeed = getAverageSpeedFromScanResults(mScoreCache, mCurrentHomeScanResults);
+            } else {
+                mSpeed = getAverageSpeedFromScanResults(mScoreCache,
+                        mCurrentRoamingScanResults);
             }
         }
         notifyOnUpdated();
@@ -606,6 +553,18 @@
         return TextUtils.equals(wifiInfo.getPasspointFqdn(), mFqdn);
     }
 
+    @WorkerThread
+    @Override
+    synchronized void updateNetworkCapabilities(@Nullable NetworkCapabilities capabilities) {
+        super.updateNetworkCapabilities(capabilities);
+
+        // Auto-open an available captive portal if the user manually connected to this network.
+        if (canSignIn() && mShouldAutoOpenCaptivePortal) {
+            mShouldAutoOpenCaptivePortal = false;
+            signIn(null /* callback */);
+        }
+    }
+
     @NonNull
     static String uniqueIdToPasspointWifiEntryKey(@NonNull String uniqueId) {
         checkNotNull(uniqueId, "Cannot create key with null unique id!");
@@ -613,18 +572,18 @@
     }
 
     @Override
-    String getScanResultDescription() {
+    protected String getScanResultDescription() {
         // TODO(b/70983952): Fill this method in.
         return "";
     }
 
     @Override
-    String getNetworkSelectionDescription() {
+    synchronized String getNetworkSelectionDescription() {
         return Utils.getNetworkSelectionDescription(mWifiConfig);
     }
 
     /** Pass a reference to a matching OsuWifiEntry for expiration handling */
-    void setOsuWifiEntry(OsuWifiEntry osuWifiEntry) {
+    synchronized void setOsuWifiEntry(OsuWifiEntry osuWifiEntry) {
         mOsuWifiEntry = osuWifiEntry;
         if (mOsuWifiEntry != null) {
             mOsuWifiEntry.setListener(this);
@@ -636,4 +595,26 @@
     public void onUpdated() {
         notifyOnUpdated();
     }
+
+    @Override
+    public synchronized boolean canSignIn() {
+        return mNetworkCapabilities != null
+                && mNetworkCapabilities.hasCapability(
+                NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL);
+    }
+
+    @Override
+    public void signIn(@Nullable SignInCallback callback) {
+        if (canSignIn()) {
+            // canSignIn() implies that this WifiEntry is the currently connected network, so use
+            // getCurrentNetwork() to start the captive portal app.
+            ((ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE))
+                    .startCaptivePortalApp(mWifiManager.getCurrentNetwork());
+        }
+    }
+
+    /** Get the PasspointConfiguration instance of the entry. */
+    public PasspointConfiguration getPasspointConfig() {
+        return mPasspointConfig;
+    }
 }
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java
index df931f8..8933ce7 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java
@@ -19,8 +19,8 @@
 import static androidx.core.util.Preconditions.checkNotNull;
 
 import static com.android.wifitrackerlib.PasspointWifiEntry.uniqueIdToPasspointWifiEntryKey;
-import static com.android.wifitrackerlib.StandardWifiEntry.wifiConfigToStandardWifiEntryKey;
-import static com.android.wifitrackerlib.Utils.mapScanResultsToKey;
+import static com.android.wifitrackerlib.StandardWifiEntry.ScanResultKey;
+import static com.android.wifitrackerlib.StandardWifiEntry.StandardWifiEntryKey;
 
 import static java.util.stream.Collectors.toMap;
 
@@ -76,7 +76,7 @@
     @GuardedBy("mLock") private final List<WifiEntry> mSubscriptionWifiEntries = new ArrayList<>();
 
     // Cache containing saved StandardWifiEntries. Must be accessed only by the worker thread.
-    private final Map<String, StandardWifiEntry> mStandardWifiEntryCache = new HashMap<>();
+    private final List<StandardWifiEntry> mStandardWifiEntryCache = new ArrayList<>();
     // Cache containing saved PasspointWifiEntries. Must be accessed only by the worker thread.
     private final Map<String, PasspointWifiEntry> mPasspointWifiEntryCache = new HashMap<>();
 
@@ -154,15 +154,7 @@
     @Override
     protected void handleConfiguredNetworksChangedAction(@Nullable Intent intent) {
         checkNotNull(intent, "Intent cannot be null!");
-
-        final WifiConfiguration config =
-                (WifiConfiguration) intent.getExtra(WifiManager.EXTRA_WIFI_CONFIGURATION);
-        if (config != null && !config.isPasspoint()) {
-            updateStandardWifiEntryConfig(
-                    config, (Integer) intent.getExtra(WifiManager.EXTRA_CHANGE_REASON));
-        } else {
-            updateStandardWifiEntryConfigs(mWifiManager.getConfiguredNetworks());
-        }
+        updateStandardWifiEntryConfigs(mWifiManager.getConfiguredNetworks());
         updatePasspointWifiEntryConfigs(mWifiManager.getPasspointConfigurations());
         updateSavedWifiEntries();
         updateSubscriptionWifiEntries();
@@ -171,7 +163,7 @@
     @WorkerThread
     @Override
     protected void handleNetworkScoreCacheUpdated() {
-        for (StandardWifiEntry entry : mStandardWifiEntryCache.values()) {
+        for (StandardWifiEntry entry : mStandardWifiEntryCache) {
             entry.onScoreCacheUpdated();
         }
         for (PasspointWifiEntry entry : mPasspointWifiEntryCache.values()) {
@@ -182,7 +174,7 @@
     private void updateSavedWifiEntries() {
         synchronized (mLock) {
             mSavedWifiEntries.clear();
-            mSavedWifiEntries.addAll(mStandardWifiEntryCache.values());
+            mSavedWifiEntries.addAll(mStandardWifiEntryCache);
             Collections.sort(mSavedWifiEntries);
             if (isVerboseLoggingEnabled()) {
                 Log.v(TAG, "Updated SavedWifiEntries: "
@@ -209,20 +201,14 @@
         checkNotNull(scanResults, "Scan Result list should not be null!");
 
         // Group scans by StandardWifiEntry key
-        final Map<String, List<ScanResult>> scanResultsByKey = mapScanResultsToKey(
-                scanResults,
-                false /* chooseSingleSecurity */,
-                null /* wifiConfigsByKey */,
-                mWifiManager.isWpa3SaeSupported(),
-                mWifiManager.isWpa3SuiteBSupported(),
-                mWifiManager.isEnhancedOpenSupported());
+        final Map<ScanResultKey, List<ScanResult>> scanResultsByKey = scanResults.stream()
+                .collect(Collectors.groupingBy(StandardWifiEntry.ScanResultKey::new));
 
         // Iterate through current entries and update each entry's scan results
-        mStandardWifiEntryCache.entrySet().forEach(entry -> {
-            final String key = entry.getKey();
-            final StandardWifiEntry wifiEntry = entry.getValue();
+        mStandardWifiEntryCache.forEach(entry -> {
             // Update scan results if available, or set to null.
-            wifiEntry.updateScanResultInfo(scanResultsByKey.get(key));
+            entry.updateScanResultInfo(
+                    scanResultsByKey.get(entry.getStandardWifiEntryKey().getScanResultKey()));
         });
     }
 
@@ -281,64 +267,27 @@
         updatePasspointWifiEntryScans(mScanResultUpdater.getScanResults(scanAgeWindow));
     }
 
-    /**
-     * Updates or removes a WifiConfiguration for the corresponding StandardWifiEntry if it exists.
-     *
-     * If an entry does not exist and the changeReason is ADDED or UPDATED, then a new entry will
-     * be created for the new config.
-     *
-     * @param config WifiConfiguration to update
-     * @param changeReason WifiManager.CHANGE_REASON_ADDED, WifiManager.CHANGE_REASON_REMOVED, or
-     *                     WifiManager.CHANGE_REASON_CONFIG_CHANGE
-     */
-    @WorkerThread
-    private void updateStandardWifiEntryConfig(@NonNull WifiConfiguration config,
-            int changeReason) {
-        checkNotNull(config, "Config should not be null!");
-
-        final String key = wifiConfigToStandardWifiEntryKey(config);
-        final StandardWifiEntry entry = mStandardWifiEntryCache.get(key);
-
-        if (entry != null) {
-            if (changeReason == WifiManager.CHANGE_REASON_REMOVED) {
-                entry.updateConfig(null);
-                mStandardWifiEntryCache.remove(key);
-            } else { // CHANGE_REASON_ADDED || CHANGE_REASON_CONFIG_CHANGE
-                entry.updateConfig(config);
-            }
-        } else {
-            if (changeReason != WifiManager.CHANGE_REASON_REMOVED) {
-                mStandardWifiEntryCache.put(key,
-                        new StandardWifiEntry(mContext, mMainHandler, key, config, mWifiManager,
-                                mWifiNetworkScoreCache, true /* forSavedNetworksPage */));
-            }
-        }
-    }
-
     private void updateStandardWifiEntryConfigs(@NonNull List<WifiConfiguration> configs) {
         checkNotNull(configs, "Config list should not be null!");
 
         // Group configs by StandardWifiEntry key
-        final Map<String, WifiConfiguration> wifiConfigsByKey =
-                configs.stream().collect(Collectors.toMap(
-                        StandardWifiEntry::wifiConfigToStandardWifiEntryKey,
-                        Function.identity()));
+        final Map<StandardWifiEntryKey, List<WifiConfiguration>> wifiConfigsByKey = configs.stream()
+                .filter(config -> !config.carrierMerged)
+                .collect(Collectors.groupingBy(StandardWifiEntryKey::new));
 
         // Iterate through current entries and update each entry's config
-        mStandardWifiEntryCache.entrySet().removeIf((entry) -> {
-            final StandardWifiEntry wifiEntry = entry.getValue();
-            final String key = wifiEntry.getKey();
+        mStandardWifiEntryCache.removeIf(entry -> {
             // Update config if available, or set to null (unsaved)
-            wifiEntry.updateConfig(wifiConfigsByKey.remove(key));
+            entry.updateConfig(wifiConfigsByKey.remove(entry.getStandardWifiEntryKey()));
             // Entry is now unsaved, remove it.
-            return !wifiEntry.isSaved();
+            return !entry.isSaved();
         });
 
         // Create new entry for each unmatched config
-        for (String key : wifiConfigsByKey.keySet()) {
-            mStandardWifiEntryCache.put(key,
-                    new StandardWifiEntry(mContext, mMainHandler, key, wifiConfigsByKey.get(key),
-                            mWifiManager, mWifiNetworkScoreCache, true /* forSavedNetworksPage */));
+        for (StandardWifiEntryKey key : wifiConfigsByKey.keySet()) {
+            mStandardWifiEntryCache.add(new StandardWifiEntry(mContext, mMainHandler, key,
+                    wifiConfigsByKey.get(key), null, mWifiManager, mWifiNetworkScoreCache,
+                    true /* forSavedNetworksPage */));
         }
     }
 
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/ScanResultUpdater.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/ScanResultUpdater.java
index 6f5f538..533849a 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/ScanResultUpdater.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/ScanResultUpdater.java
@@ -17,6 +17,7 @@
 package com.android.wifitrackerlib;
 
 import android.net.wifi.ScanResult;
+import android.util.Pair;
 
 import androidx.annotation.NonNull;
 
@@ -24,14 +25,15 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
- * Utility class to keep a running list of scan results merged by BSSID.
+ * Utility class to keep a running list of scan results merged by SSID+BSSID pair.
  *
  * Thread-safe.
  */
 public class ScanResultUpdater {
-    private HashMap<String, ScanResult> mScanResultsByBssid = new HashMap<>();
+    private Map<Pair<String, String>, ScanResult> mScanResultsBySsidAndBssid = new HashMap<>();
     private final long mMaxScanAgeMillis;
     private final Object mLock = new Object();
     private final Clock mClock;
@@ -55,23 +57,24 @@
     }
 
     /**
-     * Updates scan result list and replaces older scans of the same BSSID.
+     * Updates scan result list and replaces older scans of the same SSID+BSSID pair.
      */
     public void update(@NonNull List<ScanResult> newResults) {
         synchronized (mLock) {
             evictOldScans();
 
             for (ScanResult result : newResults) {
-                ScanResult prevResult = mScanResultsByBssid.get(result.BSSID);
+                final Pair<String, String> key = new Pair(result.SSID, result.BSSID);
+                ScanResult prevResult = mScanResultsBySsidAndBssid.get(key);
                 if (prevResult == null || (prevResult.timestamp < result.timestamp)) {
-                    mScanResultsByBssid.put(result.BSSID, result);
+                    mScanResultsBySsidAndBssid.put(key, result);
                 }
             }
         }
     }
 
     /**
-     * Returns all seen scan results merged by BSSID.
+     * Returns all seen scan results merged by SSID+BSSID pair.
      */
     @NonNull
     public List<ScanResult> getScanResults() {
@@ -79,7 +82,7 @@
     }
 
     /**
-     * Returns all seen scan results merged by BSSID and newer than maxScanAgeMillis.
+     * Returns all seen scan results merged by SSID+BSSID pair and newer than maxScanAgeMillis.
      * maxScanAgeMillis must be less than or equal to the mMaxScanAgeMillis field if it was set.
      */
     @NonNull
@@ -90,7 +93,7 @@
         }
         synchronized (mLock) {
             List<ScanResult> ageFilteredResults = new ArrayList<>();
-            for (ScanResult result : mScanResultsByBssid.values()) {
+            for (ScanResult result : mScanResultsBySsidAndBssid.values()) {
                 if (mClock.millis() - result.timestamp / 1000 <= maxScanAgeMillis) {
                     ageFilteredResults.add(result);
                 }
@@ -101,7 +104,7 @@
 
     private void evictOldScans() {
         synchronized (mLock) {
-            mScanResultsByBssid.entrySet().removeIf((entry) ->
+            mScanResultsBySsidAndBssid.entrySet().removeIf((entry) ->
                     mClock.millis() - entry.getValue().timestamp / 1000 > mMaxScanAgeMillis);
         }
     }
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardNetworkDetailsTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardNetworkDetailsTracker.java
index 356af41..39470c6 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardNetworkDetailsTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardNetworkDetailsTracker.java
@@ -18,9 +18,8 @@
 
 import static androidx.core.util.Preconditions.checkNotNull;
 
-import static com.android.wifitrackerlib.NetworkRequestEntry.wifiConfigToNetworkRequestEntryKey;
-import static com.android.wifitrackerlib.StandardWifiEntry.wifiConfigToStandardWifiEntryKey;
-import static com.android.wifitrackerlib.Utils.getSecurityTypesFromScanResult;
+import static com.android.wifitrackerlib.StandardWifiEntry.ScanResultKey;
+import static com.android.wifitrackerlib.StandardWifiEntry.StandardWifiEntryKey;
 
 import static java.util.stream.Collectors.toList;
 
@@ -34,7 +33,6 @@
 import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.os.Handler;
-import android.text.TextUtils;
 
 import androidx.annotation.AnyThread;
 import androidx.annotation.NonNull;
@@ -47,14 +45,15 @@
 /**
  * Implementation of NetworkDetailsTracker that tracks a single StandardWifiEntry.
  */
-class StandardNetworkDetailsTracker extends NetworkDetailsTracker {
+public class StandardNetworkDetailsTracker extends NetworkDetailsTracker {
     private static final String TAG = "StandardNetworkDetailsTracker";
 
+    private final StandardWifiEntryKey mKey;
     private final StandardWifiEntry mChosenEntry;
     private final boolean mIsNetworkRequest;
     private NetworkInfo mCurrentNetworkInfo;
 
-    StandardNetworkDetailsTracker(@NonNull Lifecycle lifecycle,
+    public StandardNetworkDetailsTracker(@NonNull Lifecycle lifecycle,
             @NonNull Context context,
             @NonNull WifiManager wifiManager,
             @NonNull ConnectivityManager connectivityManager,
@@ -67,16 +66,20 @@
             String key) {
         super(lifecycle, context, wifiManager, connectivityManager, networkScoreManager,
                 mainHandler, workerHandler, clock, maxScanAgeMillis, scanIntervalMillis, TAG);
-
-        if (key.startsWith(NetworkRequestEntry.KEY_PREFIX)) {
+        mKey = new StandardWifiEntryKey(key);
+        if (mKey.isNetworkRequest()) {
             mIsNetworkRequest = true;
-            mChosenEntry = new NetworkRequestEntry(mContext, mMainHandler, key, mWifiManager,
+            mChosenEntry = new NetworkRequestEntry(mContext, mMainHandler, mKey, mWifiManager,
                     mWifiNetworkScoreCache, false /* forSavedNetworksPage */);
         } else {
             mIsNetworkRequest = false;
-            mChosenEntry = new StandardWifiEntry(mContext, mMainHandler, key, mWifiManager,
+            mChosenEntry = new StandardWifiEntry(mContext, mMainHandler, mKey, mWifiManager,
                     mWifiNetworkScoreCache, false /* forSavedNetworksPage */);
         }
+        // It is safe to call updateStartInfo() in the main thread here since onStart() won't have
+        // a chance to post handleOnStart() on the worker thread until the main thread finishes
+        // calling this constructor.
+        updateStartInfo();
     }
 
     @AnyThread
@@ -89,17 +92,7 @@
     @WorkerThread
     @Override
     protected void handleOnStart() {
-        conditionallyUpdateScanResults(true /* lastScanSucceeded */);
-        conditionallyUpdateConfig();
-        final WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
-        final Network currentNetwork = mWifiManager.getCurrentNetwork();
-        mCurrentNetworkInfo = mConnectivityManager.getNetworkInfo(currentNetwork);
-        mChosenEntry.updateConnectionInfo(wifiInfo, mCurrentNetworkInfo);
-        handleNetworkCapabilitiesChanged(
-                mConnectivityManager.getNetworkCapabilities(currentNetwork));
-        handleLinkPropertiesChanged(mConnectivityManager.getLinkProperties(currentNetwork));
-        mChosenEntry.setIsDefaultNetwork(mIsWifiDefaultRoute);
-        mChosenEntry.setIsLowQuality(mIsWifiValidated && mIsCellDefaultRoute);
+        updateStartInfo();
     }
 
     @WorkerThread
@@ -120,20 +113,7 @@
     @Override
     protected void handleConfiguredNetworksChangedAction(@NonNull Intent intent) {
         checkNotNull(intent, "Intent cannot be null!");
-        final WifiConfiguration updatedConfig =
-                (WifiConfiguration) intent.getExtra(WifiManager.EXTRA_WIFI_CONFIGURATION);
-        if (updatedConfig != null && configMatches(updatedConfig)) {
-            final int changeReason = intent.getIntExtra(WifiManager.EXTRA_CHANGE_REASON,
-                    -1 /* defaultValue*/);
-            if (changeReason == WifiManager.CHANGE_REASON_ADDED
-                    || changeReason == WifiManager.CHANGE_REASON_CONFIG_CHANGE) {
-                mChosenEntry.updateConfig(updatedConfig);
-            } else if (changeReason == WifiManager.CHANGE_REASON_REMOVED) {
-                mChosenEntry.updateConfig(null);
-            }
-        } else {
-            conditionallyUpdateConfig();
-        }
+        conditionallyUpdateConfig();
     }
 
     @WorkerThread
@@ -142,6 +122,21 @@
         mChosenEntry.onScoreCacheUpdated();
     }
 
+    @WorkerThread
+    private void updateStartInfo() {
+        conditionallyUpdateScanResults(true /* lastScanSucceeded */);
+        conditionallyUpdateConfig();
+        final WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
+        final Network currentNetwork = mWifiManager.getCurrentNetwork();
+        mCurrentNetworkInfo = mConnectivityManager.getNetworkInfo(currentNetwork);
+        mChosenEntry.updateConnectionInfo(wifiInfo, mCurrentNetworkInfo);
+        handleNetworkCapabilitiesChanged(
+                mConnectivityManager.getNetworkCapabilities(currentNetwork));
+        handleLinkPropertiesChanged(mConnectivityManager.getLinkProperties(currentNetwork));
+        mChosenEntry.setIsDefaultNetwork(mIsWifiDefaultRoute);
+        mChosenEntry.setIsLowQuality(mIsWifiValidated && mIsCellDefaultRoute);
+    }
+
     /**
      * Updates the tracked entry's scan results up to the max scan age (or more, if the last scan
      * was unsuccessful). If Wifi is disabled, the tracked entry's level will be cleared.
@@ -168,10 +163,10 @@
      * it to null if it does not exist.
      */
     private void conditionallyUpdateConfig() {
-        WifiConfiguration updatedConfig = mWifiManager.getPrivilegedConfiguredNetworks().stream()
-                .filter(this::configMatches)
-                .findAny().orElse(null);
-        mChosenEntry.updateConfig(updatedConfig);
+        mChosenEntry.updateConfig(
+                mWifiManager.getPrivilegedConfiguredNetworks().stream()
+                        .filter(this::configMatches)
+                        .collect(toList()));
     }
 
     /**
@@ -179,9 +174,7 @@
      */
     private void cacheNewScanResults() {
         mScanResultUpdater.update(mWifiManager.getScanResults().stream()
-                .filter(scan -> TextUtils.equals(scan.SSID, mChosenEntry.getSsid())
-                        && getSecurityTypesFromScanResult(scan).contains(
-                                mChosenEntry.getSecurity()))
+                .filter(scan -> new ScanResultKey(scan).equals(mKey.getScanResultKey()))
                 .collect(toList()));
     }
 
@@ -189,9 +182,6 @@
         if (config.isPasspoint()) {
             return false;
         }
-        String configKey = config.fromWifiNetworkSpecifier
-                ? wifiConfigToNetworkRequestEntryKey(config)
-                : wifiConfigToStandardWifiEntryKey(config);
-        return TextUtils.equals(configKey, mChosenEntry.getKey());
+        return mKey.equals(new StandardWifiEntryKey(config, mKey.isTargetingNewNetworks()));
     }
 }
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
index 5127054..994331a 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
@@ -21,24 +21,30 @@
 import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.DISABLED_BY_WRONG_PASSWORD;
 import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLED;
 import static android.net.wifi.WifiInfo.DEFAULT_MAC_ADDRESS;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_EAP;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_OPEN;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_OWE;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_PSK;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_SAE;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_UNKNOWN;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_WEP;
 import static android.net.wifi.WifiInfo.sanitizeSsid;
 
-import static androidx.core.util.Preconditions.checkNotNull;
-
-import static com.android.wifitrackerlib.Utils.getAppLabel;
 import static com.android.wifitrackerlib.Utils.getAutoConnectDescription;
 import static com.android.wifitrackerlib.Utils.getAverageSpeedFromScanResults;
 import static com.android.wifitrackerlib.Utils.getBestScanResultByLevel;
-import static com.android.wifitrackerlib.Utils.getCarrierNameForSubId;
-import static com.android.wifitrackerlib.Utils.getCurrentNetworkCapabilitiesInformation;
-import static com.android.wifitrackerlib.Utils.getDisconnectedStateDescription;
+import static com.android.wifitrackerlib.Utils.getConnectedDescription;
+import static com.android.wifitrackerlib.Utils.getConnectingDescription;
+import static com.android.wifitrackerlib.Utils.getDisconnectedDescription;
 import static com.android.wifitrackerlib.Utils.getImsiProtectionDescription;
 import static com.android.wifitrackerlib.Utils.getMeteredDescription;
-import static com.android.wifitrackerlib.Utils.getNetworkDetailedState;
-import static com.android.wifitrackerlib.Utils.getSecurityTypeFromWifiConfiguration;
+import static com.android.wifitrackerlib.Utils.getSecurityTypesFromScanResult;
+import static com.android.wifitrackerlib.Utils.getSecurityTypesFromWifiConfiguration;
+import static com.android.wifitrackerlib.Utils.getSingleSecurityTypeFromMultipleSecurityTypes;
 import static com.android.wifitrackerlib.Utils.getSpeedDescription;
 import static com.android.wifitrackerlib.Utils.getSpeedFromWifiInfo;
-import static com.android.wifitrackerlib.Utils.getSubIdForConfig;
 import static com.android.wifitrackerlib.Utils.getVerboseLoggingDescription;
 
 import android.content.Context;
@@ -59,20 +65,27 @@
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+import android.util.ArraySet;
+import android.util.Log;
 
-import androidx.annotation.GuardedBy;
-import androidx.annotation.IntDef;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.WorkerThread;
 
 import com.android.internal.annotations.VisibleForTesting;
 
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Comparator;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 import java.util.StringJoiner;
 import java.util.stream.Collectors;
 
@@ -83,153 +96,112 @@
  */
 @VisibleForTesting
 public class StandardWifiEntry extends WifiEntry {
-    static final String KEY_PREFIX = "StandardWifiEntry:";
+    static final String TAG = "StandardWifiEntry";
+    public static final String KEY_PREFIX = "StandardWifiEntry:";
 
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(value = {
-            EAP_WPA,
-            EAP_WPA2_WPA3,
-            EAP_UNKNOWN
-    })
+    @NonNull private final StandardWifiEntryKey mKey;
 
-    public @interface EapType {}
-
-    private static final int EAP_WPA = 0;       // WPA-EAP
-    private static final int EAP_WPA2_WPA3 = 1; // RSN-EAP
-    private static final int EAP_UNKNOWN = 2;
-
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(value = {
-            PSK_WPA,
-            PSK_WPA2,
-            PSK_WPA_WPA2,
-            PSK_UNKNOWN
-    })
-
-    public @interface PskType {}
-
-    private static final int PSK_WPA = 0;
-    private static final int PSK_WPA2 = 1;
-    private static final int PSK_WPA_WPA2 = 2;
-    private static final int PSK_UNKNOWN = 3;
-
-    private final Object mLock = new Object();
-    // Scan result list must be thread safe for generating the verbose scan summary
-    @GuardedBy("mLock")
-    @NonNull private final List<ScanResult> mCurrentScanResults = new ArrayList<>();
-
-    @NonNull private final String mKey;
-    @NonNull private final String mSsid;
     @NonNull private final Context mContext;
-    private final @Security int mSecurity;
-    private @EapType int mEapType = EAP_UNKNOWN;
-    private @PskType int mPskType = PSK_UNKNOWN;
-    @Nullable private WifiConfiguration mWifiConfig;
+
+    // Map of security type to matching scan results
+    @NonNull private final Map<Integer, List<ScanResult>> mMatchingScanResults = new HashMap<>();
+    // Map of security type to matching WifiConfiguration
+    // TODO: Change this to single WifiConfiguration once we can get multiple security type configs.
+    @NonNull private final Map<Integer, WifiConfiguration> mMatchingWifiConfigs = new HashMap<>();
+
+    // List of the target scan results to be displayed. This should match the highest available
+    // security from all of the matched WifiConfigurations.
+    // If no WifiConfigurations are available, then these should match the most appropriate security
+    // type (e.g. PSK for an PSK/SAE entry, OWE for an Open/OWE entry).
+    @NonNull private final List<ScanResult> mTargetScanResults = new ArrayList<>();
+    // Target WifiConfiguration for connection and displaying WifiConfiguration info
+    private WifiConfiguration mTargetWifiConfig;
+    private List<Integer> mTargetSecurityTypes = new ArrayList<>();
+
     private boolean mIsUserShareable = false;
     @Nullable private String mRecommendationServiceLabel;
 
     private boolean mShouldAutoOpenCaptivePortal = false;
 
-    StandardWifiEntry(@NonNull Context context, @NonNull Handler callbackHandler,
-            @NonNull String key,
-            @NonNull List<ScanResult> scanResults,
-            @NonNull WifiManager wifiManager,
-            @NonNull WifiNetworkScoreCache scoreCache,
-            boolean forSavedNetworksPage) throws IllegalArgumentException {
-        this(context, callbackHandler, key, wifiManager, scoreCache,
-                forSavedNetworksPage);
-
-        checkNotNull(scanResults, "Cannot construct with null ScanResult list!");
-        if (scanResults.isEmpty()) {
-            throw new IllegalArgumentException("Cannot construct with empty ScanResult list!");
-        }
-        updateScanResultInfo(scanResults);
-        updateRecommendationServiceLabel();
-    }
+    private final boolean mIsWpa3SaeSupported;
+    private final boolean mIsWpa3SuiteBSupported;
+    private final boolean mIsEnhancedOpenSupported;
 
     StandardWifiEntry(@NonNull Context context, @NonNull Handler callbackHandler,
-            @NonNull String key, @NonNull WifiConfiguration config,
-            @NonNull WifiManager wifiManager,
-            @NonNull WifiNetworkScoreCache scoreCache,
-            boolean forSavedNetworksPage) throws IllegalArgumentException {
-        this(context, callbackHandler, key, wifiManager, scoreCache,
-                forSavedNetworksPage);
-
-        checkNotNull(config, "Cannot construct with null config!");
-        checkNotNull(config.SSID, "Supplied config must have an SSID!");
-        mWifiConfig = config;
-        updateRecommendationServiceLabel();
-    }
-
-    StandardWifiEntry(@NonNull Context context, @NonNull Handler callbackHandler,
-            @NonNull String key, @NonNull WifiManager wifiManager,
+            @NonNull StandardWifiEntryKey key, @NonNull WifiManager wifiManager,
             @NonNull WifiNetworkScoreCache scoreCache,
             boolean forSavedNetworksPage) {
         super(callbackHandler, wifiManager, scoreCache, forSavedNetworksPage);
-
         mContext = context;
         mKey = key;
-        try {
-            final int prefixDelimiter = key.indexOf(":");
-            final int securityDelimiter = key.lastIndexOf(",");
-            mSsid = key.substring(prefixDelimiter + 1, securityDelimiter);
-            mSecurity = Integer.valueOf(key.substring(securityDelimiter + 1));
-        } catch (StringIndexOutOfBoundsException | NumberFormatException e) {
-            throw new IllegalArgumentException("Malformed key: " + key);
-        }
+        mIsWpa3SaeSupported = wifiManager.isWpa3SaeSupported();
+        mIsWpa3SuiteBSupported = wifiManager.isWpa3SuiteBSupported();
+        mIsEnhancedOpenSupported = wifiManager.isEnhancedOpenSupported();
         updateRecommendationServiceLabel();
     }
 
+    StandardWifiEntry(@NonNull Context context, @NonNull Handler callbackHandler,
+            @NonNull StandardWifiEntryKey key,
+            @Nullable List<WifiConfiguration> configs,
+            @Nullable List<ScanResult> scanResults,
+            @NonNull WifiManager wifiManager,
+            @NonNull WifiNetworkScoreCache scoreCache,
+            boolean forSavedNetworksPage) throws IllegalArgumentException {
+        this(context, callbackHandler, key, wifiManager, scoreCache,
+                forSavedNetworksPage);
+        if (configs != null && !configs.isEmpty()) {
+            updateConfig(configs);
+        }
+        if (scanResults != null && !scanResults.isEmpty()) {
+            updateScanResultInfo(scanResults);
+        }
+    }
+
     @Override
     public String getKey() {
+        return mKey.toString();
+    }
+
+    StandardWifiEntryKey getStandardWifiEntryKey() {
         return mKey;
     }
 
     @Override
     public String getTitle() {
-        return mSsid;
+        return mKey.getScanResultKey().getSsid();
     }
 
     @Override
-    public String getSummary(boolean concise) {
-        StringJoiner sj = new StringJoiner(mContext.getString(R.string.summary_separator));
+    public synchronized String getSummary(boolean concise) {
+        StringJoiner sj = new StringJoiner(mContext.getString(
+                R.string.wifitrackerlib_summary_separator));
 
-        if (!concise && mForSavedNetworksPage && isSaved()) {
-            final CharSequence appLabel = getAppLabel(mContext, mWifiConfig.creatorName);
-            if (!TextUtils.isEmpty(appLabel)) {
-                sj.add(mContext.getString(R.string.saved_network, appLabel));
-            }
+        final String connectedStateDescription;
+        final @ConnectedState int connectedState = getConnectedState();
+        switch (connectedState) {
+            case CONNECTED_STATE_DISCONNECTED:
+                connectedStateDescription = getDisconnectedDescription(mContext,
+                        mTargetWifiConfig,
+                        mForSavedNetworksPage,
+                        concise);
+                break;
+            case CONNECTED_STATE_CONNECTING:
+                connectedStateDescription = getConnectingDescription(mContext, mNetworkInfo);
+                break;
+            case CONNECTED_STATE_CONNECTED:
+                connectedStateDescription = getConnectedDescription(mContext,
+                        mTargetWifiConfig,
+                        mNetworkCapabilities,
+                        mRecommendationServiceLabel,
+                        mIsDefaultNetwork,
+                        mIsLowQuality);
+                break;
+            default:
+                Log.e(TAG, "getConnectedState() returned unknown state: " + connectedState);
+                connectedStateDescription = null;
         }
-
-        if (getConnectedState() == CONNECTED_STATE_DISCONNECTED) {
-            String disconnectDescription = getDisconnectedStateDescription(mContext, this);
-            if (TextUtils.isEmpty(disconnectDescription)) {
-                if (concise) {
-                    sj.add(mContext.getString(R.string.wifi_disconnected));
-                } else if (!mForSavedNetworksPage) {
-                    // Summary for unconnected suggested network
-                    if (isSuggestion()) {
-                        String carrierName = getCarrierNameForSubId(mContext,
-                                getSubIdForConfig(mContext, mWifiConfig));
-                        String suggestorName = getAppLabel(mContext, mWifiConfig.creatorName);
-                        if (TextUtils.isEmpty(suggestorName)) {
-                            // Fall-back to the package name in case the app label is missing
-                            suggestorName = mWifiConfig.creatorName;
-                        }
-                        sj.add(mContext.getString(R.string.available_via_app, carrierName != null
-                                ? carrierName : suggestorName));
-                    } else if (isSaved()) {
-                        sj.add(mContext.getString(R.string.wifi_remembered));
-                    }
-                }
-            } else {
-                sj.add(disconnectDescription);
-            }
-        } else {
-            final String connectDescription = getConnectStateDescription();
-            if (!TextUtils.isEmpty(connectDescription)) {
-                sj.add(connectDescription);
-            }
+        if (!TextUtils.isEmpty(connectedStateDescription)) {
+            sj.add(connectedStateDescription);
         }
 
         final String speedDescription = getSpeedDescription(mContext, this);
@@ -257,47 +229,6 @@
         return sj.toString();
     }
 
-    private String getConnectStateDescription() {
-        if (getConnectedState() == CONNECTED_STATE_CONNECTED) {
-            // For suggestion or specifier networks
-            final String suggestionOrSpecifierPackageName = mWifiInfo != null
-                    ? mWifiInfo.getRequestingPackageName() : null;
-            if (!TextUtils.isEmpty(suggestionOrSpecifierPackageName)) {
-                String carrierName = mWifiConfig != null
-                        ? getCarrierNameForSubId(mContext, getSubIdForConfig(mContext, mWifiConfig))
-                        : null;
-                String suggestorName = getAppLabel(mContext, suggestionOrSpecifierPackageName);
-                if (TextUtils.isEmpty(suggestorName)) {
-                    // Fall-back to the package name in case the app label is missing
-                    suggestorName = suggestionOrSpecifierPackageName;
-                }
-                return mContext.getString(R.string.connected_via_app, carrierName != null
-                        ? carrierName : suggestorName);
-            }
-
-            if (!isSaved() && !isSuggestion()) {
-                // Special case for connected + ephemeral networks.
-                if (!TextUtils.isEmpty(mRecommendationServiceLabel)) {
-                    return String.format(mContext.getString(R.string.connected_via_network_scorer),
-                            mRecommendationServiceLabel);
-                }
-                return mContext.getString(R.string.connected_via_network_scorer_default);
-            }
-
-            if (mIsLowQuality) {
-                return mContext.getString(R.string.wifi_connected_low_quality);
-            }
-
-            String networkCapabilitiesinformation =
-                    getCurrentNetworkCapabilitiesInformation(mContext,  mNetworkCapabilities);
-            if (!TextUtils.isEmpty(networkCapabilitiesinformation)) {
-                return networkCapabilitiesinformation;
-            }
-        }
-
-        return getNetworkDetailedState(mContext, mNetworkInfo);
-    }
-
     @Override
     public CharSequence getSecondSummary() {
         return getConnectedState() == CONNECTED_STATE_CONNECTED
@@ -306,17 +237,16 @@
 
     @Override
     public String getSsid() {
-        return mSsid;
+        return mKey.getScanResultKey().getSsid();
     }
 
     @Override
-    @Security
-    public int getSecurity() {
-        return mSecurity;
+    public synchronized List<Integer> getSecurityTypes() {
+        return new ArrayList<>(mTargetSecurityTypes);
     }
 
     @Override
-    public String getMacAddress() {
+    public synchronized String getMacAddress() {
         if (mWifiInfo != null) {
             final String wifiInfoMac = mWifiInfo.getMacAddress();
             if (!TextUtils.isEmpty(wifiInfoMac)
@@ -324,61 +254,52 @@
                 return wifiInfoMac;
             }
         }
-        if (mWifiConfig == null || getPrivacy() != PRIVACY_RANDOMIZED_MAC) {
+        if (mTargetWifiConfig == null || getPrivacy() != PRIVACY_RANDOMIZED_MAC) {
             final String[] factoryMacs = mWifiManager.getFactoryMacAddresses();
             if (factoryMacs.length > 0) {
                 return factoryMacs[0];
             }
             return null;
         }
-        return mWifiConfig.getRandomizedMacAddress().toString();
+        return mTargetWifiConfig.getRandomizedMacAddress().toString();
     }
 
     @Override
-    public boolean isMetered() {
+    public synchronized boolean isMetered() {
         return getMeteredChoice() == METERED_CHOICE_METERED
-                || (mWifiConfig != null && mWifiConfig.meteredHint);
+                || (mTargetWifiConfig != null && mTargetWifiConfig.meteredHint);
     }
 
     @Override
-    public boolean isSaved() {
-        return mWifiConfig != null && !mWifiConfig.isEphemeral();
+    public synchronized boolean isSaved() {
+        return mTargetWifiConfig != null && !mTargetWifiConfig.fromWifiNetworkSuggestion
+                && !mTargetWifiConfig.isEphemeral();
     }
 
     @Override
-    public boolean isSuggestion() {
-        return mWifiConfig != null && mWifiConfig.fromWifiNetworkSuggestion;
+    public synchronized boolean isSuggestion() {
+        return mTargetWifiConfig != null && mTargetWifiConfig.fromWifiNetworkSuggestion;
     }
 
     @Override
-    public boolean isSubscription() {
-        return false;
-    }
-
-    @Override
-    public WifiConfiguration getWifiConfiguration() {
+    public synchronized WifiConfiguration getWifiConfiguration() {
         if (!isSaved()) {
             return null;
         }
-        return mWifiConfig;
+        return mTargetWifiConfig;
     }
 
     @Override
-    public ConnectedInfo getConnectedInfo() {
-        return mConnectedInfo;
-    }
-
-    @Override
-    public boolean canConnect() {
+    public synchronized boolean canConnect() {
         if (mLevel == WIFI_LEVEL_UNREACHABLE
                 || getConnectedState() != CONNECTED_STATE_DISCONNECTED) {
             return false;
         }
         // Allow connection for EAP SIM dependent methods if the SIM of specified carrier ID is
         // active in the device.
-        if (getSecurity() == SECURITY_EAP && mWifiConfig != null
-                && mWifiConfig.enterpriseConfig != null) {
-            if (!mWifiConfig.enterpriseConfig.isAuthenticationSimBased()) {
+        if (mTargetSecurityTypes.contains(SECURITY_TYPE_EAP) && mTargetWifiConfig != null
+                && mTargetWifiConfig.enterpriseConfig != null) {
+            if (!mTargetWifiConfig.enterpriseConfig.isAuthenticationSimBased()) {
                 return true;
             }
             List<SubscriptionInfo> activeSubscriptionInfos = ((SubscriptionManager) mContext
@@ -387,12 +308,12 @@
             if (activeSubscriptionInfos == null || activeSubscriptionInfos.size() == 0) {
                 return false;
             }
-            if (mWifiConfig.carrierId == TelephonyManager.UNKNOWN_CARRIER_ID) {
+            if (mTargetWifiConfig.carrierId == TelephonyManager.UNKNOWN_CARRIER_ID) {
                 // To connect via default subscription.
                 return true;
             }
             for (SubscriptionInfo subscriptionInfo : activeSubscriptionInfos) {
-                if (subscriptionInfo.getCarrierId() == mWifiConfig.carrierId) {
+                if (subscriptionInfo.getCarrierId() == mTargetWifiConfig.carrierId) {
                     return true;
                 }
             }
@@ -402,31 +323,44 @@
     }
 
     @Override
-    public void connect(@Nullable ConnectCallback callback) {
+    public synchronized void connect(@Nullable ConnectCallback callback) {
         mConnectCallback = callback;
         // We should flag this network to auto-open captive portal since this method represents
         // the user manually connecting to a network (i.e. not auto-join).
         mShouldAutoOpenCaptivePortal = true;
-
+        mWifiManager.stopRestrictingAutoJoinToSubscriptionId();
         if (isSaved() || isSuggestion()) {
-            // Saved/suggested network
-            mWifiManager.connect(mWifiConfig.networkId, new ConnectActionListener());
-        } else {
-            // Unsaved network
-            if (mSecurity == SECURITY_NONE
-                    || mSecurity == SECURITY_OWE) {
-                // Open network
-                final WifiConfiguration connectConfig = new WifiConfiguration();
-                connectConfig.SSID = "\"" + mSsid + "\"";
-
-                if (mSecurity == SECURITY_OWE) {
-                    // Use OWE if possible
-                    connectConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.OWE);
-                    connectConfig.requirePmf = true;
-                } else {
-                    connectConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+            if (Utils.isSimCredential(mTargetWifiConfig)
+                    && !Utils.isSimPresent(mContext, mTargetWifiConfig.carrierId)) {
+                if (callback != null) {
+                    mCallbackHandler.post(() ->
+                            callback.onConnectResult(
+                                    ConnectCallback.CONNECT_STATUS_FAILURE_SIM_ABSENT));
                 }
-                mWifiManager.connect(connectConfig, new ConnectActionListener());
+                return;
+            }
+            // Saved/suggested network
+            mWifiManager.connect(mTargetWifiConfig.networkId, new ConnectActionListener());
+        } else {
+            if (mTargetSecurityTypes.contains(SECURITY_TYPE_OWE)) {
+                // OWE network
+                final WifiConfiguration oweConfig = new WifiConfiguration();
+                oweConfig.SSID = "\"" + mKey.getScanResultKey().getSsid() + "\"";
+                oweConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OWE);
+                mWifiManager.connect(oweConfig, new ConnectActionListener());
+                if (mTargetSecurityTypes.contains(SECURITY_TYPE_OPEN)) {
+                    // Add an extra Open config for OWE transition networks
+                    final WifiConfiguration openConfig = new WifiConfiguration();
+                    openConfig.SSID = "\"" + mKey.getScanResultKey().getSsid() + "\"";
+                    openConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN);
+                    mWifiManager.save(openConfig, null);
+                }
+            } else if (mTargetSecurityTypes.contains(SECURITY_TYPE_OPEN)) {
+                // Open network
+                final WifiConfiguration openConfig = new WifiConfiguration();
+                openConfig.SSID = "\"" + mKey.getScanResultKey().getSsid() + "\"";
+                openConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN);
+                mWifiManager.connect(openConfig, new ConnectActionListener());
             } else {
                 // Secure network
                 if (callback != null) {
@@ -444,7 +378,7 @@
     }
 
     @Override
-    public void disconnect(@Nullable DisconnectCallback callback) {
+    public synchronized void disconnect(@Nullable DisconnectCallback callback) {
         if (canDisconnect()) {
             mCalledDisconnect = true;
             mDisconnectCallback = callback;
@@ -454,7 +388,7 @@
                             DisconnectCallback.DISCONNECT_STATUS_FAILURE_UNKNOWN);
                 }
             }, 10_000 /* delayMillis */);
-            mWifiManager.disableEphemeralNetwork(mWifiConfig.SSID);
+            mWifiManager.disableEphemeralNetwork("\"" + mKey.getScanResultKey().getSsid() + "\"");
             mWifiManager.disconnect();
         }
     }
@@ -465,15 +399,15 @@
     }
 
     @Override
-    public void forget(@Nullable ForgetCallback callback) {
+    public synchronized void forget(@Nullable ForgetCallback callback) {
         if (canForget()) {
             mForgetCallback = callback;
-            mWifiManager.forget(mWifiConfig.networkId, new ForgetActionListener());
+            mWifiManager.forget(mTargetWifiConfig.networkId, new ForgetActionListener());
         }
     }
 
     @Override
-    public boolean canSignIn() {
+    public synchronized boolean canSignIn() {
         return mNetworkCapabilities != null
                 && mNetworkCapabilities.hasCapability(
                         NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL);
@@ -494,21 +428,22 @@
      * See https://github.com/zxing/zxing/wiki/Barcode-Contents#wi-fi-network-config-android-ios-11
      */
     @Override
-    public boolean canShare() {
+    public synchronized boolean canShare() {
         if (getWifiConfiguration() == null) {
             return false;
         }
 
-        switch (mSecurity) {
-            case SECURITY_NONE:
-            case SECURITY_OWE:
-            case SECURITY_WEP:
-            case SECURITY_PSK:
-            case SECURITY_SAE:
-                return true;
-            default:
-                return false;
+        for (int securityType : mTargetSecurityTypes) {
+            switch (securityType) {
+                case SECURITY_TYPE_OPEN:
+                case SECURITY_TYPE_OWE:
+                case SECURITY_TYPE_WEP:
+                case SECURITY_TYPE_PSK:
+                case SECURITY_TYPE_SAE:
+                    return true;
+            }
         }
+        return false;
     }
 
     /**
@@ -516,7 +451,7 @@
      * See https://www.wi-fi.org/discover-wi-fi/wi-fi-easy-connect
      */
     @Override
-    public boolean canEasyConnect() {
+    public synchronized boolean canEasyConnect() {
         if (getWifiConfiguration() == null) {
             return false;
         }
@@ -526,20 +461,15 @@
         }
 
         // DPP 1.0 only supports WPA2 and WPA3.
-        switch (mSecurity) {
-            case SECURITY_PSK:
-            case SECURITY_SAE:
-                return true;
-            default:
-                return false;
-        }
+        return mTargetSecurityTypes.contains(SECURITY_TYPE_PSK)
+                || mTargetSecurityTypes.contains(SECURITY_TYPE_SAE);
     }
 
     @Override
     @MeteredChoice
-    public int getMeteredChoice() {
-        if (getWifiConfiguration() != null) {
-            final int meteredOverride = getWifiConfiguration().meteredOverride;
+    public synchronized int getMeteredChoice() {
+        if (!isSuggestion() && mTargetWifiConfig != null) {
+            final int meteredOverride = mTargetWifiConfig.meteredOverride;
             if (meteredOverride == WifiConfiguration.METERED_OVERRIDE_METERED) {
                 return METERED_CHOICE_METERED;
             } else if (meteredOverride == WifiConfiguration.METERED_OVERRIDE_NOT_METERED) {
@@ -555,19 +485,19 @@
     }
 
     @Override
-    public void setMeteredChoice(int meteredChoice) {
+    public synchronized void setMeteredChoice(int meteredChoice) {
         if (!canSetMeteredChoice()) {
             return;
         }
 
         if (meteredChoice == METERED_CHOICE_AUTO) {
-            mWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NONE;
+            mTargetWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NONE;
         } else if (meteredChoice == METERED_CHOICE_METERED) {
-            mWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_METERED;
+            mTargetWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_METERED;
         } else if (meteredChoice == METERED_CHOICE_UNMETERED) {
-            mWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NOT_METERED;
+            mTargetWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NOT_METERED;
         }
-        mWifiManager.save(mWifiConfig, null /* listener */);
+        mWifiManager.save(mTargetWifiConfig, null /* listener */);
     }
 
     @Override
@@ -577,9 +507,10 @@
 
     @Override
     @Privacy
-    public int getPrivacy() {
-        if (mWifiConfig != null
-                && mWifiConfig.macRandomizationSetting == WifiConfiguration.RANDOMIZATION_NONE) {
+    public synchronized int getPrivacy() {
+        if (mTargetWifiConfig != null
+                && mTargetWifiConfig.macRandomizationSetting
+                == WifiConfiguration.RANDOMIZATION_NONE) {
             return PRIVACY_DEVICE_MAC;
         } else {
             return PRIVACY_RANDOMIZED_MAC;
@@ -587,23 +518,23 @@
     }
 
     @Override
-    public void setPrivacy(int privacy) {
+    public synchronized void setPrivacy(int privacy) {
         if (!canSetPrivacy()) {
             return;
         }
 
-        mWifiConfig.macRandomizationSetting = privacy == PRIVACY_RANDOMIZED_MAC
-                ? WifiConfiguration.RANDOMIZATION_PERSISTENT : WifiConfiguration.RANDOMIZATION_NONE;
-        mWifiManager.save(mWifiConfig, null /* listener */);
+        mTargetWifiConfig.macRandomizationSetting = privacy == PRIVACY_RANDOMIZED_MAC
+                ? WifiConfiguration.RANDOMIZATION_AUTO : WifiConfiguration.RANDOMIZATION_NONE;
+        mWifiManager.save(mTargetWifiConfig, null /* listener */);
     }
 
     @Override
-    public boolean isAutoJoinEnabled() {
-        if (mWifiConfig == null) {
+    public synchronized boolean isAutoJoinEnabled() {
+        if (mTargetWifiConfig == null) {
             return false;
         }
 
-        return mWifiConfig.allowAutojoin;
+        return mTargetWifiConfig.allowAutojoin;
     }
 
     @Override
@@ -612,71 +543,88 @@
     }
 
     @Override
-    public void setAutoJoinEnabled(boolean enabled) {
-        if (!canSetAutoJoinEnabled()) {
+    public synchronized void setAutoJoinEnabled(boolean enabled) {
+        if (mTargetWifiConfig == null || !canSetAutoJoinEnabled()) {
             return;
         }
 
-        mWifiManager.allowAutojoin(mWifiConfig.networkId, enabled);
+        mWifiManager.allowAutojoin(mTargetWifiConfig.networkId, enabled);
     }
 
     @Override
-    public String getSecurityString(boolean concise) {
-        switch(mSecurity) {
-            case SECURITY_EAP:
-                switch (mEapType) {
-                    case EAP_WPA:
-                        return concise ? mContext.getString(R.string.wifi_security_short_eap_wpa) :
-                                mContext.getString(R.string.wifi_security_eap_wpa);
-                    case EAP_WPA2_WPA3:
-                        return concise
-                                ? mContext.getString(R.string.wifi_security_short_eap_wpa2_wpa3) :
-                                mContext.getString(R.string.wifi_security_eap_wpa2_wpa3);
-                    case EAP_UNKNOWN:
-                    default:
-                        return concise ? mContext.getString(R.string.wifi_security_short_eap) :
-                                mContext.getString(R.string.wifi_security_eap);
-                }
-            case SECURITY_EAP_SUITE_B:
-                return concise ? mContext.getString(R.string.wifi_security_short_eap_suiteb) :
-                        mContext.getString(R.string.wifi_security_eap_suiteb);
-            case SECURITY_PSK:
-                switch (mPskType) {
-                    case PSK_WPA:
-                        return concise ? mContext.getString(R.string.wifi_security_short_wpa) :
-                            mContext.getString(R.string.wifi_security_wpa);
-                    case PSK_WPA2:
-                        return concise
-                            ? mContext.getString(R.string.wifi_security_short_wpa2_wpa3) :
-                            mContext.getString(R.string.wifi_security_wpa2_wpa3);
-                    case PSK_WPA_WPA2:
-                    case PSK_UNKNOWN:
-                    default:
-                        return concise
-                            ? mContext.getString(R.string.wifi_security_short_wpa_wpa2_wpa3) :
-                            mContext.getString(R.string.wifi_security_wpa_wpa2_wpa3);
-                }
-            case SECURITY_WEP:
-                return mContext.getString(R.string.wifi_security_wep);
-            case SECURITY_SAE:
-                return concise ? mContext.getString(R.string.wifi_security_short_sae) :
-                        mContext.getString(R.string.wifi_security_sae);
-            case SECURITY_OWE:
-                return concise ? mContext.getString(R.string.wifi_security_short_owe) :
-                    mContext.getString(R.string.wifi_security_owe);
-            case SECURITY_NONE:
-            default:
-                return concise ? "" : mContext.getString(R.string.wifi_security_none);
+    public synchronized String getSecurityString(boolean concise) {
+        if (mTargetSecurityTypes.size() == 0) {
+            return concise ? "" : mContext.getString(R.string.wifitrackerlib_wifi_security_none);
         }
+        if (mTargetSecurityTypes.size() == 1) {
+            final int security = mTargetSecurityTypes.get(0);
+            switch(security) {
+                case SECURITY_TYPE_EAP:
+                    return concise ? mContext.getString(
+                            R.string.wifitrackerlib_wifi_security_short_eap_wpa_wpa2) :
+                            mContext.getString(
+                                    R.string.wifitrackerlib_wifi_security_eap_wpa_wpa2);
+                case SECURITY_TYPE_EAP_WPA3_ENTERPRISE:
+                    return concise ? mContext.getString(
+                            R.string.wifitrackerlib_wifi_security_short_eap_wpa3) :
+                            mContext.getString(
+                                    R.string.wifitrackerlib_wifi_security_eap_wpa3);
+                case SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT:
+                    return concise ? mContext.getString(
+                            R.string.wifitrackerlib_wifi_security_short_eap_suiteb) :
+                            mContext.getString(R.string.wifitrackerlib_wifi_security_eap_suiteb);
+                case SECURITY_TYPE_PSK:
+                    return concise ? mContext.getString(
+                            R.string.wifitrackerlib_wifi_security_short_wpa_wpa2) :
+                            mContext.getString(
+                                    R.string.wifitrackerlib_wifi_security_wpa_wpa2);
+                case SECURITY_TYPE_WEP:
+                    return mContext.getString(R.string.wifitrackerlib_wifi_security_wep);
+                case SECURITY_TYPE_SAE:
+                    return concise ? mContext.getString(
+                            R.string.wifitrackerlib_wifi_security_short_sae) :
+                            mContext.getString(R.string.wifitrackerlib_wifi_security_sae);
+                case SECURITY_TYPE_OWE:
+                    return concise ? mContext.getString(
+                            R.string.wifitrackerlib_wifi_security_short_owe) :
+                            mContext.getString(R.string.wifitrackerlib_wifi_security_owe);
+                case SECURITY_TYPE_OPEN:
+                    return concise ? "" : mContext.getString(
+                            R.string.wifitrackerlib_wifi_security_none);
+            }
+        }
+        if (mTargetSecurityTypes.size() == 2) {
+            if (mTargetSecurityTypes.contains(SECURITY_TYPE_OPEN)
+                    && mTargetSecurityTypes.contains(SECURITY_TYPE_OWE)) {
+                StringJoiner sj = new StringJoiner("/");
+                sj.add(mContext.getString(R.string.wifitrackerlib_wifi_security_none));
+                sj.add(concise ? mContext.getString(
+                        R.string.wifitrackerlib_wifi_security_short_owe) :
+                        mContext.getString(R.string.wifitrackerlib_wifi_security_owe));
+                return sj.toString();
+            }
+            if (mTargetSecurityTypes.contains(SECURITY_TYPE_PSK)
+                    && mTargetSecurityTypes.contains(SECURITY_TYPE_SAE)) {
+                return concise ? mContext.getString(
+                        R.string.wifitrackerlib_wifi_security_short_wpa_wpa2_wpa3) :
+                        mContext.getString(
+                                R.string.wifitrackerlib_wifi_security_wpa_wpa2_wpa3);
+            }
+            if (mTargetSecurityTypes.contains(SECURITY_TYPE_EAP)
+                    && mTargetSecurityTypes.contains(SECURITY_TYPE_EAP_WPA3_ENTERPRISE)) {
+                return concise ? mContext.getString(
+                        R.string.wifitrackerlib_wifi_security_short_eap_wpa_wpa2_wpa3) :
+                        mContext.getString(
+                                R.string.wifitrackerlib_wifi_security_eap_wpa_wpa2_wpa3);
+            }
+        }
+        // Unknown security types
+        Log.e(TAG, "Couldn't get string for security types: " + mTargetSecurityTypes);
+        return concise ? "" : mContext.getString(R.string.wifitrackerlib_wifi_security_none);
     }
 
     @Override
-    public boolean isExpired() {
-        return false;
-    }
-
-    @Override
-    public boolean shouldEditBeforeConnect() {
+    public synchronized boolean shouldEditBeforeConnect() {
         WifiConfiguration wifiConfig = getWifiConfiguration();
         if (wifiConfig == null) {
             return false;
@@ -698,44 +646,54 @@
     }
 
     @WorkerThread
-    void updateScanResultInfo(@Nullable List<ScanResult> scanResults)
+    synchronized void updateScanResultInfo(@Nullable List<ScanResult> scanResults)
             throws IllegalArgumentException {
         if (scanResults == null) scanResults = new ArrayList<>();
 
-        for (ScanResult result : scanResults) {
-            if (!TextUtils.equals(result.SSID, mSsid)) {
+        final String ssid = mKey.getScanResultKey().getSsid();
+        for (ScanResult scan : scanResults) {
+            if (!TextUtils.equals(scan.SSID, ssid)) {
                 throw new IllegalArgumentException(
                         "Attempted to update with wrong SSID! Expected: "
-                                + mSsid + ", Actual: " + result.SSID + ", ScanResult: " + result);
+                                + ssid + ", Actual: " + scan.SSID + ", ScanResult: " + scan);
+            }
+        }
+        // Populate the cached scan result map
+        mMatchingScanResults.clear();
+        final Set<Integer> keySecurityTypes = mKey.getScanResultKey().getSecurityTypes();
+        for (ScanResult scan : scanResults) {
+            for (int security : getSecurityTypesFromScanResult(scan)) {
+                if (!keySecurityTypes.contains(security) || !isSecurityTypeSupported(security)) {
+                    continue;
+                }
+                if (!mMatchingScanResults.containsKey(security)) {
+                    mMatchingScanResults.put(security, new ArrayList<>());
+                }
+                mMatchingScanResults.get(security).add(scan);
             }
         }
 
-        synchronized (mLock) {
-            mCurrentScanResults.clear();
-            mCurrentScanResults.addAll(scanResults);
-        }
+        updateSecurityTypes();
+        updateTargetScanResultInfo();
+        notifyOnUpdated();
+    }
 
-        final ScanResult bestScanResult = getBestScanResultByLevel(scanResults);
-        if (bestScanResult != null) {
-            updateEapType(bestScanResult);
-            updatePskType(bestScanResult);
-        }
+    private synchronized void updateTargetScanResultInfo() {
+        // Update the level using the scans matching the target security type
+        final ScanResult bestScanResult = getBestScanResultByLevel(mTargetScanResults);
 
         if (getConnectedState() == CONNECTED_STATE_DISCONNECTED) {
             mLevel = bestScanResult != null
                     ? mWifiManager.calculateSignalLevel(bestScanResult.level)
                     : WIFI_LEVEL_UNREACHABLE;
-            synchronized (mLock) {
-                // Average speed is used to prevent speed label flickering from multiple APs.
-                mSpeed = getAverageSpeedFromScanResults(mScoreCache, mCurrentScanResults);
-            }
+            // Average speed is used to prevent speed label flickering from multiple APs.
+            mSpeed = getAverageSpeedFromScanResults(mScoreCache, mTargetScanResults);
         }
-        notifyOnUpdated();
     }
 
     @WorkerThread
     @Override
-    void updateNetworkCapabilities(@Nullable NetworkCapabilities capabilities) {
+    synchronized void updateNetworkCapabilities(@Nullable NetworkCapabilities capabilities) {
         super.updateNetworkCapabilities(capabilities);
 
         // Auto-open an available captive portal if the user manually connected to this network.
@@ -746,77 +704,126 @@
     }
 
     @WorkerThread
-    void onScoreCacheUpdated() {
+    synchronized void onScoreCacheUpdated() {
         if (mWifiInfo != null) {
             mSpeed = getSpeedFromWifiInfo(mScoreCache, mWifiInfo);
         } else {
-            synchronized (mLock) {
-                // Average speed is used to prevent speed label flickering from multiple APs.
-                mSpeed = getAverageSpeedFromScanResults(mScoreCache, mCurrentScanResults);
-            }
+            // Average speed is used to prevent speed label flickering from multiple APs.
+            mSpeed = getAverageSpeedFromScanResults(mScoreCache, mTargetScanResults);
         }
         notifyOnUpdated();
     }
 
-    private void updateEapType(ScanResult result) {
-        if (result.capabilities.contains("RSN-EAP")) {
-            // WPA2-Enterprise and WPA3-Enterprise (non 192-bit) advertise RSN-EAP-CCMP
-            mEapType = EAP_WPA2_WPA3;
-        } else if (result.capabilities.contains("WPA-EAP")) {
-            // WPA-Enterprise advertises WPA-EAP-TKIP
-            mEapType = EAP_WPA;
-        } else {
-            mEapType = EAP_UNKNOWN;
-        }
-    }
-
-    private void updatePskType(ScanResult result) {
-        if (mSecurity != SECURITY_PSK) {
-            mPskType = PSK_UNKNOWN;
-            return;
-        }
-
-        final boolean wpa = result.capabilities.contains("WPA-PSK");
-        final boolean wpa2 = result.capabilities.contains("RSN-PSK");
-        if (wpa2 && wpa) {
-            mPskType = PSK_WPA_WPA2;
-        } else if (wpa2) {
-            mPskType = PSK_WPA2;
-        } else if (wpa) {
-            mPskType = PSK_WPA;
-        } else {
-            mPskType = PSK_UNKNOWN;
-        }
-    }
-
     @WorkerThread
-    void updateConfig(@Nullable WifiConfiguration wifiConfig) throws IllegalArgumentException {
-        if (wifiConfig != null) {
-            if (!TextUtils.equals(mSsid, sanitizeSsid(wifiConfig.SSID))) {
+    synchronized void updateConfig(@Nullable List<WifiConfiguration> wifiConfigs)
+            throws IllegalArgumentException {
+        if (wifiConfigs == null) {
+            wifiConfigs = Collections.emptyList();
+        }
+
+        final ScanResultKey scanResultKey = mKey.getScanResultKey();
+        final String ssid = scanResultKey.getSsid();
+        final Set<Integer> securityTypes = scanResultKey.getSecurityTypes();
+        mMatchingWifiConfigs.clear();
+        for (WifiConfiguration config : wifiConfigs) {
+            if (!TextUtils.equals(ssid, sanitizeSsid(config.SSID))) {
                 throw new IllegalArgumentException(
                         "Attempted to update with wrong SSID!"
-                                + " Expected: " + mSsid
-                                + ", Actual: " + sanitizeSsid(wifiConfig.SSID)
-                                + ", Config: " + wifiConfig);
+                                + " Expected: " + ssid
+                                + ", Actual: " + sanitizeSsid(config.SSID)
+                                + ", Config: " + config);
             }
-            if (mSecurity != getSecurityTypeFromWifiConfiguration(wifiConfig)) {
-                throw new IllegalArgumentException(
-                        "Attempted to update with wrong security!"
-                                + " Expected: " + mSecurity
-                                + ", Actual: " + getSecurityTypeFromWifiConfiguration(wifiConfig)
-                                + ", Config: " + wifiConfig);
+            for (int securityType : getSecurityTypesFromWifiConfiguration(config)) {
+                if (!securityTypes.contains(securityType)) {
+                    throw new IllegalArgumentException(
+                            "Attempted to update with wrong security!"
+                                    + " Expected one of: " + securityTypes
+                                    + ", Actual: " + securityType
+                                    + ", Config: " + config);
+                }
+                if (isSecurityTypeSupported(securityType)) {
+                    mMatchingWifiConfigs.put(securityType, config);
+                }
+            }
+        }
+        updateSecurityTypes();
+        updateTargetScanResultInfo();
+        notifyOnUpdated();
+    }
+
+    private boolean isSecurityTypeSupported(int security) {
+        switch (security) {
+            case SECURITY_TYPE_SAE:
+                return mIsWpa3SaeSupported;
+            case SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT:
+                return mIsWpa3SuiteBSupported;
+            case SECURITY_TYPE_OWE:
+                return mIsEnhancedOpenSupported;
+            default:
+                return true;
+        }
+    }
+
+    @Override
+    protected synchronized void updateSecurityTypes() {
+        mTargetSecurityTypes.clear();
+        if (mWifiInfo != null) {
+            final int wifiInfoSecurity = mWifiInfo.getCurrentSecurityType();
+            if (wifiInfoSecurity != SECURITY_TYPE_UNKNOWN) {
+                mTargetSecurityTypes.add(mWifiInfo.getCurrentSecurityType());
             }
         }
 
-        mWifiConfig = wifiConfig;
-        notifyOnUpdated();
+        Set<Integer> configSecurityTypes = mMatchingWifiConfigs.keySet();
+        if (mTargetSecurityTypes.isEmpty() && mKey.isTargetingNewNetworks()) {
+            // If we are targeting new networks for configuration, then we should select the
+            // security type of all visible scan results if we don't have any configs that
+            // can connect to them. This will let us configure this entry as a new network.
+            boolean configMatchesScans = false;
+            Set<Integer> scanSecurityTypes = mMatchingScanResults.keySet();
+            for (int configSecurity : configSecurityTypes) {
+                if (scanSecurityTypes.contains(configSecurity)) {
+                    configMatchesScans = true;
+                    break;
+                }
+            }
+            if (!configMatchesScans) {
+                mTargetSecurityTypes.addAll(scanSecurityTypes);
+            }
+        }
+
+        // Use security types of any configs we have
+        if (mTargetSecurityTypes.isEmpty()) {
+            mTargetSecurityTypes.addAll(configSecurityTypes);
+        }
+
+        // Default to the key security types. This shouldn't happen since we should always have
+        // scans or configs.
+        if (mTargetSecurityTypes.isEmpty()) {
+            mTargetSecurityTypes.addAll(mKey.getScanResultKey().getSecurityTypes());
+        }
+
+        // The target wifi config should match the security type we return in getSecurity(), since
+        // clients (QR code/DPP, modify network page) may expect them to match.
+        mTargetWifiConfig = mMatchingWifiConfigs.get(
+                getSingleSecurityTypeFromMultipleSecurityTypes(mTargetSecurityTypes));
+        // Collect target scan results in a set to remove duplicates when one scan matches multiple
+        // security types.
+        Set<ScanResult> targetScanResultSet = new ArraySet<>();
+        for (int security : mTargetSecurityTypes) {
+            if (mMatchingScanResults.containsKey(security)) {
+                targetScanResultSet.addAll(mMatchingScanResults.get(security));
+            }
+        }
+        mTargetScanResults.clear();
+        mTargetScanResults.addAll(targetScanResultSet);
     }
 
     /**
      * Sets whether the suggested config for this entry is shareable to the user or not.
      */
     @WorkerThread
-    void setUserShareable(boolean isUserShareable) {
+    synchronized void setUserShareable(boolean isUserShareable) {
         mIsUserShareable = isUserShareable;
     }
 
@@ -824,26 +831,25 @@
      * Returns whether the suggested config for this entry is shareable to the user or not.
      */
     @WorkerThread
-    boolean isUserShareable() {
+    synchronized boolean isUserShareable() {
         return mIsUserShareable;
     }
 
     @WorkerThread
-    protected boolean connectionInfoMatches(@NonNull WifiInfo wifiInfo,
+    protected synchronized boolean connectionInfoMatches(@NonNull WifiInfo wifiInfo,
             @NonNull NetworkInfo networkInfo) {
         if (wifiInfo.isPasspointAp() || wifiInfo.isOsuAp()) {
             return false;
         }
-
-        if (mWifiConfig != null) {
-            if (mWifiConfig.networkId == wifiInfo.getNetworkId()) {
+        for (WifiConfiguration config : mMatchingWifiConfigs.values()) {
+            if (config.networkId == wifiInfo.getNetworkId()) {
                 return true;
             }
         }
         return false;
     }
 
-    private void updateRecommendationServiceLabel() {
+    private synchronized void updateRecommendationServiceLabel() {
         final NetworkScorerAppData scorer = ((NetworkScoreManager) mContext
                 .getSystemService(Context.NETWORK_SCORE_SERVICE)).getActiveScorer();
         if (scorer != null) {
@@ -852,45 +858,42 @@
     }
 
     @NonNull
-    static String ssidAndSecurityToStandardWifiEntryKey(@NonNull String ssid,
-            @Security int security) {
-        return KEY_PREFIX + ssid + "," + security;
+    static StandardWifiEntryKey ssidAndSecurityTypeToStandardWifiEntryKey(
+            @NonNull String ssid, int security) {
+        return ssidAndSecurityTypeToStandardWifiEntryKey(
+                ssid, security, false /* isTargetingNewNetworks */);
     }
 
     @NonNull
-    static String wifiConfigToStandardWifiEntryKey(@NonNull WifiConfiguration config) {
-        checkNotNull(config, "Cannot create key with null config!");
-        checkNotNull(config.SSID, "Cannot create key with null SSID in config!");
-        return KEY_PREFIX + sanitizeSsid(config.SSID) + ","
-                + getSecurityTypeFromWifiConfiguration(config);
+    static StandardWifiEntryKey ssidAndSecurityTypeToStandardWifiEntryKey(
+            @NonNull String ssid, int security, boolean isTargetingNewNetworks) {
+        return new StandardWifiEntryKey(
+                new ScanResultKey(ssid, Collections.singletonList(security)),
+                isTargetingNewNetworks);
     }
 
     @Override
-    String getScanResultDescription() {
-        synchronized (mLock) {
-            if (mCurrentScanResults.size() == 0) {
-                return "";
-            }
+    protected synchronized String getScanResultDescription() {
+        if (mTargetScanResults.size() == 0) {
+            return "";
         }
 
         final StringBuilder description = new StringBuilder();
         description.append("[");
         description.append(getScanResultDescription(MIN_FREQ_24GHZ, MAX_FREQ_24GHZ)).append(";");
         description.append(getScanResultDescription(MIN_FREQ_5GHZ, MAX_FREQ_5GHZ)).append(";");
-        description.append(getScanResultDescription(MIN_FREQ_6GHZ, MAX_FREQ_6GHZ));
+        description.append(getScanResultDescription(MIN_FREQ_6GHZ, MAX_FREQ_6GHZ)).append(";");
+        description.append(getScanResultDescription(MIN_FREQ_60GHZ, MAX_FREQ_60GHZ));
         description.append("]");
         return description.toString();
     }
 
-    private String getScanResultDescription(int minFrequency, int maxFrequency) {
-        final List<ScanResult> scanResults;
-        synchronized (mLock) {
-            scanResults = mCurrentScanResults.stream()
-                    .filter(scanResult -> scanResult.frequency >= minFrequency
-                            && scanResult.frequency <= maxFrequency)
-                    .sorted(Comparator.comparingInt(scanResult -> -1 * scanResult.level))
-                    .collect(Collectors.toList());
-        }
+    private synchronized String getScanResultDescription(int minFrequency, int maxFrequency) {
+        final List<ScanResult> scanResults = mTargetScanResults.stream()
+                .filter(scanResult -> scanResult.frequency >= minFrequency
+                        && scanResult.frequency <= maxFrequency)
+                .sorted(Comparator.comparingInt(scanResult -> -1 * scanResult.level))
+                .collect(Collectors.toList());
 
         final int scanResultCount = scanResults.size();
         if (scanResultCount == 0) {
@@ -910,7 +913,7 @@
         return description.toString();
     }
 
-    private String getScanResultDescription(ScanResult scanResult, long nowMs) {
+    private synchronized String getScanResultDescription(ScanResult scanResult, long nowMs) {
         final StringBuilder description = new StringBuilder();
         description.append(" \n{");
         description.append(scanResult.BSSID);
@@ -929,4 +932,276 @@
     String getNetworkSelectionDescription() {
         return Utils.getNetworkSelectionDescription(getWifiConfiguration());
     }
+
+    /**
+     * Class that identifies a unique StandardWifiEntry by the following identifiers
+     *     1) ScanResult key (SSID + grouped security types)
+     *     2) Suggestion profile key
+     *     3) Is network request or not
+     *     4) Should prioritize configuring a new network (i.e. target the security type of an
+     *     in-range unsaved network, rather than a config that has no scans)
+     */
+    static class StandardWifiEntryKey {
+        private static final String KEY_SCAN_RESULT_KEY = "SCAN_RESULT_KEY";
+        private static final String KEY_SUGGESTION_PROFILE_KEY = "SUGGESTION_PROFILE_KEY";
+        private static final String KEY_IS_NETWORK_REQUEST = "IS_NETWORK_REQUEST";
+        private static final String KEY_IS_TARGETING_NEW_NETWORKS = "IS_TARGETING_NEW_NETWORKS";
+
+        @NonNull private ScanResultKey mScanResultKey;
+        @Nullable private String mSuggestionProfileKey;
+        private boolean mIsNetworkRequest;
+        private boolean mIsTargetingNewNetworks = false;
+
+        /**
+         * Creates a StandardWifiEntryKey matching a ScanResultKey
+         */
+        StandardWifiEntryKey(@NonNull ScanResultKey scanResultKey) {
+            this(scanResultKey, false /* isTargetingNewNetworks */);
+        }
+
+        /**
+         * Creates a StandardWifiEntryKey matching a ScanResultKey and sets whether the entry
+         * should target new networks or not.
+         */
+        StandardWifiEntryKey(@NonNull ScanResultKey scanResultKey, boolean isTargetingNewNetworks) {
+            mScanResultKey = scanResultKey;
+            mIsTargetingNewNetworks = isTargetingNewNetworks;
+        }
+
+        /**
+         * Creates a StandardWifiEntryKey matching a WifiConfiguration
+         */
+        StandardWifiEntryKey(@NonNull WifiConfiguration config) {
+            this(config, false /* isTargetingNewNetworks */);
+        }
+
+        /**
+         * Creates a StandardWifiEntryKey matching a WifiConfiguration and sets whether the entry
+         * should target new networks or not.
+         */
+        StandardWifiEntryKey(@NonNull WifiConfiguration config, boolean isTargetingNewNetworks) {
+            mScanResultKey = new ScanResultKey(config);
+            if (config.fromWifiNetworkSuggestion) {
+                mSuggestionProfileKey = new StringJoiner(",")
+                        .add(config.creatorName)
+                        .add(String.valueOf(config.carrierId))
+                        .add(String.valueOf(config.subscriptionId))
+                        .toString();
+            } else if (config.fromWifiNetworkSpecifier) {
+                mIsNetworkRequest = true;
+            }
+            mIsTargetingNewNetworks = isTargetingNewNetworks;
+        }
+
+        /**
+         * Creates a StandardWifiEntryKey from its String representation.
+         */
+        StandardWifiEntryKey(@NonNull String string) {
+            mScanResultKey = new ScanResultKey();
+            if (!string.startsWith(KEY_PREFIX)) {
+                Log.e(TAG, "String key does not start with key prefix!");
+                return;
+            }
+            try {
+                final JSONObject keyJson = new JSONObject(string.substring(KEY_PREFIX.length()));
+                if (keyJson.has(KEY_SCAN_RESULT_KEY)) {
+                    mScanResultKey = new ScanResultKey(keyJson.getString(KEY_SCAN_RESULT_KEY));
+                }
+                if (keyJson.has(KEY_SUGGESTION_PROFILE_KEY)) {
+                    mSuggestionProfileKey = keyJson.getString(KEY_SUGGESTION_PROFILE_KEY);
+                }
+                if (keyJson.has(KEY_IS_NETWORK_REQUEST)) {
+                    mIsNetworkRequest = keyJson.getBoolean(KEY_IS_NETWORK_REQUEST);
+                }
+                if (keyJson.has(KEY_IS_TARGETING_NEW_NETWORKS)) {
+                    mIsTargetingNewNetworks = keyJson.getBoolean(
+                            KEY_IS_TARGETING_NEW_NETWORKS);
+                }
+            } catch (JSONException e) {
+                Log.e(TAG, "JSONException while converting StandardWifiEntryKey to string: " + e);
+            }
+        }
+
+        /**
+         * Returns the JSON String representation of this StandardWifiEntryKey.
+         */
+        @Override
+        public String toString() {
+            final JSONObject keyJson = new JSONObject();
+            try {
+                if (mScanResultKey != null) {
+                    keyJson.put(KEY_SCAN_RESULT_KEY, mScanResultKey.toString());
+                }
+                if (mSuggestionProfileKey != null) {
+                    keyJson.put(KEY_SUGGESTION_PROFILE_KEY, mSuggestionProfileKey);
+                }
+                if (mIsNetworkRequest) {
+                    keyJson.put(KEY_IS_NETWORK_REQUEST, mIsNetworkRequest);
+                }
+                if (mIsTargetingNewNetworks) {
+                    keyJson.put(KEY_IS_TARGETING_NEW_NETWORKS, mIsTargetingNewNetworks);
+                }
+            } catch (JSONException e) {
+                Log.wtf(TAG, "JSONException while converting StandardWifiEntryKey to string: " + e);
+            }
+            return KEY_PREFIX + keyJson.toString();
+        }
+
+        /**
+         * Returns the ScanResultKey of this StandardWifiEntryKey to match against ScanResults
+         */
+        @NonNull ScanResultKey getScanResultKey() {
+            return mScanResultKey;
+        }
+
+        @Nullable String getSuggestionProfileKey() {
+            return mSuggestionProfileKey;
+        }
+
+        boolean isNetworkRequest() {
+            return mIsNetworkRequest;
+        }
+
+        boolean isTargetingNewNetworks() {
+            return mIsTargetingNewNetworks;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) return true;
+            if (o == null || getClass() != o.getClass()) return false;
+            StandardWifiEntryKey that = (StandardWifiEntryKey) o;
+            return Objects.equals(mScanResultKey, that.mScanResultKey)
+                    && TextUtils.equals(mSuggestionProfileKey, that.mSuggestionProfileKey)
+                    && mIsNetworkRequest == that.mIsNetworkRequest;
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(mScanResultKey, mSuggestionProfileKey, mIsNetworkRequest);
+        }
+    }
+
+    /**
+     * Class for matching ScanResults to StandardWifiEntry by SSID and security type grouping.
+     */
+    static class ScanResultKey {
+        private static final String KEY_SSID = "SSID";
+        private static final String KEY_SECURITY_TYPES = "SECURITY_TYPES";
+
+        @Nullable private String mSsid;
+        @NonNull private Set<Integer> mSecurityTypes = new ArraySet<>();
+
+        ScanResultKey() {
+        }
+
+        ScanResultKey(@Nullable String ssid, List<Integer> securityTypes) {
+            mSsid = ssid;
+            for (int security : securityTypes) {
+                mSecurityTypes.add(security);
+                // Add any security types that merge to the same WifiEntry
+                switch (security) {
+                    // Group OPEN and OWE networks together
+                    case SECURITY_TYPE_OPEN:
+                        mSecurityTypes.add(SECURITY_TYPE_OWE);
+                        break;
+                    case SECURITY_TYPE_OWE:
+                        mSecurityTypes.add(SECURITY_TYPE_OPEN);
+                        break;
+                    // Group PSK and SAE networks together
+                    case SECURITY_TYPE_PSK:
+                        mSecurityTypes.add(SECURITY_TYPE_SAE);
+                        break;
+                    case SECURITY_TYPE_SAE:
+                        mSecurityTypes.add(SECURITY_TYPE_PSK);
+                        break;
+                    // Group EAP and EAP_WPA3_ENTERPRISE networks together
+                    case SECURITY_TYPE_EAP:
+                        mSecurityTypes.add(SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
+                        break;
+                    case SECURITY_TYPE_EAP_WPA3_ENTERPRISE:
+                        mSecurityTypes.add(SECURITY_TYPE_EAP);
+                        break;
+                }
+            }
+        }
+
+        /**
+         * Creates a ScanResultKey from a ScanResult's SSID and security type grouping.
+         * @param scanResult
+         */
+        ScanResultKey(@NonNull ScanResult scanResult) {
+            this(scanResult.SSID, getSecurityTypesFromScanResult(scanResult));
+        }
+
+        /**
+         * Creates a ScanResultKey from a WifiConfiguration's SSID and security type grouping.
+         */
+        ScanResultKey(@NonNull WifiConfiguration wifiConfiguration) {
+            this(sanitizeSsid(wifiConfiguration.SSID),
+                    getSecurityTypesFromWifiConfiguration(wifiConfiguration));
+        }
+
+        /**
+         * Creates a ScanResultKey from its String representation.
+         */
+        ScanResultKey(@NonNull String string) {
+            try {
+                final JSONObject keyJson = new JSONObject(string);
+                mSsid = keyJson.getString(KEY_SSID);
+                final JSONArray securityTypesJson =
+                        keyJson.getJSONArray(KEY_SECURITY_TYPES);
+                for (int i = 0; i < securityTypesJson.length(); i++) {
+                    mSecurityTypes.add(securityTypesJson.getInt(i));
+                }
+            } catch (JSONException e) {
+                Log.wtf(TAG, "JSONException while constructing ScanResultKey from string: " + e);
+            }
+        }
+
+        /**
+         * Returns the JSON String representation of this ScanResultEntry.
+         */
+        @Override
+        public String toString() {
+            final JSONObject keyJson = new JSONObject();
+            try {
+                if (mSsid != null) {
+                    keyJson.put(KEY_SSID, mSsid);
+                }
+                if (!mSecurityTypes.isEmpty()) {
+                    final JSONArray securityTypesJson = new JSONArray();
+                    for (int security : mSecurityTypes) {
+                        securityTypesJson.put(security);
+                    }
+                    keyJson.put(KEY_SECURITY_TYPES, securityTypesJson);
+                }
+            } catch (JSONException e) {
+                Log.e(TAG, "JSONException while converting ScanResultKey to string: " + e);
+            }
+            return keyJson.toString();
+        }
+
+        @Nullable String getSsid() {
+            return mSsid;
+        }
+
+        @NonNull Set<Integer> getSecurityTypes() {
+            return mSecurityTypes;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) return true;
+            if (o == null || getClass() != o.getClass()) return false;
+            ScanResultKey that = (ScanResultKey) o;
+            return TextUtils.equals(mSsid, that.mSsid)
+                    && mSecurityTypes.equals(that.mSecurityTypes);
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(mSsid, mSecurityTypes);
+        }
+    }
 }
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java
index 90d62f2..9c4f376 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java
@@ -19,14 +19,6 @@
 import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLED;
 import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_PERMANENTLY_DISABLED;
 
-import static com.android.wifitrackerlib.StandardWifiEntry.ssidAndSecurityToStandardWifiEntryKey;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_EAP;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_EAP_SUITE_B;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_NONE;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_OWE;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_PSK;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_SAE;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_WEP;
 import static com.android.wifitrackerlib.WifiEntry.SPEED_FAST;
 import static com.android.wifitrackerlib.WifiEntry.SPEED_MODERATE;
 import static com.android.wifitrackerlib.WifiEntry.SPEED_NONE;
@@ -35,7 +27,6 @@
 import static com.android.wifitrackerlib.WifiEntry.Speed;
 
 import static java.util.Comparator.comparingInt;
-import static java.util.stream.Collectors.groupingBy;
 
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
@@ -46,13 +37,13 @@
 import android.net.NetworkKey;
 import android.net.NetworkScoreManager;
 import android.net.ScoredNetwork;
+import android.net.WifiKey;
 import android.net.wifi.ScanResult;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiConfiguration.NetworkSelectionStatus;
 import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiNetworkScoreCache;
 import android.os.PersistableBundle;
-import android.os.UserHandle;
 import android.provider.Settings;
 import android.telephony.CarrierConfigManager;
 import android.telephony.SubscriptionInfo;
@@ -64,24 +55,37 @@
 import android.text.TextUtils;
 import android.text.format.DateUtils;
 import android.text.style.ClickableSpan;
+import android.util.FeatureFlagUtils;
 import android.view.View;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.settingslib.HelpUtils;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.StringJoiner;
 
 /**
  * Utility methods for WifiTrackerLib.
  */
-class Utils {
+public class Utils {
+    /** Copy of the @hide Settings.Global.USE_OPEN_WIFI_PACKAGE constant. */
+    static final String SETTINGS_GLOBAL_USE_OPEN_WIFI_PACKAGE = "use_open_wifi_package";
+
+    @VisibleForTesting
+    static FeatureFlagUtilsWrapper sFeatureFlagUtilsWrapper = new FeatureFlagUtilsWrapper();
+
+    static class FeatureFlagUtilsWrapper {
+        boolean isProviderModelEnabled(Context context) {
+            return FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL);
+        }
+    }
+
     private static NetworkScoreManager sNetworkScoreManager;
 
     private static String getActiveScorerPackage(@NonNull Context context) {
@@ -93,234 +97,148 @@
 
     // Returns the ScanResult with the best RSSI from a list of ScanResults.
     @Nullable
-    static ScanResult getBestScanResultByLevel(@NonNull List<ScanResult> scanResults) {
+    public static ScanResult getBestScanResultByLevel(@NonNull List<ScanResult> scanResults) {
         if (scanResults.isEmpty()) return null;
 
         return Collections.max(scanResults, comparingInt(scanResult -> scanResult.level));
     }
 
-    // Returns a list of SECURITY types supported by a ScanResult.
-    static List<Integer> getSecurityTypesFromScanResult(@NonNull ScanResult scan) {
-        final List<Integer> securityTypes = new ArrayList<>();
-        if (scan.capabilities == null) {
-            securityTypes.add(SECURITY_NONE);
-        } else if (scan.capabilities.contains("PSK") && scan.capabilities.contains("SAE")) {
-            securityTypes.add(SECURITY_PSK);
-            securityTypes.add(SECURITY_SAE);
-        } else if (scan.capabilities.contains("OWE_TRANSITION")) {
-            securityTypes.add(SECURITY_NONE);
-            securityTypes.add(SECURITY_OWE);
-        } else if (scan.capabilities.contains("OWE")) {
-            securityTypes.add(SECURITY_OWE);
-        } else if (scan.capabilities.contains("WEP")) {
-            securityTypes.add(SECURITY_WEP);
-        } else if (scan.capabilities.contains("SAE")) {
-            securityTypes.add(SECURITY_SAE);
-        } else if (scan.capabilities.contains("PSK")) {
-            securityTypes.add(SECURITY_PSK);
-        } else if (scan.capabilities.contains("EAP_SUITE_B_192")) {
-            securityTypes.add(SECURITY_EAP_SUITE_B);
-        } else if (scan.capabilities.contains("EAP")) {
-            securityTypes.add(SECURITY_EAP);
-        } else {
-            securityTypes.add(SECURITY_NONE);
+    // Returns a list of WifiInfo SECURITY_TYPE_* supported by a ScanResult.
+    // TODO(b/187755981): Move to shared static utils class
+    @NonNull
+    static List<Integer> getSecurityTypesFromScanResult(@NonNull ScanResult scanResult) {
+        List<Integer> securityTypes = new ArrayList<>();
+
+        // Open network & its upgradable types
+        if (isScanResultForOweTransitionNetwork(scanResult)) {
+            securityTypes.add(WifiInfo.SECURITY_TYPE_OPEN);
+            securityTypes.add(WifiInfo.SECURITY_TYPE_OWE);
+            return securityTypes;
+        } else if (isScanResultForOweNetwork(scanResult)) {
+            securityTypes.add(WifiInfo.SECURITY_TYPE_OWE);
+            return securityTypes;
+        } else if (isScanResultForOpenNetwork(scanResult)) {
+            securityTypes.add(WifiInfo.SECURITY_TYPE_OPEN);
+            return securityTypes;
+        }
+
+        // WEP network which has no upgradable type
+        if (isScanResultForWepNetwork(scanResult)) {
+            securityTypes.add(WifiInfo.SECURITY_TYPE_WEP);
+            return securityTypes;
+        }
+
+        // WAPI PSK network which has no upgradable type
+        if (isScanResultForWapiPskNetwork(scanResult)) {
+            securityTypes.add(WifiInfo.SECURITY_TYPE_WAPI_PSK);
+            return securityTypes;
+        }
+
+        // WAPI CERT network which has no upgradable type
+        if (isScanResultForWapiCertNetwork(scanResult)) {
+            securityTypes.add(
+                    WifiInfo.SECURITY_TYPE_WAPI_CERT);
+            return securityTypes;
+        }
+
+        // WPA2 personal network & its upgradable types
+        if (isScanResultForPskNetwork(scanResult)
+                && isScanResultForSaeNetwork(scanResult)) {
+            securityTypes.add(WifiInfo.SECURITY_TYPE_PSK);
+            securityTypes.add(WifiInfo.SECURITY_TYPE_SAE);
+            return securityTypes;
+        } else if (isScanResultForPskNetwork(scanResult)) {
+            securityTypes.add(WifiInfo.SECURITY_TYPE_PSK);
+            return securityTypes;
+        } else if (isScanResultForSaeNetwork(scanResult)) {
+            securityTypes.add(WifiInfo.SECURITY_TYPE_SAE);
+            return securityTypes;
+        }
+
+        // WPA3 Enterprise 192-bit mode, WPA2/WPA3 enterprise network & its upgradable types
+        if (isScanResultForEapSuiteBNetwork(scanResult)) {
+            securityTypes.add(WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT);
+        } else if (isScanResultForWpa3EnterpriseTransitionNetwork(scanResult)) {
+            securityTypes.add(WifiInfo.SECURITY_TYPE_EAP);
+            securityTypes.add(WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
+        } else if (isScanResultForWpa3EnterpriseOnlyNetwork(scanResult)) {
+            securityTypes.add(WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
+        } else if (isScanResultForEapNetwork(scanResult)) {
+            securityTypes.add(WifiInfo.SECURITY_TYPE_EAP);
         }
         return securityTypes;
     }
 
-    // Returns the SECURITY type supported by a WifiConfiguration
-    @WifiEntry.Security
-    static int getSecurityTypeFromWifiConfiguration(@NonNull WifiConfiguration config) {
-        if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.SAE)) {
-            return SECURITY_SAE;
+    // Returns a list of WifiInfo SECURITY_TYPE_* supported by a WifiConfiguration
+    // TODO(b/187755473): Use new public APIs to get the security type instead of relying on the
+    //                    legacy allowedKeyManagement bitset.
+    static List<Integer> getSecurityTypesFromWifiConfiguration(@NonNull WifiConfiguration config) {
+        if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WAPI_CERT)) {
+            return Arrays.asList(WifiInfo.SECURITY_TYPE_WAPI_CERT);
+        } else if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WAPI_PSK)) {
+            return Arrays.asList(WifiInfo.SECURITY_TYPE_WAPI_PSK);
+        } else if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.SUITE_B_192)) {
+            return Arrays.asList(WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT);
+        } else if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.OWE)) {
+            return Arrays.asList(WifiInfo.SECURITY_TYPE_OWE);
+        } else if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.SAE)) {
+            return Arrays.asList(WifiInfo.SECURITY_TYPE_SAE);
+        } else if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WPA2_PSK)) {
+            return Arrays.asList(WifiInfo.SECURITY_TYPE_PSK);
+        } else if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WPA_EAP)) {
+            if (config.requirePmf
+                    && !config.allowedPairwiseCiphers.get(WifiConfiguration.PairwiseCipher.TKIP)
+                    && config.allowedProtocols.get(WifiConfiguration.Protocol.RSN)) {
+                return Arrays.asList(WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
+            } else {
+                // WPA2 configs should also be valid for WPA3-Enterprise APs
+                return Arrays.asList(
+                        WifiInfo.SECURITY_TYPE_EAP, WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
+            }
+        } else if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WPA_PSK)) {
+            return Arrays.asList(WifiInfo.SECURITY_TYPE_PSK);
+        } else if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.NONE)) {
+            if (config.wepKeys != null) {
+                for (int i = 0; i < config.wepKeys.length; i++) {
+                    if (config.wepKeys[i] != null) {
+                        return Arrays.asList(WifiInfo.SECURITY_TYPE_WEP);
+                    }
+                }
+            }
         }
-        if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WPA_PSK)) {
-            return SECURITY_PSK;
-        }
-        if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.SUITE_B_192)) {
-            return SECURITY_EAP_SUITE_B;
-        }
-        if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WPA_EAP)
-                || config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.IEEE8021X)) {
-            return SECURITY_EAP;
-        }
-        if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.OWE)) {
-            return SECURITY_OWE;
-        }
-        return (config.wepKeys[0] != null) ? SECURITY_WEP : SECURITY_NONE;
+        return Arrays.asList(WifiInfo.SECURITY_TYPE_OPEN);
     }
 
     /**
-     * Maps ScanResults into any number of WifiEntry keys each ScanResult matches. If
-     * chooseSingleSecurity is true, then ScanResults with multiple security capabilities will be
-     * matched to a single security type for the purpose of user selection.
+     * Returns a single WifiInfo security type from the list of multiple WifiInfo security
+     * types supported by an entry.
      *
-     * @param scanResults ScanResults to be mapped.
-     * @param chooseSingleSecurity If this is true, map scan results with multiple security
-     *                             capabilities to a single security for coalescing into a single
-     *                             WifiEntry.
-     * @param wifiConfigsByKey Mapping of WifiConfiguration to WifiEntry key. Only used if
-     *                         chooseSingleSecurity is true.
-     * @param isWpa3SaeSupported If this is false, do not map to SECURITY_SAE
-     * @param isWpa3SuiteBSupported If this is false, do not map to SECURITY_EAP_SUITE_B
-     * @param isEnhancedOpenSupported If this is false, do not map to SECURITY_OWE
-     * @return Map of WifiEntry key to list of corresponding ScanResults.
+     * Single security types will have a 1-to-1 mapping.
+     * Multiple security type networks will collapse to the lowest security type in the group:
+     *     - Open/OWE -> Open
+     *     - PSK/SAE -> PSK
+     *     - EAP/EAP-WPA3 -> EAP
      */
-    static Map<String, List<ScanResult>> mapScanResultsToKey(
-            @NonNull List<ScanResult> scanResults,
-            boolean chooseSingleSecurity,
-            @Nullable Map<String, WifiConfiguration> wifiConfigsByKey,
-            boolean isWpa3SaeSupported,
-            boolean isWpa3SuiteBSupported,
-            boolean isEnhancedOpenSupported) {
-        if (wifiConfigsByKey == null) {
-            wifiConfigsByKey = new HashMap<>();
-        }
-        final Map<String, List<ScanResult>> scanResultsBySsid = scanResults.stream()
-                .filter(scanResult -> !TextUtils.isEmpty(scanResult.SSID))
-                .collect(groupingBy(scanResult -> scanResult.SSID));
-        final Map<String, List<ScanResult>> scanResultsByKey = new HashMap<>();
-
-        for (String ssid : scanResultsBySsid.keySet()) {
-            final boolean pskConfigExists = wifiConfigsByKey.containsKey(
-                    ssidAndSecurityToStandardWifiEntryKey(ssid, SECURITY_PSK));
-            final boolean saeConfigExists = wifiConfigsByKey.containsKey(
-                    ssidAndSecurityToStandardWifiEntryKey(ssid, SECURITY_SAE));
-            final boolean openConfigExists = wifiConfigsByKey.containsKey(
-                    ssidAndSecurityToStandardWifiEntryKey(ssid, SECURITY_NONE));
-            final boolean oweConfigExists = wifiConfigsByKey.containsKey(
-                    ssidAndSecurityToStandardWifiEntryKey(ssid, SECURITY_OWE));
-
-            boolean pskInRange = false;
-            boolean saeInRange = false;
-            boolean oweInRange = false;
-            boolean openInRange = false;
-            for (ScanResult scan : scanResultsBySsid.get(ssid)) {
-                final List<Integer> securityTypes = getSecurityTypesFromScanResult(scan);
-                if (securityTypes.contains(SECURITY_PSK)) {
-                    pskInRange = true;
-                }
-                if (securityTypes.contains(SECURITY_SAE)) {
-                    saeInRange = true;
-                }
-                if (securityTypes.contains(SECURITY_OWE)) {
-                    oweInRange = true;
-                }
-                if (securityTypes.contains(SECURITY_NONE)) {
-                    openInRange = true;
-                }
+    static int getSingleSecurityTypeFromMultipleSecurityTypes(
+            @NonNull List<Integer> securityTypes) {
+        if (securityTypes.size() == 1) {
+            return securityTypes.get(0);
+        } else if (securityTypes.size() == 2) {
+            if (securityTypes.contains(WifiInfo.SECURITY_TYPE_OPEN)) {
+                return WifiInfo.SECURITY_TYPE_OPEN;
             }
-
-            for (ScanResult scan : scanResultsBySsid.get(ssid)) {
-                List<Integer> securityTypes = getSecurityTypesFromScanResult(scan);
-                List<Integer> chosenSecurityTypes = new ArrayList<>();
-                // Ignore security types that are unsupported
-                if (!isWpa3SaeSupported) {
-                    securityTypes.remove((Integer) SECURITY_SAE);
-                }
-                if (!isWpa3SuiteBSupported) {
-                    securityTypes.remove((Integer) SECURITY_EAP_SUITE_B);
-                }
-                if (!isEnhancedOpenSupported) {
-                    securityTypes.remove((Integer) SECURITY_OWE);
-                }
-
-                final boolean isSae = securityTypes.contains(SECURITY_SAE)
-                        && !securityTypes.contains(SECURITY_PSK);
-                final boolean isPsk = securityTypes.contains(SECURITY_PSK)
-                        && !securityTypes.contains(SECURITY_SAE);
-                final boolean isPskSaeTransition = securityTypes.contains(SECURITY_PSK)
-                        && securityTypes.contains(SECURITY_SAE);
-                final boolean isOwe = securityTypes.contains(SECURITY_OWE)
-                        && !securityTypes.contains(SECURITY_NONE);
-                final boolean isOweTransition = securityTypes.contains(SECURITY_NONE)
-                        && securityTypes.contains(SECURITY_OWE);
-                final boolean isOpen = securityTypes.contains(SECURITY_NONE)
-                        && !securityTypes.contains(SECURITY_OWE);
-
-                if (chooseSingleSecurity) {
-                    if (isPsk) {
-                        if (!pskConfigExists && saeConfigExists && saeInRange) {
-                            // If we don't have a PSK config, but there is an SAE AP in-range and
-                            // an SAE config we can use for connection, then ignore the PSK AP so
-                            // that the user only has the SAE AP to select.
-                            continue;
-                        } else {
-                            chosenSecurityTypes.add(SECURITY_PSK);
-                        }
-                    } else if (isPskSaeTransition) {
-                        // Map to SAE if we have an SAE config and no PSK config (use SAE config to
-                        // connect). Else, map to PSK for wider compatibility.
-                        if (!pskConfigExists && saeConfigExists) {
-                            chosenSecurityTypes.add(SECURITY_SAE);
-                        } else {
-                            chosenSecurityTypes.add(SECURITY_PSK);
-                        }
-                    } else if (isSae) {
-                        // Map to SAE if we either
-                        // 1) have an SAE config and no PSK config (use SAE config to connect).
-                        // 2) have no configs at all, and no PSK APs are in range. (save new
-                        //    network with SAE security).
-                        // Else, map to PSK for wider compatibility.
-                        if (!pskConfigExists && (saeConfigExists || !pskInRange)) {
-                            chosenSecurityTypes.add(SECURITY_SAE);
-                        } else {
-                            chosenSecurityTypes.add(SECURITY_PSK);
-                        }
-                    } else if (isOwe) {
-                        // If an open AP is in range, use it instead if we have a config for it and
-                        // no OWE config.
-                        if (openInRange && openConfigExists && !oweConfigExists) {
-                            continue;
-                        } else {
-                            chosenSecurityTypes.add(SECURITY_OWE);
-                        }
-                    } else if (isOweTransition) {
-                        // Map to OWE if we either
-                        // 1) have an OWE config (use OWE config to connect).
-                        // 2) have no configs at all (save new network with OWE security).
-                        // Otherwise, if we have an open config only, map to open security so that
-                        // config is used for connection.
-                        if (oweConfigExists || !openConfigExists) {
-                            chosenSecurityTypes.add(SECURITY_OWE);
-                        } else {
-                            chosenSecurityTypes.add(SECURITY_NONE);
-                        }
-                    } else if (isOpen) {
-                        // If an OWE AP is in-range, then use it instead if we have a config for it
-                        // or no configs at all.
-                        if (oweInRange && (oweConfigExists || !openConfigExists)) {
-                            continue;
-                        } else {
-                            chosenSecurityTypes.add(SECURITY_NONE);
-                        }
-                    } else {
-                        chosenSecurityTypes.addAll(securityTypes);
-                    }
-                } else {
-                    chosenSecurityTypes.addAll(securityTypes);
-                    if (isSae) {
-                        // If we don't need to choose a single security type for the user to select,
-                        // then SAE scans can also match to PSK configs, which will be dynamically
-                        // upgraded to SAE by the framework at connection time.
-                        chosenSecurityTypes.add(SECURITY_PSK);
-                    }
-                }
-
-                for (int security : chosenSecurityTypes) {
-                    final String key = ssidAndSecurityToStandardWifiEntryKey(ssid, security);
-                    if (!scanResultsByKey.containsKey(key)) {
-                        scanResultsByKey.put(key, new ArrayList<>());
-                    }
-                    scanResultsByKey.get(key).add(scan);
-                }
+            if (securityTypes.contains(WifiInfo.SECURITY_TYPE_PSK)) {
+                return WifiInfo.SECURITY_TYPE_PSK;
+            }
+            if (securityTypes.contains(WifiInfo.SECURITY_TYPE_EAP)) {
+                return WifiInfo.SECURITY_TYPE_EAP;
             }
         }
-        return scanResultsByKey;
+        return WifiInfo.SECURITY_TYPE_UNKNOWN;
     }
 
     @Speed
-    static int getAverageSpeedFromScanResults(@NonNull WifiNetworkScoreCache scoreCache,
+    public static int getAverageSpeedFromScanResults(@NonNull WifiNetworkScoreCache scoreCache,
             @NonNull List<ScanResult> scanResults) {
         int count = 0;
         int totalSpeed = 0;
@@ -343,10 +261,16 @@
     }
 
     @Speed
-    static int getSpeedFromWifiInfo(@NonNull WifiNetworkScoreCache scoreCache,
+    public static int getSpeedFromWifiInfo(@NonNull WifiNetworkScoreCache scoreCache,
             @NonNull WifiInfo wifiInfo) {
+        final WifiKey wifiKey;
+        try {
+            wifiKey = new WifiKey(wifiInfo.getSSID(), wifiInfo.getBSSID());
+        } catch (IllegalArgumentException e) {
+            return SPEED_NONE;
+        }
         ScoredNetwork scoredNetwork = scoreCache.getScoredNetwork(
-                NetworkKey.createFromWifiInfo(wifiInfo));
+                new NetworkKey(wifiKey));
         if (scoredNetwork == null) {
             return SPEED_NONE;
         }
@@ -374,36 +298,172 @@
     static String getAppLabel(Context context, String packageName) {
         try {
             String openWifiPackageName = Settings.Global.getString(context.getContentResolver(),
-                    Settings.Global.USE_OPEN_WIFI_PACKAGE);
+                    SETTINGS_GLOBAL_USE_OPEN_WIFI_PACKAGE);
             if (!TextUtils.isEmpty(openWifiPackageName) && TextUtils.equals(packageName,
                     getActiveScorerPackage(context))) {
                 packageName = openWifiPackageName;
             }
 
-            ApplicationInfo appInfo = context.getPackageManager().getApplicationInfoAsUser(
+            ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(
                     packageName,
-                    0 /* flags */,
-                    UserHandle.getUserId(UserHandle.USER_CURRENT));
+                    0 /* flags */);
             return appInfo.loadLabel(context.getPackageManager()).toString();
         } catch (PackageManager.NameNotFoundException e) {
             return "";
         }
     }
 
-    static String getDisconnectedStateDescription(Context context, WifiEntry wifiEntry) {
-        if (context == null || wifiEntry == null) {
-            return "";
-        }
-        WifiConfiguration wifiConfiguration = wifiEntry.getWifiConfiguration();
-        if (wifiConfiguration == null) {
-            return null;
+    static String getConnectedDescription(Context context,
+            WifiConfiguration wifiConfiguration,
+            NetworkCapabilities networkCapabilities,
+            String recommendationServiceLabel,
+            boolean isDefaultNetwork,
+            boolean isLowQuality) {
+        final StringJoiner sj = new StringJoiner(context.getString(
+                R.string.wifitrackerlib_summary_separator));
+        final boolean hideConnected =
+                !isDefaultNetwork && sFeatureFlagUtilsWrapper.isProviderModelEnabled(context);
+
+        if (wifiConfiguration != null) {
+            if (wifiConfiguration.fromWifiNetworkSuggestion
+                    || wifiConfiguration.fromWifiNetworkSpecifier) {
+                // For suggestion or specifier networks to show "Connected via ..."
+                final String suggestionOrSpecifierLabel =
+                        getSuggestionOrSpecifierLabel(context, wifiConfiguration);
+                if (!TextUtils.isEmpty(suggestionOrSpecifierLabel)) {
+                    if (hideConnected) {
+                        sj.add(context.getString(R.string.wifitrackerlib_available_via_app,
+                                suggestionOrSpecifierLabel));
+                    } else {
+                        sj.add(context.getString(R.string.wifitrackerlib_connected_via_app,
+                                suggestionOrSpecifierLabel));
+                    }
+                }
+            } else if (wifiConfiguration.isEphemeral() && !hideConnected) {
+                // For ephemeral networks to show "Automatically connected via ..."
+                if (!TextUtils.isEmpty(recommendationServiceLabel)) {
+                    sj.add(String.format(context.getString(
+                            R.string.wifitrackerlib_connected_via_network_scorer),
+                            recommendationServiceLabel));
+                } else {
+                    sj.add(context.getString(
+                            R.string.wifitrackerlib_connected_via_network_scorer_default));
+                }
+            }
         }
 
+        if (isLowQuality) {
+            sj.add(context.getString(R.string.wifi_connected_low_quality));
+        }
+
+        // For displaying network capability info, such as captive portal or no internet
+        String networkCapabilitiesInformation =
+                getCurrentNetworkCapabilitiesInformation(context,  networkCapabilities);
+        if (!TextUtils.isEmpty(networkCapabilitiesInformation)) {
+            sj.add(networkCapabilitiesInformation);
+        }
+
+        // Default to "Connected" if nothing else to display
+        if (sj.length() == 0 && !hideConnected) {
+            return context.getResources().getStringArray(R.array.wifitrackerlib_wifi_status)
+                    [DetailedState.CONNECTED.ordinal()];
+        }
+
+        return sj.toString();
+    }
+
+    static String getConnectingDescription(Context context, NetworkInfo networkInfo) {
+        if (context == null || networkInfo == null) {
+            return "";
+        }
+        DetailedState detailedState = networkInfo.getDetailedState();
+        if (detailedState == null) {
+            return "";
+        }
+
+        final String[] wifiStatusArray = context.getResources()
+                .getStringArray(R.array.wifitrackerlib_wifi_status);
+        final int index = detailedState.ordinal();
+        return index >= wifiStatusArray.length ? "" : wifiStatusArray[index];
+    }
+
+
+    static String getDisconnectedDescription(Context context,
+            WifiConfiguration wifiConfiguration,
+            boolean forSavedNetworksPage,
+            boolean concise) {
+        if (context == null) {
+            return "";
+        }
+        final StringJoiner sj = new StringJoiner(context.getString(
+                R.string.wifitrackerlib_summary_separator));
+
+        // For "Saved", "Saved by ...", and "Available via..."
+        if (concise) {
+            sj.add(context.getString(R.string.wifitrackerlib_wifi_disconnected));
+        } else if (wifiConfiguration != null) {
+            if (forSavedNetworksPage && !wifiConfiguration.isPasspoint()) {
+                final CharSequence appLabel = getAppLabel(context, wifiConfiguration.creatorName);
+                if (!TextUtils.isEmpty(appLabel)) {
+                    sj.add(context.getString(R.string.wifitrackerlib_saved_network, appLabel));
+                }
+            } else {
+                if (wifiConfiguration.fromWifiNetworkSuggestion) {
+                    final String suggestionOrSpecifierLabel =
+                            getSuggestionOrSpecifierLabel(context, wifiConfiguration);
+                    if (!TextUtils.isEmpty(suggestionOrSpecifierLabel)) {
+                        sj.add(context.getString(
+                                R.string.wifitrackerlib_available_via_app,
+                                suggestionOrSpecifierLabel));
+                    }
+                } else {
+                    sj.add(context.getString(R.string.wifitrackerlib_wifi_remembered));
+                }
+            }
+        }
+
+        // For failure messages and disabled reasons
+        final String wifiConfigFailureMessage =
+                getWifiConfigurationFailureMessage(context, wifiConfiguration);
+        if (!TextUtils.isEmpty(wifiConfigFailureMessage)) {
+            sj.add(wifiConfigFailureMessage);
+        }
+
+        return sj.toString();
+    }
+
+    private static String getSuggestionOrSpecifierLabel(
+            Context context, WifiConfiguration wifiConfiguration) {
+        if (context == null || wifiConfiguration == null) {
+            return "";
+        }
+
+        final String carrierName = getCarrierNameForSubId(context,
+                getSubIdForConfig(context, wifiConfiguration));
+        if (!TextUtils.isEmpty(carrierName)) {
+            return carrierName;
+        }
+        final String suggestorLabel = getAppLabel(context, wifiConfiguration.creatorName);
+        if (!TextUtils.isEmpty(suggestorLabel)) {
+            return suggestorLabel;
+        }
+        // Fall-back to the package name in case the app label is missing
+        return wifiConfiguration.creatorName;
+    }
+
+    private static String getWifiConfigurationFailureMessage(
+            Context context, WifiConfiguration wifiConfiguration) {
+        if (context == null || wifiConfiguration == null) {
+            return "";
+        }
+
+        // Check for any failure messages to display
         if (wifiConfiguration.hasNoInternetAccess()) {
             int messageID =
                     wifiConfiguration.getNetworkSelectionStatus().getNetworkSelectionStatus()
                             == NETWORK_SELECTION_PERMANENTLY_DISABLED
-                    ? R.string.wifi_no_internet_no_reconnect : R.string.wifi_no_internet;
+                            ? R.string.wifitrackerlib_wifi_no_internet_no_reconnect
+                            : R.string.wifitrackerlib_wifi_no_internet;
             return context.getString(messageID);
         } else if (wifiConfiguration.getNetworkSelectionStatus().getNetworkSelectionStatus()
                 != NETWORK_SELECTION_ENABLED) {
@@ -411,22 +471,47 @@
                     wifiConfiguration.getNetworkSelectionStatus();
             switch (networkStatus.getNetworkSelectionDisableReason()) {
                 case WifiConfiguration.NetworkSelectionStatus.DISABLED_AUTHENTICATION_FAILURE:
-                    return context.getString(R.string.wifi_disabled_password_failure);
+                case WifiConfiguration.NetworkSelectionStatus
+                        .DISABLED_AUTHENTICATION_NO_SUBSCRIPTION:
+                    return context.getString(
+                            R.string.wifitrackerlib_wifi_disabled_password_failure);
                 case WifiConfiguration.NetworkSelectionStatus.DISABLED_BY_WRONG_PASSWORD:
-                    return context.getString(R.string.wifi_check_password_try_again);
+                    return context.getString(R.string.wifitrackerlib_wifi_check_password_try_again);
                 case WifiConfiguration.NetworkSelectionStatus.DISABLED_DHCP_FAILURE:
-                    return context.getString(R.string.wifi_disabled_network_failure);
+                    return context.getString(R.string.wifitrackerlib_wifi_disabled_network_failure);
                 case WifiConfiguration.NetworkSelectionStatus.DISABLED_ASSOCIATION_REJECTION:
-                    return context.getString(R.string.wifi_disabled_generic);
+                    return context.getString(R.string.wifitrackerlib_wifi_disabled_generic);
+                case WifiConfiguration.NetworkSelectionStatus.DISABLED_NO_INTERNET_PERMANENT:
+                case WifiConfiguration.NetworkSelectionStatus.DISABLED_NO_INTERNET_TEMPORARY:
+                    return context.getString(R.string.wifitrackerlib_wifi_no_internet_no_reconnect);
                 default:
                     break;
             }
-        } else if (wifiEntry.getLevel() == WifiEntry.WIFI_LEVEL_UNREACHABLE) {
-            // Do nothing because users know it by signal icon.
         } else { // In range, not disabled.
-            if (wifiConfiguration.getRecentFailureReason()
-                    == WifiConfiguration.RECENT_FAILURE_AP_UNABLE_TO_HANDLE_NEW_STA) {
-                return context.getString(R.string.wifi_ap_unable_to_handle_new_sta);
+            switch (wifiConfiguration.getRecentFailureReason()) {
+                case WifiConfiguration.RECENT_FAILURE_AP_UNABLE_TO_HANDLE_NEW_STA:
+                case WifiConfiguration.RECENT_FAILURE_REFUSED_TEMPORARILY:
+                case WifiConfiguration.RECENT_FAILURE_DISCONNECTION_AP_BUSY:
+                    return context.getString(R.string
+                            .wifitrackerlib_wifi_ap_unable_to_handle_new_sta);
+                case WifiConfiguration.RECENT_FAILURE_POOR_CHANNEL_CONDITIONS:
+                    return context.getString(R.string.wifitrackerlib_wifi_poor_channel_conditions);
+                case WifiConfiguration.RECENT_FAILURE_MBO_ASSOC_DISALLOWED_UNSPECIFIED:
+                case WifiConfiguration.RECENT_FAILURE_MBO_ASSOC_DISALLOWED_AIR_INTERFACE_OVERLOADED:
+                case WifiConfiguration.RECENT_FAILURE_MBO_ASSOC_DISALLOWED_AUTH_SERVER_OVERLOADED:
+                    return context.getString(R.string
+                            .wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect);
+                case WifiConfiguration.RECENT_FAILURE_MBO_ASSOC_DISALLOWED_MAX_NUM_STA_ASSOCIATED:
+                    return context.getString(R.string
+                            .wifitrackerlib_wifi_mbo_assoc_disallowed_max_num_sta_associated);
+                case WifiConfiguration.RECENT_FAILURE_MBO_ASSOC_DISALLOWED_INSUFFICIENT_RSSI:
+                case WifiConfiguration.RECENT_FAILURE_OCE_RSSI_BASED_ASSOCIATION_REJECTION:
+                    return context.getString(R.string
+                            .wifitrackerlib_wifi_mbo_oce_assoc_disallowed_insufficient_rssi);
+                case WifiConfiguration.RECENT_FAILURE_NETWORK_NOT_FOUND:
+                    return context.getString(R.string.wifitrackerlib_wifi_network_not_found);
+                default:
+                    // do nothing
             }
         }
         return "";
@@ -439,7 +524,7 @@
         }
 
         return wifiEntry.isAutoJoinEnabled()
-                ? "" : context.getString(R.string.auto_connect_disable);
+                ? "" : context.getString(R.string.wifitrackerlib_auto_connect_disable);
     }
 
     static String getMeteredDescription(@NonNull Context context, @Nullable WifiEntry wifiEntry) {
@@ -453,11 +538,12 @@
         }
 
         if (wifiEntry.getMeteredChoice() == WifiEntry.METERED_CHOICE_METERED) {
-            return context.getString(R.string.wifi_metered_label);
+            return context.getString(R.string.wifitrackerlib_wifi_metered_label);
         } else if (wifiEntry.getMeteredChoice() == WifiEntry.METERED_CHOICE_UNMETERED) {
-            return context.getString(R.string.wifi_unmetered_label);
+            return context.getString(R.string.wifitrackerlib_wifi_unmetered_label);
         } else { // METERED_CHOICE_AUTO
-            return wifiEntry.isMetered() ? context.getString(R.string.wifi_metered_label) : "";
+            return wifiEntry.isMetered() ? context.getString(
+                    R.string.wifitrackerlib_wifi_metered_label) : "";
         }
     }
 
@@ -469,13 +555,13 @@
         @Speed int speed = wifiEntry.getSpeed();
         switch (speed) {
             case SPEED_VERY_FAST:
-                return context.getString(R.string.speed_label_very_fast);
+                return context.getString(R.string.wifitrackerlib_speed_label_very_fast);
             case SPEED_FAST:
-                return context.getString(R.string.speed_label_fast);
+                return context.getString(R.string.wifitrackerlib_speed_label_fast);
             case SPEED_MODERATE:
-                return context.getString(R.string.speed_label_okay);
+                return context.getString(R.string.wifitrackerlib_speed_label_okay);
             case SPEED_SLOW:
-                return context.getString(R.string.speed_label_slow);
+                return context.getString(R.string.wifitrackerlib_speed_label_slow);
             case SPEED_NONE:
             default:
                 return "";
@@ -558,30 +644,34 @@
 
         if (networkCapabilities.hasCapability(
                 NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY)) {
-            return context.getString(R.string.wifi_limited_connection);
+            return context.getString(R.string.wifitrackerlib_wifi_limited_connection);
         }
 
         if (!networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) {
             if (networkCapabilities.isPrivateDnsBroken()) {
-                return context.getString(R.string.private_dns_broken);
+                return context.getString(R.string.wifitrackerlib_private_dns_broken);
             }
-            return context.getString(R.string.wifi_connected_no_internet);
+            return context.getString(
+                R.string.wifitrackerlib_wifi_connected_cannot_provide_internet);
         }
         return "";
     }
 
+    /**
+     * Returns the display string corresponding to the detailed state of the given NetworkInfo
+     */
     static String getNetworkDetailedState(Context context, NetworkInfo networkInfo) {
         if (context == null || networkInfo == null) {
             return "";
         }
-        DetailedState detailState = networkInfo.getDetailedState();
-        if (detailState == null) {
+        DetailedState detailedState = networkInfo.getDetailedState();
+        if (detailedState == null) {
             return "";
         }
 
         String[] wifiStatusArray = context.getResources()
-                .getStringArray(R.array.wifi_status);
-        int index = detailState.ordinal();
+                .getStringArray(R.array.wifitrackerlib_wifi_status);
+        int index = detailedState.ordinal();
         return index >= wifiStatusArray.length ? "" : wifiStatusArray[index];
     }
 
@@ -694,8 +784,9 @@
         }
 
         // IMSI protection is not provided, return warning message.
-        return linkifyAnnotation(context, context.getText(R.string.imsi_protection_warning), "url",
-                context.getString(R.string.help_url_imsi_protection));
+        return linkifyAnnotation(context, context.getText(
+                R.string.wifitrackerlib_imsi_protection_warning), "url",
+                context.getString(R.string.wifitrackerlib_help_url_imsi_protection));
     }
 
     /** Find the annotation of specified id in rawText and linkify it with helpUriString. */
@@ -727,4 +818,195 @@
         }
         return rawText;
     }
+
+    // Various utility methods copied from com.android.server.wifi.util.ScanResultUtils for
+    // extracting SecurityType from ScanResult.
+
+    /**
+     * Helper method to check if the provided |scanResult| corresponds to a PSK network or not.
+     * This checks if the provided capabilities string contains PSK encryption type or not.
+     * TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForPskNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("PSK");
+    }
+
+    /**
+     * Helper method to check if the provided |scanResult| corresponds to a WAPI-PSK network or not.
+     * This checks if the provided capabilities string contains PSK encryption type or not.
+     * TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForWapiPskNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("WAPI-PSK");
+    }
+
+    /**
+     * Helper method to check if the provided |scanResult| corresponds to a WAPI-CERT
+     * network or not.
+     * This checks if the provided capabilities string contains PSK encryption type or not.
+     * TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForWapiCertNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("WAPI-CERT");
+    }
+
+    /**
+     * Helper method to check if the provided |scanResult| corresponds to a EAP network or not.
+     * This checks these conditions:
+     * - Enable EAP/SHA1, EAP/SHA256 AKM, FT/EAP, or EAP-FILS.
+     * - Not a WPA3 Enterprise only network.
+     * - Not a WPA3 Enterprise transition network.
+     * TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForEapNetwork(ScanResult scanResult) {
+        return (scanResult.capabilities.contains("EAP/SHA1")
+                || scanResult.capabilities.contains("EAP/SHA256")
+                || scanResult.capabilities.contains("FT/EAP")
+                || scanResult.capabilities.contains("EAP-FILS"))
+                && !isScanResultForWpa3EnterpriseOnlyNetwork(scanResult)
+                && !isScanResultForWpa3EnterpriseTransitionNetwork(scanResult);
+    }
+
+    // TODO(b/187755981): Move to shared static utils class
+    private static boolean isScanResultForPmfMandatoryNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("[MFPR]");
+    }
+
+    // TODO(b/187755981): Move to shared static utils class
+    private static boolean isScanResultForPmfCapableNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("[MFPC]");
+    }
+
+    /**
+     * Helper method to check if the provided |scanResult| corresponds to
+     * a WPA3 Enterprise transition network or not.
+     *
+     * See Section 3.3 WPA3-Enterprise transition mode in WPA3 Specification
+     * - Enable at least EAP/SHA1 and EAP/SHA256 AKM suites.
+     * - Not enable WPA1 version 1, WEP, and TKIP.
+     * - Management Frame Protection Capable is set.
+     * - Management Frame Protection Required is not set.
+     * TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForWpa3EnterpriseTransitionNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("EAP/SHA1")
+                && scanResult.capabilities.contains("EAP/SHA256")
+                && scanResult.capabilities.contains("RSN")
+                && !scanResult.capabilities.contains("WEP")
+                && !scanResult.capabilities.contains("TKIP")
+                && !isScanResultForPmfMandatoryNetwork(scanResult)
+                && isScanResultForPmfCapableNetwork(scanResult);
+    }
+
+    /**
+     * Helper method to check if the provided |scanResult| corresponds to
+     * a WPA3 Enterprise only network or not.
+     *
+     * See Section 3.2 WPA3-Enterprise only mode in WPA3 Specification
+     * - Enable at least EAP/SHA256 AKM suite.
+     * - Not enable EAP/SHA1 AKM suite.
+     * - Not enable WPA1 version 1, WEP, and TKIP.
+     * - Management Frame Protection Capable is set.
+     * - Management Frame Protection Required is set.
+     * TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForWpa3EnterpriseOnlyNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("EAP/SHA256")
+                && !scanResult.capabilities.contains("EAP/SHA1")
+                && scanResult.capabilities.contains("RSN")
+                && !scanResult.capabilities.contains("WEP")
+                && !scanResult.capabilities.contains("TKIP")
+                && isScanResultForPmfMandatoryNetwork(scanResult)
+                && isScanResultForPmfCapableNetwork(scanResult);
+    }
+
+
+    /**
+     * Helper method to check if the provided |scanResult| corresponds to a WPA3-Enterprise 192-bit
+     * mode network or not.
+     * This checks if the provided capabilities comply these conditions:
+     * - Enable SUITE-B-192 AKM.
+     * - Not enable EAP/SHA1 AKM suite.
+     * - Not enable WPA1 version 1, WEP, and TKIP.
+     * - Management Frame Protection Required is set.
+     * TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForEapSuiteBNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("SUITE_B_192")
+                && scanResult.capabilities.contains("RSN")
+                && !scanResult.capabilities.contains("WEP")
+                && !scanResult.capabilities.contains("TKIP")
+                && isScanResultForPmfMandatoryNetwork(scanResult);
+    }
+
+    /**
+     * Helper method to check if the provided |scanResult| corresponds to a WEP network or not.
+     * This checks if the provided capabilities string contains WEP encryption type or not.
+     * TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForWepNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("WEP");
+    }
+
+    /**
+     * Helper method to check if the provided |scanResult| corresponds to OWE network.
+     * This checks if the provided capabilities string contains OWE or not.
+     * TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForOweNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("OWE");
+    }
+
+    /**
+     * Helper method to check if the provided |scanResult| corresponds to OWE transition network.
+     * This checks if the provided capabilities string contains OWE_TRANSITION or not.
+     * TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForOweTransitionNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("OWE_TRANSITION");
+    }
+
+    /**
+     * Helper method to check if the provided |scanResult| corresponds to SAE network.
+     * This checks if the provided capabilities string contains SAE or not.
+     * TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForSaeNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("SAE");
+    }
+
+    /**
+     * Helper method to check if the provided |scanResult| corresponds to PSK-SAE transition
+     * network. This checks if the provided capabilities string contains both PSK and SAE or not.
+     * TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForPskSaeTransitionNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("PSK") && scanResult.capabilities.contains("SAE");
+    }
+
+    /**
+     *  Helper method to check if the provided |scanResult| corresponds to an unknown amk network.
+     *  This checks if the provided capabilities string contains ? or not.
+     *  TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForUnknownAkmNetwork(ScanResult scanResult) {
+        return scanResult.capabilities.contains("?");
+    }
+
+    /**
+     * Helper method to check if the provided |scanResult| corresponds to an open network or not.
+     * This checks if the provided capabilities string does not contain either of WEP, PSK, SAE
+     * EAP, or unknown encryption types or not.
+     * TODO(b/187755981): Move to shared static utils class
+     */
+    public static boolean isScanResultForOpenNetwork(ScanResult scanResult) {
+        return (!(isScanResultForWepNetwork(scanResult) || isScanResultForPskNetwork(scanResult)
+                || isScanResultForEapNetwork(scanResult) || isScanResultForSaeNetwork(scanResult)
+                || isScanResultForWpa3EnterpriseTransitionNetwork(scanResult)
+                || isScanResultForWpa3EnterpriseOnlyNetwork(scanResult)
+                || isScanResultForWapiPskNetwork(scanResult)
+                || isScanResultForWapiCertNetwork(scanResult)
+                || isScanResultForEapSuiteBNetwork(scanResult)
+                || isScanResultForUnknownAkmNetwork(scanResult)));
+    }
 }
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
index 982ef88..6ec5d8b 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
@@ -20,6 +20,7 @@
 
 import static androidx.core.util.Preconditions.checkNotNull;
 
+import static com.android.wifitrackerlib.Utils.getSingleSecurityTypeFromMultipleSecurityTypes;
 import static com.android.wifitrackerlib.Utils.getSpeedFromWifiInfo;
 
 import android.net.LinkAddress;
@@ -27,6 +28,7 @@
 import android.net.NetworkCapabilities;
 import android.net.NetworkInfo;
 import android.net.RouteInfo;
+import android.net.wifi.ScanResult;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
@@ -50,18 +52,21 @@
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 import java.util.StringJoiner;
 import java.util.stream.Collectors;
 
 /**
- * Abstract base class for an entry representing a Wi-Fi network in a Wi-Fi picker/settings.
+ * Base class for an entry representing a Wi-Fi network in a Wi-Fi picker/settings.
+ * Subclasses should override the default methods for their own needs.
  *
  * Clients implementing a Wi-Fi picker/settings should receive WifiEntry objects from classes
  * implementing BaseWifiTracker, and rely on the given API for all user-displayable information and
  * actions on the represented network.
  */
-public abstract class WifiEntry implements Comparable<WifiEntry> {
+public class WifiEntry implements Comparable<WifiEntry> {
     /**
      * Security type based on WifiConfiguration.KeyMgmt
      */
@@ -74,6 +79,7 @@
             SECURITY_SAE,
             SECURITY_EAP,
             SECURITY_EAP_SUITE_B,
+            SECURITY_EAP_WPA3_ENTERPRISE,
     })
 
     public @interface Security {}
@@ -85,8 +91,9 @@
     public static final int SECURITY_OWE = 4;
     public static final int SECURITY_SAE = 5;
     public static final int SECURITY_EAP_SUITE_B = 6;
+    public static final int SECURITY_EAP_WPA3_ENTERPRISE = 7;
 
-    public static final int NUM_SECURITY_TYPES = 7;
+    public static final int NUM_SECURITY_TYPES = 8;
 
     @Retention(RetentionPolicy.SOURCE)
     @IntDef(value = {
@@ -155,6 +162,7 @@
             FREQUENCY_2_4_GHZ,
             FREQUENCY_5_GHZ,
             FREQUENCY_6_GHZ,
+            FREQUENCY_60_GHZ,
             FREQUENCY_UNKNOWN
     })
 
@@ -163,6 +171,7 @@
     public static final int FREQUENCY_2_4_GHZ = 2_400;
     public static final int FREQUENCY_5_GHZ = 5_000;
     public static final int FREQUENCY_6_GHZ = 6_000;
+    public static final int FREQUENCY_60_GHZ = 60_000;
     public static final int FREQUENCY_UNKNOWN = -1;
 
     /**
@@ -196,6 +205,16 @@
     public static final int MAX_FREQ_6GHZ = 7125;
 
     /**
+     * Min bound on the 60 GHz (802.11ad) WLAN channels.
+     */
+    public static final int MIN_FREQ_60GHZ = 58320;
+
+    /**
+     * Max bound on the 60 GHz (802.11ad) WLAN channels.
+     */
+    public static final int MAX_FREQ_60GHZ = 70200;
+
+    /**
      * Max ScanResult information displayed of Wi-Fi Verbose Logging.
      */
     protected static final int MAX_VERBOSE_LOG_DISPLAY_SCANRESULT_COUNT = 4;
@@ -207,7 +226,7 @@
 
     // Callback associated with this WifiEntry. Subclasses should call its methods appropriately.
     private WifiEntryCallback mListener;
-    protected Handler mCallbackHandler;
+    protected final Handler mCallbackHandler;
 
     protected int mLevel = WIFI_LEVEL_UNREACHABLE;
     protected int mSpeed = SPEED_NONE;
@@ -225,10 +244,12 @@
     protected boolean mCalledDisconnect = false;
 
     private boolean mIsValidated;
-    private boolean mIsDefaultNetwork;
+    protected boolean mIsDefaultNetwork;
     protected boolean mIsLowQuality;
 
-    WifiEntry(@NonNull Handler callbackHandler, @NonNull WifiManager wifiManager,
+    private Optional<ManageSubscriptionAction> mManageSubscriptionAction = Optional.empty();
+
+    public WifiEntry(@NonNull Handler callbackHandler, @NonNull WifiManager wifiManager,
             @NonNull WifiNetworkScoreCache scoreCache,
             boolean forSavedNetworksPage) throws IllegalArgumentException {
         checkNotNull(callbackHandler, "Cannot construct with null handler!");
@@ -242,11 +263,14 @@
     // Info available for all WifiEntries //
 
     /** The unique key defining a WifiEntry */
-    public abstract String getKey();
+    @NonNull
+    public String getKey() {
+        return "";
+    };
 
     /** Returns connection state of the network defined by the CONNECTED_STATE constants */
     @ConnectedState
-    public int getConnectedState() {
+    public synchronized int getConnectedState() {
         if (mNetworkInfo == null) {
             return CONNECTED_STATE_DISCONNECTED;
         }
@@ -268,14 +292,19 @@
 
 
     /** Returns the display title. This is most commonly the SSID of a network. */
-    public abstract String getTitle();
+    @NonNull
+    public String getTitle() {
+        return "";
+    }
 
     /** Returns the display summary, it's a concise summary. */
+    @NonNull
     public String getSummary() {
         return getSummary(true /* concise */);
     }
 
     /** Returns the second summary, it's for additional information of the WifiEntry */
+    @NonNull
     public CharSequence getSecondSummary() {
         return "";
     }
@@ -284,7 +313,10 @@
      * Returns the display summary.
      * @param concise Whether to show more information. e.g., verbose logging.
      */
-    public abstract String getSummary(boolean concise);
+    @NonNull
+    public String getSummary(boolean concise) {
+        return "";
+    };
 
     /**
      * Returns the signal strength level within [WIFI_LEVEL_MIN, WIFI_LEVEL_MAX].
@@ -302,6 +334,22 @@
                 && (!mIsValidated || !mIsDefaultNetwork) && !canSignIn();
     }
 
+    /**
+     * Returns whether this network has validated internet access or not.
+     * Note: This does not necessarily mean the network is the default route.
+     */
+    public boolean hasInternetAccess() {
+        return mIsValidated;
+    }
+
+    /**
+     * Returns whether this network is the default network or not (i.e. this network is the one
+     * currently being used to provide internet connection).
+     */
+    public boolean isDefaultNetwork() {
+        return mIsDefaultNetwork;
+    }
+
     /** Returns the speed value of the network defined by the SPEED constants */
     @Speed
     public int getSpeed() {
@@ -311,53 +359,108 @@
     /**
      * Returns the SSID of the entry, if applicable. Null otherwise.
      */
-    public abstract String getSsid();
+    @Nullable
+    public String getSsid() {
+        return null;
+    }
 
-    /** Returns the security type defined by the SECURITY constants */
+    /**
+     * Returns the security type defined by the SECURITY constants
+     * DEPRECATED: Use getSecurityTypes() which can return multiple security types.
+     */
+    // TODO(b/187554920): Remove this and move all clients to getSecurityTypes()
     @Security
-    public abstract int getSecurity();
+    public int getSecurity() {
+        switch (getSingleSecurityTypeFromMultipleSecurityTypes(getSecurityTypes())) {
+            case WifiInfo.SECURITY_TYPE_OPEN:
+                return SECURITY_NONE;
+            case WifiInfo.SECURITY_TYPE_OWE:
+                return SECURITY_OWE;
+            case WifiInfo.SECURITY_TYPE_WEP:
+                return SECURITY_WEP;
+            case WifiInfo.SECURITY_TYPE_PSK:
+                return SECURITY_PSK;
+            case WifiInfo.SECURITY_TYPE_SAE:
+                return SECURITY_SAE;
+            case WifiInfo.SECURITY_TYPE_EAP:
+                return SECURITY_EAP;
+            case WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE:
+                return SECURITY_EAP_WPA3_ENTERPRISE;
+            case WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT:
+                return SECURITY_EAP_SUITE_B;
+            case WifiInfo.SECURITY_TYPE_PASSPOINT_R1_R2:
+            case WifiInfo.SECURITY_TYPE_PASSPOINT_R3:
+                return SECURITY_EAP;
+            default:
+                return SECURITY_NONE;
+        }
+    }
+
+    /**
+     * Returns security type of the current connection, or the available types for connection
+     * in the form of the SECURITY_TYPE_* values in {@link WifiInfo}
+     */
+    @NonNull
+    public List<Integer> getSecurityTypes() {
+        return Collections.emptyList();
+    }
 
     /** Returns the MAC address of the connection */
-    public abstract String getMacAddress();
+    @Nullable
+    public String getMacAddress() {
+        return null;
+    }
 
     /**
      * Indicates when a network is metered or the user marked the network as metered.
      */
-    public abstract boolean isMetered();
+    public boolean isMetered() {
+        return false;
+    }
 
     /**
      * Indicates whether or not an entry is for a saved configuration.
      */
-    public abstract boolean isSaved();
+    public boolean isSaved() {
+        return false;
+    }
 
     /**
      * Indicates whether or not an entry is for a saved configuration.
      */
-    public abstract boolean isSuggestion();
+    public boolean isSuggestion() {
+        return false;
+    }
 
     /**
      * Indicates whether or not an entry is for a subscription.
      */
-    public abstract boolean isSubscription();
+    public boolean isSubscription() {
+        return false;
+    }
 
     /**
      * Returns the WifiConfiguration of an entry or null if unavailable. This should be used when
      * information on the WifiConfiguration needs to be modified and saved via
      * {@link WifiManager#save(WifiConfiguration, WifiManager.ActionListener)}.
      */
-    public abstract WifiConfiguration getWifiConfiguration();
+    @Nullable
+    public WifiConfiguration getWifiConfiguration() {
+        return null;
+    }
 
     /**
      * Returns the ConnectedInfo object pertaining to an active connection.
      *
      * Returns null if getConnectedState() != CONNECTED_STATE_CONNECTED.
      */
-    public ConnectedInfo getConnectedInfo() {
+    @Nullable
+    public synchronized ConnectedInfo getConnectedInfo() {
         if (getConnectedState() != CONNECTED_STATE_CONNECTED) {
             return null;
         }
 
-        return mConnectedInfo;
+        return new ConnectedInfo(mConnectedInfo);
     }
 
     /**
@@ -372,34 +475,80 @@
         public List<String> ipv6Addresses = new ArrayList<>();
         public String gateway;
         public String subnetMask;
+        public int wifiStandard = ScanResult.WIFI_STANDARD_UNKNOWN;
+
+        /**
+         * Creates an empty ConnectedInfo
+         */
+        public ConnectedInfo() {
+        }
+
+        /**
+         * Creates a ConnectedInfo with all fields copied from an input ConnectedInfo
+         */
+        public ConnectedInfo(@NonNull ConnectedInfo other) {
+            frequencyMhz = other.frequencyMhz;
+            dnsServers = new ArrayList<>(dnsServers);
+            linkSpeedMbps = other.linkSpeedMbps;
+            ipAddress = other.ipAddress;
+            ipv6Addresses = new ArrayList<>(other.ipv6Addresses);
+            gateway = other.gateway;
+            subnetMask = other.subnetMask;
+            wifiStandard = other.wifiStandard;
+        }
     }
 
     // User actions on a network
 
     /** Returns whether the entry should show a connect option */
-    public abstract boolean canConnect();
+    public boolean canConnect() {
+        return false;
+    }
+
     /** Connects to the network */
-    public abstract void connect(@Nullable ConnectCallback callback);
+    public void connect(@Nullable ConnectCallback callback) {
+        // Do nothing.
+    }
 
     /** Returns whether the entry should show a disconnect option */
-    public abstract boolean canDisconnect();
+    public boolean canDisconnect() {
+        return false;
+    }
+
     /** Disconnects from the network */
-    public abstract void disconnect(@Nullable DisconnectCallback callback);
+    public void disconnect(@Nullable DisconnectCallback callback) {
+        // Do nothing.
+    }
 
     /** Returns whether the entry should show a forget option */
-    public abstract boolean canForget();
+    public boolean canForget() {
+        return false;
+    }
+
     /** Forgets the network */
-    public abstract void forget(@Nullable ForgetCallback callback);
+    public void forget(@Nullable ForgetCallback callback) {
+        // Do nothing.
+    }
 
     /** Returns whether the network can be signed-in to */
-    public abstract boolean canSignIn();
+    public boolean canSignIn() {
+        return false;
+    }
+
     /** Sign-in to the network. For captive portals. */
-    public abstract void signIn(@Nullable SignInCallback callback);
+    public void signIn(@Nullable SignInCallback callback) {
+        // Do nothing.
+    }
 
     /** Returns whether the network can be shared via QR code */
-    public abstract boolean canShare();
+    public boolean canShare() {
+        return false;
+    }
+
     /** Returns whether the user can use Easy Connect to onboard a device to the network */
-    public abstract boolean canEasyConnect();
+    public boolean canEasyConnect() {
+        return false;
+    }
 
     // Modifiable settings
 
@@ -408,38 +557,68 @@
      *  defined by the METERED_CHOICE constants
      */
     @MeteredChoice
-    public abstract int getMeteredChoice();
+    public int getMeteredChoice() {
+        return METERED_CHOICE_AUTO;
+    }
+
     /** Returns whether the entry should let the user choose the metered treatment of a network */
-    public abstract boolean canSetMeteredChoice();
+    public boolean canSetMeteredChoice() {
+        return false;
+    }
+
     /**
      * Sets the user's choice for treating a network as metered,
      * defined by the METERED_CHOICE constants
      */
-    public abstract void setMeteredChoice(@MeteredChoice int meteredChoice);
+    public void setMeteredChoice(@MeteredChoice int meteredChoice) {
+        // Do nothing.
+    }
 
     /** Returns whether the entry should let the user choose the MAC randomization setting */
-    public abstract boolean canSetPrivacy();
+    public boolean canSetPrivacy() {
+        return false;
+    }
+
     /** Returns the MAC randomization setting defined by the PRIVACY constants */
     @Privacy
-    public abstract int getPrivacy();
+    public int getPrivacy() {
+        return PRIVACY_UNKNOWN;
+    }
+
     /** Sets the user's choice for MAC randomization defined by the PRIVACY constants */
-    public abstract void setPrivacy(@Privacy int privacy);
+    public void setPrivacy(@Privacy int privacy) {
+        // Do nothing.
+    }
 
     /** Returns whether the network has auto-join enabled */
-    public abstract boolean isAutoJoinEnabled();
+    public boolean isAutoJoinEnabled() {
+        return false;
+    }
+
     /** Returns whether the user can enable/disable auto-join */
-    public abstract boolean canSetAutoJoinEnabled();
+    public boolean canSetAutoJoinEnabled() {
+        return false;
+    }
+
     /** Sets whether a network will be auto-joined or not */
-    public abstract void setAutoJoinEnabled(boolean enabled);
+    public void setAutoJoinEnabled(boolean enabled) {
+        // Do nothing.
+    }
+
     /** Returns the string displayed for @Security */
-    public abstract String getSecurityString(boolean concise);
+    public String getSecurityString(boolean concise) {
+        return "";
+    }
+
     /** Returns whether subscription of the entry is expired */
-    public abstract boolean isExpired();
+    public boolean isExpired() {
+        return false;
+    }
+
 
     /** Returns whether a user can manage their subscription through this WifiEntry */
     public boolean canManageSubscription() {
-        // Subclasses should implement this method.
-        return false;
+        return mManageSubscriptionAction.isPresent();
     };
 
     /**
@@ -454,18 +633,35 @@
 
     /** Allows the user to manage their subscription via an external flow */
     public void manageSubscription() {
-        // Subclasses should implement this method.
+        mManageSubscriptionAction.ifPresent(ManageSubscriptionAction::onExecute);
     };
 
+    /** Set the action to be called on calling WifiEntry#manageSubscription. */
+    public void setManageSubscriptionAction(
+            @NonNull ManageSubscriptionAction manageSubscriptionAction) {
+        // only notify update on 1st time
+        boolean notify = !mManageSubscriptionAction.isPresent();
+
+        mManageSubscriptionAction = Optional.of(manageSubscriptionAction);
+        if (notify) {
+            notifyOnUpdated();
+        }
+    }
+
     /** Returns the ScanResult information of a WifiEntry */
-    abstract String getScanResultDescription();
+    @NonNull
+    protected String getScanResultDescription() {
+        return "";
+    }
 
     /** Returns the network selection information of a WifiEntry */
+    @NonNull
     String getNetworkSelectionDescription() {
         return "";
     }
 
     /** Returns the network capability information of a WifiEntry */
+    @NonNull
     String getNetworkCapabilityDescription() {
         final StringBuilder sb = new StringBuilder();
         if (getConnectedState() == CONNECTED_STATE_CONNECTED) {
@@ -492,7 +688,7 @@
      * Sets the callback listener for WifiEntryCallback methods.
      * Subsequent calls will overwrite the previous listener.
      */
-    public void setListener(WifiEntryCallback listener) {
+    public synchronized void setListener(WifiEntryCallback listener) {
         mListener = listener;
     }
 
@@ -512,7 +708,12 @@
     @AnyThread
     protected void notifyOnUpdated() {
         if (mListener != null) {
-            mCallbackHandler.post(() -> mListener.onUpdated());
+            mCallbackHandler.post(() -> {
+                final WifiEntryCallback listener = mListener;
+                if (listener != null) {
+                    listener.onUpdated();
+                }
+            });
         }
     }
 
@@ -525,7 +726,8 @@
         @IntDef(value = {
                 CONNECT_STATUS_SUCCESS,
                 CONNECT_STATUS_FAILURE_NO_CONFIG,
-                CONNECT_STATUS_FAILURE_UNKNOWN
+                CONNECT_STATUS_FAILURE_UNKNOWN,
+                CONNECT_STATUS_FAILURE_SIM_ABSENT
         })
 
         public @interface ConnectStatus {}
@@ -533,6 +735,7 @@
         int CONNECT_STATUS_SUCCESS = 0;
         int CONNECT_STATUS_FAILURE_NO_CONFIG = 1;
         int CONNECT_STATUS_FAILURE_UNKNOWN = 2;
+        int CONNECT_STATUS_FAILURE_SIM_ABSENT = 3;
 
         /**
          * Result of the connect request indicated by the CONNECT_STATUS constants.
@@ -612,8 +815,10 @@
     /**
      * Returns whether or not the supplied WifiInfo and NetworkInfo represent this WifiEntry
      */
-    protected abstract boolean connectionInfoMatches(@NonNull WifiInfo wifiInfo,
-            @NonNull NetworkInfo networkInfo);
+    protected boolean connectionInfoMatches(@NonNull WifiInfo wifiInfo,
+            @NonNull NetworkInfo networkInfo) {
+        return false;
+    }
 
     /**
      * Updates information regarding the current network connection. If the supplied WifiInfo and
@@ -621,7 +826,8 @@
      * unconnected.
      */
     @WorkerThread
-    void updateConnectionInfo(@Nullable WifiInfo wifiInfo, @Nullable NetworkInfo networkInfo) {
+    synchronized void updateConnectionInfo(
+            @Nullable WifiInfo wifiInfo, @Nullable NetworkInfo networkInfo) {
         if (wifiInfo != null && networkInfo != null
                 && connectionInfoMatches(wifiInfo, networkInfo)) {
             // Connection info matches, so the WifiInfo/NetworkInfo represent this network and
@@ -637,8 +843,9 @@
                 if (mCalledConnect) {
                     mCalledConnect = false;
                     mCallbackHandler.post(() -> {
-                        if (mConnectCallback != null) {
-                            mConnectCallback.onConnectResult(
+                        final ConnectCallback connectCallback = mConnectCallback;
+                        if (connectCallback != null) {
+                            connectCallback.onConnectResult(
                                     ConnectCallback.CONNECT_STATUS_SUCCESS);
                         }
                     });
@@ -649,8 +856,10 @@
                 }
                 mConnectedInfo.frequencyMhz = wifiInfo.getFrequency();
                 mConnectedInfo.linkSpeedMbps = wifiInfo.getLinkSpeed();
+                mConnectedInfo.wifiStandard = wifiInfo.getWifiStandard();
             }
         } else { // Connection info doesn't matched, so this network is disconnected
+            mWifiInfo = null;
             mNetworkInfo = null;
             mNetworkCapabilities = null;
             mConnectedInfo = null;
@@ -660,19 +869,27 @@
             if (mCalledDisconnect) {
                 mCalledDisconnect = false;
                 mCallbackHandler.post(() -> {
-                    if (mDisconnectCallback != null) {
-                        mDisconnectCallback.onDisconnectResult(
+                    final DisconnectCallback disconnectCallback = mDisconnectCallback;
+                    if (disconnectCallback != null) {
+                        disconnectCallback.onDisconnectResult(
                                 DisconnectCallback.DISCONNECT_STATUS_SUCCESS);
                     }
                 });
             }
         }
+        updateSecurityTypes();
         notifyOnUpdated();
     }
 
+    // Called to indicate the security types should be updated to match new information about the
+    // network.
+    protected void updateSecurityTypes() {
+        // Do nothing;
+    }
+
     // Method for WifiTracker to update the link properties, which is valid for all WifiEntry types.
     @WorkerThread
-    void updateLinkProperties(@Nullable LinkProperties linkProperties) {
+    synchronized void updateLinkProperties(@Nullable LinkProperties linkProperties) {
         if (linkProperties == null || getConnectedState() != CONNECTED_STATE_CONNECTED) {
             mConnectedInfo = null;
             notifyOnUpdated();
@@ -718,19 +935,19 @@
     }
 
     @WorkerThread
-    void setIsDefaultNetwork(boolean isDefaultNetwork) {
+    synchronized void setIsDefaultNetwork(boolean isDefaultNetwork) {
         mIsDefaultNetwork = isDefaultNetwork;
         notifyOnUpdated();
     }
 
     @WorkerThread
-    void setIsLowQuality(boolean isLowQuality) {
+    synchronized void setIsLowQuality(boolean isLowQuality) {
         mIsLowQuality = isLowQuality;
     }
 
     // Method for WifiTracker to update a connected WifiEntry's network capabilities.
     @WorkerThread
-    void updateNetworkCapabilities(@Nullable NetworkCapabilities capabilities) {
+    synchronized void updateNetworkCapabilities(@Nullable NetworkCapabilities capabilities) {
         mNetworkCapabilities = capabilities;
         if (mConnectedInfo == null) {
             return;
@@ -740,7 +957,7 @@
         notifyOnUpdated();
     }
 
-    String getWifiInfoDescription() {
+    synchronized String getWifiInfoDescription() {
         final StringJoiner sj = new StringJoiner(" ");
         if (getConnectedState() == CONNECTED_STATE_CONNECTED && mWifiInfo != null) {
             sj.add("f = " + mWifiInfo.getFrequency());
@@ -762,12 +979,15 @@
     protected class ConnectActionListener implements WifiManager.ActionListener {
         @Override
         public void onSuccess() {
-            mCalledConnect = true;
+            synchronized (WifiEntry.this) {
+                mCalledConnect = true;
+            }
             // If we aren't connected to the network after 10 seconds, trigger the failure callback
             mCallbackHandler.postDelayed(() -> {
-                if (mConnectCallback != null && mCalledConnect
+                final ConnectCallback connectCallback = mConnectCallback;
+                if (connectCallback != null && mCalledConnect
                         && getConnectedState() == CONNECTED_STATE_DISCONNECTED) {
-                    mConnectCallback.onConnectResult(
+                    connectCallback.onConnectResult(
                             ConnectCallback.CONNECT_STATUS_FAILURE_UNKNOWN);
                     mCalledConnect = false;
                 }
@@ -777,9 +997,10 @@
         @Override
         public void onFailure(int i) {
             mCallbackHandler.post(() -> {
-                if (mConnectCallback != null) {
-                    mConnectCallback.onConnectResult(
-                            mConnectCallback.CONNECT_STATUS_FAILURE_UNKNOWN);
+                final ConnectCallback connectCallback = mConnectCallback;
+                if (connectCallback != null) {
+                    connectCallback.onConnectResult(
+                            ConnectCallback.CONNECT_STATUS_FAILURE_UNKNOWN);
                 }
             });
         }
@@ -789,8 +1010,9 @@
         @Override
         public void onSuccess() {
             mCallbackHandler.post(() -> {
-                if (mForgetCallback != null) {
-                    mForgetCallback.onForgetResult(ForgetCallback.FORGET_STATUS_SUCCESS);
+                final ForgetCallback forgetCallback = mForgetCallback;
+                if (forgetCallback != null) {
+                    forgetCallback.onForgetResult(ForgetCallback.FORGET_STATUS_SUCCESS);
                 }
             });
         }
@@ -798,8 +1020,9 @@
         @Override
         public void onFailure(int i) {
             mCallbackHandler.post(() -> {
-                if (mForgetCallback != null) {
-                    mForgetCallback.onForgetResult(ForgetCallback.FORGET_STATUS_FAILURE_UNKNOWN);
+                final ForgetCallback forgetCallback = mForgetCallback;
+                if (forgetCallback != null) {
+                    forgetCallback.onForgetResult(ForgetCallback.FORGET_STATUS_FAILURE_UNKNOWN);
                 }
             });
         }
@@ -853,7 +1076,7 @@
                 .append(getLevel())
                 .append(shouldShowXLevelIcon() ? "X" : "")
                 .append(",security:")
-                .append(getSecurity())
+                .append(getSecurityTypes())
                 .append(",connected:")
                 .append(getConnectedState() == CONNECTED_STATE_CONNECTED ? "true" : "false")
                 .append(",connectedInfo:")
@@ -864,4 +1087,14 @@
                 .append(mIsDefaultNetwork)
                 .toString();
     }
+
+    /**
+     * The action used to execute the calling of WifiEntry#manageSubscription.
+     */
+    public interface ManageSubscriptionAction {
+        /**
+         * Execute the action of managing subscription.
+         */
+        void onExecute();
+    }
 }
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java
index eef865a..d76a80a 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java
@@ -18,12 +18,10 @@
 
 import static androidx.core.util.Preconditions.checkNotNull;
 
-import static com.android.wifitrackerlib.NetworkRequestEntry.wifiConfigToNetworkRequestEntryKey;
 import static com.android.wifitrackerlib.OsuWifiEntry.osuProviderToOsuWifiEntryKey;
 import static com.android.wifitrackerlib.PasspointWifiEntry.uniqueIdToPasspointWifiEntryKey;
-import static com.android.wifitrackerlib.StandardWifiEntry.wifiConfigToStandardWifiEntryKey;
-import static com.android.wifitrackerlib.Utils.getSecurityTypesFromScanResult;
-import static com.android.wifitrackerlib.Utils.mapScanResultsToKey;
+import static com.android.wifitrackerlib.StandardWifiEntry.ScanResultKey;
+import static com.android.wifitrackerlib.StandardWifiEntry.StandardWifiEntryKey;
 import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_CONNECTED;
 import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_CONNECTING;
 import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_DISCONNECTED;
@@ -47,9 +45,13 @@
 import android.net.wifi.hotspot2.OsuProvider;
 import android.net.wifi.hotspot2.PasspointConfiguration;
 import android.os.Handler;
+import android.telephony.SubscriptionManager;
 import android.text.TextUtils;
+import android.util.ArrayMap;
+import android.util.ArraySet;
 import android.util.Log;
 import android.util.Pair;
+import android.util.SparseArray;
 
 import androidx.annotation.AnyThread;
 import androidx.annotation.GuardedBy;
@@ -63,14 +65,12 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
 import java.util.function.Function;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * Wi-Fi tracker that provides all Wi-Fi related data to the Wi-Fi picker page.
@@ -98,27 +98,35 @@
 
     private NetworkInfo mCurrentNetworkInfo;
     // Cache containing saved WifiConfigurations mapped by StandardWifiEntry key
-    private final Map<String, WifiConfiguration> mWifiConfigCache = new HashMap<>();
+    private final Map<StandardWifiEntryKey, List<WifiConfiguration>> mStandardWifiConfigCache =
+            new ArrayMap<>();
     // Cache containing suggested WifiConfigurations mapped by StandardWifiEntry key
-    private final Map<String, WifiConfiguration> mSuggestedConfigCache = new HashMap<>();
+    private final Map<StandardWifiEntryKey, List<WifiConfiguration>> mSuggestedConfigCache =
+            new ArrayMap<>();
+    // Cache containing network request WifiConfigurations mapped by StandardWifiEntry key.
+    private final ArrayMap<StandardWifiEntryKey, List<WifiConfiguration>>
+            mNetworkRequestConfigCache = new ArrayMap<>();
     // Cache containing visible StandardWifiEntries. Must be accessed only by the worker thread.
-    private final Map<String, StandardWifiEntry> mStandardWifiEntryCache = new HashMap<>();
+    private final List<StandardWifiEntry> mStandardWifiEntryCache = new ArrayList<>();
     // Cache containing available suggested StandardWifiEntries. These entries may be already
     // represented in mStandardWifiEntryCache, so filtering must be done before they are returned in
     // getWifiEntry() and getConnectedWifiEntry().
-    private final Map<String, StandardWifiEntry> mSuggestedWifiEntryCache = new HashMap<>();
+    private final List<StandardWifiEntry> mSuggestedWifiEntryCache = new ArrayList<>();
     // Cache containing saved PasspointConfigurations mapped by PasspointWifiEntry key.
-    private final Map<String, PasspointConfiguration> mPasspointConfigCache = new HashMap<>();
+    private final Map<String, PasspointConfiguration> mPasspointConfigCache = new ArrayMap<>();
+    // Cache containing Passpoint WifiConfigurations mapped by network id.
+    private final SparseArray<WifiConfiguration> mPasspointWifiConfigCache = new SparseArray<>();
     // Cache containing visible PasspointWifiEntries. Must be accessed only by the worker thread.
-    private final Map<String, PasspointWifiEntry> mPasspointWifiEntryCache = new HashMap<>();
+    private final Map<String, PasspointWifiEntry> mPasspointWifiEntryCache = new ArrayMap<>();
     // Cache containing visible OsuWifiEntries. Must be accessed only by the worker thread.
-    private final Map<String, OsuWifiEntry> mOsuWifiEntryCache = new HashMap<>();
+    private final Map<String, OsuWifiEntry> mOsuWifiEntryCache = new ArrayMap<>();
+
+    private MergedCarrierEntry mMergedCarrierEntry;
 
     private int mNumSavedNetworks;
 
     /**
      * Constructor for WifiPickerTracker.
-     *
      * @param lifecycle Lifecycle this is tied to for lifecycle callbacks.
      * @param context Context for registering broadcast receiver and for resource strings.
      * @param wifiManager Provides all Wi-Fi info.
@@ -169,6 +177,14 @@
     }
 
     /**
+     * Returns the MergedCarrierEntry representing the active carrier subscription.
+     */
+    @AnyThread
+    public @Nullable MergedCarrierEntry getMergedCarrierEntry() {
+        return mMergedCarrierEntry;
+    }
+
+    /**
      * Returns the number of saved networks.
      */
     @AnyThread
@@ -197,6 +213,7 @@
         updateConnectionInfo(wifiInfo, mCurrentNetworkInfo);
         notifyOnNumSavedNetworksChanged();
         notifyOnNumSavedSubscriptionsChanged();
+        handleDefaultSubscriptionChanged(SubscriptionManager.getDefaultDataSubscriptionId());
         updateWifiEntries();
 
         // Populate mConnectedWifiEntry with information from missed callbacks.
@@ -210,6 +227,9 @@
     @Override
     protected void handleWifiStateChangedAction() {
         conditionallyUpdateScanResults(true /* lastScanSucceeded */);
+        if (mWifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED) {
+            updateConnectionInfo(null, null);
+        }
         updateWifiEntries();
     }
 
@@ -227,14 +247,13 @@
     protected void handleConfiguredNetworksChangedAction(@NonNull Intent intent) {
         checkNotNull(intent, "Intent cannot be null!");
 
-        final WifiConfiguration config =
-                (WifiConfiguration) intent.getExtra(WifiManager.EXTRA_WIFI_CONFIGURATION);
-        if (config != null && !config.isPasspoint()) {
-            updateWifiConfiguration(
-                    config, (Integer) intent.getExtra(WifiManager.EXTRA_CHANGE_REASON));
-        } else {
-            updateWifiConfigurations(mWifiManager.getPrivilegedConfiguredNetworks());
-        }
+        processConfiguredNetworksChanged();
+    }
+
+    @WorkerThread
+    /** All wifi entries and saved entries needs to be updated. */
+    protected void processConfiguredNetworksChanged() {
+        updateWifiConfigurations(mWifiManager.getPrivilegedConfiguredNetworks());
         updatePasspointConfigurations(mWifiManager.getPasspointConfigurations());
         // Update scans since config changes may result in different entries being shown.
         final List<ScanResult> scanResults = mScanResultUpdater.getScanResults();
@@ -251,19 +270,21 @@
     @Override
     protected void handleNetworkStateChangedAction(@NonNull Intent intent) {
         checkNotNull(intent, "Intent cannot be null!");
-        final WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
-        mCurrentNetworkInfo = (NetworkInfo) intent.getExtra(WifiManager.EXTRA_NETWORK_INFO);
-        updateConnectionInfo(wifiInfo, mCurrentNetworkInfo);
+        mCurrentNetworkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
+        updateConnectionInfo(mWifiManager.getConnectionInfo(), mCurrentNetworkInfo);
         updateWifiEntries();
     }
 
     @WorkerThread
     @Override
     protected void handleRssiChangedAction() {
+        final WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
         if (mConnectedWifiEntry != null) {
-            final WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
             mConnectedWifiEntry.updateConnectionInfo(wifiInfo, mCurrentNetworkInfo);
         }
+        if (mMergedCarrierEntry != null) {
+            mMergedCarrierEntry.updateConnectionInfo(wifiInfo, mCurrentNetworkInfo);
+        }
     }
 
     @WorkerThread
@@ -273,6 +294,9 @@
                 && mConnectedWifiEntry.getConnectedState() == CONNECTED_STATE_CONNECTED) {
             mConnectedWifiEntry.updateLinkProperties(linkProperties);
         }
+        if (mMergedCarrierEntry != null) {
+            mMergedCarrierEntry.updateLinkProperties(linkProperties);
+        }
     }
 
     @WorkerThread
@@ -283,6 +307,9 @@
             mConnectedWifiEntry.updateNetworkCapabilities(capabilities);
             mConnectedWifiEntry.setIsLowQuality(mIsWifiValidated && mIsCellDefaultRoute);
         }
+        if (mMergedCarrierEntry != null) {
+            mMergedCarrierEntry.updateNetworkCapabilities(capabilities);
+        }
     }
 
     @WorkerThread
@@ -291,15 +318,21 @@
             mConnectedWifiEntry.setIsDefaultNetwork(mIsWifiDefaultRoute);
             mConnectedWifiEntry.setIsLowQuality(mIsWifiValidated && mIsCellDefaultRoute);
         }
+        if (mMergedCarrierEntry != null) {
+            if (mMergedCarrierEntry.getConnectedState() == CONNECTED_STATE_CONNECTED) {
+                mMergedCarrierEntry.setIsDefaultNetwork(mIsWifiDefaultRoute);
+            }
+            mMergedCarrierEntry.updateIsCellDefaultRoute(mIsCellDefaultRoute);
+        }
     }
 
     @WorkerThread
     @Override
     protected void handleNetworkScoreCacheUpdated() {
-        for (StandardWifiEntry entry : mStandardWifiEntryCache.values()) {
+        for (StandardWifiEntry entry : mStandardWifiEntryCache) {
             entry.onScoreCacheUpdated();
         }
-        for (StandardWifiEntry entry : mSuggestedWifiEntryCache.values()) {
+        for (StandardWifiEntry entry : mSuggestedWifiEntryCache) {
             entry.onScoreCacheUpdated();
         }
         for (PasspointWifiEntry entry : mPasspointWifiEntryCache.values()) {
@@ -307,19 +340,25 @@
         }
     }
 
+    @WorkerThread
+    @Override
+    protected void handleDefaultSubscriptionChanged(int defaultSubId) {
+        updateMergedCarrierEntry(defaultSubId);
+    }
+
     /**
      * Update the list returned by getWifiEntries() with the current states of the entry caches.
      */
     @WorkerThread
-    private void updateWifiEntries() {
+    protected void updateWifiEntries() {
         synchronized (mLock) {
-            mConnectedWifiEntry = mStandardWifiEntryCache.values().stream().filter(entry -> {
+            mConnectedWifiEntry = mStandardWifiEntryCache.stream().filter(entry -> {
                 final @WifiEntry.ConnectedState int connectedState = entry.getConnectedState();
                 return connectedState == CONNECTED_STATE_CONNECTED
                         || connectedState == CONNECTED_STATE_CONNECTING;
             }).findAny().orElse(null /* other */);
             if (mConnectedWifiEntry == null) {
-                mConnectedWifiEntry = mSuggestedWifiEntryCache.values().stream().filter(entry -> {
+                mConnectedWifiEntry = mSuggestedWifiEntryCache.stream().filter(entry -> {
                     final @WifiEntry.ConnectedState int connectedState = entry.getConnectedState();
                     return connectedState == CONNECTED_STATE_CONNECTED
                             || connectedState == CONNECTED_STATE_CONNECTING;
@@ -337,32 +376,32 @@
                 mConnectedWifiEntry = mNetworkRequestEntry;
             }
             mWifiEntries.clear();
-            for (String key : mStandardWifiEntryCache.keySet()) {
-                // Continue if we're connected to this network with a non-user-shareable config.
-                if (mConnectedWifiEntry != null
-                        && TextUtils.equals(key, mConnectedWifiEntry.getKey())) {
+            final Set<ScanResultKey> scanResultKeysWithVisibleSuggestions =
+                    mSuggestedWifiEntryCache.stream()
+                            .filter(entry -> entry.isUserShareable()
+                                    || entry == mConnectedWifiEntry)
+                            .map(entry -> entry.getStandardWifiEntryKey().getScanResultKey())
+                            .collect(Collectors.toSet());
+            for (StandardWifiEntry entry : mStandardWifiEntryCache) {
+                if (entry == mConnectedWifiEntry) {
                     continue;
                 }
-                StandardWifiEntry entry = mStandardWifiEntryCache.get(key);
-                StandardWifiEntry suggestedEntry = mSuggestedWifiEntryCache.get(key);
-                // Return a user-shareable suggested network to the user if one exists
-                if (!entry.isSaved()
-                        && suggestedEntry != null && suggestedEntry.isUserShareable()) {
-                    if (suggestedEntry.getConnectedState() == CONNECTED_STATE_DISCONNECTED) {
-                        mWifiEntries.add(suggestedEntry);
-                    }
-                } else {
-                    if (entry.getConnectedState() == CONNECTED_STATE_DISCONNECTED) {
-                        mWifiEntries.add(entry);
-                    }
+                if (!entry.isSaved() && scanResultKeysWithVisibleSuggestions
+                        .contains(entry.getStandardWifiEntryKey().getScanResultKey())) {
+                    continue;
                 }
-
+                mWifiEntries.add(entry);
             }
+            mWifiEntries.addAll(mSuggestedWifiEntryCache.stream().filter(entry ->
+                    entry.getConnectedState() == CONNECTED_STATE_DISCONNECTED
+                            && entry.isUserShareable()).collect(toList()));
             mWifiEntries.addAll(mPasspointWifiEntryCache.values().stream().filter(entry ->
                     entry.getConnectedState() == CONNECTED_STATE_DISCONNECTED).collect(toList()));
             mWifiEntries.addAll(mOsuWifiEntryCache.values().stream().filter(entry ->
                     entry.getConnectedState() == CONNECTED_STATE_DISCONNECTED
                             && !entry.isAlreadyProvisioned()).collect(toList()));
+            mWifiEntries.addAll(getContextualWifiEntries().stream().filter(entry ->
+                    entry.getConnectedState() == CONNECTED_STATE_DISCONNECTED).collect(toList()));
             Collections.sort(mWifiEntries);
             if (isVerboseLoggingEnabled()) {
                 Log.v(TAG, "Connected WifiEntry: " + mConnectedWifiEntry);
@@ -373,6 +412,43 @@
     }
 
     /**
+     * Updates the MergedCarrierEntry returned by {@link #getMergedCarrierEntry()) with the current
+     * default data subscription ID, or sets it to null if not available.
+     */
+    @WorkerThread
+    private void updateMergedCarrierEntry(int subId) {
+        if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+            if (mMergedCarrierEntry == null) {
+                return;
+            }
+            mMergedCarrierEntry = null;
+        } else {
+            if (mMergedCarrierEntry != null && subId == mMergedCarrierEntry.getSubscriptionId()) {
+                return;
+            }
+            mMergedCarrierEntry = new MergedCarrierEntry(mWorkerHandler, mWifiManager,
+                    mWifiNetworkScoreCache, /* forSavedNetworksPage */ false, mContext, subId);
+            mMergedCarrierEntry.updateConnectionInfo(
+                    mWifiManager.getConnectionInfo(), mCurrentNetworkInfo);
+        }
+        notifyOnWifiEntriesChanged();
+    }
+
+    /**
+     * Get the contextual WifiEntries added according to customized conditions.
+     */
+    protected List<WifiEntry> getContextualWifiEntries() {
+        return Collections.emptyList();
+    }
+
+    /**
+     * Update the contextual wifi entry according to customized conditions.
+     */
+    protected void updateContextualWifiEntryScans(@NonNull List<ScanResult> scanResults) {
+        // do nothing
+    }
+
+    /**
      * Updates or removes scan results for the corresponding StandardWifiEntries.
      * New entries will be created for scan results without an existing entry.
      * Unreachable entries will be removed.
@@ -383,34 +459,34 @@
     private void updateStandardWifiEntryScans(@NonNull List<ScanResult> scanResults) {
         checkNotNull(scanResults, "Scan Result list should not be null!");
 
-        // Group scans by StandardWifiEntry key
-        final Map<String, List<ScanResult>> scanResultsByKey = mapScanResultsToKey(
-                scanResults,
-                true /* chooseSingleSecurity */,
-                mWifiConfigCache,
-                mWifiManager.isWpa3SaeSupported(),
-                mWifiManager.isWpa3SuiteBSupported(),
-                mWifiManager.isEnhancedOpenSupported());
+        // Group scans by ScanResultKey key
+        final Map<ScanResultKey, List<ScanResult>> scanResultsByKey = scanResults.stream()
+                .filter(scan -> !TextUtils.isEmpty(scan.SSID))
+                .collect(Collectors.groupingBy(ScanResultKey::new));
+        final Set<ScanResultKey> newScanKeys = new ArraySet<>(scanResultsByKey.keySet());
 
         // Iterate through current entries and update each entry's scan results
-        mStandardWifiEntryCache.entrySet().removeIf(e -> {
-            final String key = e.getKey();
-            final StandardWifiEntry entry = e.getValue();
+        mStandardWifiEntryCache.forEach(entry -> {
+            final ScanResultKey scanKey = entry.getStandardWifiEntryKey().getScanResultKey();
+            newScanKeys.remove(scanKey);
             // Update scan results if available, or set to null.
-            entry.updateScanResultInfo(scanResultsByKey.remove(key));
-            // Entry is now unreachable, remove it.
-            return entry.getLevel() == WIFI_LEVEL_UNREACHABLE;
+            entry.updateScanResultInfo(scanResultsByKey.get(scanKey));
         });
-
         // Create new StandardWifiEntry objects for each leftover group of scan results.
-        for (Map.Entry<String, List<ScanResult>> e: scanResultsByKey.entrySet()) {
+        for (ScanResultKey scanKey: newScanKeys) {
+            final StandardWifiEntryKey entryKey =
+                    new StandardWifiEntryKey(scanKey, true /* isTargetingNewNetworks */);
             final StandardWifiEntry newEntry = new StandardWifiEntry(mContext, mMainHandler,
-                    e.getKey(), e.getValue(), mWifiManager, mWifiNetworkScoreCache,
+                    entryKey, mStandardWifiConfigCache.get(entryKey),
+                    scanResultsByKey.get(scanKey), mWifiManager, mWifiNetworkScoreCache,
                     false /* forSavedNetworksPage */);
-            // Populate with a saved config, if available
-            newEntry.updateConfig(mWifiConfigCache.get(newEntry.getKey()));
-            mStandardWifiEntryCache.put(newEntry.getKey(), newEntry);
+            mStandardWifiEntryCache.add(newEntry);
         }
+
+        // Remove any entry that is now unreachable due to no scans or unsupported
+        // security types.
+        mStandardWifiEntryCache.removeIf(
+                entry -> entry.getLevel() == WIFI_LEVEL_UNREACHABLE);
     }
 
     /**
@@ -424,46 +500,42 @@
     private void updateSuggestedWifiEntryScans(@NonNull List<ScanResult> scanResults) {
         checkNotNull(scanResults, "Scan Result list should not be null!");
 
-        // Group scans by StandardWifiEntry key
-        final Map<String, List<ScanResult>> scanResultsByKey = mapScanResultsToKey(
-                scanResults,
-                true /* chooseSingleSecurity */,
-                mWifiConfigCache,
-                mWifiManager.isWpa3SaeSupported(),
-                mWifiManager.isWpa3SuiteBSupported(),
-                mWifiManager.isEnhancedOpenSupported());
+        // Group scans by ScanResultKey key
+        final Map<ScanResultKey, List<ScanResult>> scanResultsByKey = scanResults.stream()
+                .filter(scan -> !TextUtils.isEmpty(scan.SSID))
+                .collect(Collectors.groupingBy(ScanResultKey::new));
 
-        Map<String, WifiConfiguration> userSharedConfigsByKey =
+        // Iterate through current entries and update each entry's scan results
+        final Set<StandardWifiEntryKey> seenEntryKeys = new ArraySet<>();
+        mSuggestedWifiEntryCache.forEach(entry -> {
+            final StandardWifiEntryKey entryKey = entry.getStandardWifiEntryKey();
+            seenEntryKeys.add(entryKey);
+            // Update scan results if available, or set to null.
+            entry.updateScanResultInfo(scanResultsByKey.get(entryKey.getScanResultKey()));
+        });
+        // Create new StandardWifiEntry objects for each leftover config with scan results.
+        final Set<StandardWifiEntryKey> userSharedEntryKeys =
                 mWifiManager.getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(scanResults)
                         .stream()
-                        .collect(Collectors.toMap(
-                                StandardWifiEntry::wifiConfigToStandardWifiEntryKey,
-                                Function.identity()));
-
-        Set<String> seenKeys = new TreeSet<>();
-        for (String key : userSharedConfigsByKey.keySet()) {
-            seenKeys.add(key);
-            if (!mSuggestedWifiEntryCache.containsKey(key)) {
-                mSuggestedWifiEntryCache.put(key, new StandardWifiEntry(mContext, mMainHandler, key,
-                        userSharedConfigsByKey.get(key), mWifiManager,
-                        mWifiNetworkScoreCache, false /* forSavedNetworksPage */));
+                        .map(StandardWifiEntryKey::new)
+                        .collect(Collectors.toSet());
+        for (StandardWifiEntryKey entryKey : mSuggestedConfigCache.keySet()) {
+            final ScanResultKey scanKey = entryKey.getScanResultKey();
+            if (seenEntryKeys.contains(entryKey)
+                    || !scanResultsByKey.containsKey(scanKey)) {
+                continue;
             }
-            final StandardWifiEntry entry = mSuggestedWifiEntryCache.get(key);
-            entry.setUserShareable(true);
-            entry.updateScanResultInfo(scanResultsByKey.get(key));
+            final StandardWifiEntry newEntry = new StandardWifiEntry(mContext, mMainHandler,
+                    entryKey, mSuggestedConfigCache.get(entryKey),
+                    scanResultsByKey.get(scanKey), mWifiManager, mWifiNetworkScoreCache,
+                    false /* forSavedNetworksPage */);
+            newEntry.setUserShareable(userSharedEntryKeys.contains(entryKey));
+            mSuggestedWifiEntryCache.add(newEntry);
         }
 
-        // Remove entries without configs
-        mSuggestedWifiEntryCache.entrySet()
-                .removeIf(entry -> {
-                    StandardWifiEntry wifiEntry = entry.getValue();
-                    String key = entry.getKey();
-                    if (!seenKeys.contains(key)) {
-                        wifiEntry.updateConfig(mSuggestedConfigCache.get(key));
-                        wifiEntry.setUserShareable(false);
-                    }
-                    return !wifiEntry.isSuggestion();
-                });
+        // Remove any entry that is now unreachable due to no scans or unsupported
+        // security types.
+        mSuggestedWifiEntryCache.removeIf(entry -> entry.getLevel() == WIFI_LEVEL_UNREACHABLE);
     }
 
     @WorkerThread
@@ -561,12 +633,10 @@
             return;
         }
 
-        String ssid = mNetworkRequestEntry.getSsid();
-        @WifiEntry.Security int security = mNetworkRequestEntry.getSecurity();
-
-        List<ScanResult> matchedScans = scanResults.stream().filter(scan ->
-                TextUtils.equals(scan.SSID, ssid)
-                        && getSecurityTypesFromScanResult(scan).contains(security))
+        final ScanResultKey scanKey =
+                mNetworkRequestEntry.getStandardWifiEntryKey().getScanResultKey();
+        List<ScanResult> matchedScans = scanResults.stream()
+                .filter(scan -> scanKey.equals(new ScanResultKey(scan)))
                 .collect(toList());
         mNetworkRequestEntry.updateScanResultInfo(matchedScans);
     }
@@ -583,6 +653,7 @@
             updatePasspointWifiEntryScans(Collections.emptyList());
             updateOsuWifiEntryScans(Collections.emptyList());
             updateNetworkRequestEntryScans(Collections.emptyList());
+            updateContextualWifiEntryScans(Collections.emptyList());
             return;
         }
 
@@ -602,57 +673,7 @@
         updatePasspointWifiEntryScans(scanResults);
         updateOsuWifiEntryScans(scanResults);
         updateNetworkRequestEntryScans(scanResults);
-    }
-
-    /**
-     * Updates the WifiConfiguration caches for a single saved/ephemeral/suggested network and
-     * updates the corresponding WifiEntry with the new config.
-     *
-     * @param config WifiConfiguration to update
-     * @param changeReason WifiManager.CHANGE_REASON_ADDED, WifiManager.CHANGE_REASON_REMOVED, or
-     *                     WifiManager.CHANGE_REASON_CONFIG_CHANGE
-     */
-    @WorkerThread
-    private void updateWifiConfiguration(@NonNull WifiConfiguration config,
-            int changeReason) {
-        checkNotNull(config, "Config should not be null!");
-
-        if (config.fromWifiNetworkSpecifier) {
-            if (changeReason == WifiManager.CHANGE_REASON_REMOVED) {
-                updateNetworkRequestConfig(null);
-            } else { // CHANGE_REASON_ADDED || CHANGE_REASON_CONFIG_CHANGE
-                updateNetworkRequestConfig(config);
-            }
-            return;
-        }
-
-        final String key = wifiConfigToStandardWifiEntryKey(config);
-        StandardWifiEntry updatedEntry;
-        WifiConfiguration updatedConfig;
-        if (config.fromWifiNetworkSuggestion) {
-            if (changeReason == WifiManager.CHANGE_REASON_REMOVED) {
-                mSuggestedConfigCache.remove(key);
-            } else { // CHANGE_REASON_ADDED || CHANGE_REASON_CONFIG_CHANGE
-                mSuggestedConfigCache.put(key, config);
-            }
-            updatedConfig = mSuggestedConfigCache.get(key);
-            updatedEntry = mSuggestedWifiEntryCache.get(key);
-        } else {
-            if (changeReason == WifiManager.CHANGE_REASON_REMOVED) {
-                mWifiConfigCache.remove(key);
-            } else { // CHANGE_REASON_ADDED || CHANGE_REASON_CONFIG_CHANGE
-                mWifiConfigCache.put(key, config);
-            }
-            updatedConfig = mWifiConfigCache.get(key);
-            updatedEntry = mStandardWifiEntryCache.get(key);
-            mNumSavedNetworks = (int) mWifiConfigCache.values().stream()
-                    .filter(cachedConfig ->
-                            !cachedConfig.isEphemeral() && !cachedConfig.isPasspoint()).count();
-        }
-
-        if (updatedEntry != null) {
-            updatedEntry.updateConfig(updatedConfig);
-        }
+        updateContextualWifiEntryScans(scanResults);
     }
 
     /**
@@ -664,65 +685,57 @@
     @WorkerThread
     private void updateWifiConfigurations(@NonNull List<WifiConfiguration> configs) {
         checkNotNull(configs, "Config list should not be null!");
-        mWifiConfigCache.clear();
+        mStandardWifiConfigCache.clear();
         mSuggestedConfigCache.clear();
-        boolean networkRequestConfigAvailable = false;
+        mNetworkRequestConfigCache.clear();
+        final List<WifiConfiguration> networkRequestConfigs = new ArrayList<>();
         for (WifiConfiguration config : configs) {
-            if (config.fromWifiNetworkSuggestion) {
-                mSuggestedConfigCache.put(wifiConfigToStandardWifiEntryKey(config), config);
+            if (config.carrierMerged) {
+                continue;
+            }
+            StandardWifiEntryKey standardWifiEntryKey =
+                    new StandardWifiEntryKey(config, true /* isTargetingNewNetworks */);
+            if (config.isPasspoint()) {
+                mPasspointWifiConfigCache.put(config.networkId, config);
+            } else if (config.fromWifiNetworkSuggestion) {
+                if (!mSuggestedConfigCache.containsKey(standardWifiEntryKey)) {
+                    mSuggestedConfigCache.put(standardWifiEntryKey, new ArrayList<>());
+                }
+                mSuggestedConfigCache.get(standardWifiEntryKey).add(config);
             } else if (config.fromWifiNetworkSpecifier) {
-                networkRequestConfigAvailable = true;
-                updateNetworkRequestConfig(config);
+                if (!mNetworkRequestConfigCache.containsKey(standardWifiEntryKey)) {
+                    mNetworkRequestConfigCache.put(standardWifiEntryKey, new ArrayList<>());
+                }
+                mNetworkRequestConfigCache.get(standardWifiEntryKey).add(config);
             } else {
-                mWifiConfigCache.put(wifiConfigToStandardWifiEntryKey(config), config);
+                if (!mStandardWifiConfigCache.containsKey(standardWifiEntryKey)) {
+                    mStandardWifiConfigCache.put(standardWifiEntryKey, new ArrayList<>());
+                }
+                mStandardWifiConfigCache.get(standardWifiEntryKey).add(config);
             }
         }
-        if (!networkRequestConfigAvailable) {
-            updateNetworkRequestConfig(null);
-        }
-        mNumSavedNetworks = (int) mWifiConfigCache.values().stream()
-                .filter(cachedConfig ->
-                    !cachedConfig.isEphemeral() && !cachedConfig.isPasspoint()).count();
+        mNumSavedNetworks = (int) mStandardWifiConfigCache.values().stream()
+                .flatMap(List::stream)
+                .filter(config -> !config.isEphemeral())
+                .map(config -> config.networkId)
+                .distinct()
+                .count();
 
         // Iterate through current entries and update each entry's config
-        mStandardWifiEntryCache.entrySet().forEach((entry) -> {
-            final StandardWifiEntry wifiEntry = entry.getValue();
-            final String key = wifiEntry.getKey();
-            final WifiConfiguration config = mWifiConfigCache.get(key);
-            if (config != null && config.isPasspoint()) {
-                return;
-            }
-            wifiEntry.updateConfig(config);
-        });
+        mStandardWifiEntryCache.forEach(entry ->
+                entry.updateConfig(mStandardWifiConfigCache.get(entry.getStandardWifiEntryKey())));
 
         // Iterate through current suggestion entries and update each entry's config
-        mSuggestedWifiEntryCache.entrySet().removeIf((entry) -> {
-            final StandardWifiEntry wifiEntry = entry.getValue();
-            final String key = wifiEntry.getKey();
-            final WifiConfiguration config = mSuggestedConfigCache.get(key);
-            if (config != null && !config.isPasspoint()) {
-                wifiEntry.updateConfig(config);
-                return false;
-            } else {
-                return true;
-            }
+        mSuggestedWifiEntryCache.removeIf(entry -> {
+            entry.updateConfig(mSuggestedConfigCache.get(entry.getStandardWifiEntryKey()));
+            // Remove if the suggestion does not have a config anymore.
+            return !entry.isSuggestion();
         });
-    }
 
-    @WorkerThread
-    private void updateNetworkRequestConfig(@Nullable WifiConfiguration config) {
-        if (config == null) {
-            mNetworkRequestEntry = null;
-            return;
+        if (mNetworkRequestEntry != null) {
+            mNetworkRequestEntry.updateConfig(
+                    mNetworkRequestConfigCache.get(mNetworkRequestEntry.getStandardWifiEntryKey()));
         }
-
-        String configKey = wifiConfigToNetworkRequestEntryKey(config);
-        if (mNetworkRequestEntry == null
-                || !TextUtils.equals(configKey, mNetworkRequestEntry.getKey())) {
-            mNetworkRequestEntry = new NetworkRequestEntry(mContext, mMainHandler, configKey,
-                    mWifiManager, mWifiNetworkScoreCache, false /* forSavedNetworksPPage */);
-        }
-        mNetworkRequestEntry.updateConfig(config);
     }
 
     @WorkerThread
@@ -751,10 +764,10 @@
     @WorkerThread
     private void updateConnectionInfo(@Nullable WifiInfo wifiInfo,
             @Nullable NetworkInfo networkInfo) {
-        for (WifiEntry entry : mStandardWifiEntryCache.values()) {
+        for (WifiEntry entry : mStandardWifiEntryCache) {
             entry.updateConnectionInfo(wifiInfo, networkInfo);
         }
-        for (WifiEntry entry : mSuggestedWifiEntryCache.values()) {
+        for (WifiEntry entry : mSuggestedWifiEntryCache) {
             entry.updateConnectionInfo(wifiInfo, networkInfo);
         }
         for (WifiEntry entry : mPasspointWifiEntryCache.values()) {
@@ -766,6 +779,10 @@
         if (mNetworkRequestEntry != null) {
             mNetworkRequestEntry.updateConnectionInfo(wifiInfo, networkInfo);
         }
+        updateNetworkRequestEntryConnectionInfo(wifiInfo, networkInfo);
+        if (mMergedCarrierEntry != null) {
+            mMergedCarrierEntry.updateConnectionInfo(wifiInfo, networkInfo);
+        }
         // Create a StandardWifiEntry for the current connection if there are no scan results yet.
         conditionallyCreateConnectedStandardWifiEntry(wifiInfo, networkInfo);
         conditionallyCreateConnectedSuggestedWifiEntry(wifiInfo, networkInfo);
@@ -773,6 +790,42 @@
     }
 
     /**
+     * Updates the connection info of the current NetworkRequestEntry. A new NetworkRequestEntry is
+     * created if there is no existing entry, or the existing entry doesn't match WifiInfo.
+     */
+    @WorkerThread
+    private void updateNetworkRequestEntryConnectionInfo(
+            @Nullable WifiInfo wifiInfo, @Nullable NetworkInfo networkInfo) {
+        final List<WifiConfiguration> matchingConfigs = new ArrayList<>();
+
+        if (wifiInfo != null) {
+            for (int i = 0; i < mNetworkRequestConfigCache.size(); i++) {
+                final List<WifiConfiguration> configs = mNetworkRequestConfigCache.valueAt(i);
+                if (!configs.isEmpty() && configs.get(0).networkId == wifiInfo.getNetworkId()) {
+                    matchingConfigs.addAll(configs);
+                    break;
+                }
+            }
+        }
+
+        // WifiInfo isn't for any request configs, remove the NetworkRequestEntry
+        if (matchingConfigs.isEmpty()) {
+            mNetworkRequestEntry = null;
+            return;
+        }
+
+        // WifiInfo matches a request config, create a NetworkRequestEntry or update the existing.
+        final StandardWifiEntryKey entryKey = new StandardWifiEntryKey(matchingConfigs.get(0));
+        if (mNetworkRequestEntry == null
+                || !mNetworkRequestEntry.getStandardWifiEntryKey().equals(entryKey)) {
+            mNetworkRequestEntry = new NetworkRequestEntry(mContext, mMainHandler, entryKey,
+                    mWifiManager, mWifiNetworkScoreCache, false /* forSavedNetworksPage */);
+            mNetworkRequestEntry.updateConfig(matchingConfigs);
+        }
+        mNetworkRequestEntry.updateConnectionInfo(wifiInfo, networkInfo);
+    }
+
+    /**
      * Creates and caches a StandardWifiEntry representing the current connection using the current
      * WifiInfo and NetworkInfo if there are no scans results available for the network yet.
      * @param wifiInfo WifiInfo of the current connection
@@ -781,23 +834,33 @@
     @WorkerThread
     private void conditionallyCreateConnectedStandardWifiEntry(@Nullable WifiInfo wifiInfo,
             @Nullable NetworkInfo networkInfo) {
-        if (wifiInfo.isPasspointAp() || wifiInfo.isOsuAp()) {
+        if (wifiInfo == null || wifiInfo.isPasspointAp() || wifiInfo.isOsuAp()) {
             return;
         }
 
         final int connectedNetId = wifiInfo.getNetworkId();
-        mWifiConfigCache.values().stream()
-                .filter(config ->
-                    config.networkId == connectedNetId && !mStandardWifiEntryCache.containsKey(
-                        wifiConfigToStandardWifiEntryKey(config)))
-                .findAny().ifPresent(config -> {
-                    final StandardWifiEntry connectedEntry =
-                            new StandardWifiEntry(mContext, mMainHandler,
-                                    wifiConfigToStandardWifiEntryKey(config), config, mWifiManager,
-                                    mWifiNetworkScoreCache, false /* forSavedNetworksPage */);
-                    connectedEntry.updateConnectionInfo(wifiInfo, networkInfo);
-                    mStandardWifiEntryCache.put(connectedEntry.getKey(), connectedEntry);
-                });
+        for (List<WifiConfiguration> configs : mStandardWifiConfigCache.values()) {
+            // List of configs match as long as one of them matches the connected network ID.
+            if (configs.stream()
+                    .map(config -> config.networkId)
+                    .filter(networkId -> networkId == connectedNetId)
+                    .count() == 0) {
+                continue;
+            }
+            final StandardWifiEntryKey entryKey =
+                    new StandardWifiEntryKey(configs.get(0), true /* isTargetingNewNetworks */);
+            for (StandardWifiEntry existingEntry : mStandardWifiEntryCache) {
+                if (entryKey.equals(existingEntry.getStandardWifiEntryKey())) {
+                    return;
+                }
+            }
+            final StandardWifiEntry connectedEntry =
+                    new StandardWifiEntry(mContext, mMainHandler, entryKey, configs, null,
+                            mWifiManager, mWifiNetworkScoreCache, false /* forSavedNetworksPage */);
+            connectedEntry.updateConnectionInfo(wifiInfo, networkInfo);
+            mStandardWifiEntryCache.add(connectedEntry);
+            return;
+        }
     }
 
     /**
@@ -810,23 +873,29 @@
     @WorkerThread
     private void conditionallyCreateConnectedSuggestedWifiEntry(@Nullable WifiInfo wifiInfo,
             @Nullable NetworkInfo networkInfo) {
-        if (wifiInfo.isPasspointAp() || wifiInfo.isOsuAp()) {
+        if (wifiInfo == null || wifiInfo.isPasspointAp() || wifiInfo.isOsuAp()) {
             return;
         }
 
         final int connectedNetId = wifiInfo.getNetworkId();
-        mSuggestedConfigCache.values().stream()
-                .filter(config ->
-                    config.networkId == connectedNetId && !mSuggestedWifiEntryCache.containsKey(
-                        wifiConfigToStandardWifiEntryKey(config)))
-                .findAny().ifPresent(config -> {
-                    final StandardWifiEntry connectedEntry =
-                            new StandardWifiEntry(mContext, mMainHandler,
-                                    wifiConfigToStandardWifiEntryKey(config), config, mWifiManager,
-                                    mWifiNetworkScoreCache, false /* forSavedNetworksPage */);
-                    connectedEntry.updateConnectionInfo(wifiInfo, networkInfo);
-                    mSuggestedWifiEntryCache.put(connectedEntry.getKey(), connectedEntry);
-                });
+        for (List<WifiConfiguration> configs : mSuggestedConfigCache.values()) {
+            if (configs.isEmpty() || configs.get(0).networkId != connectedNetId) {
+                continue;
+            }
+            final StandardWifiEntryKey entryKey =
+                    new StandardWifiEntryKey(configs.get(0), true /* isTargetingNewNetworks */);
+            for (StandardWifiEntry existingEntry : mSuggestedWifiEntryCache) {
+                if (entryKey.equals(existingEntry.getStandardWifiEntryKey())) {
+                    return;
+                }
+            }
+            final StandardWifiEntry connectedEntry =
+                    new StandardWifiEntry(mContext, mMainHandler, entryKey, configs, null,
+                            mWifiManager, mWifiNetworkScoreCache, false /* forSavedNetworksPage */);
+            connectedEntry.updateConnectionInfo(wifiInfo, networkInfo);
+            mSuggestedWifiEntryCache.add(connectedEntry);
+            return;
+        }
     }
 
 
@@ -839,33 +908,34 @@
     @WorkerThread
     private void conditionallyCreateConnectedPasspointWifiEntry(@Nullable WifiInfo wifiInfo,
             @Nullable NetworkInfo networkInfo) {
-        if (!wifiInfo.isPasspointAp()) {
+        if (wifiInfo == null || !wifiInfo.isPasspointAp()) {
             return;
         }
 
-        final int connectedNetId = wifiInfo.getNetworkId();
-        Stream.concat(mWifiConfigCache.values().stream(), mSuggestedConfigCache.values().stream())
-                .filter(wifiConfig ->
-                    wifiConfig.isPasspoint() && wifiConfig.networkId == connectedNetId
-                        && !mPasspointWifiEntryCache.containsKey(
-                                uniqueIdToPasspointWifiEntryKey(wifiConfig.getKey())))
-                .findAny().ifPresent(wifiConfig -> {
-                    PasspointConfiguration passpointConfig = mPasspointConfigCache.get(
-                            uniqueIdToPasspointWifiEntryKey(wifiConfig.getKey()));
-                    PasspointWifiEntry connectedEntry;
-                    if (passpointConfig != null) {
-                        connectedEntry = new PasspointWifiEntry(mContext, mMainHandler,
-                                passpointConfig, mWifiManager, mWifiNetworkScoreCache,
-                                false /* forSavedNetworksPage */);
-                    } else {
-                        // Suggested PasspointWifiEntry without a corresponding Passpoint config
-                        connectedEntry = new PasspointWifiEntry(mContext, mMainHandler,
-                                wifiConfig, mWifiManager, mWifiNetworkScoreCache,
-                                false /* forSavedNetworksPage */);
-                    }
-                    connectedEntry.updateConnectionInfo(wifiInfo, networkInfo);
-                    mPasspointWifiEntryCache.put(connectedEntry.getKey(), connectedEntry);
-                });
+        WifiConfiguration cachedWifiConfig = mPasspointWifiConfigCache.get(wifiInfo.getNetworkId());
+        if (cachedWifiConfig == null) {
+            return;
+        }
+        final String key = uniqueIdToPasspointWifiEntryKey(cachedWifiConfig.getKey());
+        if (mPasspointWifiEntryCache.containsKey(key)) {
+            // Entry already exists, skip creating a new one.
+            return;
+        }
+        PasspointConfiguration passpointConfig = mPasspointConfigCache.get(
+                uniqueIdToPasspointWifiEntryKey(cachedWifiConfig.getKey()));
+        PasspointWifiEntry connectedEntry;
+        if (passpointConfig != null) {
+            connectedEntry = new PasspointWifiEntry(mContext, mMainHandler,
+                    passpointConfig, mWifiManager, mWifiNetworkScoreCache,
+                    false /* forSavedNetworksPage */);
+        } else {
+            // Suggested PasspointWifiEntry without a corresponding PasspointConfiguration
+            connectedEntry = new PasspointWifiEntry(mContext, mMainHandler,
+                    cachedWifiConfig, mWifiManager, mWifiNetworkScoreCache,
+                    false /* forSavedNetworksPage */);
+        }
+        connectedEntry.updateConnectionInfo(wifiInfo, networkInfo);
+        mPasspointWifiEntryCache.put(connectedEntry.getKey(), connectedEntry);
     }
 
     /**
@@ -909,6 +979,7 @@
          * Called when there are changes to
          *      {@link #getConnectedWifiEntry()}
          *      {@link #getWifiEntries()}
+         *      {@link #getMergedCarrierEntry()}
          */
         @MainThread
         void onWifiEntriesChanged();
diff --git a/libs/WifiTrackerLib/tests/Android.bp b/libs/WifiTrackerLib/tests/Android.bp
index 2026744..50b1cd7 100644
--- a/libs/WifiTrackerLib/tests/Android.bp
+++ b/libs/WifiTrackerLib/tests/Android.bp
@@ -34,4 +34,6 @@
     ],
 
     platform_apis: true,
+
+    test_suites: ["general-tests"],
 }
diff --git a/libs/WifiTrackerLib/tests/AndroidManifest.xml b/libs/WifiTrackerLib/tests/AndroidManifest.xml
index fe624d3..37ffd2f 100644
--- a/libs/WifiTrackerLib/tests/AndroidManifest.xml
+++ b/libs/WifiTrackerLib/tests/AndroidManifest.xml
@@ -20,7 +20,8 @@
     <application>
         <uses-library android:name="android.test.runner" />
         <activity android:label="WifiTrackerTestsDummyLabel"
-                  android:name="WifiTrackerTestsDummyName">
+                  android:name="WifiTrackerTestsDummyName"
+                  android:exported="false">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER"/>
diff --git a/libs/WifiTrackerLib/tests/simulate_wifi.py b/libs/WifiTrackerLib/tests/simulate_wifi.py
new file mode 100755
index 0000000..ed6efda
--- /dev/null
+++ b/libs/WifiTrackerLib/tests/simulate_wifi.py
@@ -0,0 +1,890 @@
+#!/usr/bin/python3
+
+#
+# Copyright 2021, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This script simulates different combinations of scans and config to allow a tester to manually
+# verify behavior in the Wi-Fi picker without setting up an actual test environment with real APs.
+# This is especially useful for verifying interactions between scans and configs of multiple
+# security types from the same security family, along with suggestions for the same networks.
+#
+# INSTRUCTIONS:
+# 1) Connect an adb debuggable test device.
+# 2) Open the test device and navigate to the Wi-Fi picker.
+# 3) In main(), uncomment any test cases that you want to test.
+# 4) If testing suggestions INSTEAD of configs, only set ADD_SUGGESTION_INSTEAD_OF_CONFIG to True.
+# 5) If testing suggestions AND configs, only set ADD_IDENTICAL_SUGGESTION to True.
+# 6) Run this script 'py simulate_wifi.py'
+# 7) Follow the prompts from the script. The prompts will ask you to verify the behavior of the
+#    Wi-Fi picker through user interaction and visual confirmation.
+#
+# NOTE: Suggestions may take several seconds to appear. This is expected since it may be some scans
+#       cycles until WifiManager#getWifiConfigForMatchedNetworkSuggestionsSharedWithUser() returns
+#       the matching suggestion.
+
+import subprocess
+import sys
+import time
+
+OPEN_SSID = "fakeOpen"
+OWE_SSID = "fakeOwe"
+OPEN_OWE_SSID = "fakeOpenOwe"
+WPA2_SSID = "fakeWpa2"
+WPA3_SSID = "fakeWpa3"
+WPA2_WPA3_SSID = "fakeWpa2Wpa3"
+
+# only one of these should be True (possibly none for just adding base configuration)
+ADD_SUGGESTION_INSTEAD_OF_CONFIG = False
+ADD_IDENTICAL_SUGGESTION = False
+
+def main() -> None:
+  root()
+  time.sleep(5)
+
+  # Single Open scan
+  # testOpenScanNoConfigs()
+  # testOpenScanOpenConfig()
+  # testOpenScanOweConfig()
+  # testOpenScanOpenOweConfig()
+
+  # Single OWE scan
+  # testOweScanNoConfigs()
+  # testOweScanOpenConfig()
+  # testOweScanOweConfig()
+  # testOweScanOpenOweConfig()
+
+  # Single Open/OWE scan
+  # testOpenOweScanNoConfigs()
+  # testOpenOweScanOpenConfig()
+  # testOpenOweScanOweConfig()
+  # testOpenOweScanOpenOweConfig()
+
+  # Open scan and OWE scan
+  # testOpenScanOweScanNoConfigs()
+  # testOpenScanOweScanOpenConfig()
+  # testOpenScanOweScanOweConfig()
+  # testOpenScanOweScanOpenOweConfig()
+
+  # Open scan and Open/OWE scan
+  # testOpenScanOpenOweScanNoConfigs()
+  # testOpenScanOpenOweScanOpenConfig()
+  # testOpenScanOpenOweScanOweConfig()
+  # testOpenScanOpenOweScanOpenOweConfig()
+
+  # Open/OWE scan and OWE scan
+  # testOpenOweScanOweScanNoConfigs()
+  # testOpenOweScanOweScanOpenConfig()
+  # testOpenOweScanOweScanOweConfig()
+  # testOpenOweScanOweScanOpenOweConfig()
+
+  # Open, Open/OWE, and OWE scans
+  # testOpenScanOpenOweScanOweScanNoConfigs()
+  # testOpenScanOpenOweScanOweScanOpenConfig()
+  # testOpenScanOpenOweScanOweScanOweConfig()
+  # testOpenScanOpenOweScanOweScanOpenOweConfig()
+
+  # Single WPA2 scan
+  # testWpa2ScanNoConfigs()
+  # testWpa2ScanWpa2Config()
+  # testWpa2ScanWpa3Config()
+  # testWpa2ScanWpa2Wpa3Config()
+
+  # Single WPA3 scan
+  # testWpa3ScanNoConfigs()
+  # testWpa3ScanWpa2Config()
+  # testWpa3ScanWpa3Config()
+  # testWpa3ScanWpa2Wpa3Config()
+
+  # Single WP2/WPA3 scan
+  # testWpa2Wpa3ScanNoConfigs()
+  # testWpa2Wpa3ScanWpa2Config()
+  # testWpa2Wpa3ScanWpa3Config()
+  # testWpa2Wpa3ScanWpa2Wpa3Config()
+
+  # WPA2 scan and WPA3 scan
+  # testWpa2ScanWpa3ScanNoConfigs()
+  # testWpa2ScanWpa3ScanWpa2Config()
+  # testWpa2ScanWpa3ScanWpa3Config()
+  # testWpa2ScanWpa3ScanWpa2Wpa3Config()
+
+  # WPA2 scan and WPA2/WPA3 scan
+  # testWpa2ScanWpa2Wpa3ScanNoConfigs()
+  # testWpa2ScanWpa2Wpa3ScanWpa2Config()
+  # testWpa2ScanWpa2Wpa3ScanWpa3Config()
+  # testWpa2ScanWpa2Wpa3ScanWpa2Wpa3Config()
+
+  # WPA2/WPA3 scan and WPA3 scan
+  # testWpa2Wpa3ScanWpa3ScanNoConfigs()
+  # testWpa2Wpa3ScanWpa3ScanWpa2Config()
+  # testWpa2Wpa3ScanWpa3ScanWpa3Config()
+  # testWpa2Wpa3ScanWpa3ScanWpa2Wpa3Config()
+
+  # WPA2, WPA2/WPA3, and WPA3 scans
+  # testWpa2ScanWpa2Wpa3ScanWpa3ScanNoConfigs()
+  # testWpa2ScanWpa2Wpa3ScanWpa3ScanWpa2Config()
+  # testWpa2ScanWpa2Wpa3ScanWpa3ScanWpa3Config()
+  # testWpa2ScanWpa2Wpa3ScanWpa3ScanWpa2Wpa3Config()
+
+  return 0
+
+
+def testTemplate(method_name, fake_scans, fake_configs, pre_instructions, post_instructions) -> None:
+  print("")
+  print("")
+  print("****** Test: " + method_name)
+  print("** Resetting all scans/configs")
+  settings_reset()
+  print("** Starting to fake scans")
+  fake_scans()
+  startFakingScans()
+  startScan()
+  time.sleep(5)
+  print("** Fake scan results:")
+  for scan in getScanResults():
+    print(scan.decode())
+  print("** Inserting fake configurations (and optionally suggestions)")
+  fake_configs()
+  print("** Pre action saved networks:")
+  for config in getSavedConfigs():
+    print(config.decode())
+  if ADD_IDENTICAL_SUGGESTION or ADD_SUGGESTION_INSTEAD_OF_CONFIG:
+    print("** Pre action suggestions:")
+    for sugg in getSuggestions():
+      print(sugg.decode())
+  print("---> " + pre_instructions)
+  input("** Then press Enter to continue ...")
+  print("** Post action saved networks:")
+  for config in getSavedConfigs():
+    print(config.decode())
+  print("---> " + post_instructions)
+  input("** Press Enter to continue ...")
+
+#
+# Single WPA2 scan: different WPA2/WPA3 configurations
+#
+
+def testWpa2ScanNoConfigs() -> None:
+  testTemplate(
+    testWpa2ScanNoConfigs.__name__,
+    lambda : addFakeWpa2Scan(WPA2_SSID, "80:01:02:03:04:05"),
+    lambda : print("no configs added"),
+    "Open picker: select " + WPA2_SSID,
+    "Should ask for passphrase, then be WPA2 (+ WPA3^ if device supports auto-upgrade)"
+  )
+
+def testWpa2ScanWpa2Config() -> None:
+  testTemplate(
+    testWpa2ScanWpa2Config.__name__,
+    lambda : addFakeWpa2Scan(WPA2_SSID, "80:01:02:03:04:05"),
+    lambda : addWpa2Config(WPA2_SSID),
+    "Open picker: select " + WPA2_SSID,
+    "Should not ask for passphrase, then be WPA2 only if device does not support auto-upgrade (otherwise + WPA3^)"
+  )
+
+def testWpa2ScanWpa3Config() -> None:
+  testTemplate(
+    testWpa2ScanWpa3Config.__name__,
+    lambda : addFakeWpa2Scan(WPA2_SSID, "80:01:02:03:04:05"),
+    lambda : addWpa3Config(WPA2_SSID),
+    "Open picker: select " + WPA2_SSID,
+    "Should ask for passphrase, then be WPA2+WPA3"
+  )
+
+def testWpa2ScanWpa2Wpa3Config() -> None:
+  testTemplate(
+    testWpa2ScanWpa2Wpa3Config.__name__,
+    lambda : addFakeWpa2Scan(WPA2_SSID, "80:01:02:03:04:05"),
+    lambda : (addWpa2Config(WPA2_SSID),
+              addWpa3Config(WPA2_SSID)),
+    "Open picker: select " + WPA2_SSID,
+    "Should not ask for passphrase, then be WPA2+WPA3"
+  )
+
+#
+# Single WPA3 scan: different WPA2/WPA3 configurations
+#
+
+def testWpa3ScanNoConfigs() -> None:
+  testTemplate(
+    testWpa3ScanNoConfigs.__name__,
+    lambda : addFakeWpa3Scan(WPA3_SSID, "80:01:02:03:04:05"),
+    lambda : print("no configs added"),
+    "Open picker: select " + WPA3_SSID,
+    "Should ask for passphrase, then be WPA3"
+  )
+
+def testWpa3ScanWpa2Config() -> None:
+  testTemplate(
+    testWpa3ScanWpa2Config.__name__,
+    lambda : addFakeWpa3Scan(WPA3_SSID, "80:01:02:03:04:05"),
+    lambda : addWpa2Config(WPA3_SSID),
+    "Open picker: select " + WPA3_SSID,
+    "If no auto-upgrade: Should ask for passphrase, then be WPA2 + WPA3, otherwise should not ask for passphrase and be WPA2+WPA3^"
+  )
+
+def testWpa3ScanWpa3Config() -> None:
+  testTemplate(
+    testWpa3ScanWpa3Config.__name__,
+    lambda : addFakeWpa3Scan(WPA3_SSID, "80:01:02:03:04:05"),
+    lambda : addWpa3Config(WPA3_SSID),
+    "Open picker: select " + WPA3_SSID,
+    "Should not ask for passphrase, then be WPA3"
+  )
+
+def testWpa3ScanWpa2Wpa3Config() -> None:
+  testTemplate(
+    testWpa3ScanWpa2Wpa3Config.__name__,
+    lambda : addFakeWpa3Scan(WPA3_SSID, "80:01:02:03:04:05"),
+    lambda : (addWpa2Config(WPA3_SSID),
+              addWpa3Config(WPA3_SSID)),
+    "Open picker: select " + WPA3_SSID,
+    "Should not ask for passphrase, then be WPA2+WPA3"
+  )
+
+#
+# Single WPA2/WPA3 scan: different WPA2/WPA3 configurations
+#
+
+def testWpa2Wpa3ScanNoConfigs() -> None:
+  testTemplate(
+    testWpa2Wpa3ScanNoConfigs.__name__,
+    lambda : addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+    lambda : print("no configs added"),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should ask for passphrase, then be WPA2 if no auto-upgrade, WPA2+WPA3^ if auto-upgrade"
+  )
+
+def testWpa2Wpa3ScanWpa2Config() -> None:
+  testTemplate(
+    testWpa2Wpa3ScanWpa2Config.__name__,
+    lambda : addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+    lambda : addWpa2Config(WPA2_WPA3_SSID),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA2 if no auto-upgrade (otherwise WPA2+WPA3^)"
+  )
+
+def testWpa2Wpa3ScanWpa3Config() -> None:
+  testTemplate(
+    testWpa2Wpa3ScanWpa3Config.__name__,
+    lambda : addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+    lambda : addWpa3Config(WPA2_WPA3_SSID),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA3"
+  )
+
+def testWpa2Wpa3ScanWpa2Wpa3Config() -> None:
+  testTemplate(
+    testWpa2Wpa3ScanWpa2Wpa3Config.__name__,
+    lambda : addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+    lambda : (addWpa2Config(WPA2_WPA3_SSID),
+              addWpa3Config(WPA2_WPA3_SSID)),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA2+WPA3"
+  )
+
+#
+# Single WPA2 scan and single WPA3 scan: different WPA2/WPA3 configurations
+#
+
+def testWpa2ScanWpa3ScanNoConfigs() -> None:
+  testTemplate(
+    testWpa2ScanWpa3ScanNoConfigs.__name__,
+    lambda : (addFakeWpa2Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa3Scan(WPA2_WPA3_SSID, "80:02:02:03:04:06")),
+    lambda : print("no configs added"),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should ask for passphrase, then be WPA2 if no auto-upgrade, WPA2+WPA3^ if auto-upgrade"
+  )
+
+def testWpa2ScanWpa3ScanWpa2Config() -> None:
+  testTemplate(
+    testWpa2ScanWpa3ScanWpa2Config.__name__,
+    lambda : (addFakeWpa2Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa3Scan(WPA2_WPA3_SSID, "80:02:02:03:04:06")),
+    lambda : addWpa2Config(WPA2_WPA3_SSID),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA2 if no auto-upgrade (otherwise WPA2+WPA3^)"
+  )
+
+def testWpa2ScanWpa3ScanWpa3Config() -> None:
+  testTemplate(
+    testWpa2ScanWpa3ScanWpa3Config.__name__,
+    lambda : (addFakeWpa2Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa3Scan(WPA2_WPA3_SSID, "80:02:02:03:04:06")),
+    lambda : addWpa3Config(WPA2_WPA3_SSID),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA3"
+  )
+
+def testWpa2ScanWpa3ScanWpa2Wpa3Config() -> None:
+  testTemplate(
+    testWpa2ScanWpa3ScanWpa2Wpa3Config.__name__,
+    lambda : (addFakeWpa2Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa3Scan(WPA2_WPA3_SSID, "80:02:02:03:04:06")),
+    lambda : (addWpa2Config(WPA2_WPA3_SSID),
+              addWpa3Config(WPA2_WPA3_SSID)),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA2+WPA3"
+  )
+
+#
+# Single WPA2 scan and single WPA2+WPA3 transition scan: different WPA2/WPA3 configurations
+#
+
+def testWpa2ScanWpa2Wpa3ScanNoConfigs() -> None:
+  testTemplate(
+    testWpa2ScanWpa2Wpa3ScanNoConfigs.__name__,
+    lambda : (addFakeWpa2Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:02:02:03:04:06")),
+    lambda : print("no configs added"),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should ask for passphrase, then be WPA2 if no auto-upgrade, WPA2+WPA3^ if auto-upgrade"
+  )
+
+def testWpa2ScanWpa2Wpa3ScanWpa2Config() -> None:
+  testTemplate(
+    testWpa2ScanWpa2Wpa3ScanWpa2Config.__name__,
+    lambda : (addFakeWpa2Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:02:02:03:04:06")),
+    lambda : addWpa2Config(WPA2_WPA3_SSID),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA2 if no auto-upgrade (otherwise WPA2+WPA3^)"
+  )
+
+def testWpa2ScanWpa2Wpa3ScanWpa3Config() -> None:
+  testTemplate(
+    testWpa2ScanWpa2Wpa3ScanWpa3Config.__name__,
+    lambda : (addFakeWpa2Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:02:02:03:04:06")),
+    lambda : addWpa3Config(WPA2_WPA3_SSID),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA3"
+  )
+
+def testWpa2ScanWpa2Wpa3ScanWpa2Wpa3Config() -> None:
+  testTemplate(
+    testWpa2ScanWpa2Wpa3ScanWpa2Wpa3Config.__name__,
+    lambda : (addFakeWpa2Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:02:02:03:04:06")),
+    lambda : (addWpa2Config(WPA2_WPA3_SSID),
+              addWpa3Config(WPA2_WPA3_SSID)),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA2+WPA3"
+  )
+
+#
+# Single WPA2+WPA3 transition scan and single WPA3 scan: different WPA2/WPA3 configurations
+#
+
+def testWpa2Wpa3ScanWpa3ScanNoConfigs() -> None:
+  testTemplate(
+    testWpa2Wpa3ScanWpa3ScanNoConfigs.__name__,
+    lambda : (addFakeWpa3Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:02:02:03:04:06")),
+    lambda : print("no configs added"),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should ask for passphrase, then be WPA2 if no auto-upgrade, WPA2+WPA3^ if auto-upgrade"
+  )
+
+def testWpa2Wpa3ScanWpa3ScanWpa2Config() -> None:
+  testTemplate(
+    testWpa2Wpa3ScanWpa3ScanWpa2Config.__name__,
+    lambda : (addFakeWpa3Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:02:02:03:04:06")),
+    lambda : addWpa2Config(WPA2_WPA3_SSID),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA2 if no auto-upgrade (otherwise WPA2+WPA3^)"
+  )
+
+def testWpa2Wpa3ScanWpa3ScanWpa3Config() -> None:
+  testTemplate(
+    testWpa2Wpa3ScanWpa3ScanWpa3Config.__name__,
+    lambda : (addFakeWpa3Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:02:02:03:04:06")),
+    lambda : addWpa3Config(WPA2_WPA3_SSID),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA3"
+  )
+
+def testWpa2Wpa3ScanWpa3ScanWpa2Wpa3Config() -> None:
+  testTemplate(
+    testWpa2Wpa3ScanWpa3ScanWpa2Wpa3Config.__name__,
+    lambda : (addFakeWpa3Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:02:02:03:04:06")),
+    lambda : (addWpa2Config(WPA2_WPA3_SSID),
+              addWpa3Config(WPA2_WPA3_SSID)),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA2+WPA3"
+  )
+
+#
+# Single WPA2 scan, single WPA2+WPA3 transition scan, and single WPA3 scan: different WPA2/WPA3 configurations
+#
+
+def testWpa2ScanWpa2Wpa3ScanWpa3ScanNoConfigs() -> None:
+  testTemplate(
+    testWpa2ScanWpa2Wpa3ScanWpa3ScanNoConfigs.__name__,
+    lambda : (addFakeWpa2Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa3Scan(WPA2_WPA3_SSID, "80:02:02:03:04:06"),
+              addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:03:02:03:04:07")),
+    lambda : print("no configs added"),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should ask for passphrase, then be WPA2 if no auto-upgrade, WPA2+WPA3^ if auto-upgrade"
+  )
+
+def testWpa2ScanWpa2Wpa3ScanWpa3ScanWpa2Config() -> None:
+  testTemplate(
+    testWpa2ScanWpa2Wpa3ScanWpa3ScanWpa2Config.__name__,
+    lambda : (addFakeWpa2Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa3Scan(WPA2_WPA3_SSID, "80:02:02:03:04:06"),
+              addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:03:02:03:04:07")),
+    lambda : addWpa2Config(WPA2_WPA3_SSID),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA2 if no auto-upgrade (otherwise WPA2+WPA3^)"
+  )
+
+def testWpa2ScanWpa2Wpa3ScanWpa3ScanWpa3Config() -> None:
+  testTemplate(
+    testWpa2ScanWpa2Wpa3ScanWpa3ScanWpa3Config.__name__,
+    lambda : (addFakeWpa2Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa3Scan(WPA2_WPA3_SSID, "80:02:02:03:04:06"),
+              addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:03:02:03:04:07")),
+    lambda : addWpa3Config(WPA2_WPA3_SSID),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA3"
+  )
+
+def testWpa2ScanWpa2Wpa3ScanWpa3ScanWpa2Wpa3Config() -> None:
+  testTemplate(
+    testWpa2ScanWpa2Wpa3ScanWpa3ScanWpa2Wpa3Config.__name__,
+    lambda : (addFakeWpa2Scan(WPA2_WPA3_SSID, "80:01:02:03:04:05"),
+              addFakeWpa3Scan(WPA2_WPA3_SSID, "80:02:02:03:04:06"),
+              addFakeWpa2Wpa3TransitionScan(WPA2_WPA3_SSID, "80:03:02:03:04:07")),
+    lambda : (addWpa2Config(WPA2_WPA3_SSID),
+              addWpa3Config(WPA2_WPA3_SSID)),
+    "Open picker: select " + WPA2_WPA3_SSID,
+    "Should not ask for passphrase, then be WPA2+WPA3"
+  )
+
+#
+# Single open scan: different open/OWE configurations
+#
+
+def testOpenScanNoConfigs() -> None:
+  testTemplate(
+    testOpenScanNoConfigs.__name__,
+    lambda : addFakeOpenScan(OPEN_SSID, "80:01:02:03:04:05"),
+    lambda : print("no configs added"),
+    "Open picker: select " + OPEN_SSID,
+    "Should be Open + OWE^ if device supports auto-upgrade"
+  )
+
+def testOpenScanOpenConfig() -> None:
+  testTemplate(
+    testOpenScanOpenConfig.__name__,
+    lambda : addFakeOpenScan(OPEN_SSID, "80:01:02:03:04:05"),
+    lambda : addOpenConfig(OPEN_SSID),
+    "Open picker: select " + OPEN_SSID,
+    "Should be Open only if device does not support auto-upgrade (otherwise + OWE^)"
+  )
+
+def testOpenScanOweConfig() -> None:
+  testTemplate(
+    testOpenScanOweConfig.__name__,
+    lambda : addFakeOpenScan(OPEN_SSID, "80:01:02:03:04:05"),
+    lambda : addOweConfig(OPEN_SSID),
+    "Open picker: select " + OPEN_SSID,
+    "Should be Open + OWE"
+  )
+
+def testOpenScanOpenOweConfig() -> None:
+  testTemplate(
+    testOpenScanOpenOweConfig.__name__,
+    lambda : addFakeOpenScan(OPEN_SSID, "80:01:02:03:04:05"),
+    lambda : (addOpenConfig(OPEN_SSID),
+              addOweConfig(OPEN_SSID)),
+    "Open picker: select " + OPEN_SSID,
+    "Should be Open + OWE"
+  )
+
+#
+# Single OWE scan: different open/OWE configurations
+#
+
+def testOweScanNoConfigs() -> None:
+  testTemplate(
+    testOweScanNoConfigs.__name__,
+    lambda : addFakeOweScan(OWE_SSID, "80:01:02:03:04:05"),
+    lambda : print("no configs added"),
+    "Open picker: select " + OWE_SSID,
+    "Should be OWE"
+  )
+
+def testOweScanOpenConfig() -> None:
+  testTemplate(
+    testOweScanOpenConfig.__name__,
+    lambda : addFakeOweScan(OWE_SSID, "80:01:02:03:04:05"),
+    lambda : addOpenConfig(OWE_SSID),
+    "Open picker: select " + OWE_SSID,
+    "Should be Open+OWE^"
+  )
+
+def testOweScanOweConfig() -> None:
+  testTemplate(
+    testOweScanOweConfig.__name__,
+    lambda : addFakeOweScan(OWE_SSID, "80:01:02:03:04:05"),
+    lambda : addOweConfig(OWE_SSID),
+    "Open picker: select " + OWE_SSID,
+    "Should be OWE"
+  )
+
+def testOweScanOpenOweConfig() -> None:
+  testTemplate(
+    testOweScanOpenOweConfig.__name__,
+    lambda : addFakeOweScan(OWE_SSID, "80:01:02:03:04:05"),
+    lambda : (addOpenConfig(OWE_SSID),
+              addOweConfig(OWE_SSID)),
+    "Open picker: select " + OWE_SSID,
+    "Should be Open + OWE"
+  )
+
+#
+# Single Open/OWE transition mode scan: different open/OWE configurations
+#
+
+def testOpenOweScanNoConfigs() -> None:
+  testTemplate(
+    testOpenOweScanNoConfigs.__name__,
+    lambda : addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+    lambda : print("no configs added"),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open+OWE"
+  )
+
+def testOpenOweScanOpenConfig() -> None:
+  testTemplate(
+    testOpenOweScanOpenConfig.__name__,
+    lambda : addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+    lambda : addOpenConfig(OPEN_OWE_SSID),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open+OWE^"
+  )
+
+def testOpenOweScanOweConfig() -> None:
+  testTemplate(
+    testOpenOweScanOweConfig.__name__,
+    lambda : addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+    lambda : addOweConfig(OPEN_OWE_SSID),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be OWE"
+  )
+
+def testOpenOweScanOpenOweConfig() -> None:
+  testTemplate(
+    testOpenOweScanOpenOweConfig.__name__,
+    lambda : addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+    lambda : (addOpenConfig(OPEN_OWE_SSID),
+              addOweConfig(OPEN_OWE_SSID)),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open + OWE"
+  )
+
+#
+# Single Open scan and single OWE scan: different Open/OWE configurations
+#
+
+def testOpenScanOweScanNoConfigs() -> None:
+  testTemplate(
+    testOpenScanOweScanNoConfigs.__name__,
+    lambda : (addFakeOpenScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOweScan(OPEN_OWE_SSID, "80:02:02:03:04:06")),
+    lambda : print("no configs added"),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open+OWE"
+  )
+
+def testOpenScanOweScanOpenConfig() -> None:
+  testTemplate(
+    testOpenScanOweScanOpenConfig.__name__,
+    lambda : (addFakeOpenScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOweScan(OPEN_OWE_SSID, "80:02:02:03:04:06")),
+    lambda : addOpenConfig(OPEN_OWE_SSID),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open if no auto-upgrade (otherwise Open+OWE^)"
+  )
+
+def testOpenScanOweScanOweConfig() -> None:
+  testTemplate(
+    testOpenScanOweScanOweConfig.__name__,
+    lambda : (addFakeOpenScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOweScan(OPEN_OWE_SSID, "80:02:02:03:04:06")),
+    lambda : addOweConfig(OPEN_OWE_SSID),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be OWE"
+  )
+
+def testOpenScanOweScanOpenOweConfig() -> None:
+  testTemplate(
+    testOpenScanOweScanOpenOweConfig.__name__,
+    lambda : (addFakeOpenScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOweScan(OPEN_OWE_SSID, "80:02:02:03:04:06")),
+    lambda : (addOpenConfig(OPEN_OWE_SSID),
+              addOweConfig(OPEN_OWE_SSID)),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open+OWE"
+  )
+
+#
+# Single Open scan and single Open+OWE transition scan: different Open/OWE configurations
+#
+
+def testOpenScanOpenOweScanNoConfigs() -> None:
+  testTemplate(
+    testOpenScanOpenOweScanNoConfigs.__name__,
+    lambda : (addFakeOpenScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:02:02:03:04:06")),
+    lambda : print("no configs added"),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open+OWE"
+  )
+
+def testOpenScanOpenOweScanOpenConfig() -> None:
+  testTemplate(
+    testOpenScanOpenOweScanOpenConfig.__name__,
+    lambda : (addFakeOpenScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:02:02:03:04:06")),
+    lambda : addOpenConfig(OPEN_OWE_SSID),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open if no auto-upgrade (otherwise Open+OWE^)"
+  )
+
+def testOpenScanOpenOweScanOweConfig() -> None:
+  testTemplate(
+    testOpenScanOpenOweScanOweConfig.__name__,
+    lambda : (addFakeOpenScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:02:02:03:04:06")),
+    lambda : addOweConfig(OPEN_OWE_SSID),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be OWE"
+  )
+
+def testOpenScanOpenOweScanOpenOweConfig() -> None:
+  testTemplate(
+    testOpenScanOpenOweScanOpenOweConfig.__name__,
+    lambda : (addFakeOpenScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:02:02:03:04:06")),
+    lambda : (addOpenConfig(OPEN_OWE_SSID),
+              addOweConfig(OPEN_OWE_SSID)),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open+OWE"
+  )
+
+#
+# Single Open+OWE transition scan and single OWE scan: different Open/OWE configurations
+#
+
+def testOpenOweScanOweScanNoConfigs() -> None:
+  testTemplate(
+    testOpenOweScanOweScanNoConfigs.__name__,
+    lambda : (addFakeOweScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:02:02:03:04:06")),
+    lambda : print("no configs added"),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open+OWE"
+  )
+
+def testOpenOweScanOweScanOpenConfig() -> None:
+  testTemplate(
+    testOpenOweScanOweScanOpenConfig.__name__,
+    lambda : (addFakeOweScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:02:02:03:04:06")),
+    lambda : addOpenConfig(OPEN_OWE_SSID),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open if no auto-upgrade (otherwise Open+OWE^)"
+  )
+
+def testOpenOweScanOweScanOweConfig() -> None:
+  testTemplate(
+    testOpenOweScanOweScanOweConfig.__name__,
+    lambda : (addFakeOweScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:02:02:03:04:06")),
+    lambda : addOweConfig(OPEN_OWE_SSID),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be OWE"
+  )
+
+def testOpenOweScanOweScanOpenOweConfig() -> None:
+  testTemplate(
+    testOpenOweScanOweScanOpenOweConfig.__name__,
+    lambda : (addFakeOweScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:02:02:03:04:06")),
+    lambda : (addOpenConfig(OPEN_OWE_SSID),
+              addOweConfig(OPEN_OWE_SSID)),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open+OWE"
+  )
+
+#
+# Single Open scan, single Open+OWE transition scan, and single OWE scan: different Open/OWE configurations
+#
+
+def testOpenScanOpenOweScanOweScanNoConfigs() -> None:
+  testTemplate(
+    testOpenScanOpenOweScanOweScanNoConfigs.__name__,
+    lambda : (addFakeOpenScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOweScan(OPEN_OWE_SSID, "80:02:02:03:04:06"),
+              addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:03:02:03:04:07")),
+    lambda : print("no configs added"),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open+OWE"
+  )
+
+def testOpenScanOpenOweScanOweScanOpenConfig() -> None:
+  testTemplate(
+    testOpenScanOpenOweScanOweScanOpenConfig.__name__,
+    lambda : (addFakeOpenScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOweScan(OPEN_OWE_SSID, "80:02:02:03:04:06"),
+              addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:03:02:03:04:07")),
+    lambda : addOpenConfig(OPEN_OWE_SSID),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open if no auto-upgrade (otherwise Open+OWE^)"
+  )
+
+def testOpenScanOpenOweScanOweScanOweConfig() -> None:
+  testTemplate(
+    testOpenScanOpenOweScanOweScanOweConfig.__name__,
+    lambda : (addFakeOpenScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOweScan(OPEN_OWE_SSID, "80:02:02:03:04:06"),
+              addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:03:02:03:04:07")),
+    lambda : addOweConfig(OPEN_OWE_SSID),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be OWE"
+  )
+
+def testOpenScanOpenOweScanOweScanOpenOweConfig() -> None:
+  testTemplate(
+    testOpenScanOpenOweScanOweScanOpenOweConfig.__name__,
+    lambda : (addFakeOpenScan(OPEN_OWE_SSID, "80:01:02:03:04:05"),
+              addFakeOweScan(OPEN_OWE_SSID, "80:02:02:03:04:06"),
+              addFakeOpenOweTransitionScan(OPEN_OWE_SSID, "80:03:02:03:04:07")),
+    lambda : (addOpenConfig(OPEN_OWE_SSID),
+              addOweConfig(OPEN_OWE_SSID)),
+    "Open picker: select " + OPEN_OWE_SSID,
+    "Should be Open+OWE"
+  )
+
+def root() -> None:
+  subprocess.run(["adb", "root"])
+
+def settings_reset() -> None:
+  subprocess.run(["adb", "shell", "cmd", "wifi", "settings-reset"])
+
+def getSavedConfigs() -> str:
+  return subprocess.check_output(["adb", "shell", "cmd", "wifi", "list-networks"]).splitlines()
+
+def getSuggestions() -> str:
+  return subprocess.check_output(["adb", "shell", "cmd", "wifi", "list-suggestions"]).splitlines()
+
+def getScanResults() -> str:
+  return subprocess.check_output(["adb", "shell", "cmd", "wifi", "list-scan-results"]).splitlines()
+
+def startScan() -> None:
+  subprocess.run(["adb", "shell", "cmd", "wifi", "start-scan"])
+
+def startFakingScans() -> None:
+  subprocess.run(["adb", "shell", "cmd", "wifi", "start-faking-scans"])
+
+def resetFakeScans() -> None:
+  subprocess.run(["adb", "shell", "cmd", "wifi", "reset-fake-scans"])
+
+#
+# Add fake scans
+#
+
+def addFakeScan(ssid: str, bssid: str, cap: str, freq: int = 2412, dbm: int = -55) -> None:
+  subprocess.run(["adb", "shell", "cmd", "wifi", "add-fake-scan", ssid, bssid, cap, str(freq), str(dbm)])
+
+def addFakeOpenScan(ssid: str, bssid: str, freq: int = 2412, dbm: int = -55) -> None:
+  addFakeScan(ssid, bssid, "[ESS]", freq, dbm)
+
+def addFakeWpa2Scan(ssid: str, bssid: str, freq: int = 2412, dbm: int = -55) -> None:
+  addFakeScan(ssid, bssid, "[WPA2-PSK-CCMP][RSN-PSK-CCMP][ESS]", freq, dbm)
+
+def addFakeWpa3Scan(ssid: str, bssid: str, freq: int = 2412, dbm: int = -55) -> None:
+  addFakeScan(ssid, bssid, "[RSN-SAE+FT/SAE-CCMP][ESS]", freq, dbm)
+
+def addFakeOweScan(ssid: str, bssid: str, freq: int = 2412, dbm: int = -55) -> None:
+  addFakeScan(ssid, bssid, "[RSN-OWE-CCMP]", freq, dbm)
+
+def addFakeWpa2Wpa3TransitionScan(ssid: str, bssid: str, freq: int = 2412, dbm: int = -55) -> None:
+  addFakeScan(ssid, bssid, "[WPA2-PSK-CCMP][RSN-PSK+SAE-CCMP][ESS][MFPC]", freq, dbm)
+
+def addFakeOpenOweTransitionScan(ssid: str, bssid: str, freq: int = 2412, dbm: int = -55) -> None:
+  addFakeScan(ssid, bssid, "[RSN-OWE_TRANSITION-CCMP][ESS]", freq, dbm)
+
+def addFakePasspointScan(ssid: str, bssid: str, freq: int = 2412, dbm: int = -55) -> None:
+  addFakeScan(ssid, bssid, "[WPA2-EAP/SHA1-CCMP][RSN-EAP/SHA1-CCMP][ESS][MFPR][MFPC][PASSPOINT]", freq, dbm)
+
+#
+# Add configs
+#
+
+def addOpenConfig(ssid: str) -> None:
+  if not ADD_SUGGESTION_INSTEAD_OF_CONFIG:
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-network", ssid, "open"])
+  if ADD_IDENTICAL_SUGGESTION or ADD_SUGGESTION_INSTEAD_OF_CONFIG:
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-suggestion", ssid, "open"])
+
+def addOweConfig(ssid: str) -> None:
+  if not ADD_SUGGESTION_INSTEAD_OF_CONFIG:
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-network", ssid, "owe"])
+  if ADD_IDENTICAL_SUGGESTION or ADD_SUGGESTION_INSTEAD_OF_CONFIG:
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-suggestion", ssid, "owe"])
+
+def addOpenOweConfig(ssid: str) -> None:
+  if not ADD_SUGGESTION_INSTEAD_OF_CONFIG:
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-network", ssid, "open"])
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-network", ssid, "owe"])
+  if ADD_IDENTICAL_SUGGESTION or ADD_SUGGESTION_INSTEAD_OF_CONFIG:
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-suggestion", ssid, "open"])
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-suggestion", ssid, "owe"])
+
+def addWpa2Config(ssid: str) -> None:
+  if not ADD_SUGGESTION_INSTEAD_OF_CONFIG:
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-network", ssid, "wpa2", "SomePassphrase"])
+  if ADD_IDENTICAL_SUGGESTION or ADD_SUGGESTION_INSTEAD_OF_CONFIG:
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-suggestion", ssid, "wpa2", "SomePassphrase", "-s"])
+
+def addWpa3Config(ssid: str) -> None:
+  if not ADD_SUGGESTION_INSTEAD_OF_CONFIG:
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-network", ssid, "wpa3", "SomePassphrase"])
+  if ADD_IDENTICAL_SUGGESTION or ADD_SUGGESTION_INSTEAD_OF_CONFIG:
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-suggestion", ssid, "wpa3", "SomePassphrase", "-s"])
+
+def addWpa2Wpa3Config(ssid: str) -> None:
+  if not ADD_SUGGESTION_INSTEAD_OF_CONFIG:
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-network", ssid, "wpa2", "SomePassphrase"])
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-network", ssid, "wpa3", "SomePassphrase"])
+  if ADD_IDENTICAL_SUGGESTION or ADD_SUGGESTION_INSTEAD_OF_CONFIG:
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-suggestion", ssid, "wpa2", "SomePassphrase", "-s"])
+    subprocess.run(["adb", "shell", "cmd", "wifi", "add-suggestion", ssid, "wpa3", "SomePassphrase", "-s"])
+
+if __name__ == '__main__':
+    exit_code = main()
+    sys.exit(exit_code)
+
+
+
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/MergedCarrierEntryTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/MergedCarrierEntryTest.java
new file mode 100644
index 0000000..b13d60b
--- /dev/null
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/MergedCarrierEntryTest.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wifitrackerlib;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.net.NetworkInfo;
+import android.net.NetworkKey;
+import android.net.ScoredNetwork;
+import android.net.wifi.ScanResult;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.net.wifi.WifiNetworkScoreCache;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.test.TestLooper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+public class MergedCarrierEntryTest {
+    @Mock private WifiEntry.ConnectCallback mMockConnectCallback;
+    @Mock private WifiManager mMockWifiManager;
+    @Mock private WifiInfo mMockWifiInfo;
+    @Mock private NetworkInfo mMockNetworkInfo;
+    @Mock private Context mMockContext;
+    @Mock private Resources mMockResources;
+    @Mock private WifiNetworkScoreCache mMockScoreCache;
+    @Mock private ScoredNetwork mMockScoredNetwork;
+
+    private TestLooper mTestLooper;
+    private Handler mTestHandler;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mMockWifiInfo.getNetworkId()).thenReturn(WifiConfiguration.INVALID_NETWORK_ID);
+        when(mMockWifiInfo.getRssi()).thenReturn(WifiInfo.INVALID_RSSI);
+        when(mMockNetworkInfo.getDetailedState()).thenReturn(
+                NetworkInfo.DetailedState.DISCONNECTED);
+        when(mMockScoreCache.getScoredNetwork((ScanResult) any())).thenReturn(mMockScoredNetwork);
+        when(mMockScoreCache.getScoredNetwork((NetworkKey) any())).thenReturn(mMockScoredNetwork);
+        mTestLooper = new TestLooper();
+        mTestHandler = new Handler(mTestLooper.getLooper());
+        when(mMockContext.getMainLooper()).thenReturn(Looper.getMainLooper());
+        when(mMockContext.getResources()).thenReturn(mMockResources);
+        when(mMockResources.getString(R.string.wifitrackerlib_summary_separator)).thenReturn("/");
+        when(mMockResources.getText(R.string.wifitrackerlib_wifi_wont_autoconnect_for_now))
+                .thenReturn("Wi-Fi won't auto-connect for now");
+    }
+
+    @Test
+    public void testGetConnectedState_wifiInfoMatches_returnsConnected() {
+        final int subId = 1;
+        final MergedCarrierEntry entry = new MergedCarrierEntry(mTestHandler, mMockWifiManager,
+                mMockScoreCache, false, mMockContext, subId);
+        when(mMockWifiInfo.isCarrierMerged()).thenReturn(true);
+        when(mMockWifiInfo.getSubscriptionId()).thenReturn(subId);
+        when(mMockNetworkInfo.getDetailedState()).thenReturn(NetworkInfo.DetailedState.CONNECTED);
+
+        entry.updateConnectionInfo(mMockWifiInfo, mMockNetworkInfo);
+
+        assertThat(entry.getConnectedState()).isEqualTo(WifiEntry.CONNECTED_STATE_CONNECTED);
+    }
+
+    @Test
+    public void testConnect_disablesNonCarrierMergedWifi() {
+        Looper.prepare();
+        final int subId = 1;
+        final MergedCarrierEntry entry = new MergedCarrierEntry(mTestHandler, mMockWifiManager,
+                mMockScoreCache, false, mMockContext, subId);
+
+        entry.connect(mMockConnectCallback);
+        mTestLooper.dispatchAll();
+
+        verify(mMockConnectCallback)
+                .onConnectResult(WifiEntry.ConnectCallback.CONNECT_STATUS_SUCCESS);
+        verify(mMockWifiManager).startRestrictingAutoJoinToSubscriptionId(subId);
+    }
+
+    @Test
+    public void testDisconnect_enablesNonCarrierMergedWifiAndTriggersScan() {
+        final int subId = 1;
+        final MergedCarrierEntry entry = new MergedCarrierEntry(mTestHandler, mMockWifiManager,
+                mMockScoreCache, false, mMockContext, subId);
+
+        entry.disconnect(null);
+        mTestLooper.dispatchAll();
+        verify(mMockWifiManager).stopRestrictingAutoJoinToSubscriptionId();
+        verify(mMockWifiManager).startScan();
+    }
+
+    @Test
+    public void testCanConnect_cellIsDefaultRoute_returnsFalse() {
+        final int subId = 1;
+        final MergedCarrierEntry entry = new MergedCarrierEntry(mTestHandler, mMockWifiManager,
+                mMockScoreCache, false, mMockContext, subId);
+        entry.updateIsCellDefaultRoute(false);
+
+        assertThat(entry.canConnect()).isTrue();
+
+        entry.updateIsCellDefaultRoute(true);
+
+        assertThat(entry.canConnect()).isFalse();
+    }
+
+    @Test
+    public void testGetSsid_connected_returnsSanitizedWifiInfoSsid() {
+        final int subId = 1;
+        final MergedCarrierEntry entry = new MergedCarrierEntry(mTestHandler, mMockWifiManager,
+                mMockScoreCache, false, mMockContext, subId);
+        when(mMockWifiInfo.isCarrierMerged()).thenReturn(true);
+        when(mMockWifiInfo.getSubscriptionId()).thenReturn(subId);
+        final String ssid = "ssid";
+        when(mMockWifiInfo.getSSID()).thenReturn("\"" + ssid + "\"");
+        when(mMockNetworkInfo.getDetailedState()).thenReturn(NetworkInfo.DetailedState.CONNECTED);
+
+        entry.updateConnectionInfo(mMockWifiInfo, mMockNetworkInfo);
+
+        assertThat(entry.getSsid()).isEqualTo(ssid);
+    }
+}
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/NetworkDetailsTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/NetworkDetailsTrackerTest.java
index eedd1a6..ef2c003 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/NetworkDetailsTrackerTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/NetworkDetailsTrackerTest.java
@@ -17,6 +17,8 @@
 package com.android.wifitrackerlib;
 
 import static com.android.wifitrackerlib.NetworkDetailsTracker.createNetworkDetailsTracker;
+import static com.android.wifitrackerlib.StandardWifiEntry.ScanResultKey;
+import static com.android.wifitrackerlib.StandardWifiEntry.StandardWifiEntryKey;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -39,6 +41,7 @@
 
 import java.time.Clock;
 import java.util.ArrayList;
+import java.util.Collections;
 
 public class NetworkDetailsTrackerTest {
 
@@ -108,9 +111,11 @@
      * StandardWifiEntry key is passed in.
      */
     @Test
-    public void testCreateNetworkDetailsTracker_returnsStandardNetworkDetailsTracker() {
-        final NetworkDetailsTracker tracker =
-                createTestNetworkDetailsTracker(StandardWifiEntry.KEY_PREFIX + "ssid,0");
+    public void testCreateNetworkDetailsTracker_returnsStandardNetworkDetailsTracker()
+            throws Exception {
+        final NetworkDetailsTracker tracker = createTestNetworkDetailsTracker(
+                new StandardWifiEntryKey(new ScanResultKey("ssid",
+                        Collections.singletonList(WifiEntry.SECURITY_NONE))).toString());
         assertThat(tracker).isInstanceOf(StandardNetworkDetailsTracker.class);
     }
 }
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/PasspointWifiEntryTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/PasspointWifiEntryTest.java
index aa96fb8..f42b3d2 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/PasspointWifiEntryTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/PasspointWifiEntryTest.java
@@ -25,6 +25,8 @@
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
@@ -50,6 +52,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.util.Arrays;
 import java.util.Collections;
 
 public class PasspointWifiEntryTest {
@@ -64,6 +67,7 @@
     @Mock private NetworkInfo mMockNetworkInfo;
     @Mock private WifiNetworkScoreCache mMockScoreCache;
     @Mock private ScoredNetwork mMockScoredNetwork;
+    @Mock private ConnectivityManager mMockConnectivityManager;
 
     private TestLooper mTestLooper;
     private Handler mTestHandler;
@@ -72,6 +76,13 @@
 
     @Before
     public void setUp() {
+        Utils.sFeatureFlagUtilsWrapper = new Utils.FeatureFlagUtilsWrapper() {
+            @Override
+            boolean isProviderModelEnabled(Context context) {
+                return false;
+            }
+        };
+
         MockitoAnnotations.initMocks(this);
 
         mTestLooper = new TestLooper();
@@ -82,7 +93,7 @@
         when(mMockNetworkInfo.getDetailedState()).thenReturn(
                 NetworkInfo.DetailedState.DISCONNECTED);
         when(mMockContext.getResources()).thenReturn(mMockResources);
-        when(mMockResources.getString(R.string.summary_separator)).thenReturn("/");
+        when(mMockResources.getString(R.string.wifitrackerlib_summary_separator)).thenReturn("/");
         when(mMockScoreCache.getScoredNetwork((ScanResult) any())).thenReturn(mMockScoredNetwork);
         when(mMockScoreCache.getScoredNetwork((NetworkKey) any())).thenReturn(mMockScoredNetwork);
     }
@@ -92,7 +103,8 @@
         // default SubscriptionExpirationTimeInMillis is unset
         PasspointConfiguration passpointConfiguration = getPasspointConfiguration();
         String expired = "Expired";
-        when(mMockResources.getString(R.string.wifi_passpoint_expired)).thenReturn(expired);
+        when(mMockResources.getString(R.string.wifitrackerlib_wifi_passpoint_expired))
+                .thenReturn(expired);
 
         PasspointWifiEntry passpointWifiEntry = new PasspointWifiEntry(mMockContext, mTestHandler,
                 passpointConfiguration, mMockWifiManager, mMockScoreCache,
@@ -105,7 +117,8 @@
     public void testGetSummary_expired_showExpired() {
         PasspointConfiguration passpointConfiguration = getPasspointConfiguration();
         String expired = "Expired";
-        when(mMockResources.getString(R.string.wifi_passpoint_expired)).thenReturn(expired);
+        when(mMockResources.getString(R.string.wifitrackerlib_wifi_passpoint_expired))
+                .thenReturn(expired);
         PasspointWifiEntry passpointWifiEntry = new PasspointWifiEntry(mMockContext, mTestHandler,
                 passpointConfiguration, mMockWifiManager, mMockScoreCache,
                 false /* forSavedNetworksPage */);
@@ -143,8 +156,10 @@
 
         Resources mockResources = mock(Resources.class);
         when(mMockContext.getResources()).thenReturn(mockResources);
-        when(mockResources.getString(R.string.summary_separator)).thenReturn(summarySeparator);
-        when(mockResources.getStringArray(R.array.wifi_status)).thenReturn(wifiStatusArray);
+        when(mockResources.getString(R.string.wifitrackerlib_summary_separator))
+                .thenReturn(summarySeparator);
+        when(mockResources.getStringArray(R.array.wifitrackerlib_wifi_status))
+                .thenReturn(wifiStatusArray);
         ConnectivityManager mockConnectivityManager = mock(ConnectivityManager.class);
         when(mMockContext.getSystemService(Context.CONNECTIVITY_SERVICE))
                 .thenReturn(mockConnectivityManager);
@@ -168,6 +183,89 @@
     }
 
     @Test
+    public void testGetSummary_providerModelConnectedButNotDefault_doesNotShowConnected() {
+        Utils.sFeatureFlagUtilsWrapper = new Utils.FeatureFlagUtilsWrapper() {
+            @Override
+            boolean isProviderModelEnabled(Context context) {
+                return true;
+            }
+        };
+        String summarySeparator = " / ";
+        String[] wifiStatusArray = new String[]{"", "Scanning", "Connecting",
+                "Authenticating", "Obtaining IP address", "Connected"};
+
+        Resources mockResources = mock(Resources.class);
+        when(mMockContext.getResources()).thenReturn(mockResources);
+        when(mockResources.getString(R.string.wifitrackerlib_summary_separator))
+                .thenReturn(summarySeparator);
+        when(mockResources.getStringArray(R.array.wifitrackerlib_wifi_status))
+                .thenReturn(wifiStatusArray);
+        ConnectivityManager mockConnectivityManager = mock(ConnectivityManager.class);
+        when(mMockContext.getSystemService(Context.CONNECTIVITY_SERVICE))
+                .thenReturn(mockConnectivityManager);
+        final NetworkCapabilities networkCapabilities = new NetworkCapabilities.Builder()
+                .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED).build();
+        WifiInfo wifiInfo = mock(WifiInfo.class);
+        when(wifiInfo.isPasspointAp()).thenReturn(true);
+        when(wifiInfo.getPasspointFqdn()).thenReturn(FQDN);
+        NetworkInfo networkInfo =
+                new NetworkInfo(ConnectivityManager.TYPE_WIFI, 0 /* subtype */, "WIFI", "");
+        networkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, "", "");
+
+        PasspointWifiEntry entry = new PasspointWifiEntry(mMockContext, mTestHandler,
+                getPasspointConfiguration(), mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
+        entry.updateConnectionInfo(wifiInfo, networkInfo);
+        entry.updateNetworkCapabilities(networkCapabilities);
+        entry.setIsDefaultNetwork(false);
+
+        assertThat(entry.getSummary()).isEqualTo("");
+    }
+
+    @Test
+    public void testGetSecurityTypes_connectedWifiNetwork_showsCurrentSecurityType() {
+        WifiInfo wifiInfo = mock(WifiInfo.class);
+        when(wifiInfo.isPasspointAp()).thenReturn(true);
+        when(wifiInfo.getPasspointFqdn()).thenReturn(FQDN);
+        when(wifiInfo.getCurrentSecurityType()).thenReturn(WifiInfo.SECURITY_TYPE_PASSPOINT_R1_R2);
+        NetworkInfo networkInfo =
+                new NetworkInfo(ConnectivityManager.TYPE_WIFI, 0 /* subtype */, "WIFI", "");
+        networkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, "", "");
+
+        PasspointWifiEntry entry = new PasspointWifiEntry(mMockContext, mTestHandler,
+                getPasspointConfiguration(), mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
+
+        assertThat(entry.getSecurityTypes()).containsExactlyElementsIn(Arrays.asList(
+                WifiInfo.SECURITY_TYPE_PASSPOINT_R1_R2,
+                WifiInfo.SECURITY_TYPE_PASSPOINT_R3));
+
+        entry.updateConnectionInfo(wifiInfo, networkInfo);
+
+        assertThat(entry.getSecurityTypes())
+                .containsExactly(WifiInfo.SECURITY_TYPE_PASSPOINT_R1_R2);
+
+        when(wifiInfo.getCurrentSecurityType()).thenReturn(WifiInfo.SECURITY_TYPE_PASSPOINT_R3);
+        entry.updateConnectionInfo(wifiInfo, networkInfo);
+
+        assertThat(entry.getSecurityTypes()).containsExactly(WifiInfo.SECURITY_TYPE_PASSPOINT_R3);
+    }
+
+    @Test
+    public void testGetSecurityString_showsPasspoint() {
+        PasspointConfiguration passpointConfiguration = getPasspointConfiguration();
+        String passpointSecurity = "Passpoint";
+        when(mMockResources.getString(R.string.wifitrackerlib_wifi_security_passpoint))
+                .thenReturn(passpointSecurity);
+
+        PasspointWifiEntry passpointWifiEntry = new PasspointWifiEntry(mMockContext, mTestHandler,
+                passpointConfiguration, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
+
+        assertThat(passpointWifiEntry.getSecurityString(false)).isEqualTo(passpointSecurity);
+    }
+
+    @Test
     public void testShouldShowXLevelIcon_unvalidatedOrNotDefault_returnsTrue() {
         ConnectivityManager mockConnectivityManager = mock(ConnectivityManager.class);
         when(mMockContext.getSystemService(Context.CONNECTIVITY_SERVICE))
@@ -234,6 +332,8 @@
         when(mMockWifiInfo.isPasspointAp()).thenReturn(true);
         when(mMockWifiInfo.getPasspointFqdn()).thenReturn(FQDN);
         when(mMockWifiInfo.getRssi()).thenReturn(BAD_RSSI);
+        when(mMockWifiInfo.getSSID()).thenReturn("\"ssid\"");
+        when(mMockWifiInfo.getBSSID()).thenReturn("01:23:45:67:89:ab");
         PasspointWifiEntry entry = new PasspointWifiEntry(mMockContext, mTestHandler,
                 getPasspointConfiguration(), mMockWifiManager, mMockScoreCache,
                 false /* forSavedNetworksPage */);
@@ -303,4 +403,76 @@
 
         assertThat(entry.isAutoJoinEnabled()).isFalse();
     }
+
+    @Test
+    public void testCanSignIn_captivePortalCapability_returnsTrue() {
+        PasspointWifiEntry entry = new PasspointWifiEntry(mMockContext, mTestHandler,
+                getPasspointConfiguration(), mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
+
+        NetworkCapabilities captivePortalCapabilities = new NetworkCapabilities.Builder()
+                .addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL).build();
+        entry.updateNetworkCapabilities(captivePortalCapabilities);
+
+        assertThat(entry.canSignIn()).isTrue();
+    }
+
+    @Test
+    public void testUpdateNetworkCapabilities_userConnect_autoOpenCaptivePortalOnce() {
+        when(mMockContext.getSystemService(Context.CONNECTIVITY_SERVICE))
+                .thenReturn(mMockConnectivityManager);
+        PasspointWifiEntry entry = new PasspointWifiEntry(mMockContext, mTestHandler,
+                getPasspointConfiguration(), mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
+        NetworkCapabilities captivePortalCapabilities = new NetworkCapabilities.Builder()
+                .addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL).build();
+
+        // Simulate user tapping on the network and receiving captive portal capabilities.
+        // This should trigger the captive portal app.
+        entry.connect(null /* callback */);
+        entry.updateNetworkCapabilities(captivePortalCapabilities);
+
+        verify(mMockConnectivityManager, times(1)).startCaptivePortalApp(any());
+
+        // Update network capabilities again. This should not trigger the captive portal app.
+        entry.updateNetworkCapabilities(captivePortalCapabilities);
+
+        verify(mMockConnectivityManager, times(1)).startCaptivePortalApp(any());
+    }
+
+    @Test
+    public void testDisconnect_noScansOrWifiConfig_disconnectIsSuccessful() {
+        // Setup a connected PasspointWifiEntry
+        String summarySeparator = " / ";
+        String[] wifiStatusArray = new String[]{"", "Scanning", "Connecting",
+                "Authenticating", "Obtaining IP address", "Connected"};
+        Resources mockResources = mock(Resources.class);
+        when(mMockContext.getResources()).thenReturn(mockResources);
+        when(mockResources.getString(R.string.wifitrackerlib_summary_separator))
+                .thenReturn(summarySeparator);
+        when(mockResources.getStringArray(R.array.wifitrackerlib_wifi_status))
+                .thenReturn(wifiStatusArray);
+        ConnectivityManager mockConnectivityManager = mock(ConnectivityManager.class);
+        when(mMockContext.getSystemService(Context.CONNECTIVITY_SERVICE))
+                .thenReturn(mockConnectivityManager);
+        final NetworkCapabilities networkCapabilities = new NetworkCapabilities.Builder()
+                .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED).build();
+        WifiInfo wifiInfo = mock(WifiInfo.class);
+        when(wifiInfo.isPasspointAp()).thenReturn(true);
+        when(wifiInfo.getPasspointFqdn()).thenReturn(FQDN);
+        NetworkInfo networkInfo =
+                new NetworkInfo(ConnectivityManager.TYPE_WIFI, 0 /* subtype */, "WIFI", "");
+        networkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, "", "");
+        PasspointWifiEntry entry = new PasspointWifiEntry(mMockContext, mTestHandler,
+                getPasspointConfiguration(), mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
+        entry.updateConnectionInfo(wifiInfo, networkInfo);
+        entry.updateNetworkCapabilities(networkCapabilities);
+
+        // Disconnect the entry before it can be updated with scans and a WifiConfiguration
+        entry.disconnect(null);
+
+        verify(mMockWifiManager).disableEphemeralNetwork(FQDN);
+        verify(mMockWifiManager).disconnect();
+    }
 }
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/SavedNetworkTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/SavedNetworkTrackerTest.java
index f78900d..89482b1 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/SavedNetworkTrackerTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/SavedNetworkTrackerTest.java
@@ -31,7 +31,9 @@
 import android.content.Intent;
 import android.net.ConnectivityManager;
 import android.net.NetworkScoreManager;
+import android.net.wifi.ScanResult;
 import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.net.wifi.hotspot2.PasspointConfiguration;
 import android.net.wifi.hotspot2.pps.Credential;
@@ -51,6 +53,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.List;
 import java.util.stream.Collectors;
 
 public class SavedNetworkTrackerTest {
@@ -102,6 +105,9 @@
         mTestLooper = new TestLooper();
 
         when(mMockWifiManager.getScanResults()).thenReturn(new ArrayList<>());
+        when(mMockWifiManager.isWpa3SaeSupported()).thenReturn(true);
+        when(mMockWifiManager.isWpa3SuiteBSupported()).thenReturn(true);
+        when(mMockWifiManager.isEnhancedOpenSupported()).thenReturn(true);
         when(mMockClock.millis()).thenReturn(START_MILLIS);
         when(mMockContext.getSystemService(Context.NETWORK_SCORE_SERVICE))
                 .thenReturn(mMockNetworkScoreManager);
@@ -214,7 +220,7 @@
     }
 
     /**
-     * Tests that a CONFIGURED_NETWORKS_CHANGED broadcast with CHANGE_REASON_ADDED
+     * Tests that a CONFIGURED_NETWORKS_CHANGED broadcast after adding a config
      * adds the corresponding WifiEntry from getSavedWifiEntries().
      */
     @Test
@@ -227,12 +233,11 @@
 
         assertThat(savedNetworkTracker.getSavedWifiEntries()).isEmpty();
 
+        final WifiConfiguration config = buildWifiConfiguration("ssid");
+        when(mMockWifiManager.getConfiguredNetworks())
+                .thenReturn(Collections.singletonList(config));
         mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
-                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION)
-                        .putExtra(WifiManager.EXTRA_WIFI_CONFIGURATION,
-                                buildWifiConfiguration("ssid"))
-                        .putExtra(WifiManager.EXTRA_CHANGE_REASON,
-                                WifiManager.CHANGE_REASON_ADDED));
+                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION));
 
         assertThat(savedNetworkTracker.getSavedWifiEntries().stream()
                 .filter(entry -> entry.mForSavedNetworksPage)
@@ -241,7 +246,7 @@
     }
 
     /**
-     * Tests that a CONFIGURED_NETWORKS_CHANGED broadcast with CHANGE_REASON_REMOVED
+     * Tests that a CONFIGURED_NETWORKS_CHANGED broadcast after removing a config
      * removes the corresponding WifiEntry from getSavedWifiEntries().
      */
     @Test
@@ -257,11 +262,10 @@
 
         assertThat(savedNetworkTracker.getSavedWifiEntries()).hasSize(1);
 
+        when(mMockWifiManager.getConfiguredNetworks())
+                .thenReturn(Collections.emptyList());
         mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
-                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION)
-                        .putExtra(WifiManager.EXTRA_WIFI_CONFIGURATION, config)
-                        .putExtra(WifiManager.EXTRA_CHANGE_REASON,
-                                WifiManager.CHANGE_REASON_REMOVED));
+                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION));
 
         assertThat(savedNetworkTracker.getSavedWifiEntries()).isEmpty();
     }
@@ -336,4 +340,106 @@
         assertThat(savedNetworkTracker.getSubscriptionWifiEntries().get(0).getTitle())
                 .isEqualTo("friendlyName");
     }
+
+    @Test
+    public void testGetSavedNetworks_splitConfigs_entriesMergedBySecurityFamily() {
+        final String ssid = "ssid";
+        WifiConfiguration openConfig = buildWifiConfiguration(ssid);
+        openConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN);
+        openConfig.networkId = 1;
+        WifiConfiguration oweConfig = buildWifiConfiguration(ssid);
+        oweConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OWE);
+        oweConfig.networkId = 1;
+        WifiConfiguration wepConfig = buildWifiConfiguration(ssid);
+        wepConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_WEP);
+        wepConfig.wepKeys = new String[]{"key"};
+        wepConfig.networkId = 2;
+        WifiConfiguration pskConfig = buildWifiConfiguration(ssid);
+        pskConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK);
+        pskConfig.networkId = 3;
+        WifiConfiguration saeConfig = buildWifiConfiguration(ssid);
+        saeConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE);
+        saeConfig.networkId = 3;
+        WifiConfiguration eapConfig = buildWifiConfiguration(ssid);
+        eapConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
+        eapConfig.networkId = 4;
+        WifiConfiguration eapWpa3Config = buildWifiConfiguration(ssid);
+        eapWpa3Config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
+        eapWpa3Config.networkId = 4;
+        WifiConfiguration eapWpa3SuiteBConfig = buildWifiConfiguration(ssid);
+        eapWpa3SuiteBConfig.setSecurityParams(
+                WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT);
+        eapWpa3SuiteBConfig.networkId = 5;
+        when(mMockWifiManager.getConfiguredNetworks()).thenReturn(Arrays.asList(
+                openConfig, oweConfig, wepConfig, pskConfig, saeConfig, eapConfig, eapWpa3Config,
+                eapWpa3SuiteBConfig
+        ));
+        final SavedNetworkTracker savedNetworkTracker = createTestSavedNetworkTracker();
+        savedNetworkTracker.onStart();
+        mTestLooper.dispatchAll();
+
+        final List<WifiEntry> savedWifiEntries = savedNetworkTracker.getSavedWifiEntries();
+        assertThat(savedWifiEntries.size()).isEqualTo(5);
+        assertThat(savedWifiEntries.stream()
+                .map(entry -> entry.getSecurityTypes())
+                .collect(Collectors.toList()))
+                .containsExactly(
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_OPEN, WifiInfo.SECURITY_TYPE_OWE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_WEP),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_PSK, WifiInfo.SECURITY_TYPE_SAE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_EAP,
+                                WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT));
+    }
+
+    /**
+     * Tests that entries with configs that have scans matching the security family but NOT the
+     * actual configs on hand will ignore the scans and be returned as saved with the configs.
+     */
+    @Test
+    public void testGetSavedNetworks_mismatchedScans_returnsCorrectEntries() {
+        // Set up scans for Open, PSK, WPA2-Enterprise
+        final ArrayList scanList = new ArrayList();
+        final String ssid = "ssid";
+        final String bssid = "bssid";
+        int bssidNum = 0;
+        for (String capabilities : Arrays.asList(
+                "",
+                "[PSK]",
+                "[EAP/SHA1]"
+        )) {
+            final ScanResult scan = buildScanResult(ssid, bssid + bssidNum++, START_MILLIS);
+            scan.capabilities = capabilities;
+            scanList.add(scan);
+        }
+        when(mMockWifiManager.getScanResults()).thenReturn(scanList);
+        // Set up configs for OWE, SAE, WPA3-Enterprise
+        WifiConfiguration oweConfig = buildWifiConfiguration(ssid);
+        oweConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OWE);
+        oweConfig.networkId = 1;
+        WifiConfiguration saeConfig = buildWifiConfiguration(ssid);
+        saeConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE);
+        saeConfig.networkId = 2;
+        WifiConfiguration eapWpa3Config = buildWifiConfiguration(ssid);
+        eapWpa3Config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
+        eapWpa3Config.networkId = 3;
+        when(mMockWifiManager.getConfiguredNetworks())
+                .thenReturn(Arrays.asList(oweConfig, saeConfig, eapWpa3Config));
+
+        final SavedNetworkTracker savedNetworkTracker = createTestSavedNetworkTracker();
+        savedNetworkTracker.onStart();
+        mTestLooper.dispatchAll();
+
+        // Entries should appear correctly in the saved entry list with the security type of their
+        // configs, ignoring the scans present.
+        final List<WifiEntry> savedWifiEntries = savedNetworkTracker.getSavedWifiEntries();
+        assertThat(savedWifiEntries.size()).isEqualTo(3);
+        assertThat(savedWifiEntries.stream()
+                .map(entry -> entry.getSecurityTypes())
+                .collect(Collectors.toList()))
+                .containsExactly(
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_OWE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_SAE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE));
+    }
 }
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardNetworkDetailsTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardNetworkDetailsTrackerTest.java
index 964a900..ef124ad 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardNetworkDetailsTrackerTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardNetworkDetailsTrackerTest.java
@@ -16,8 +16,12 @@
 
 package com.android.wifitrackerlib;
 
-import static com.android.wifitrackerlib.StandardWifiEntry.ssidAndSecurityToStandardWifiEntryKey;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_PSK;
+
+import static com.android.wifitrackerlib.StandardWifiEntry.StandardWifiEntryKey;
+import static com.android.wifitrackerlib.StandardWifiEntry.ssidAndSecurityTypeToStandardWifiEntryKey;
 import static com.android.wifitrackerlib.TestUtils.buildScanResult;
+import static com.android.wifitrackerlib.TestUtils.buildWifiConfiguration;
 import static com.android.wifitrackerlib.WifiEntry.SECURITY_NONE;
 import static com.android.wifitrackerlib.WifiEntry.WIFI_LEVEL_UNREACHABLE;
 
@@ -34,6 +38,7 @@
 import android.net.NetworkScoreManager;
 import android.net.wifi.ScanResult;
 import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.os.Handler;
 import android.os.test.TestLooper;
@@ -75,7 +80,8 @@
     private final ArgumentCaptor<BroadcastReceiver> mBroadcastReceiverCaptor =
             ArgumentCaptor.forClass(BroadcastReceiver.class);
 
-    private StandardNetworkDetailsTracker createTestStandardNetworkDetailsTracker(String key) {
+    private StandardNetworkDetailsTracker createTestStandardNetworkDetailsTracker(
+            String key) {
         final Handler testHandler = new Handler(mTestLooper.getLooper());
 
         return new StandardNetworkDetailsTracker(mMockLifecycle, mMockContext,
@@ -96,6 +102,9 @@
 
         mTestLooper = new TestLooper();
 
+        when(mMockWifiManager.isWpa3SaeSupported()).thenReturn(true);
+        when(mMockWifiManager.isWpa3SuiteBSupported()).thenReturn(true);
+        when(mMockWifiManager.isEnhancedOpenSupported()).thenReturn(true);
         when(mMockWifiManager.getScanResults()).thenReturn(new ArrayList<>());
         when(mMockWifiManager.getWifiState()).thenReturn(WifiManager.WIFI_STATE_ENABLED);
         when(mMockClock.millis()).thenReturn(START_MILLIS);
@@ -107,22 +116,26 @@
      * Tests that the key of the created WifiEntry matches the key passed into the constructor.
      */
     @Test
-    public void testGetWifiEntry_HasCorrectKey() {
-        final String key = ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE);
+    public void testGetWifiEntry_HasCorrectKey() throws Exception {
+        final StandardWifiEntryKey key =
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_NONE);
 
-        final StandardNetworkDetailsTracker tracker = createTestStandardNetworkDetailsTracker(key);
+        final StandardNetworkDetailsTracker tracker =
+                createTestStandardNetworkDetailsTracker(key.toString());
 
-        assertThat(tracker.getWifiEntry().getKey()).isEqualTo(key);
+        assertThat(tracker.getWifiEntry().getKey()).isEqualTo(key.toString());
     }
 
     /**
      * Tests that SCAN_RESULTS_AVAILABLE_ACTION updates the level of the entry.
      */
     @Test
-    public void testHandleOnStart_scanResultUpdaterUpdateCorrectly() {
+    public void testHandleOnStart_scanResultUpdaterUpdateCorrectly() throws Exception {
         final ScanResult chosen = buildScanResult("ssid", "bssid", START_MILLIS);
-        final String key = ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE);
-        final StandardNetworkDetailsTracker tracker = createTestStandardNetworkDetailsTracker(key);
+        final StandardWifiEntryKey key =
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_NONE);
+        final StandardNetworkDetailsTracker tracker =
+                createTestStandardNetworkDetailsTracker(key.toString());
         final ScanResult other = buildScanResult("ssid2", "bssid", START_MILLIS, -50 /* rssi */);
         when(mMockWifiManager.getScanResults()).thenReturn(Collections.singletonList(other));
 
@@ -138,11 +151,13 @@
      * Tests that SCAN_RESULTS_AVAILABLE_ACTION updates the level of the entry.
      */
     @Test
-    public void testScanResultsAvailableAction_updates_getLevel() {
+    public void testScanResultsAvailableAction_updates_getLevel() throws Exception {
         // Starting without any scans available should make level WIFI_LEVEL_UNREACHABLE
         final ScanResult scan = buildScanResult("ssid", "bssid", START_MILLIS, -50 /* rssi */);
-        final String key = ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE);
-        final StandardNetworkDetailsTracker tracker = createTestStandardNetworkDetailsTracker(key);
+        final StandardWifiEntryKey key =
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_NONE);
+        final StandardNetworkDetailsTracker tracker =
+                createTestStandardNetworkDetailsTracker(key.toString());
 
         tracker.onStart();
         verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(),
@@ -176,10 +191,12 @@
      * Tests that CONFIGURED_NETWORKS_CHANGED_ACTION updates the isSaved() value of the entry.
      */
     @Test
-    public void testConfiguredNetworksChangedAction_updates_isSaved() {
+    public void testConfiguredNetworksChangedAction_updates_isSaved() throws Exception {
         // Initialize with no config. isSaved() should return false.
-        final String key = ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE);
-        final StandardNetworkDetailsTracker tracker = createTestStandardNetworkDetailsTracker(key);
+        final StandardWifiEntryKey key =
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_NONE);
+        final StandardNetworkDetailsTracker tracker =
+                createTestStandardNetworkDetailsTracker(key.toString());
 
         tracker.onStart();
         verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(),
@@ -189,24 +206,21 @@
 
         assertThat(wifiEntry.isSaved()).isFalse();
 
-        // Add a config via broadcast. isSaved() should return true.
+        // Add a config and send a broadcast. isSaved() should return true.
         final WifiConfiguration config = new WifiConfiguration();
         config.SSID = "\"" + "ssid" + "\"";
-
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks())
+                .thenReturn(Collections.singletonList(config));
         mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
-                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION)
-                        .putExtra(WifiManager.EXTRA_WIFI_CONFIGURATION, config)
-                        .putExtra(WifiManager.EXTRA_CHANGE_REASON,
-                                WifiManager.CHANGE_REASON_ADDED));
+                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION));
 
         assertThat(wifiEntry.isSaved()).isTrue();
 
-        // Remove the config via broadcast. isSaved() should be false.
+        // Remove the config and send a broadcast. isSaved() should be false.
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks())
+                .thenReturn(Collections.emptyList());
         mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
-                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION)
-                        .putExtra(WifiManager.EXTRA_WIFI_CONFIGURATION, config)
-                        .putExtra(WifiManager.EXTRA_CHANGE_REASON,
-                                WifiManager.CHANGE_REASON_REMOVED));
+                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION));
 
         assertThat(wifiEntry.isSaved()).isFalse();
     }
@@ -216,13 +230,15 @@
      * the scan results are still valid.
      */
     @Test
-    public void testWifiStateChanged_disabled_clearsLevel() {
+    public void testWifiStateChanged_disabled_clearsLevel() throws Exception {
         // Start with scan result and wifi state enabled. Level should not be unreachable.
         final ScanResult scan = buildScanResult("ssid", "bssid", START_MILLIS, -50 /* rssi */);
-        final String key = ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE);
+        final StandardWifiEntryKey key =
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_NONE);
         when(mMockWifiManager.getScanResults()).thenReturn(Collections.singletonList(scan));
 
-        final StandardNetworkDetailsTracker tracker = createTestStandardNetworkDetailsTracker(key);
+        final StandardNetworkDetailsTracker tracker =
+                createTestStandardNetworkDetailsTracker(key.toString());
         tracker.onStart();
         verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(),
                 any(), any(), any());
@@ -239,4 +255,42 @@
 
         assertThat(wifiEntry.getLevel()).isEqualTo(WIFI_LEVEL_UNREACHABLE);
     }
+
+    @Test
+    public void testSecurityTargeting_pskScansWithSaeConfig_correspondsToNewNetworkTargeting() {
+        final String ssid = "ssid";
+        final WifiConfiguration config = buildWifiConfiguration(ssid);
+        config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE);
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks())
+                .thenReturn(Collections.singletonList(config));
+        final ScanResult scan = buildScanResult(ssid, "bssid", START_MILLIS, -50 /* rssi */);
+        scan.capabilities = "[PSK]";
+        when(mMockWifiManager.getScanResults()).thenReturn(Collections.singletonList(scan));
+
+        // Start without targeting new networks
+        StandardNetworkDetailsTracker tracker = createTestStandardNetworkDetailsTracker(
+                ssidAndSecurityTypeToStandardWifiEntryKey(ssid, SECURITY_TYPE_PSK).toString());
+        tracker.onStart();
+        mTestLooper.dispatchAll();
+
+        // WifiEntry should correspond to the saved config
+        WifiEntry wifiEntry = tracker.getWifiEntry();
+//        assertThat(wifiEntry.getSecurityTypes().size()).isEqualTo(1);
+        assertThat(wifiEntry.getSecurityTypes().get(0)).isEqualTo(WifiInfo.SECURITY_TYPE_SAE);
+        assertThat(wifiEntry.getLevel()).isEqualTo(WIFI_LEVEL_UNREACHABLE);
+
+        // Now target new networks as if we got the key from WifiPickerTracker
+        tracker = createTestStandardNetworkDetailsTracker(
+                ssidAndSecurityTypeToStandardWifiEntryKey(ssid, SECURITY_TYPE_PSK,
+                        true /* isTargetingNewNetworks */).toString());
+        tracker.onStart();
+        mTestLooper.dispatchAll();
+
+        // WifiEntry should correspond to the unsaved scan
+        wifiEntry = tracker.getWifiEntry();
+//        assertThat(wifiEntry.getSecurityTypes().size()).isEqualTo(1);
+        assertThat(wifiEntry.getSecurityTypes().get(0)).isEqualTo(SECURITY_TYPE_PSK);
+        assertThat(wifiEntry.getLevel()).isNotEqualTo(WIFI_LEVEL_UNREACHABLE);
+
+    }
 }
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java
index e9194f3..80aad2a 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java
@@ -21,18 +21,19 @@
 import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.DISABLED_BY_WRONG_PASSWORD;
 import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_PERMANENTLY_DISABLED;
 import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_TEMPORARY_DISABLED;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_EAP;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_OPEN;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_OWE;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_PSK;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_SAE;
+import static android.net.wifi.WifiInfo.SECURITY_TYPE_WEP;
 
-import static com.android.wifitrackerlib.StandardWifiEntry.ssidAndSecurityToStandardWifiEntryKey;
-import static com.android.wifitrackerlib.StandardWifiEntry.wifiConfigToStandardWifiEntryKey;
+import static com.android.wifitrackerlib.StandardWifiEntry.ScanResultKey;
+import static com.android.wifitrackerlib.StandardWifiEntry.StandardWifiEntryKey;
+import static com.android.wifitrackerlib.StandardWifiEntry.ssidAndSecurityTypeToStandardWifiEntryKey;
 import static com.android.wifitrackerlib.TestUtils.buildScanResult;
 import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_CONNECTED;
 import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_DISCONNECTED;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_EAP;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_NONE;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_OWE;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_PSK;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_SAE;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_WEP;
 import static com.android.wifitrackerlib.WifiEntry.SPEED_FAST;
 import static com.android.wifitrackerlib.WifiEntry.SPEED_SLOW;
 import static com.android.wifitrackerlib.WifiEntry.WIFI_LEVEL_UNREACHABLE;
@@ -74,10 +75,10 @@
 
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 
@@ -107,6 +108,13 @@
 
     @Before
     public void setUp() {
+        Utils.sFeatureFlagUtilsWrapper = new Utils.FeatureFlagUtilsWrapper() {
+            @Override
+            boolean isProviderModelEnabled(Context context) {
+                return false;
+            }
+        };
+
         MockitoAnnotations.initMocks(this);
 
         mTestLooper = new TestLooper();
@@ -116,6 +124,9 @@
         when(mMockWifiInfo.getRssi()).thenReturn(WifiInfo.INVALID_RSSI);
         when(mMockNetworkInfo.getDetailedState()).thenReturn(
                 NetworkInfo.DetailedState.DISCONNECTED);
+        when(mMockWifiManager.isWpa3SaeSupported()).thenReturn(true);
+        when(mMockWifiManager.isEnhancedOpenSupported()).thenReturn(true);
+        when(mMockWifiManager.isWpa3SuiteBSupported()).thenReturn(true);
         when(mMockWifiManager.calculateSignalLevel(GOOD_RSSI))
                 .thenReturn(GOOD_LEVEL);
         when(mMockWifiManager.calculateSignalLevel(OKAY_RSSI))
@@ -132,30 +143,14 @@
     }
 
     /**
-     * Tests that constructing with an empty list of scans throws an exception
-     */
-    @Test
-    public void testConstructor_emptyScanList_throwsException() {
-        try {
-            new StandardWifiEntry(mMockContext, mTestHandler,
-                    ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                    new ArrayList<>(), mMockWifiManager, mMockScoreCache,
-                    false /* forSavedNetworksPage */);
-            fail("Empty scan list should have thrown exception");
-        } catch (IllegalArgumentException e) {
-            // Test succeeded
-        }
-    }
-
-    /**
      * Tests that constructing with a list of scans with differing SSIDs throws an exception
      */
     @Test
     public void testConstructor_mismatchedSsids_throwsException() {
         try {
             new StandardWifiEntry(mMockContext, mTestHandler,
-                    ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                    Arrays.asList(
+                    ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                    null, Arrays.asList(
                             buildScanResult("ssid0", "bssid0", 0, GOOD_RSSI),
                             buildScanResult("ssid1", "bssid1", 0, GOOD_RSSI)),
                     mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
@@ -171,8 +166,8 @@
     @Test
     public void testConstructor_scanResults_setsBestLevel() {
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                Arrays.asList(
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                null, Arrays.asList(
                         buildScanResult("ssid", "bssid0", 0, GOOD_RSSI),
                         buildScanResult("ssid", "bssid1", 0, OKAY_RSSI),
                         buildScanResult("ssid", "bssid2", 0, BAD_RSSI)),
@@ -182,21 +177,24 @@
     }
 
     /**
-     * Tests that the security is set to the security capabilities of the scan
+     * Tests that the security is set to the security capabilities of the scan results if
+     * the entry is targeting new networks.
      */
     @Test
-    public void testConstructor_scanResults_setsSecurity() {
+    public void testConstructor_targetingNewSecurity_scanResultsSetSecurity() {
         final ScanResult unsecureScan = buildScanResult("ssid", "bssid", 0, GOOD_RSSI);
         final ScanResult secureScan = buildScanResult("ssid", "bssid", 0, GOOD_RSSI);
-        secureScan.capabilities = "EAP";
+        secureScan.capabilities = "EAP/SHA1";
 
         final StandardWifiEntry unsecureEntry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                Arrays.asList(unsecureScan), mMockWifiManager, mMockScoreCache,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN,
+                        true /* isTargetingNewNetworks */),
+                null, Arrays.asList(unsecureScan), mMockWifiManager, mMockScoreCache,
                 false /* forSavedNetworksPage */);
         final StandardWifiEntry secureEntry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                Arrays.asList(secureScan), mMockWifiManager, mMockScoreCache,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP,
+                        true /* isTargetingNewNetworks */),
+                null, Arrays.asList(secureScan), mMockWifiManager, mMockScoreCache,
                 false /* forSavedNetworksPage */);
 
         assertThat(unsecureEntry.getSecurity()).isEqualTo(WifiEntry.SECURITY_NONE);
@@ -209,8 +207,8 @@
     @Test
     public void testUpdateScanResultInfo_mismatchedSsids_throwsException() {
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid0", SECURITY_EAP),
-                Arrays.asList(buildScanResult("ssid0", "bssid0", 0, GOOD_RSSI)),
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid0", SECURITY_TYPE_EAP),
+                null, Arrays.asList(buildScanResult("ssid0", "bssid0", 0, GOOD_RSSI)),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
 
         try {
@@ -228,8 +226,8 @@
     @Test
     public void testUpdateScanResultInfo_notifiesListener() {
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                Arrays.asList(buildScanResult("ssid", "bssid", 0)),
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                null, Arrays.asList(buildScanResult("ssid", "bssid", 0)),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
         entry.setListener(mMockListener);
 
@@ -245,8 +243,8 @@
     @Test
     public void testUpdateScanResultInfo_updatesLevel() {
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                Arrays.asList(buildScanResult("ssid", "bssid", 0, BAD_RSSI)),
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                null, Arrays.asList(buildScanResult("ssid", "bssid", 0, BAD_RSSI)),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
 
         assertThat(entry.getLevel()).isEqualTo(BAD_LEVEL);
@@ -262,8 +260,9 @@
         config.SSID = "\"ssid\"";
         config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                config, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Collections.singletonList(config), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
 
         assertThat(entry.getTitle()).isEqualTo("ssid");
     }
@@ -274,8 +273,9 @@
         config.SSID = "\"ssid\"";
         config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                config, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Collections.singletonList(config), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
 
         assertThat(entry.getSecurity()).isEqualTo(WifiEntry.SECURITY_EAP);
     }
@@ -286,13 +286,14 @@
         config.SSID = "\"ssid\"";
         config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                config, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Collections.singletonList(config), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
 
         final WifiConfiguration config2 = new WifiConfiguration(config);
         config2.SSID = "\"ssid2\"";
         try {
-            entry.updateConfig(config2);
+            entry.updateConfig(Collections.singletonList(config2));
             fail("Updating with wrong SSID config should throw exception");
         } catch (IllegalArgumentException e) {
             // Test Succeeded
@@ -303,15 +304,16 @@
     public void testUpdateConfig_mismatchedSecurity_throwsException() {
         final WifiConfiguration config = new WifiConfiguration();
         config.SSID = "\"ssid\"";
-        config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_WEP);
+        config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK);
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_WEP),
-                config, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_PSK),
+                Collections.singletonList(config), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
 
         final WifiConfiguration config2 = new WifiConfiguration(config);
         config2.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
         try {
-            entry.updateConfig(config2);
+            entry.updateConfig(Collections.singletonList(config2));
             fail("Updating with wrong security config should throw exception");
         } catch (IllegalArgumentException e) {
             // Test Succeeded
@@ -321,10 +323,10 @@
     @Test
     public void testUpdateConfig_unsavedToSaved() {
         final ScanResult scan = buildScanResult("ssid", "bssid", 0, GOOD_RSSI);
-        scan.capabilities = "EAP";
+        scan.capabilities = "EAP/SHA1";
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                Arrays.asList(scan), mMockWifiManager, mMockScoreCache,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                null, Arrays.asList(scan), mMockWifiManager, mMockScoreCache,
                 false /* forSavedNetworksPage */);
 
         assertThat(entry.isSaved()).isFalse();
@@ -333,7 +335,7 @@
         config.SSID = "\"ssid\"";
         config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
         config.networkId = 1;
-        entry.updateConfig(config);
+        entry.updateConfig(Collections.singletonList(config));
 
         assertThat(entry.isSaved()).isTrue();
     }
@@ -345,8 +347,9 @@
         config.SSID = "\"ssid\"";
         config.networkId = 1;
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                config, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Collections.singletonList(config), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
 
         assertThat(entry.isSaved()).isTrue();
 
@@ -362,8 +365,9 @@
         config.SSID = "\"ssid\"";
         config.networkId = 1;
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                config, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Collections.singletonList(config), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
         when(mMockWifiInfo.getNetworkId()).thenReturn(1);
         when(mMockWifiInfo.getRssi()).thenReturn(GOOD_RSSI);
         when(mMockNetworkInfo.getDetailedState()).thenReturn(NetworkInfo.DetailedState.CONNECTED);
@@ -381,8 +385,9 @@
         config.SSID = "\"ssid\"";
         config.networkId = 1;
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                config, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Collections.singletonList(config), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
         when(mMockWifiInfo.getNetworkId()).thenReturn(2);
         when(mMockWifiInfo.getRssi()).thenReturn(-50);
         when(mMockNetworkInfo.getDetailedState()).thenReturn(NetworkInfo.DetailedState.CONNECTED);
@@ -397,13 +402,13 @@
     public void testConnect_savedNetwork_usesSavedConfig() {
         final ScanResult scan = buildScanResult("ssid", "bssid", 0, GOOD_RSSI);
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                Arrays.asList(scan), mMockWifiManager, mMockScoreCache,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                null, Arrays.asList(scan), mMockWifiManager, mMockScoreCache,
                 false /* forSavedNetworksPage */);
         final WifiConfiguration config = new WifiConfiguration();
         config.SSID = "\"ssid\"";
         config.networkId = 1;
-        entry.updateConfig(config);
+        entry.updateConfig(Collections.singletonList(config));
 
         entry.connect(null /* ConnectCallback */);
 
@@ -411,10 +416,33 @@
     }
 
     @Test
+    public void testConnect_savedNetwork_usesSavedConfig_withOutSim() {
+        final ScanResult scan = buildScanResult("ssid", "bssid", 0, GOOD_RSSI);
+        final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                null, Arrays.asList(scan), mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
+        final WifiConfiguration config = new WifiConfiguration();
+        config.SSID = "\"ssid\"";
+        config.networkId = 1;
+        config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
+        config.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.SIM);
+        config.enterpriseConfig.setPhase2Method(WifiEnterpriseConfig.Phase2.NONE);
+        entry.updateConfig(Collections.singletonList(config));
+        when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(null);
+
+        entry.setListener(mMockListener);
+        entry.connect(mMockConnectCallback);
+        mTestLooper.dispatchAll();
+        verify(mMockConnectCallback, times(1))
+                .onConnectResult(WifiEntry.ConnectCallback.CONNECT_STATUS_FAILURE_SIM_ABSENT);
+    }
+
+    @Test
     public void testConnect_openNetwork_callsConnect() {
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                Arrays.asList(buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                null, Arrays.asList(buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
 
         entry.connect(null /* ConnectCallback */);
@@ -427,8 +455,8 @@
         final ScanResult secureScan = buildScanResult("ssid", "bssid0", 0, GOOD_RSSI);
         secureScan.capabilities = "PSK";
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_PSK),
-                Arrays.asList(secureScan), mMockWifiManager, mMockScoreCache,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_PSK),
+                null, Arrays.asList(secureScan), mMockWifiManager, mMockScoreCache,
                 false /* forSavedNetworksPage */);
         entry.setListener(mMockListener);
 
@@ -446,14 +474,15 @@
         config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
         config.SSID = "\"ssid\"";
         config.networkId = 1;
-        config.macRandomizationSetting = WifiConfiguration.RANDOMIZATION_PERSISTENT;
+        config.macRandomizationSetting = WifiConfiguration.RANDOMIZATION_AUTO;
         WifiConfiguration spyConfig = spy(config);
         when(spyConfig.getRandomizedMacAddress())
                 .thenReturn(MacAddress.fromString(randomizedMac));
 
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                spyConfig, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Collections.singletonList(spyConfig), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
 
         final String macAddress = entry.getMacAddress();
 
@@ -470,8 +499,9 @@
         config.macRandomizationSetting = WifiConfiguration.RANDOMIZATION_NONE;
         when(mMockWifiManager.getFactoryMacAddresses()).thenReturn(new String[]{factoryMac});
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                config, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Collections.singletonList(config), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
 
         final String macAddress = entry.getMacAddress();
 
@@ -496,8 +526,9 @@
         config.macRandomizationSetting = WifiConfiguration.RANDOMIZATION_NONE;
         when(mMockWifiManager.getFactoryMacAddresses()).thenReturn(new String[]{factoryMac});
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE), config,
-                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                Collections.singletonList(config), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
 
         entry.updateConnectionInfo(mMockWifiInfo, networkInfo);
 
@@ -529,7 +560,8 @@
         final StandardWifiEntry eapWifiEntry =
                 getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_EAP);
         final StandardWifiEntry eapSuiteBWifiEntry =
-                getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B);
+                getSavedStandardWifiEntry(
+                        WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT);
 
         assertThat(eapWifiEntry.canShare()).isFalse();
         assertThat(eapSuiteBWifiEntry.canShare()).isFalse();
@@ -542,8 +574,8 @@
         pskScanResult.capabilities = "PSK";
 
         final StandardWifiEntry pskWifiEntry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey(pskScanResult.SSID, SECURITY_PSK),
-                Arrays.asList(pskScanResult), mMockWifiManager, mMockScoreCache,
+                ssidAndSecurityTypeToStandardWifiEntryKey(pskScanResult.SSID, SECURITY_TYPE_PSK),
+                null, Arrays.asList(pskScanResult), mMockWifiManager, mMockScoreCache,
                 false /* forSavedNetworksPage */);
 
         assertThat(pskWifiEntry.canEasyConnect()).isFalse();
@@ -571,7 +603,8 @@
         final StandardWifiEntry wpa2EnterpriseWifiEntry =
                 getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_EAP);
         final StandardWifiEntry wpa3EnterpriseWifiEntry =
-                getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B);
+                getSavedStandardWifiEntry(
+                        WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT);
         final StandardWifiEntry oweWifiEntry =
                 getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_OWE);
 
@@ -589,8 +622,9 @@
         config.SSID = "\"ssid\"";
         config.networkId = 1;
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                config, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Collections.singletonList(config), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
         when(mMockWifiInfo.getNetworkId()).thenReturn(1);
         when(mMockWifiInfo.getRssi()).thenReturn(GOOD_RSSI);
         when(mMockNetworkInfo.getDetailedState()).thenReturn(NetworkInfo.DetailedState.CONNECTED);
@@ -606,8 +640,8 @@
         config.SSID = "\"ssid\"";
         config.setSecurityParams(wifiConfigurationSecureType);
         return new StandardWifiEntry(mMockContext, mTestHandler,
-                wifiConfigToStandardWifiEntryKey(config),
-                config, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                new StandardWifiEntryKey(config), Collections.singletonList(config), null,
+                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
     }
 
     @Test
@@ -619,8 +653,10 @@
 
         final Resources mockResources = mock(Resources.class);
         when(mMockContext.getResources()).thenReturn(mockResources);
-        when(mockResources.getString(R.string.summary_separator)).thenReturn(summarySeparator);
-        when(mockResources.getStringArray(R.array.wifi_status)).thenReturn(wifiStatusArray);
+        when(mockResources.getString(R.string.wifitrackerlib_summary_separator))
+                .thenReturn(summarySeparator);
+        when(mockResources.getStringArray(R.array.wifitrackerlib_wifi_status))
+                .thenReturn(wifiStatusArray);
         final ConnectivityManager mockConnectivityManager = mock(ConnectivityManager.class);
         final NetworkCapabilities networkCapabilities = new NetworkCapabilities.Builder()
                 .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED).build();
@@ -636,8 +672,9 @@
         config.SSID = "\"ssid\"";
         config.networkId = networkId;
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE), config,
-                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                Collections.singletonList(config), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
 
         entry.updateConnectionInfo(wifiInfo, networkInfo);
         entry.updateNetworkCapabilities(networkCapabilities);
@@ -647,6 +684,51 @@
     }
 
     @Test
+    public void testGetSummary_providerModelConnectedButNotDefault_doesNotShowConnected() {
+        Utils.sFeatureFlagUtilsWrapper = new Utils.FeatureFlagUtilsWrapper() {
+            @Override
+            boolean isProviderModelEnabled(Context context) {
+                return true;
+            }
+        };
+        final int networkId = 1;
+        final String summarySeparator = " / ";
+        final String[] wifiStatusArray = new String[]{"", "Scanning", "Connecting",
+                "Authenticating", "Obtaining IP address", "Connected"};
+
+        final Resources mockResources = mock(Resources.class);
+        when(mMockContext.getResources()).thenReturn(mockResources);
+        when(mockResources.getString(R.string.wifitrackerlib_summary_separator))
+                .thenReturn(summarySeparator);
+        when(mockResources.getStringArray(R.array.wifitrackerlib_wifi_status))
+                .thenReturn(wifiStatusArray);
+        final ConnectivityManager mockConnectivityManager = mock(ConnectivityManager.class);
+        final NetworkCapabilities networkCapabilities = new NetworkCapabilities.Builder()
+                .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED).build();
+        when(mMockContext.getSystemService(Context.CONNECTIVITY_SERVICE))
+                .thenReturn(mockConnectivityManager);
+
+        final WifiInfo wifiInfo = new WifiInfo.Builder().setNetworkId(networkId).build();
+        final NetworkInfo networkInfo =
+                new NetworkInfo(ConnectivityManager.TYPE_WIFI, 0 /* subtype */, "WIFI", "");
+        networkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, "", "");
+
+        final WifiConfiguration config = new WifiConfiguration();
+        config.SSID = "\"ssid\"";
+        config.networkId = networkId;
+        final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                Collections.singletonList(config), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
+
+        entry.updateConnectionInfo(wifiInfo, networkInfo);
+        entry.updateNetworkCapabilities(networkCapabilities);
+        entry.setIsDefaultNetwork(false);
+
+        assertThat(entry.getSummary()).isEqualTo("");
+    }
+
+    @Test
     public void testShouldShowXLevelIcon_unvalidatedOrNotDefault_returnsTrue() {
         final int networkId = 1;
         when(mMockContext.getSystemService(Context.CONNECTIVITY_SERVICE))
@@ -662,8 +744,9 @@
         config.networkId = networkId;
 
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE), config,
-                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                Collections.singletonList(config), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
 
         // Disconnected should return false;
         assertThat(entry.shouldShowXLevelIcon()).isEqualTo(false);
@@ -690,38 +773,110 @@
     }
 
     @Test
-    public void testGetSecurityString_pskTypeWpa2_getWpa2() {
-        final StandardWifiEntry entry =
-                getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_PSK);
-        final ScanResult bestScanResult = buildScanResult("ssid", "bssid", 0, GOOD_RSSI);
-        bestScanResult.capabilities = "RSN-PSK";
-        final String wifiSecurityShortWpa2Wpa3 = "WPA2/WPA3";
+    public void testGetSecurityString_pskAndSae_getWpaWpa2Wpa3Personal() {
+        final String wifiSecurityShortWpaWpa2Wpa3 = "WPA/WPA2/WPA3";
         final Resources mockResources = mock(Resources.class);
         when(mMockContext.getResources()).thenReturn(mockResources);
-        when(mockResources.getString(R.string.wifi_security_short_wpa2_wpa3))
-                .thenReturn(wifiSecurityShortWpa2Wpa3);
+        when(mockResources.getString(R.string.wifitrackerlib_wifi_security_short_wpa_wpa2_wpa3))
+                .thenReturn(wifiSecurityShortWpaWpa2Wpa3);
 
-        entry.updateScanResultInfo(Arrays.asList(bestScanResult));
+        WifiConfiguration pskConfig = new WifiConfiguration();
+        pskConfig.SSID = "\"ssid\"";
+        pskConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK);
+        WifiConfiguration saeConfig = new WifiConfiguration();
+        saeConfig.SSID = "\"ssid\"";
+        saeConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE);
+
+        ScanResult pskScan = buildScanResult("ssid", "bssid0", 0, GOOD_RSSI);
+        pskScan.capabilities = "PSK";
+        ScanResult saeScan = buildScanResult("ssid", "bssid0", 0, BAD_RSSI);
+        saeScan.capabilities = "SAE";
+
+        StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_PSK),
+                Arrays.asList(pskConfig, saeConfig), Arrays.asList(pskScan, saeScan),
+                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
 
         assertThat(entry.getSecurityString(true /* concise */))
-                .isEqualTo(wifiSecurityShortWpa2Wpa3);
+                .isEqualTo(wifiSecurityShortWpaWpa2Wpa3);
     }
 
     @Test
-    public void testGetSecurityString_eapTypeWpa_getWpa() {
-        final StandardWifiEntry entry =
-                getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_EAP);
-        final ScanResult bestScanResult = buildScanResult("ssid", "bssid", 0, GOOD_RSSI);
-        bestScanResult.capabilities = "WPA-EAP";
-        final String wifiSecurityEapWpa = "WPA-Enterprise";
+    public void testGetSecurityString_connected_getConnectionSecurityType() {
+        final String wifiSecurityShortWpaWpa2 = "WPA/WPA2";
+        final String wifiSecurityShortWpa3 = "WPA3";
         final Resources mockResources = mock(Resources.class);
         when(mMockContext.getResources()).thenReturn(mockResources);
-        when(mockResources.getString(R.string.wifi_security_eap_wpa))
-                .thenReturn(wifiSecurityEapWpa);
+        when(mockResources.getString(R.string.wifitrackerlib_wifi_security_short_wpa_wpa2))
+                .thenReturn(wifiSecurityShortWpaWpa2);
+        when(mockResources.getString(R.string.wifitrackerlib_wifi_security_short_sae))
+                .thenReturn(wifiSecurityShortWpa3);
 
-        entry.updateScanResultInfo(Arrays.asList(bestScanResult));
+        WifiConfiguration pskConfig = new WifiConfiguration();
+        pskConfig.networkId = 1;
+        pskConfig.SSID = "\"ssid\"";
+        pskConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK);
+        WifiConfiguration saeConfig = new WifiConfiguration();
+        saeConfig.networkId = 1;
+        saeConfig.SSID = "\"ssid\"";
+        saeConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE);
 
-        assertThat(entry.getSecurityString(false /* concise */)).isEqualTo(wifiSecurityEapWpa);
+        ScanResult pskScan = buildScanResult("ssid", "bssid0", 0, GOOD_RSSI);
+        pskScan.capabilities = "PSK";
+        ScanResult saeScan = buildScanResult("ssid", "bssid0", 0, BAD_RSSI);
+        saeScan.capabilities = "SAE";
+
+        when(mMockWifiInfo.getNetworkId()).thenReturn(1);
+        when(mMockWifiInfo.getRssi()).thenReturn(GOOD_RSSI);
+        when(mMockNetworkInfo.getDetailedState()).thenReturn(NetworkInfo.DetailedState.CONNECTED);
+
+        StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_PSK),
+                Arrays.asList(pskConfig, saeConfig), Arrays.asList(pskScan, saeScan),
+                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+
+        when(mMockWifiInfo.getCurrentSecurityType()).thenReturn(SECURITY_TYPE_PSK);
+        entry.updateConnectionInfo(mMockWifiInfo, mMockNetworkInfo);
+
+        // Both PSK and SAE in range, but connected to PSK so show PSK security string
+        assertThat(entry.getSecurityString(true /* concise */))
+                .isEqualTo(wifiSecurityShortWpaWpa2);
+
+        when(mMockWifiInfo.getCurrentSecurityType()).thenReturn(SECURITY_TYPE_SAE);
+        entry.updateConnectionInfo(mMockWifiInfo, mMockNetworkInfo);
+
+        // Both PSK and SAE in range, but connected to SAE so show SAE security string
+        assertThat(entry.getSecurityString(true /* concise */))
+                .isEqualTo(wifiSecurityShortWpa3);
+    }
+
+    @Test
+    public void testGetSecurityString_eapAndEapWpa3_getWpaWpa2Wpa3Enterprise() {
+        final String wifiSecurityEapWpaWpa2Wpa3 = "WPA/WPA2/WPA3-Enterprise";
+        final Resources mockResources = mock(Resources.class);
+        when(mMockContext.getResources()).thenReturn(mockResources);
+        when(mockResources.getString(R.string.wifitrackerlib_wifi_security_short_eap_wpa_wpa2_wpa3))
+                .thenReturn(wifiSecurityEapWpaWpa2Wpa3);
+
+        WifiConfiguration eapConfig = new WifiConfiguration();
+        eapConfig.SSID = "\"ssid\"";
+        eapConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
+        WifiConfiguration eapWpa3Config = new WifiConfiguration();
+        eapWpa3Config.SSID = "\"ssid\"";
+        eapWpa3Config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
+
+        final ScanResult eapScan = buildScanResult("ssid", "bssid", 0, GOOD_RSSI);
+        eapScan.capabilities = "[RSN-EAP/SHA1]";
+        final ScanResult eapWpa3Scan = buildScanResult("ssid", "bssid", 0, GOOD_RSSI);
+        eapWpa3Scan.capabilities = "[RSN-EAP/SHA256][MFPR][MFPC]";
+
+        StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Arrays.asList(eapConfig, eapWpa3Config), Arrays.asList(eapScan, eapWpa3Scan),
+                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+
+        assertThat(entry.getSecurityString(true /* concise */))
+                .isEqualTo(wifiSecurityEapWpaWpa2Wpa3);
     }
 
     @Test
@@ -737,12 +892,12 @@
     @Test
     public void testCanSignIn_captivePortalCapability_returnsTrue() {
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                Arrays.asList(
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                null, Arrays.asList(
                         buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
-        NetworkCapabilities captivePortalCapabilities = new NetworkCapabilities();
-        captivePortalCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL);
+        NetworkCapabilities captivePortalCapabilities = new NetworkCapabilities.Builder()
+                .addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL).build();
         entry.updateNetworkCapabilities(captivePortalCapabilities);
 
         assertThat(entry.canSignIn()).isTrue();
@@ -753,12 +908,12 @@
         when(mMockContext.getSystemService(Context.CONNECTIVITY_SERVICE))
                 .thenReturn(mMockConnectivityManager);
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                Arrays.asList(
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                null, Arrays.asList(
                         buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
-        NetworkCapabilities captivePortalCapabilities = new NetworkCapabilities();
-        captivePortalCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL);
+        NetworkCapabilities captivePortalCapabilities = new NetworkCapabilities.Builder()
+                .addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL).build();
 
         // Simulate user tapping on the network and receiving captive portal capabilities.
         // This should trigger the captive portal app.
@@ -776,7 +931,7 @@
     @Test
     public void testShouldEditBeforeConnect_nullWifiConfig_returnFalse() {
         StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
 
         assertThat(entry.shouldEditBeforeConnect()).isFalse();
@@ -789,16 +944,18 @@
         wifiConfig.SSID = "\"ssid\"";
         wifiConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN);
         StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                wifiConfig, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                Collections.singletonList(wifiConfig), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
 
         assertThat(entry.shouldEditBeforeConnect()).isFalse();
 
         // Test enhanced open networks.
         wifiConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OWE);
         entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_OWE),
-                wifiConfig, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OWE),
+                Collections.singletonList(wifiConfig), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
 
         assertThat(entry.shouldEditBeforeConnect()).isFalse();
     }
@@ -810,8 +967,9 @@
         wifiConfig.SSID = "\"ssid\"";
         wifiConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK);
         StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_PSK),
-                wifiConfig, mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_PSK),
+                Collections.singletonList(wifiConfig), null, mMockWifiManager, mMockScoreCache,
+                false /* forSavedNetworksPage */);
         NetworkSelectionStatus.Builder statusBuilder = new NetworkSelectionStatus.Builder();
         NetworkSelectionStatus networkSelectionStatus = spy(statusBuilder.setNetworkSelectionStatus(
                 NETWORK_SELECTION_TEMPORARY_DISABLED)
@@ -850,8 +1008,8 @@
     public void testGetSpeed_cacheUpdated_speedValueChanges() {
         when(mMockScoredNetwork.calculateBadge(GOOD_RSSI)).thenReturn(SPEED_FAST);
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                Collections.singletonList(buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                null, Collections.singletonList(buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
 
         when(mMockScoredNetwork.calculateBadge(GOOD_RSSI)).thenReturn(SPEED_SLOW);
@@ -866,14 +1024,16 @@
         when(mMockScoredNetwork.calculateBadge(GOOD_RSSI)).thenReturn(SPEED_FAST);
         when(mMockWifiInfo.getNetworkId()).thenReturn(1);
         when(mMockWifiInfo.getRssi()).thenReturn(BAD_RSSI);
+        when(mMockWifiInfo.getSSID()).thenReturn("\"ssid\"");
+        when(mMockWifiInfo.getBSSID()).thenReturn("01:23:45:67:89:ab");
         final WifiConfiguration config = new WifiConfiguration();
         config.SSID = "\"ssid\"";
         config.networkId = 1;
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE), config,
-                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
-        entry.updateScanResultInfo(Collections.singletonList(
-                buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)));
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                Collections.singletonList(config), Collections.singletonList(
+                        buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)), mMockWifiManager,
+                mMockScoreCache, false /* forSavedNetworksPage */);
 
         entry.updateConnectionInfo(mMockWifiInfo, mMockNetworkInfo);
 
@@ -885,8 +1045,8 @@
         when(mMockScoredNetwork.calculateBadge(BAD_RSSI)).thenReturn(SPEED_SLOW);
         when(mMockScoredNetwork.calculateBadge(GOOD_RSSI)).thenReturn(SPEED_FAST);
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                Collections.singletonList(buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                null, Collections.singletonList(buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
 
         entry.updateScanResultInfo(Collections.singletonList(
@@ -897,41 +1057,46 @@
 
     @Test
     public void testCanConnect_nonEapMethod_returnTrueIfReachable() {
+        ScanResult scan = buildScanResult("ssid", "bssid0", 0, GOOD_RSSI);
         StandardWifiEntry spyEntry = spy(new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_NONE),
-                Arrays.asList(buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN),
+                null, Arrays.asList(buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */));
         when(spyEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED);
 
         assertThat(spyEntry.canConnect()).isEqualTo(true);
 
+        scan.capabilities = "OWE";
         spyEntry = spy(new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_OWE),
-                Arrays.asList(buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OWE),
+                null, Collections.singletonList(scan),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */));
         when(spyEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED);
 
         assertThat(spyEntry.canConnect()).isEqualTo(true);
 
+        scan.capabilities = "WEP";
         spyEntry = spy(new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_WEP),
-                Arrays.asList(buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_WEP),
+                null, Collections.singletonList(scan),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */));
         when(spyEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED);
 
         assertThat(spyEntry.canConnect()).isEqualTo(true);
 
+        scan.capabilities = "PSK";
         spyEntry = spy(new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_PSK),
-                Arrays.asList(buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_PSK),
+                null, Collections.singletonList(scan),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */));
         when(spyEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED);
 
         assertThat(spyEntry.canConnect()).isEqualTo(true);
 
+        scan.capabilities = "SAE";
         spyEntry = spy(new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_SAE),
-                Arrays.asList(buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)),
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_SAE),
+                null, Collections.singletonList(scan),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */));
         when(spyEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED);
 
@@ -940,17 +1105,18 @@
 
     @Test
     public void testCanConnect_nonSimMethod_returnTrueIfReachable() {
-        WifiConfiguration mockWifiConfiguration = mock(WifiConfiguration.class);
-        mockWifiConfiguration.SSID = "\"ssid\"";
+        WifiConfiguration config = new WifiConfiguration();
+        config.SSID = "\"ssid\"";
         WifiEnterpriseConfig mockWifiEnterpriseConfig = mock(WifiEnterpriseConfig.class);
         when(mockWifiEnterpriseConfig.isAuthenticationSimBased()).thenReturn(false);
-        mockWifiConfiguration.enterpriseConfig = mockWifiEnterpriseConfig;
+        config.enterpriseConfig = mockWifiEnterpriseConfig;
+        config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
+        ScanResult scan = buildScanResult("ssid", "bssid0", 0, GOOD_RSSI);
+        scan.capabilities = "EAP/SHA1";
         StandardWifiEntry spyEntry = spy(new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                mockWifiConfiguration,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Collections.singletonList(config), Collections.singletonList(scan),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */));
-        spyEntry.updateScanResultInfo(Arrays.asList(
-                buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)));
         when(spyEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED);
 
         assertThat(spyEntry.canConnect()).isEqualTo(true);
@@ -958,18 +1124,19 @@
 
     @Test
     public void testCanConnect_unknownCarrierId_returnTrueIfActiveSubscriptionAvailable() {
-        WifiConfiguration mockWifiConfiguration = mock(WifiConfiguration.class);
-        mockWifiConfiguration.SSID = "\"ssid\"";
-        mockWifiConfiguration.carrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
+        WifiConfiguration config = new WifiConfiguration();
+        config.SSID = "\"ssid\"";
+        config.carrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
         WifiEnterpriseConfig mockWifiEnterpriseConfig = mock(WifiEnterpriseConfig.class);
         when(mockWifiEnterpriseConfig.isAuthenticationSimBased()).thenReturn(true);
-        mockWifiConfiguration.enterpriseConfig = mockWifiEnterpriseConfig;
+        config.enterpriseConfig = mockWifiEnterpriseConfig;
+        config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
+        ScanResult scan = buildScanResult("ssid", "bssid0", 0, GOOD_RSSI);
+        scan.capabilities = "EAP/SHA1";
         StandardWifiEntry spyEntry = spy(new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                mockWifiConfiguration,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Collections.singletonList(config), Collections.singletonList(scan),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */));
-        spyEntry.updateScanResultInfo(Arrays.asList(
-                buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)));
         when(spyEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED);
         when(mSubscriptionManager.getActiveSubscriptionInfoList())
                 .thenReturn(Arrays.asList(mock(SubscriptionInfo.class)));
@@ -979,19 +1146,20 @@
 
     @Test
     public void testCanConnect_specifiedCarrierIdMatched_returnTrue() {
-        WifiConfiguration mockWifiConfiguration = mock(WifiConfiguration.class);
-        mockWifiConfiguration.SSID = "\"ssid\"";
+        WifiConfiguration config = new WifiConfiguration();
+        config.SSID = "\"ssid\"";
         int carrierId = 6;
-        mockWifiConfiguration.carrierId = carrierId;
+        config.carrierId = carrierId;
         WifiEnterpriseConfig mockWifiEnterpriseConfig = mock(WifiEnterpriseConfig.class);
         when(mockWifiEnterpriseConfig.isAuthenticationSimBased()).thenReturn(true);
-        mockWifiConfiguration.enterpriseConfig = mockWifiEnterpriseConfig;
+        config.enterpriseConfig = mockWifiEnterpriseConfig;
+        config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
+        ScanResult scan = buildScanResult("ssid", "bssid0", 0, GOOD_RSSI);
+        scan.capabilities = "EAP/SHA1";
         StandardWifiEntry spyEntry = spy(new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                mockWifiConfiguration,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Collections.singletonList(config), Collections.singletonList(scan),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */));
-        spyEntry.updateScanResultInfo(Arrays.asList(
-                buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)));
         when(spyEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED);
         SubscriptionInfo mockSubscriptionInfo = mock(SubscriptionInfo.class);
         when(mockSubscriptionInfo.getCarrierId()).thenReturn(carrierId);
@@ -1003,20 +1171,21 @@
 
     @Test
     public void testCanConnect_specifiedCarrierIdNotMatched_returnFalse() {
-        WifiConfiguration mockWifiConfiguration = mock(WifiConfiguration.class);
-        mockWifiConfiguration.SSID = "\"ssid\"";
+        WifiConfiguration config = new WifiConfiguration();
+        config.SSID = "\"ssid\"";
         int specifiedCarrierId = 6;
         int simCarrierId = 7;
-        mockWifiConfiguration.carrierId = specifiedCarrierId;
+        config.carrierId = specifiedCarrierId;
         WifiEnterpriseConfig mockWifiEnterpriseConfig = mock(WifiEnterpriseConfig.class);
         when(mockWifiEnterpriseConfig.isAuthenticationSimBased()).thenReturn(true);
-        mockWifiConfiguration.enterpriseConfig = mockWifiEnterpriseConfig;
+        config.enterpriseConfig = mockWifiEnterpriseConfig;
+        config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
+        ScanResult scan = buildScanResult("ssid", "bssid0", 0, GOOD_RSSI);
+        scan.capabilities = "EAP/SHA1";
         StandardWifiEntry spyEntry = spy(new StandardWifiEntry(mMockContext, mTestHandler,
-                ssidAndSecurityToStandardWifiEntryKey("ssid", SECURITY_EAP),
-                mockWifiConfiguration,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP),
+                Collections.singletonList(config), Collections.singletonList(scan),
                 mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */));
-        spyEntry.updateScanResultInfo(Arrays.asList(
-                buildScanResult("ssid", "bssid0", 0, GOOD_RSSI)));
         when(spyEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED);
         SubscriptionInfo mockSubscriptionInfo = mock(SubscriptionInfo.class);
         when(mockSubscriptionInfo.getCarrierId()).thenReturn(simCarrierId);
@@ -1025,4 +1194,182 @@
 
         assertThat(spyEntry.canConnect()).isEqualTo(false);
     }
+
+
+    @Test
+    public void testStandardWifiEntryKeyConstructor_fromConfig_matchesFromScanResultKey() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.SSID = "\"ssid\"";
+        config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN);
+        assertThat(new StandardWifiEntryKey(config, true /* isTargetingNewNetworks */))
+                .isEqualTo(new StandardWifiEntryKey(
+                        new ScanResultKey(config), true /* isTargetingNewNetworks */));
+    }
+
+    @Test
+    public void testStandardWifiEntryKey_toAndFromJson_matches() throws Exception {
+        WifiConfiguration mockConfig = spy(new WifiConfiguration());
+        mockConfig.SSID = "\"ssid\"";
+        when(mockConfig.getProfileKey()).thenReturn("profileKey");
+        mockConfig.fromWifiNetworkSpecifier = true;
+        final StandardWifiEntryKey entryKey = new StandardWifiEntryKey(
+                mockConfig, true /* isTargetingNewNetworks */);
+
+        assertThat(new StandardWifiEntryKey(entryKey.toString())).isEqualTo(entryKey);
+    }
+
+    @Test
+    public void testGetLevel_multipleSecurities_configAndScansMatch() {
+        WifiConfiguration pskConfig = new WifiConfiguration();
+        pskConfig.SSID = "\"ssid\"";
+        pskConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK);
+        WifiConfiguration saeConfig = new WifiConfiguration();
+        saeConfig.SSID = "\"ssid\"";
+        saeConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE);
+
+        ScanResult pskScan = buildScanResult("ssid", "bssid0", 0, GOOD_RSSI);
+        pskScan.capabilities = "PSK";
+        ScanResult saeScan = buildScanResult("ssid", "bssid0", 0, BAD_RSSI);
+        saeScan.capabilities = "SAE";
+        StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_PSK,
+                        true /* isTargetingNewNetwork */),
+                Collections.singletonList(pskConfig), Arrays.asList(pskScan, saeScan),
+                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+
+        // Only PSK config, so use PSK scan level
+        assertThat(entry.getLevel()).isEqualTo(GOOD_LEVEL);
+        assertThat(entry.isSaved()).isTrue();
+
+        entry.updateConfig(Collections.singletonList(saeConfig));
+
+        // Only SAE config, so use SAE scan level
+        assertThat(entry.getLevel()).isEqualTo(BAD_LEVEL);
+        assertThat(entry.isSaved()).isTrue();
+
+        entry.updateScanResultInfo(Collections.singletonList(pskScan));
+
+        // SAE config and PSK scan do not match, so entry is unsaved with PSK scan level
+        assertThat(entry.getLevel()).isEqualTo(GOOD_LEVEL);
+        assertThat(entry.isSaved()).isFalse();
+    }
+
+    @Test
+    public void testConnect_unsavedOpen_configuresOpenNetwork() {
+        ScanResult openScan = buildScanResult("ssid", "bssid0", 0, GOOD_RSSI);
+        openScan.capabilities = "";
+        StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN,
+                        true /* isTargetingNewNetworks */),
+                null, Collections.singletonList(openScan),
+                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+        ArgumentCaptor<WifiConfiguration> connectConfigCaptor =
+                ArgumentCaptor.forClass(WifiConfiguration.class);
+
+        entry.connect(null);
+        verify(mMockWifiManager).connect(connectConfigCaptor.capture(), any());
+
+        assertThat(Utils.getSecurityTypesFromWifiConfiguration(connectConfigCaptor.getValue()))
+                .isEqualTo(Collections.singletonList(SECURITY_TYPE_OPEN));
+    }
+
+    @Test
+    public void testConnect_unsavedOwe_configuresOweNetwork() {
+        ScanResult oweScan = buildScanResult("ssid", "bssid0", 0, BAD_RSSI);
+        oweScan.capabilities = "OWE";
+        StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OWE,
+                        true /* isTargetingNewNetworks */),
+                null, Collections.singletonList(oweScan),
+                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+        ArgumentCaptor<WifiConfiguration> connectConfigCaptor =
+                ArgumentCaptor.forClass(WifiConfiguration.class);
+
+        entry.connect(null);
+        verify(mMockWifiManager).connect(connectConfigCaptor.capture(), any());
+
+        assertThat(Utils.getSecurityTypesFromWifiConfiguration(connectConfigCaptor.getValue()))
+                .isEqualTo(Collections.singletonList(SECURITY_TYPE_OWE));
+    }
+
+    @Test
+    public void testConnect_unsavedOpenOwe_configuresOweAndOpenNetwork() {
+        ScanResult oweTransitionScan = buildScanResult("ssid", "bssid0", 0, BAD_RSSI);
+        oweTransitionScan.capabilities = "OWE_TRANSITION";
+        StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN,
+                        true /* isTargetingNewNetworks */),
+                null, Collections.singletonList(oweTransitionScan),
+                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+        ArgumentCaptor<WifiConfiguration> connectConfigCaptor =
+                ArgumentCaptor.forClass(WifiConfiguration.class);
+        ArgumentCaptor<WifiConfiguration> savedConfigCaptor =
+                ArgumentCaptor.forClass(WifiConfiguration.class);
+
+        entry.connect(null);
+        verify(mMockWifiManager).connect(connectConfigCaptor.capture(), any());
+        verify(mMockWifiManager).save(savedConfigCaptor.capture(), any());
+
+        assertThat(Utils.getSecurityTypesFromWifiConfiguration(connectConfigCaptor.getValue()))
+                .isEqualTo(Collections.singletonList(SECURITY_TYPE_OWE));
+        assertThat(Utils.getSecurityTypesFromWifiConfiguration(savedConfigCaptor.getValue()))
+                .isEqualTo(Collections.singletonList(SECURITY_TYPE_OPEN));
+    }
+
+    @Test
+    public void testGetSecurity_openAndOwe_returnsOpen() {
+        WifiConfiguration openConfig = new WifiConfiguration();
+        openConfig.SSID = "\"ssid\"";
+        openConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN);
+        WifiConfiguration oweConfig = new WifiConfiguration();
+        oweConfig.SSID = "\"ssid\"";
+        oweConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OWE);
+
+        StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN,
+                        true /* isTargetingNewNetwork */),
+                Arrays.asList(openConfig, oweConfig), null,
+                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+
+        assertThat(entry.getSecurity()).isEqualTo(WifiEntry.SECURITY_NONE);
+        assertThat(entry.getWifiConfiguration()).isEqualTo(openConfig);
+    }
+
+    @Test
+    public void testGetSecurity_pskAndSae_returnsPsk() {
+        WifiConfiguration pskConfig = new WifiConfiguration();
+        pskConfig.SSID = "\"ssid\"";
+        pskConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK);
+        WifiConfiguration saeConfig = new WifiConfiguration();
+        saeConfig.SSID = "\"ssid\"";
+        saeConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE);
+
+        StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_PSK,
+                        true /* isTargetingNewNetwork */),
+                Arrays.asList(pskConfig, saeConfig), null,
+                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+
+        assertThat(entry.getSecurity()).isEqualTo(WifiEntry.SECURITY_PSK);
+        assertThat(entry.getWifiConfiguration()).isEqualTo(pskConfig);
+    }
+
+    @Test
+    public void testGetSecurity_eapAndEapWpa3_returnsEap() {
+        WifiConfiguration eapConfig = new WifiConfiguration();
+        eapConfig.SSID = "\"ssid\"";
+        eapConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
+        WifiConfiguration eapWpa3Config = new WifiConfiguration();
+        eapWpa3Config.SSID = "\"ssid\"";
+        eapWpa3Config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
+
+        StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
+                ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP,
+                        true /* isTargetingNewNetwork */),
+                Arrays.asList(eapConfig, eapWpa3Config), null,
+                mMockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+
+        assertThat(entry.getSecurity()).isEqualTo(WifiEntry.SECURITY_EAP);
+        assertThat(entry.getWifiConfiguration()).isEqualTo(eapConfig);
+    }
 }
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/UtilsTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/UtilsTest.java
index b009ac0..73137fe 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/UtilsTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/UtilsTest.java
@@ -16,8 +16,7 @@
 
 package com.android.wifitrackerlib;
 
-import static com.android.wifitrackerlib.StandardWifiEntry.ssidAndSecurityToStandardWifiEntryKey;
-import static com.android.wifitrackerlib.StandardWifiEntry.wifiConfigToStandardWifiEntryKey;
+import static com.android.wifitrackerlib.StandardWifiEntry.StandardWifiEntryKey;
 import static com.android.wifitrackerlib.TestUtils.buildScanResult;
 import static com.android.wifitrackerlib.Utils.getAutoConnectDescription;
 import static com.android.wifitrackerlib.Utils.getBestScanResultByLevel;
@@ -25,17 +24,19 @@
 import static com.android.wifitrackerlib.Utils.getImsiProtectionDescription;
 import static com.android.wifitrackerlib.Utils.getMeteredDescription;
 import static com.android.wifitrackerlib.Utils.getNetworkSelectionDescription;
+import static com.android.wifitrackerlib.Utils.getSecurityTypesFromScanResult;
+import static com.android.wifitrackerlib.Utils.getSecurityTypesFromWifiConfiguration;
 import static com.android.wifitrackerlib.Utils.getSubIdForConfig;
 import static com.android.wifitrackerlib.Utils.isImsiPrivacyProtectionProvided;
 import static com.android.wifitrackerlib.Utils.isSimPresent;
 import static com.android.wifitrackerlib.Utils.linkifyAnnotation;
-import static com.android.wifitrackerlib.Utils.mapScanResultsToKey;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_NONE;
-import static com.android.wifitrackerlib.WifiEntry.SECURITY_PSK;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
@@ -76,8 +77,8 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 
 @Config(shadows = {ShadowSystem.class})
 public class UtilsTest {
@@ -145,57 +146,12 @@
     }
 
     @Test
-    public void testMapScanResultsToKey_filtersUnsupportedCapabilities() {
-        final ScanResult wpa3SaeScan = new ScanResult();
-        final ScanResult wpa3SuiteBScan = new ScanResult();
-        final ScanResult oweScan = new ScanResult();
-        wpa3SaeScan.SSID = "wpa3Sae";
-        wpa3SaeScan.capabilities = "[SAE]";
-        wpa3SuiteBScan.SSID = "wpa3SuiteB";
-        wpa3SuiteBScan.capabilities = "[EAP_SUITE_B_192]";
-        oweScan.SSID = "owe";
-        oweScan.capabilities = "[OWE]";
-
-        final Map<String, List<ScanResult>> scanResultsByKey = mapScanResultsToKey(
-                Arrays.asList(wpa3SaeScan, wpa3SuiteBScan, oweScan),
-                false /* chooseSingleSecurity */,
-                null /* wifiConfigsByKey */,
-                false /* isWpa3SaeSupported */,
-                false /* isWpa3SuiteBSupported */,
-                false /* isEnhancedOpenSupported */);
-
-        assertThat(scanResultsByKey).isEmpty();
-    }
-
-    @Test
-    public void testMapScanResultsToKey_convertsTransitionModeScansToSupportedSecurity() {
-        final ScanResult wpa3TransitionScan = new ScanResult();
-        final ScanResult oweTransitionScan = new ScanResult();
-        wpa3TransitionScan.SSID = "wpa3Transition";
-        wpa3TransitionScan.capabilities = "[PSK+SAE]";
-        oweTransitionScan.SSID = "owe";
-        oweTransitionScan.capabilities = "[OWE_TRANSITION]";
-
-        final Map<String, List<ScanResult>> scanResultsByKey = mapScanResultsToKey(
-                Arrays.asList(wpa3TransitionScan, oweTransitionScan),
-                false /* chooseSingleSecurity */,
-                null /* wifiConfigsByKey */,
-                false /* isWpa3SaeSupported */,
-                false /* isWpa3SuiteBSupported */,
-                false /* isEnhancedOpenSupported */);
-
-        assertThat(scanResultsByKey.keySet()).containsExactly(
-                ssidAndSecurityToStandardWifiEntryKey(wpa3TransitionScan.SSID, SECURITY_PSK),
-                ssidAndSecurityToStandardWifiEntryKey(oweTransitionScan.SSID, SECURITY_NONE));
-    }
-
-    @Test
     public void testGetAutoConnectDescription_autoJoinEnabled_returnEmptyString() {
         final WifiConfiguration config = new WifiConfiguration();
         config.SSID = "\"ssid\"";
         config.allowAutojoin = true;
         final StandardWifiEntry entry = getStandardWifiEntry(config);
-        when(mMockResources.getString(R.string.auto_connect_disable))
+        when(mMockResources.getString(R.string.wifitrackerlib_auto_connect_disable))
                 .thenReturn(LABEL_AUTO_CONNECTION_DISABLED);
 
         final String autoConnectDescription = getAutoConnectDescription(mMockContext, entry);
@@ -209,7 +165,7 @@
         config.SSID = "\"ssid\"";
         config.allowAutojoin = false;
         final StandardWifiEntry entry = getStandardWifiEntry(config);
-        when(mMockResources.getString(R.string.auto_connect_disable))
+        when(mMockResources.getString(R.string.wifitrackerlib_auto_connect_disable))
                 .thenReturn(LABEL_AUTO_CONNECTION_DISABLED);
 
         final String autoConnectDescription = getAutoConnectDescription(mMockContext, entry);
@@ -236,7 +192,8 @@
         config.SSID = "\"ssid\"";
         config.meteredOverride = WifiConfiguration.METERED_OVERRIDE_METERED;
         final StandardWifiEntry entry = getStandardWifiEntry(config);
-        when(mMockResources.getString(R.string.wifi_metered_label)).thenReturn(LABEL_METERED);
+        when(mMockResources.getString(R.string.wifitrackerlib_wifi_metered_label))
+                .thenReturn(LABEL_METERED);
 
         final String meteredDescription = getMeteredDescription(mMockContext, entry);
 
@@ -251,7 +208,8 @@
         config.meteredHint = true;
         config.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NONE;
         final StandardWifiEntry entry = getStandardWifiEntry(config);
-        when(mMockResources.getString(R.string.wifi_metered_label)).thenReturn(LABEL_METERED);
+        when(mMockResources.getString(R.string.wifitrackerlib_wifi_metered_label))
+                .thenReturn(LABEL_METERED);
 
         final String meteredDescription = getMeteredDescription(mMockContext, entry);
 
@@ -265,7 +223,8 @@
         config.meteredHint = true;
         config.meteredOverride = WifiConfiguration.METERED_OVERRIDE_METERED;
         final StandardWifiEntry entry = getStandardWifiEntry(config);
-        when(mMockResources.getString(R.string.wifi_metered_label)).thenReturn(LABEL_METERED);
+        when(mMockResources.getString(R.string.wifitrackerlib_wifi_metered_label))
+                .thenReturn(LABEL_METERED);
 
         final String meteredDescription = getMeteredDescription(mMockContext, entry);
 
@@ -279,7 +238,8 @@
         config.meteredHint = true;
         config.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NOT_METERED;
         final StandardWifiEntry entry = getStandardWifiEntry(config);
-        when(mMockResources.getString(R.string.wifi_unmetered_label)).thenReturn(LABEL_UNMETERED);
+        when(mMockResources.getString(R.string.wifitrackerlib_wifi_unmetered_label))
+                .thenReturn(LABEL_UNMETERED);
 
         final String meteredDescription = getMeteredDescription(mMockContext, entry);
 
@@ -452,11 +412,90 @@
         assertThat(getNetworkSelectionDescription(wifiConfig)).isEqualTo(expected);
     }
 
+    @Test
+    public void testGetSecurityTypeFromWifiConfiguration_returnsCorrectSecurityTypes() {
+        for (int securityType = WifiInfo.SECURITY_TYPE_OPEN;
+                securityType <= WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE; securityType++) {
+            WifiConfiguration config = new WifiConfiguration();
+            config.setSecurityParams(securityType);
+            if (securityType == WifiInfo.SECURITY_TYPE_WEP) {
+                config.wepKeys = new String[]{"key"};
+            }
+            if (securityType == WifiInfo.SECURITY_TYPE_EAP) {
+                assertThat(getSecurityTypesFromWifiConfiguration(config))
+                        .containsExactly(
+                                WifiInfo.SECURITY_TYPE_EAP,
+                                WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
+            } else {
+                assertThat(getSecurityTypesFromWifiConfiguration(config))
+                        .containsExactly(securityType);
+            }
+        }
+    }
+
+    @Test
+    public void testGetSecurityTypesFromScanResult_returnsCorrectSecurityTypes() {
+        ScanResult scanResult = new ScanResult();
+
+        scanResult.capabilities = "";
+        assertThat(getSecurityTypesFromScanResult(scanResult)).containsExactly(
+                WifiInfo.SECURITY_TYPE_OPEN);
+
+        scanResult.capabilities = "OWE";
+        assertThat(getSecurityTypesFromScanResult(scanResult)).containsExactly(
+                WifiInfo.SECURITY_TYPE_OWE);
+
+        scanResult.capabilities = "OWE_TRANSITION";
+        assertThat(getSecurityTypesFromScanResult(scanResult)).containsExactly(
+                WifiInfo.SECURITY_TYPE_OPEN, WifiInfo.SECURITY_TYPE_OWE);
+
+        scanResult.capabilities = "WEP";
+        assertThat(getSecurityTypesFromScanResult(scanResult)).containsExactly(
+                WifiInfo.SECURITY_TYPE_WEP);
+
+        scanResult.capabilities = "PSK";
+        assertThat(getSecurityTypesFromScanResult(scanResult)).containsExactly(
+                WifiInfo.SECURITY_TYPE_PSK);
+
+        scanResult.capabilities = "SAE";
+        assertThat(getSecurityTypesFromScanResult(scanResult)).containsExactly(
+                WifiInfo.SECURITY_TYPE_SAE);
+
+        scanResult.capabilities = "[PSK][SAE]";
+        assertThat(getSecurityTypesFromScanResult(scanResult)).containsExactly(
+                WifiInfo.SECURITY_TYPE_PSK, WifiInfo.SECURITY_TYPE_SAE);
+
+        scanResult.capabilities = "[EAP/SHA1]";
+        assertThat(getSecurityTypesFromScanResult(scanResult)).containsExactly(
+                WifiInfo.SECURITY_TYPE_EAP);
+
+        scanResult.capabilities = "[RSN-EAP/SHA1+EAP/SHA256][MFPC]";
+        assertThat(getSecurityTypesFromScanResult(scanResult)).containsExactly(
+                WifiInfo.SECURITY_TYPE_EAP, WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
+
+        scanResult.capabilities = "[RSN-EAP/SHA256][MFPC][MFPR]";
+        assertThat(getSecurityTypesFromScanResult(scanResult)).containsExactly(
+                WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
+
+        scanResult.capabilities = "[RSN-SUITE_B_192][MFPR]";
+        assertThat(getSecurityTypesFromScanResult(scanResult)).containsExactly(
+                WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT);
+
+        scanResult.capabilities = "WAPI-PSK";
+        assertThat(getSecurityTypesFromScanResult(scanResult)).containsExactly(
+                WifiInfo.SECURITY_TYPE_WAPI_PSK);
+
+        scanResult.capabilities = "WAPI-CERT";
+        assertThat(getSecurityTypesFromScanResult(scanResult)).containsExactly(
+                WifiInfo.SECURITY_TYPE_WAPI_CERT);
+    }
+
+
     private StandardWifiEntry getStandardWifiEntry(WifiConfiguration config) {
         final WifiManager mockWifiManager = mock(WifiManager.class);
         final StandardWifiEntry entry = new StandardWifiEntry(mMockContext, mTestHandler,
-                wifiConfigToStandardWifiEntryKey(config), config,
-                mockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
+                new StandardWifiEntryKey(config), Collections.singletonList(config),
+                null, mockWifiManager, mMockScoreCache, false /* forSavedNetworksPage */);
         final WifiInfo mockWifiInfo = mock(WifiInfo.class);
         final NetworkInfo mockNetworkInfo = mock(NetworkInfo.class);
 
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java
index 1260266..858075e 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java
@@ -17,11 +17,13 @@
 package com.android.wifitrackerlib;
 
 import static com.android.wifitrackerlib.TestUtils.buildScanResult;
+import static com.android.wifitrackerlib.TestUtils.buildWifiConfiguration;
 
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
@@ -45,6 +47,8 @@
 import android.net.wifi.hotspot2.pps.HomeSp;
 import android.os.Handler;
 import android.os.test.TestLooper;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
 import android.util.Pair;
 
 import androidx.lifecycle.Lifecycle;
@@ -64,6 +68,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 public class WifiPickerTrackerTest {
 
@@ -85,6 +90,8 @@
     @Mock
     private NetworkScoreManager mMockNetworkScoreManager;
     @Mock
+    private TelephonyManager mMockTelephonyManager;
+    @Mock
     private Clock mMockClock;
     @Mock
     private WifiPickerTracker.WifiPickerTrackerCallback mMockCallback;
@@ -123,12 +130,23 @@
 
     @Before
     public void setUp() {
+        Utils.sFeatureFlagUtilsWrapper = new Utils.FeatureFlagUtilsWrapper() {
+            @Override
+            boolean isProviderModelEnabled(Context context) {
+                return false;
+            }
+        };
+
         MockitoAnnotations.initMocks(this);
 
         mTestLooper = new TestLooper();
 
         when(mMockWifiManager.getScanResults()).thenReturn(new ArrayList<>());
         when(mMockWifiManager.getConnectionInfo()).thenReturn(mMockWifiInfo);
+        when(mMockWifiManager.getWifiState()).thenReturn(WifiManager.WIFI_STATE_ENABLED);
+        when(mMockWifiManager.isWpa3SaeSupported()).thenReturn(true);
+        when(mMockWifiManager.isWpa3SuiteBSupported()).thenReturn(true);
+        when(mMockWifiManager.isEnhancedOpenSupported()).thenReturn(true);
         when(mMockConnectivityManager.getNetworkInfo(any())).thenReturn(mMockNetworkInfo);
         when(mMockClock.millis()).thenReturn(START_MILLIS);
         when(mMockWifiInfo.getNetworkId()).thenReturn(WifiConfiguration.INVALID_NETWORK_ID);
@@ -138,6 +156,9 @@
         when(mMockContext.getResources()).thenReturn(mMockResources);
         when(mMockContext.getSystemService(Context.NETWORK_SCORE_SERVICE))
                 .thenReturn(mMockNetworkScoreManager);
+        when(mMockContext.getSystemService(Context.TELEPHONY_SERVICE))
+                .thenReturn(mMockTelephonyManager);
+        when(mMockResources.getString(anyInt())).thenReturn("");
     }
 
     /**
@@ -370,6 +391,35 @@
         assertThat(wifiPickerTracker.getWifiEntries()).isEmpty();
     }
 
+    @Test
+    public void testGetWifiEntries_differentSsidSameBssid_returnsDifferentEntries() {
+        final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
+        wifiPickerTracker.onStart();
+        verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(),
+                any(), any(), any());
+
+        when(mMockWifiManager.getScanResults()).thenReturn(Arrays.asList(
+                // Identical BSSID for 4 different SSIDs should return 4 entries.
+                buildScanResult("ssid0", "bssid0", START_MILLIS),
+                buildScanResult("ssid1", "bssid0", START_MILLIS),
+                buildScanResult("ssid2", "bssid0", START_MILLIS),
+                buildScanResult("ssid3", "bssid0", START_MILLIS),
+                // Another identical BSSID for 4 different SSIDs should return 4 more entries.
+                buildScanResult("ssid4", "bssid1", START_MILLIS),
+                buildScanResult("ssid5", "bssid1", START_MILLIS),
+                buildScanResult("ssid6", "bssid1", START_MILLIS),
+                buildScanResult("ssid7", "bssid1", START_MILLIS),
+                // Same SSID as the last for 2 different BSSIDs should not increase entries.
+                buildScanResult("ssid7", "bssid2", START_MILLIS),
+                buildScanResult("ssid7", "bssid3", START_MILLIS)));
+
+
+        mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
+                new Intent(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
+
+        assertThat(wifiPickerTracker.getWifiEntries()).hasSize(8);
+    }
+
     /**
      * Tests that a CONFIGURED_NETWORKS_CHANGED broadcast updates the correct WifiEntry from
      * unsaved to saved.
@@ -391,11 +441,11 @@
 
         final WifiConfiguration config = new WifiConfiguration();
         config.SSID = "\"ssid\"";
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks())
+                .thenReturn(Collections.singletonList(config));
         mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
-                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION)
-                        .putExtra(WifiManager.EXTRA_WIFI_CONFIGURATION, config)
-                        .putExtra(WifiManager.EXTRA_CHANGE_REASON,
-                                WifiManager.CHANGE_REASON_ADDED));
+                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION));
+        mTestLooper.dispatchAll();
 
         assertThat(entry.isSaved()).isTrue();
     }
@@ -409,6 +459,7 @@
         final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
         final WifiConfiguration config = new WifiConfiguration();
         config.SSID = "\"ssid\"";
+        config.networkId = 1;
         when(mMockWifiManager.getPrivilegedConfiguredNetworks())
                 .thenReturn(Collections.singletonList(config));
         wifiPickerTracker.onStart();
@@ -424,11 +475,10 @@
 
         assertThat(entry.isSaved()).isTrue();
 
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks())
+                .thenReturn(Collections.emptyList());
         mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
-                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION)
-                        .putExtra(WifiManager.EXTRA_WIFI_CONFIGURATION, config)
-                        .putExtra(WifiManager.EXTRA_CHANGE_REASON,
-                                WifiManager.CHANGE_REASON_REMOVED));
+                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION));
 
         assertThat(entry.isSaved()).isFalse();
     }
@@ -519,14 +569,51 @@
     }
 
     /**
+     * Tests that the wifi state changing to something other than WIFI_STATE_ENABLED will update
+     * getConnectedEntry() to return null.
+     */
+    @Test
+    public void testGetConnectedEntry_wifiStateDisabled_returnsNull() {
+        final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
+        final WifiConfiguration config = new WifiConfiguration();
+        config.SSID = "\"ssid\"";
+        config.networkId = 1;
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks())
+                .thenReturn(Collections.singletonList(config));
+        when(mMockWifiManager.getScanResults()).thenReturn(Arrays.asList(
+                buildScanResult("ssid", "bssid", START_MILLIS)));
+        when(mMockWifiInfo.getNetworkId()).thenReturn(1);
+        when(mMockWifiInfo.getRssi()).thenReturn(-50);
+        when(mMockNetworkInfo.getDetailedState()).thenReturn(NetworkInfo.DetailedState.CONNECTED);
+        wifiPickerTracker.onStart();
+        verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(),
+                any(), any(), any());
+        mTestLooper.dispatchAll();
+
+        when(mMockWifiManager.getWifiState()).thenReturn(WifiManager.WIFI_STATE_DISABLED);
+        mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
+                new Intent(WifiManager.WIFI_STATE_CHANGED_ACTION));
+
+        verify(mMockCallback, atLeastOnce()).onWifiEntriesChanged();
+        assertThat(wifiPickerTracker.getConnectedWifiEntry()).isNull();
+    }
+
+    /**
      * Tests that a connected WifiEntry will return "Low quality" as the summary if Wifi is
      * validated but cell is the default route.
      */
     @Test
     public void testGetConnectedEntry_wifiValidatedCellDefault_isLowQuality() {
+        final String summarySeparator = " / ";
         final String lowQuality = "Low quality";
-        when(mMockResources.getString(anyInt())).thenReturn("");
+        final String[] wifiStatusArray = new String[]{"", "Scanning", "Connecting",
+                "Authenticating", "Obtaining IP address", "Connected"};
+        when(mMockResources.getString(R.string.wifitrackerlib_summary_separator))
+                .thenReturn(summarySeparator);
         when(mMockResources.getString(R.string.wifi_connected_low_quality)).thenReturn(lowQuality);
+        when(mMockResources.getStringArray(R.array.wifitrackerlib_wifi_status))
+                .thenReturn(wifiStatusArray);
+
         final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
         final WifiConfiguration config = new WifiConfiguration();
         config.SSID = "\"ssid\"";
@@ -546,13 +633,37 @@
                 .registerDefaultNetworkCallback(mDefaultNetworkCallbackCaptor.capture(), any());
         mTestLooper.dispatchAll();
 
-        mNetworkCallbackCaptor.getValue().onCapabilitiesChanged(mMockNetwork,
-                new NetworkCapabilities.Builder()
-                        .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED).build());
+        // Set cellular to be the default network
         mDefaultNetworkCallbackCaptor.getValue().onCapabilitiesChanged(mMockNetwork,
                 new NetworkCapabilities.Builder()
-                .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR).build());
+                        .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR).build());
 
+        // Trigger a validation callback for the non-primary Wifi network.
+        WifiInfo nonPrimaryWifiInfo = Mockito.mock(WifiInfo.class);
+        when(nonPrimaryWifiInfo.isPrimary()).thenReturn(false);
+        when(nonPrimaryWifiInfo.makeCopy(anyLong())).thenReturn(nonPrimaryWifiInfo);
+        NetworkCapabilities nonPrimaryCap = new NetworkCapabilities.Builder()
+                .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
+                .setTransportInfo(nonPrimaryWifiInfo)
+                .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
+                .build();
+        mNetworkCallbackCaptor.getValue().onCapabilitiesChanged(mMockNetwork, nonPrimaryCap);
+
+        // Non-primary Wifi network validation should be ignored.
+        assertThat(wifiPickerTracker.getConnectedWifiEntry().getSummary()).isNotEqualTo(lowQuality);
+
+        // Trigger a validation callback for the primary Wifi network.
+        WifiInfo primaryWifiInfo = Mockito.mock(WifiInfo.class);
+        when(primaryWifiInfo.isPrimary()).thenReturn(true);
+        when(primaryWifiInfo.makeCopy(anyLong())).thenReturn(primaryWifiInfo);
+        NetworkCapabilities primaryCap = new NetworkCapabilities.Builder()
+                .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
+                .setTransportInfo(primaryWifiInfo)
+                .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
+                .build();
+        mNetworkCallbackCaptor.getValue().onCapabilitiesChanged(mMockNetwork, primaryCap);
+
+        // Cell default + primary network validation should trigger low quality
         assertThat(wifiPickerTracker.getConnectedWifiEntry().getSummary()).isEqualTo(lowQuality);
     }
 
@@ -591,6 +702,54 @@
     }
 
     /**
+     * Tests that the same PasspointWifiEntry from getWifiEntries() is returned when it becomes the
+     * connected entry
+     */
+    @Test
+    public void testGetWifiEntries_connectToPasspoint_returnsSamePasspointWifiEntry() {
+        final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
+        final PasspointConfiguration passpointConfig = new PasspointConfiguration();
+        final HomeSp homeSp = new HomeSp();
+        homeSp.setFqdn("fqdn");
+        homeSp.setFriendlyName("friendlyName");
+        passpointConfig.setHomeSp(homeSp);
+        passpointConfig.setCredential(new Credential());
+        when(mMockWifiManager.getPasspointConfigurations())
+                .thenReturn(Collections.singletonList(passpointConfig));
+        final WifiConfiguration wifiConfig = spy(new WifiConfiguration());
+        when(wifiConfig.getKey()).thenReturn(passpointConfig.getUniqueId());
+        when(wifiConfig.isPasspoint()).thenReturn(true);
+        wifiConfig.networkId = 1;
+        final Map<Integer, List<ScanResult>> mapping = new HashMap<>();
+        mapping.put(WifiManager.PASSPOINT_HOME_NETWORK, Collections.singletonList(
+                buildScanResult("ssid", "bssid", START_MILLIS)));
+        List<Pair<WifiConfiguration, Map<Integer, List<ScanResult>>>> allMatchingWifiConfigs =
+                Collections.singletonList(new Pair<>(wifiConfig, mapping));
+        when(mMockWifiManager.getAllMatchingWifiConfigs(any())).thenReturn(allMatchingWifiConfigs);
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks())
+                .thenReturn(Collections.singletonList(wifiConfig));
+        wifiPickerTracker.onStart();
+        verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(),
+                any(), any(), any());
+        mTestLooper.dispatchAll();
+        assertThat(wifiPickerTracker.getWifiEntries()).isNotEmpty();
+        final WifiEntry entry = wifiPickerTracker.getWifiEntries().get(0);
+
+        when(mMockWifiInfo.isPasspointAp()).thenReturn(true);
+        when(mMockWifiInfo.getPasspointFqdn()).thenReturn("fqdn");
+        when(mMockWifiInfo.getNetworkId()).thenReturn(1);
+        when(mMockWifiInfo.getRssi()).thenReturn(-50);
+        when(mMockNetworkInfo.getDetailedState()).thenReturn(NetworkInfo.DetailedState.CONNECTED);
+        mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
+                new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION)
+                        .putExtra(WifiManager.EXTRA_NETWORK_INFO, mMockNetworkInfo));
+
+        assertThat(wifiPickerTracker.getWifiEntries()).isEmpty();
+        assertThat(wifiPickerTracker.getConnectedWifiEntry() == entry).isTrue();
+
+    }
+
+    /**
      * Tests that a PasspointWifiEntry will disappear from getWifiEntries() once it is out of range.
      */
     @Test
@@ -626,7 +785,69 @@
 
         // getWifiEntries() should be empty now
         assertThat(wifiPickerTracker.getWifiEntries()).isEmpty();
+    }
 
+    /**
+     * Tests that multiple wifi entries are returned for multiple suggestions for the same network.
+     */
+    @Test
+    public void testGetWifiEntries_multipleSuggestions_returnsMultipleEntries() {
+        WifiConfiguration savedConfig = new WifiConfiguration();
+        savedConfig.fromWifiNetworkSuggestion = false;
+        savedConfig.SSID = "\"ssid\"";
+        savedConfig.networkId = 1;
+        WifiConfiguration suggestionConfig1 = new WifiConfiguration(savedConfig);
+        suggestionConfig1.networkId = 2;
+        suggestionConfig1.creatorName = "creator1";
+        suggestionConfig1.carrierId = 1;
+        suggestionConfig1.subscriptionId = 1;
+        suggestionConfig1.fromWifiNetworkSuggestion = true;
+        WifiConfiguration suggestionConfig2 = new WifiConfiguration(savedConfig);
+        suggestionConfig2.networkId = 3;
+        suggestionConfig1.creatorName = "creator2";
+        suggestionConfig1.carrierId = 2;
+        suggestionConfig1.subscriptionId = 2;
+        suggestionConfig2.fromWifiNetworkSuggestion = true;
+        // Initial entries
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks()).thenReturn(
+                Arrays.asList(suggestionConfig1, suggestionConfig2));
+        when(mMockWifiManager.getScanResults()).thenReturn(Collections.singletonList(
+                buildScanResult("ssid", "bssid", START_MILLIS)));
+        when(mMockWifiManager.getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(any()))
+                .thenReturn(Arrays.asList(suggestionConfig1, suggestionConfig2));
+        final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
+        wifiPickerTracker.onStart();
+        verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(),
+                any(), any(), any());
+        mTestLooper.dispatchAll();
+
+        // 2 suggestion entries, no unsaved entry
+        assertThat(wifiPickerTracker.getWifiEntries().size()).isEqualTo(2);
+        for (WifiEntry entry : wifiPickerTracker.getWifiEntries()) {
+            assertThat(entry.getTitle()).isEqualTo("ssid");
+        }
+        assertThat(wifiPickerTracker.getWifiEntries().stream()
+                .filter(WifiEntry::isSuggestion)
+                .count()).isEqualTo(2);
+
+        // Add a saved entry
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks()).thenReturn(
+                Arrays.asList(savedConfig, suggestionConfig1, suggestionConfig2));
+        mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
+                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION));
+
+        // Saved entry should appear alongside suggestions
+        assertThat(wifiPickerTracker.getWifiEntries().size()).isEqualTo(3);
+        for (WifiEntry entry : wifiPickerTracker.getWifiEntries()) {
+            assertThat(entry.getTitle()).isEqualTo("ssid");
+        }
+        assertThat(wifiPickerTracker.getWifiEntries().stream()
+                .filter(WifiEntry::isSuggestion)
+                .count())
+                .isEqualTo(2);
+        assertThat(wifiPickerTracker.getWifiEntries().stream()
+                .filter(WifiEntry::isSaved)
+                .count()).isEqualTo(1);
     }
 
     @Test
@@ -649,6 +870,7 @@
         config.networkId = networkId;
         config.allowedKeyManagement = new BitSet();
         config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SUITE_B_192);
+        config.subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
         when(config.isPasspoint()).thenReturn(true);
         when(config.getKey()).thenReturn(passpointConfig.getUniqueId());
         when(mMockWifiManager.getPrivilegedConfiguredNetworks())
@@ -689,6 +911,7 @@
         config.networkId = networkId;
         config.allowedKeyManagement = new BitSet();
         config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SUITE_B_192);
+        config.subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
         when(config.isPasspoint()).thenReturn(true);
         when(config.getKey()).thenReturn(passpointConfig.getUniqueId());
         when(mMockWifiManager.getPrivilegedConfiguredNetworks())
@@ -715,6 +938,52 @@
     }
 
     /**
+     * Tests that getConnectedEntry will return the correct network request if there are multiple
+     * active requests
+     */
+    @Test
+    public void testGetConnectedEntry_multipleNetworkRequests_returnsConnectedRequest() {
+        final WifiConfiguration requestConfig1 = new WifiConfiguration();
+        requestConfig1.SSID = "\"ssid1\"";
+        requestConfig1.networkId = 1;
+        requestConfig1.fromWifiNetworkSpecifier = true;
+        final WifiConfiguration requestConfig2 = new WifiConfiguration();
+        requestConfig2.SSID = "\"ssid2\"";
+        requestConfig2.networkId = 2;
+        requestConfig2.fromWifiNetworkSpecifier = true;
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks()).thenReturn(
+                Arrays.asList(requestConfig1, requestConfig2));
+        when(mMockWifiInfo.getNetworkId()).thenReturn(1);
+        when(mMockWifiInfo.getRssi()).thenReturn(-50);
+        when(mMockNetworkInfo.getDetailedState()).thenReturn(NetworkInfo.DetailedState.CONNECTED);
+
+        final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
+        wifiPickerTracker.onStart();
+        verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(),
+                any(), any(), any());
+        mTestLooper.dispatchAll();
+
+        // WifiInfo has network id 1, so the connected entry should correspond to request 1
+        assertThat(wifiPickerTracker.getConnectedWifiEntry().getSsid()).isEqualTo("ssid1");
+
+        when(mMockWifiInfo.getNetworkId()).thenReturn(2);
+        mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
+                new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION)
+                        .putExtra(WifiManager.EXTRA_NETWORK_INFO, mMockNetworkInfo));
+
+        // WifiInfo has network id 2, so the connected entry should correspond to request 2
+        assertThat(wifiPickerTracker.getConnectedWifiEntry().getSsid()).isEqualTo("ssid2");
+
+        when(mMockWifiInfo.getNetworkId()).thenReturn(-1);
+        mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
+                new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION)
+                        .putExtra(WifiManager.EXTRA_NETWORK_INFO, mMockNetworkInfo));
+
+        // WifiInfo matches no request configs, so the connected entry should be null
+        assertThat(wifiPickerTracker.getConnectedWifiEntry()).isNull();
+    }
+
+    /**
      * Tests that SCAN_RESULTS_AVAILABLE_ACTION calls WifiManager#getMatchingOsuProviders()
      */
     @Test
@@ -731,4 +1000,248 @@
 
         verify(mMockWifiManager, atLeastOnce()).getMatchingOsuProviders(any());
     }
+
+    /**
+     * Tests that a connected MergedCarrierEntry is returned if the current WifiInfo has a matching
+     * subscription id.
+     */
+    @Test
+    public void testGetMergedCarrierEntry_wifiInfoHasMatchingSubId_entryIsConnected() {
+        final int subId = 1;
+        when(mMockWifiInfo.isCarrierMerged()).thenReturn(true);
+        when(mMockWifiInfo.getSubscriptionId()).thenReturn(subId);
+        when(mMockNetworkInfo.getDetailedState()).thenReturn(NetworkInfo.DetailedState.CONNECTED);
+        final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
+        wifiPickerTracker.onStart();
+        mTestLooper.dispatchAll();
+        verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(),
+                any(), any(), any());
+
+        final Intent intent = new Intent(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
+        intent.putExtra("subscription", subId);
+        mBroadcastReceiverCaptor.getValue().onReceive(mMockContext, intent);
+
+        assertThat(wifiPickerTracker.getMergedCarrierEntry().getConnectedState())
+                .isEqualTo(WifiEntry.CONNECTED_STATE_CONNECTED);
+    }
+
+    /**
+     * Tests that getMergedCarrierEntry returns a new MergedCarrierEntry with the correct
+     * subscription ID if the default subscription ID changes.
+     */
+    @Test
+    public void testGetMergedCarrierEntry_subscriptionIdChanges_entryChanges() {
+        final int subId1 = 1;
+        final int subId2 = 2;
+        final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
+        wifiPickerTracker.onStart();
+        mTestLooper.dispatchAll();
+        verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(),
+                any(), any(), any());
+        final Intent intent1 =
+                new Intent(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
+        intent1.putExtra("subscription", subId1);
+        mBroadcastReceiverCaptor.getValue().onReceive(mMockContext, intent1);
+
+        final Intent intent2 =
+                new Intent(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
+        intent2.putExtra("subscription", subId2);
+        mBroadcastReceiverCaptor.getValue().onReceive(mMockContext, intent2);
+
+        assertThat(wifiPickerTracker.getMergedCarrierEntry().getSubscriptionId())
+                .isEqualTo(subId2);
+    }
+
+    /**
+     * Tests that getWifiEntries returns separate WifiEntries for each security family for scans
+     * with the same SSID
+     */
+    @Test
+    public void testGetWifiEntries_sameSsidDifferentSecurity_entriesMergedBySecurityFamily() {
+        final ArrayList scanList = new ArrayList();
+        final String ssid = "ssid";
+        final String bssid = "bssid";
+        int bssidNum = 0;
+        for (String capabilities : Arrays.asList(
+                "",
+                "[OWE]",
+                "[OWE_TRANSITION]",
+                "[WEP]",
+                "[PSK]",
+                "[SAE]",
+                "[PSK][SAE]",
+                "[EAP/SHA1]",
+                "[RSN-EAP/SHA1+EAP/SHA256][MFPC]",
+                "[RSN-EAP/SHA256][MFPC][MFPR]",
+                "[RSN-SUITE_B_192][MFPR]"
+        )) {
+            final ScanResult scan = buildScanResult(ssid, bssid + bssidNum++, START_MILLIS);
+            scan.capabilities = capabilities;
+            scanList.add(scan);
+        }
+        when(mMockWifiManager.getScanResults()).thenReturn(scanList);
+
+        final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
+        wifiPickerTracker.onStart();
+        mTestLooper.dispatchAll();
+        verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(),
+                any(), any(), any());
+
+        // Open/OWE, PSK/SAE, EAP/EAP-WPA3 should be merged to a single entry
+        List<WifiEntry> wifiEntries = wifiPickerTracker.getWifiEntries();
+        assertThat(wifiEntries.size()).isEqualTo(5);
+        assertThat(wifiEntries.stream()
+                .map(entry -> entry.getSecurityTypes())
+                .collect(Collectors.toList()))
+                .containsExactly(
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_OPEN, WifiInfo.SECURITY_TYPE_OWE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_WEP),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_PSK, WifiInfo.SECURITY_TYPE_SAE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_EAP,
+                                WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT));
+
+        // Use a PSK config, EAP config, and Open config, and see that the security types returned
+        // for those grouped entries change to reflect the available configs.
+        WifiConfiguration openConfig = buildWifiConfiguration(ssid);
+        openConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN);
+        openConfig.networkId = 1;
+        WifiConfiguration pskConfig = buildWifiConfiguration(ssid);
+        pskConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK);
+        pskConfig.networkId = 2;
+        WifiConfiguration eapConfig = buildWifiConfiguration(ssid);
+        eapConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP);
+        eapConfig.networkId = 3;
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks()).thenReturn(
+                Arrays.asList(openConfig, pskConfig, eapConfig));
+        mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
+                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION));
+        mTestLooper.dispatchAll();
+
+        // Open/OWE becomes Open, PSK/SAE becomes PSK, EAP/EAP-WPA3 does not change since EAP config
+        // also works for EAP-WPA3.
+        wifiEntries = wifiPickerTracker.getWifiEntries();
+        assertThat(wifiEntries.size()).isEqualTo(5);
+        assertThat(wifiEntries.stream()
+                .map(entry -> entry.getSecurityTypes())
+                .collect(Collectors.toList()))
+                .containsExactly(
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_OPEN),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_WEP),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_PSK),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_EAP,
+                                WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT));
+
+        // Use SAE config, EAP-WPA3 config, and OWE config
+        WifiConfiguration oweConfig = buildWifiConfiguration(ssid);
+        oweConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OWE);
+        oweConfig.networkId = 1;
+        WifiConfiguration saeConfig = buildWifiConfiguration(ssid);
+        saeConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE);
+        saeConfig.networkId = 2;
+        WifiConfiguration eapWpa3Config = buildWifiConfiguration(ssid);
+        eapWpa3Config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE);
+        eapWpa3Config.networkId = 3;
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks()).thenReturn(
+                Arrays.asList(oweConfig, saeConfig, eapWpa3Config));
+        mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
+                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION));
+        mTestLooper.dispatchAll();
+
+        // Open/OWE becomes OWE, PSK/SAE becomes SAE, EAP/EAP-WPA3 becomes EAP-WPA3
+        wifiEntries = wifiPickerTracker.getWifiEntries();
+        assertThat(wifiEntries.size()).isEqualTo(5);
+        assertThat(wifiEntries.stream()
+                .map(entry -> entry.getSecurityTypes())
+                .collect(Collectors.toList()))
+                .containsExactly(
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_OWE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_WEP),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_SAE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT));
+
+        // Now use configs for all the security types in the family
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks()).thenReturn(
+                Arrays.asList(openConfig, oweConfig, pskConfig, saeConfig, eapConfig,
+                        eapWpa3Config));
+        mBroadcastReceiverCaptor.getValue().onReceive(mMockContext,
+                new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION));
+        mTestLooper.dispatchAll();
+
+        // All of the security types in the family should be returned.
+        wifiEntries = wifiPickerTracker.getWifiEntries();
+        assertThat(wifiEntries.size()).isEqualTo(5);
+        assertThat(wifiEntries.stream()
+                .map(entry -> entry.getSecurityTypes())
+                .collect(Collectors.toList()))
+                .containsExactly(
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_OPEN, WifiInfo.SECURITY_TYPE_OWE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_WEP),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_PSK, WifiInfo.SECURITY_TYPE_SAE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_EAP,
+                                WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE),
+                        Arrays.asList(WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT));
+    }
+
+    /**
+     * Tests that getNumSavedNetworks() returns the correct number of networks based on number of
+     * unique network IDs even for split configs which may have the same network ID but different
+     * security types.
+     */
+    @Test
+    public void testGetNumSavedNetworks_splitConfigs_returnsNetworkIdCount() {
+        WifiConfiguration openConfig = buildWifiConfiguration("ssid");
+        openConfig.networkId = 1;
+        // PSK + SAE split config with the same network ID
+        WifiConfiguration pskConfig = buildWifiConfiguration("ssid");
+        pskConfig.setSecurityParams(WifiInfo.SECURITY_TYPE_PSK);
+        pskConfig.networkId = 2;
+        WifiConfiguration saeConfig = buildWifiConfiguration("ssid");
+        saeConfig.setSecurityParams(WifiInfo.SECURITY_TYPE_SAE);
+        saeConfig.networkId = 2;
+        when(mMockWifiManager.getPrivilegedConfiguredNetworks())
+                .thenReturn(Arrays.asList(openConfig, pskConfig, saeConfig));
+        final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
+        wifiPickerTracker.onStart();
+        mTestLooper.dispatchAll();
+
+        // 1 open config + 2 split configs with same network ID should be treated as 2 networks.
+        assertThat(wifiPickerTracker.getNumSavedNetworks()).isEqualTo(2);
+    }
+
+    /**
+     * Tests that the MergedCarrierEntry is the default network when it is connected and Wifi is
+     * the default network.
+     */
+    @Test
+    public void testGetMergedCarrierEntry_wifiIsDefault_entryIsDefaultNetwork() {
+        final int subId = 1;
+        when(mMockWifiInfo.isCarrierMerged()).thenReturn(true);
+        when(mMockWifiInfo.getSubscriptionId()).thenReturn(subId);
+        when(mMockNetworkInfo.getDetailedState()).thenReturn(NetworkInfo.DetailedState.CONNECTED);
+        final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
+        wifiPickerTracker.onStart();
+        mTestLooper.dispatchAll();
+        verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(),
+                any(), any(), any());
+        final Intent intent = new Intent(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
+        intent.putExtra("subscription", subId);
+        mBroadcastReceiverCaptor.getValue().onReceive(mMockContext, intent);
+        verify(mMockConnectivityManager)
+                .registerDefaultNetworkCallback(mDefaultNetworkCallbackCaptor.capture(), any());
+        MergedCarrierEntry mergedCarrierEntry = wifiPickerTracker.getMergedCarrierEntry();
+        assertThat(mergedCarrierEntry.getConnectedState())
+                .isEqualTo(WifiEntry.CONNECTED_STATE_CONNECTED);
+        // Wifi isn't default yet, so isDefaultNetwork returns false
+        assertThat(mergedCarrierEntry.isDefaultNetwork()).isFalse();
+
+        mDefaultNetworkCallbackCaptor.getValue().onCapabilitiesChanged(mMockNetwork,
+                new NetworkCapabilities.Builder()
+                        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build());
+
+        // Now Wifi is default, so isDefaultNetwork returns true
+        assertThat(mergedCarrierEntry.isDefaultNetwork()).isTrue();
+    }
 }
diff --git a/libwifi_hal/Android.mk b/libwifi_hal/Android.mk
index 6d100b1..8df53b5 100644
--- a/libwifi_hal/Android.mk
+++ b/libwifi_hal/Android.mk
@@ -59,6 +59,9 @@
 ifdef WIFI_DRIVER_STATE_OFF
 wifi_hal_cflags += -DWIFI_DRIVER_STATE_OFF=\"$(WIFI_DRIVER_STATE_OFF)\"
 endif
+ifeq ($(WIFI_MULTIPLE_VENDOR_HALS), true)
+wifi_hal_cflags += -DWIFI_MULTIPLE_VENDOR_HALS
+endif
 
 # Common code shared between the HALs.
 # ============================================================
@@ -89,28 +92,37 @@
 
 # Pick a vendor provided HAL implementation library.
 # ============================================================
-LIB_WIFI_HAL := libwifi-hal-fallback
-VENDOR_LOCAL_SHARED_LIBRARIES :=
-ifeq ($(BOARD_WLAN_DEVICE), bcmdhd)
-  LIB_WIFI_HAL := libwifi-hal-bcm
-  VENDOR_LOCAL_SHARED_LIBRARIES := libcrypto
-else ifeq ($(BOARD_WLAN_DEVICE), qcwcn)
-  LIB_WIFI_HAL := libwifi-hal-qcom
-  VENDOR_LOCAL_SHARED_LIBRARIES := libcld80211
-else ifeq ($(BOARD_WLAN_DEVICE), mrvl)
-  # this is commented because none of the nexus devices
-  # that sport Marvell's wifi have support for HAL
-  # LIB_WIFI_HAL := libwifi-hal-mrvl
-else ifeq ($(BOARD_WLAN_DEVICE), MediaTek)
-  # support MTK WIFI HAL
-  LIB_WIFI_HAL := libwifi-hal-mt66xx
-else ifeq ($(BOARD_WLAN_DEVICE), realtek)
-  # support Realtek WIFI HAL
-  LIB_WIFI_HAL := libwifi-hal-rtk
-else ifeq ($(BOARD_WLAN_DEVICE), emulator)
-  LIB_WIFI_HAL := libwifi-hal-emu
-else ifeq ($(BOARD_WLAN_DEVICE), slsi)
-  LIB_WIFI_HAL := libwifi-hal-slsi
+ifeq ($(WIFI_MULTIPLE_VENDOR_HALS), true)
+  # vendor HALs are loaded dynamically and not linked here
+  LIB_WIFI_HAL :=
+else
+  LIB_WIFI_HAL ?= libwifi-hal-fallback
+  VENDOR_LOCAL_SHARED_LIBRARIES :=
+  ifeq ($(BOARD_WLAN_DEVICE), bcmdhd)
+    LIB_WIFI_HAL := libwifi-hal-bcm
+    VENDOR_LOCAL_SHARED_LIBRARIES := libcrypto
+ifneq ($(wildcard vendor/google/libraries/GoogleWifiConfigLib),)
+    VENDOR_LOCAL_SHARED_LIBRARIES += \
+        google_wifi_firmware_config_version_c_wrapper
+endif
+  else ifeq ($(BOARD_WLAN_DEVICE), qcwcn)
+    LIB_WIFI_HAL := libwifi-hal-qcom
+    VENDOR_LOCAL_SHARED_LIBRARIES := libcld80211
+  else ifeq ($(BOARD_WLAN_DEVICE), mrvl)
+    # this is commented because none of the nexus devices
+    # that sport Marvell's wifi have support for HAL
+    # LIB_WIFI_HAL := libwifi-hal-mrvl
+  else ifeq ($(BOARD_WLAN_DEVICE), MediaTek)
+    # support MTK WIFI HAL
+    LIB_WIFI_HAL := libwifi-hal-mt66xx
+  else ifeq ($(BOARD_WLAN_DEVICE), realtek)
+    # support Realtek WIFI HAL
+    LIB_WIFI_HAL := libwifi-hal-rtk
+  else ifeq ($(BOARD_WLAN_DEVICE), emulator)
+    LIB_WIFI_HAL := libwifi-hal-emu
+  else ifeq ($(BOARD_WLAN_DEVICE), slsi)
+    LIB_WIFI_HAL := libwifi-hal-slsi
+  endif
 endif
 
 # The WiFi HAL that you should be linking.
diff --git a/libwifi_hal/hal_tool.cpp b/libwifi_hal/hal_tool.cpp
index aa31947..4965255 100644
--- a/libwifi_hal/hal_tool.cpp
+++ b/libwifi_hal/hal_tool.cpp
@@ -562,6 +562,7 @@
 }  // namespace
 
 bool HalTool::InitFunctionTable(wifi_hal_fn* hal_fn) {
+#ifndef WIFI_MULTIPLE_VENDOR_HALS
   if (!init_wifi_stub_hal_func_table(hal_fn)) {
     LOG(ERROR) << "Can not initialize the basic function pointer table";
     return false;
@@ -573,6 +574,11 @@
   }
 
   return true;
+#else
+  // vendor HAL library are dynamically loaded from the WIFI HAL.
+  LOG(ERROR) << "InitFunctionTable no longer supported.";
+  return false;
+#endif
 }
 
 bool HalTool::CanGetValidChannels(wifi_hal_fn* hal_fn) {
diff --git a/libwifi_hal/wifi_hal_common.cpp b/libwifi_hal/wifi_hal_common.cpp
index 0d8e0fb..5c956f2 100644
--- a/libwifi_hal/wifi_hal_common.cpp
+++ b/libwifi_hal/wifi_hal_common.cpp
@@ -19,6 +19,7 @@
 #include <fcntl.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <time.h>
 
 #include <android-base/logging.h>
 #include <cutils/misc.h>
@@ -52,6 +53,10 @@
 static const char MODULE_FILE[] = "/proc/modules";
 #endif
 
+#ifdef WIFI_DRIVER_STATE_CTRL_PARAM
+int kDriverStateAccessRetrySleepMillis = 200;
+#endif
+
 static int insmod(const char *filename, const char *args) {
   int ret;
   int fd;
@@ -94,8 +99,22 @@
   int len;
   int fd;
   int ret = 0;
+  struct timespec req;
+  req.tv_sec = 0;
+  req.tv_nsec = kDriverStateAccessRetrySleepMillis * 1000000L;
+  int count = 5; /* wait at most 1 second for completion. */
 
   if (!state) return -1;
+  do {
+    if (access(WIFI_DRIVER_STATE_CTRL_PARAM, W_OK) == 0)
+      break;
+    nanosleep(&req, (struct timespec *)NULL);
+  } while (--count > 0);
+  if (count == 0) {
+    PLOG(ERROR) << "Failed to access driver state control param "
+                << strerror(errno) << ", " << errno;
+    return -1;
+  }
   fd = TEMP_FAILURE_RETRY(open(WIFI_DRIVER_STATE_CTRL_PARAM, O_WRONLY));
   if (fd < 0) {
     PLOG(ERROR) << "Failed to open driver state control param";
diff --git a/libwifi_system_iface/include/wifi_system/interface_tool.h b/libwifi_system_iface/include/wifi_system/interface_tool.h
index a22c528..f31e4e5 100644
--- a/libwifi_system_iface/include/wifi_system/interface_tool.h
+++ b/libwifi_system_iface/include/wifi_system/interface_tool.h
@@ -50,6 +50,20 @@
   // Get the factory MAC address of the |if_name| interface.
   // Returns all-zero address on error.
   virtual std::array<uint8_t, ETH_ALEN> GetFactoryMacAddress(const char* if_name);
+
+  // Create a bridge
+  virtual bool createBridge(const std::string& br_name);
+
+  // Delete a bridge
+  virtual bool deleteBridge(const std::string& br_name);
+
+  // Add interface to bridge
+  virtual bool addIfaceToBridge(const std::string& br_name,
+                                const std::string& if_name);
+
+  // Remove interface from bridge
+  virtual bool removeIfaceFromBridge(const std::string& br_name,
+                                     const std::string& if_name);
 };  // class InterfaceTool
 
 }  // namespace wifi_system
diff --git a/libwifi_system_iface/interface_tool.cpp b/libwifi_system_iface/interface_tool.cpp
index 17895d6..f7158cd 100644
--- a/libwifi_system_iface/interface_tool.cpp
+++ b/libwifi_system_iface/interface_tool.cpp
@@ -16,10 +16,14 @@
 
 #include "wifi_system/interface_tool.h"
 
+#include <net/if.h>
 #include <net/if_arp.h>
 #include <netinet/in.h>
 #include <sys/socket.h>
 
+#include <linux/if_bridge.h>
+#include <string.h>
+
 #include <linux/ethtool.h>
 /* We need linux/if.h for flags like IFF_UP.  Sadly, it forward declares
    struct sockaddr and must be included after sys/socket.h. */
@@ -28,6 +32,8 @@
 #include <android-base/logging.h>
 #include <android-base/unique_fd.h>
 
+#define IFNAMSIZ    16
+
 namespace android {
 namespace wifi_system {
 namespace {
@@ -169,5 +175,70 @@
   return paddr;
 }
 
+bool InterfaceTool::createBridge(const std::string& br_name) {
+    base::unique_fd sock(socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0));
+
+    if (TEMP_FAILURE_RETRY(ioctl(sock, SIOCBRADDBR, br_name.c_str())) != 0) {
+        LOG(ERROR) << "Could not add bridge " << br_name.c_str()
+                   << " (" << strerror(errno) << ")";
+        return false;
+    }
+
+    return true;
+}
+
+bool InterfaceTool::deleteBridge(const std::string& br_name) {
+    base::unique_fd sock(socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0));
+
+    if (TEMP_FAILURE_RETRY(ioctl(sock, SIOCBRDELBR, br_name.c_str())) != 0) {
+        LOG(ERROR) << "Could not remove bridge " << br_name.c_str()
+                   << " (" << strerror(errno) << ")";
+        return false;
+    }
+    return true;
+}
+
+bool InterfaceTool::addIfaceToBridge(const std::string& br_name, const std::string& if_name) {
+    struct ifreq ifr;
+    memset(&ifr, 0, sizeof(ifr));
+
+    ifr.ifr_ifindex = if_nametoindex(if_name.c_str());
+    if (ifr.ifr_ifindex == 0) {
+        LOG(ERROR) << "Interface is not exist: " << if_name.c_str();
+        return false;
+    }
+    strlcpy(ifr.ifr_name, br_name.c_str(), IFNAMSIZ);
+
+    base::unique_fd sock(socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0));
+    if (TEMP_FAILURE_RETRY(ioctl(sock, SIOCBRADDIF, &ifr)) != 0) {
+        LOG(ERROR) << "Could not add interface " << if_name.c_str()
+                   << " into bridge " << ifr.ifr_name
+                   << " (" << strerror(errno) << ")";
+        return false;
+    }
+    return true;
+}
+
+bool InterfaceTool::removeIfaceFromBridge(const std::string& br_name, const std::string& if_name) {
+    struct ifreq ifr;
+    memset(&ifr, 0, sizeof(ifr));
+
+    ifr.ifr_ifindex = if_nametoindex(if_name.c_str());
+    if (ifr.ifr_ifindex == 0) {
+        LOG(ERROR) << "Interface is not exist: " << if_name.c_str();
+        return false;
+    }
+    strlcpy(ifr.ifr_name, br_name.c_str(), IFNAMSIZ);
+
+    base::unique_fd sock(socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0));
+    if (TEMP_FAILURE_RETRY(ioctl(sock, SIOCBRDELIF, &ifr)) != 0) {
+        LOG(ERROR) << "Could not remove interface " << if_name.c_str()
+                   << " from bridge " << ifr.ifr_name
+                   << " (" << strerror(errno) << ")";
+        return false;
+    }
+
+    return true;
+}
 }  // namespace wifi_system
 }  // namespace android