2017-05-17 9 views
0

는 이미 예를 들어이 같은이 주제 에 대한 몇 가지 질문 빨간색 : Application never receives RSSI_CHANGED_ACTION매우 느린 반응 RSSI_CHANGED_ACTION

을 그러나 그들은 SCAN_RESULTS_AVAILABLE_ACTION를 사용하여 문제를 해결했다. 또한이 작업을 수행했지만 고객 요구 사항 때문에 RSSI_CHANGED_ACTION을 사용해야합니다.

rssi 변경 사항에 반응이 느린 것 같습니다. 예를 들어 더 큰 위치 변경을 수행 할 때만 변경됩니다. SCAN_RESULTS_AVAILABLE_ACTION을 사용하면 매우 자주 변경됩니다. 내가 방에있을 때조차도.

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

나는 그것이 자기 설명 생각합니다. 나는 이것을 시험해 보았고 한 레벨을 합격하면 브로드 캐스트 수신 만받습니다. 예를 들어 -55 dbm보다 크거나 같고 다음 폴링 후 -66과 -55 사이에 Broadcastrecieve가 생깁니다. 그러나 dBm 값이 -55에서 -66 사이에서 변경되면 브로드 캐스트를받지 못합니다.