Check the bandwidth rate in Android
Asked Answered
G

3

12

We have an option to check the network connection types in Android (whether it is 3G, edge or gprs).

I need to check the the bandwidth rate. I need to initiate a call. For that I need to check the bandwidth rate. Above a particular bandwidth only I need to make visible an option for a call (to initiate a call).

I need to find the connection speed programmatically (connection speed for Mobile Data Link, EDGE).

Garris answered 22/11, 2011 at 11:8 Comment(0)
W
17

You can download a known-size file from your server, and calculate how long did it take to download it. Then you have your bandwidth. Simple but works :)

Sample, not tested :

//Download your image
long startTime = System.currentTimeMillis();
HttpGet httpRequest = new HttpGet(new URL(urlString).toURI());
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpClient.execute(httpRequest);
long endTime = System.currentTimeMillis();

HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity;
bufHttpEntity = new BufferedHttpEntity(entity);

//You can re-check the size of your file
final long contentLength = bufHttpEntity.getContentLength();

// Log
Log.d(TAG, "[BENCHMARK] Dowload time :"+(endTime-startTime)+" ms");

// Bandwidth : size(KB)/time(s)
float bandwidth = contentLength / ((endTime-startTime) *1000);
Worcestershire answered 22/11, 2011 at 11:12 Comment(7)
i need to find the connection speed programmatically in AndroidGarris
BTW this is also programmaticallyRosalbarosalee
The biggest your file is, the more precise the test is going to be, but obviously the longest it will be. In my opinion, a good compromise would be 50KB.Worcestershire
Also if time taken is 0 seconds then what will be bandwidth, we are dividing by zero.Laellaertes
Well... I don't think a download can take 0 ms but yes that would be wise to checkWorcestershire
@CamilleR do you know a way to calculate this while the file is being downloaded? Is there a way to see how much the download speed is?Canyon
@Elmac : You can check #22933321 to get the progress of the download; and see how long it took to download this %/size to know the current download speedWorcestershire
S
7

This will Returns the current link speed in LINK_SPEED_UNITS.

but this work for WIFI Only

WifiManager wifiManager = Context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if (wifiInfo != null) {
    Integer linkSpeed = wifiInfo.getLinkSpeed(); //measured using WifiInfo.LINK_SPEED_UNITS
}
Sika answered 22/11, 2011 at 11:22 Comment(3)
I need to check the connection speed for Mobile Data Link ( mainly EDGE)Garris
Also, this method only returns the theoretical maximum link speed of current associated Wi-Fi AP, which is 54 mbps normally for most APs.Mundy
linkSpeed coming from kbps or mbps?Silici
S
0

Try facebook network library class (library size = 16 KB)

We can fetch manually / network change listener also available.

Manual fetch code:

ConnectionQuality cq = ConnectionClassManager.getInstance().getCurrentBandwidthQuality();

Github link - https://github.com/facebook/network-connection-class

Sentimentalize answered 15/3, 2018 at 9:48 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.