Poking around the config files, AT&T and two other carriers (both of which are subsidiaries, from a quick Google) seem to display 3G connections as if they were 4G:
$ grep -r show_4g_for_3g_data_icon_bool assets/
assets/carrier_config_carrierid_1187_AT&T.xml: <boolean name="show_4g_for_3g_data_icon_bool" value="true"/>
assets/carrier_config_carrierid_2119_FirstNet.xml: <boolean name="show_4g_for_3g_data_icon_bool" value="true"/>
assets/carrier_config_carrierid_1779_Cricket-Wireless.xml: <boolean name="show_4g_for_3g_data_icon_bool" value="true"/>
Android documents[0] this flag, which they don't appear to do for the `inflate_signal_strength_bool` field outside the source code from what I can tell. It seems like there a bunch of odd flags for controlling user-exposed visuals - another flag `show_4g_for_lte_data_icon_bool` is used by 96 carriers, for example.
I wonder if there's some odd telecom history behind these, or if these flags were intended for some kind of edge-case. It seems like carriers have the option to arbitrarily override the thresholds used for determining signal strength[1], but only four carriers actually do. All only elect to customize the `lte_rsrp_thresholds_int_array` field; and all opt to make things harder for themselves, reporting their network connection as lower strength than the default classification[2] would:
$ grep -r _thresholds_int_array assets/ -A5
assets/carrier_config_carrierid_2556_Xfinity_Mobile.xml: <int-array name="lte_rsrp_thresholds_int_array" num="4">
assets/carrier_config_carrierid_2556_Xfinity_Mobile.xml- <item value="-115"/>
assets/carrier_config_carrierid_2556_Xfinity_Mobile.xml- <item value="-105"/>
assets/carrier_config_carrierid_2556_Xfinity_Mobile.xml- <item value="-95"/>
assets/carrier_config_carrierid_2556_Xfinity_Mobile.xml- <item value="-85"/>
assets/carrier_config_carrierid_2556_Xfinity_Mobile.xml- </int-array>
--
assets/carrier_config_carrierid_1345_Telstra.xml: <int-array name="lte_rsrp_thresholds_int_array" num="4">
assets/carrier_config_carrierid_1345_Telstra.xml- <item value="-120"/>
assets/carrier_config_carrierid_1345_Telstra.xml- <item value="-115"/>
assets/carrier_config_carrierid_1345_Telstra.xml- <item value="-100"/>
assets/carrier_config_carrierid_1345_Telstra.xml- <item value="-90"/>
assets/carrier_config_carrierid_1345_Telstra.xml- </int-array>
--
assets/carrier_config_carrierid_1839_Verizon-Wireless.xml: # omitted, same as Xfinity, above
...
--
assets/carrier_config_carrierid_2032_Xfinity-Mobile.xml: # omitted, same as Xfinity, above
...
[0]:
https://developer.android.com/reference/android/telephony/Ca...[1]: https://source.android.com/docs/core/connect/signal-strength...
[2]: https://android.googlesource.com/platform/frameworks/base/+/...
sDefaults.putIntArray(KEY_LTE_RSRP_THRESHOLDS_INT_ARRAY,
// Boundaries: [-140 dBm, -44 dBm]
new int[] {
-128, /* SIGNAL_STRENGTH_POOR */
-118, /* SIGNAL_STRENGTH_MODERATE */
-108, /* SIGNAL_STRENGTH_GOOD */
-98, /* SIGNAL_STRENGTH_GREAT */
});