Android: Why are methods for increasing the signal level of neighboring cells better than for the current signal strength of the cells?

I am writing an Android application that collects strong signal levels. I have problems getting the "current" cell signal strength, but I have no problem getting the "neighboring" cell power signals.

To get the current cell signal strength, I created a PhoneStateListener and implemented the onSignalStrengthChanged callback. It works, but not very well. It seems that the signal level almost never changes, and the resolution is scanned for only a few digits. I would agree with the answer that signal level hardware resolution is rude, but when I use the getNeighboringCellInfo () method of TelephonyManager, it works much better. Signal strength readings from neighboring cells often change, and they have much better resolution.

So, how can I get the current signal strength of a cell in the same way that I get the strengths of neighboring cells? It seems strange to me that the functionality of neighboring cells is better than the current cell. Did I miss something?

I would also like to directly call the method from the telephony manager to get the current cell strength, as opposed to the listener, if possible. If anyone knows how, please let me know. Thanks.

+5
source share
2 answers

Based on Android 1.5 notifications (BatteryStatsImpl.java), a notification is sent only if the signal changes between the following states:

SIGNAL_STRENGTH_NONE_OR_UNKNOWN (99)
SIGNAL_STRENGTH_GREAT (16-32)
SIGNAL_STRENGTH_GOOD (8-15)
SIGNAL_STRENGTH_MODERATE (4-7)
SIGNAL_STRENGTH_POOR (0-3)

So, in your case, the signal strength changes in the same range, and you do not receive notifications.

I think this is done in such a way as to save battery life.

+8
source

, , , javadoc, onSignalStrengthChanged() api 2.0 onSignalStrengthsChanged() ( "s" ), , , !

, , Google (, , , ), sdk.

, dev!

+1

All Articles