2017-05-17 2 views
0

I rot schon einige Fragen zu diesem Thema wie diese zum Beispiel: Application never receives RSSI_CHANGED_ACTIONSehr langsame Reaktion RSSI_CHANGED_ACTION

Aber sie löste das Problem SCAN_RESULTS_AVAILABLE_ACTION verwenden. Ich habe das auch getan, aber jetzt muss ich RSSI_CHANGED_ACTION aufgrund von Kundenanforderungen verwenden.

Es scheint, als ob es zu rssi Änderungen langsam reagiert. Zum Beispiel ändert es sich nur, wenn ich größere Standortänderungen mache. Wenn ich SCAN_RESULTS_AVAILABLE_ACTION verwende, ändert sich das sehr oft. Selbst wenn ich nur in einem Raum bin.

Warum reagiert RSSI_CHANGED_ACTION nur langsam?

Antwort

1

Ich fand die Antwort, warum es "langsam reagiert". In WifiStateMachine.java ich diesen Schnipsel hier:

 /* 
     * Rather then sending the raw RSSI out every time it 
     * changes, we precalculate the signal level that would 
     * be displayed in the status bar, and only send the 
     * broadcast if that much more coarse-grained number 
     * changes. This cuts down greatly on the number of 
     * broadcasts, at the cost of not informing others 
     * interested in RSSI of all the changes in signal 
     * level. 
     */ 

und in WifiWatchdogStateMachine.java fand ich dieses hier:

/* RSSI Levels as used by notification icon 
    Level 4 -55 <= RSSI 
    Level 3 -66 <= RSSI < -55 
    Level 2 -77 <= RSSI < -67 
    Level 1 -88 <= RSSI < -78 
    Level 0   RSSI < -88 */ 

Ich denke, es ist selbsterklärend. Ich habe das ausprobiert und du bekommst nur ein Broadcast empfangen wenn du ein Level überholst. Zum Beispiel haben Sie besser oder gleich -55 dbm und nach dem nächsten Polling zwischen -66 und -55 erhalten Sie eine Broadcastrecieve. Aber wenn sich Ihr dBm-Wert nur zwischen -55 und -66 ändert, werden Sie nie eine Übertragung erhalten.

Verwandte Themen