Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
824 views
in Technique[技术] by (71.8m points)

signal strength - How to detect slow internet connection in android app

I want to detect if a phone has a slow internet connection or high-speed internet.

Now they have deprecated NetworkInfo and suggesting that we should use ConnectivityManager#getNetworkCapabilities using this I am able to get the signal strength but not able to figure out how to use integer value returned by networkCapabilities.getSignalStrength()

It is returning an Integer value I am getting these values (-39, -71, -31). My question is how should we define that signal strength is good/poor.

Here is my code to get Signal Strength:

ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
        Network activeNetwork = cm.getActiveNetwork();
        NetworkCapabilities networkCapabilities = cm.getNetworkCapabilities(activeNetwork);
        int signalStrength = networkCapabilities.getSignalStrength();

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

let say you decided that 2G is slow, you can identify the 2G network as follows

NetworkInfo network = connectivity.getActiveNetworkInfo();
int netSubType = network.getSubtypeName();
if(netSubType == TelephonyManager.NETWORK_TYPE_GPRS ||
    netSubType == TelephonyManager.NETWORK_TYPE_EDGE ||
    netSubType == TelephonyManager.NETWORK_TYPE_1xRTT) {
  //user is in slow network
}

See TelephonyManager class for more such constant values.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...