2017-05-17 12 views
0

私はすでに、例えばこのようなこのトピック に関するいくつかの質問赤: Application never receives RSSI_CHANGED_ACTION非常に遅い反応RSSI_CHANGED_ACTION

をしかし、彼らはSCAN_RESULTS_AVAILABLE_ACTIONを使用して問題を解決しました。 私もこれを行いましたが、今は顧客の要件のためにRSSI_CHANGED_ACTIONを使用する必要があります。

rssiの変更が遅く反応するようです。たとえば、場所の変更を大きくすると変更されます。 SCAN_RESULTS_AVAILABLE_ACTIONを使用すると、頻繁に変更されます。私が1つの部屋にいても。

なぜRSSI_CHANGED_ACTIONが遅く反応するのですか?

答えて

1

なぜ「反応が遅い」の答えが見つかりました。

 /* 
     * 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. 
     */ 

をしてWifiWatchdogStateMachine.javaに、私はこのここで見つける::私はここにこのスニペットを見つけWifiStateMachine.javaで

/* 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 */ 

は、私はそれが自己説明だと思います。 これをテストしたところ、1つのレベルを渡すと、ブロードキャスト受信のみが得られます。 たとえば、-55dbm以上の値を持っていて、次のポーリング後に-66と-55の間にブロードキャスティングがあります。しかし、dBmの値が-55と-66の間で変化した場合、ブロードキャストを受信することはありません。