Der Code shouldSwitchNetwork()
erklärt am besten, was es tut. Es reduziert nur künstlich das WiFi-RSSI (Anzeige der empfangenen Signalstärke), um die WiFi-Statusmaschine zu veranlassen, die Verbindung von WiFi zu Mobilfunknetz zu wechseln. Um die Linie 3559 von WifiStateMachine.java ( Linie 4262 für Android 6.0.1_r10):
int rssi = mWifiInfo.getRssi() - 6 * mAggressiveHandover
+ (homeNetworkBoost ? WifiConfiguration.HOME_NETWORK_RSSI_BOOST : 0);
Die Variable mAggressiveHandover
ist eine Variable int
, die in den Entwicklereinstellungen auf 0 oder 1 festgelegt ist :
private void writeWifiAggressiveHandoverOptions() {
mWifiManager.enableAggressiveHandover(mWifiAggressiveHandover.isChecked() ? 1 : 0);
}
Die rssi
Variable geht weiter zu beeinflussen , wie die Verbindung klassifiziert wird: isBadRSSI
, isLowRSSI
oder isHighRSSI
.
Was den Grund angeht, warum es unter den Entwickleroptionen verborgen ist, würde ich sagen, weil es ein wenig hackisch wirkt, mit einem scheinbar willkürlichen Skalar (6), den sich einige Entwickler ausgedacht haben, um das Verhalten in die gewünschte Richtung zu lenken. Google ist sich wahrscheinlich nicht sicher, welche Konsequenzen diese Einstellung hat und wie sich diese optimal anpassen lässt rssi
. Wenn ich mich irre und das irgendwie aussagekräftig ist, gebe ich es gerne zu und erkläre hier warum.
Durch Deaktivieren dieser Einstellung wird die Übergabe von Mobiltelefonen NICHT vollständig deaktiviert . Die WiFi-Verbindung erhält immer noch eine Punktzahl und wird deaktiviert, wenn die Punktzahl zu niedrig ist. Aber hey, die anfängliche Punktzahl wird auch willkürlich festgelegt.