android get internet speed

October 1, 2012   ·   0 Comments

Are you using 2.2 (Froyo) or higher?

If so, in your application, import Traffic Stats and when your application is using the internet add in the following. Download/Upload: long BeforeTime = System.currentTimeMillis(); long TotalRxBeforeTest = TrafficStats.getTotalTxBytes(); long TotalTxBeforeTest = TrafficStats.getTotalRxBytes();

/* DO WHATEVER NETWORK STUFF YOU NEED TO DO */

long TotalRxAfterTest = TrafficStats.getTotalTxBytes();
long TotalTxAfterTest = TrafficStats.getTotalRxBytes();
long AfterTime = System.currentTimeMillis();

double TimeDifference = AfterTime - BeforeTime;

double rxDiff = TotalRxAfterTest - TotalRxBeforeTest;
double txDiff = TotalTxAfterTest - TotalTxBeforeTest;

if((rxDiff != 0) && (txDiff != 0))
{
double rxBPS = (rxDiff / (TimeDifference/1000)); // total rx bytes per second.
double txBPS = (txDiff / (TimeDifference/1000)); // total tx bytes per second.
testing[0] = String.valueOf(rxBPS) + "bps. Total rx = " + rxDiff;
testing[1] = String.valueOf(txBPS) + "bps. Total tx = " + txDiff;
}
else
{
testing[0] = "No uploaded or downloaded bytes.";
}

Now you have testing[0] is your download speed (roughly) and testing[1] is your upload speed (roughly)

Just make sure you are only calling this code when you are actually doing network communication or the time will skew your results.

As per latency, there is nothing that great out there. I’ve written this which is untested, but should work ok, but there are likely better solutions available.

latency:

String host = YOUR_HOST
HttpGet request = new HttpGet(host);
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 3000);
HttpClient httpClient = new DefaultHttpClient(httpParameters);
for(int i=0; i<5; i++)
{
long BeforeTime = System.currentTimeMillis();
HttpResponse response = httpClient.execute(request);
long AfterTime = System.currentTimeMillis();
Long TimeDifference = AfterTime - BeforeTime;
time[i] = TimeDifference 
 }

Note: Keep in mind that this will not say the latency at your time of use, but give you an idea of the latency experienced on the network you are using at a particular period of time. ALso, this is the request and response time, instead of the request reaching the network time as say “ping” would normally do.

shareShare on FacebookShare on Google+Share on LinkedInEmail this to someonePrint this pageBuffer this pageDigg thisFlattr the authorShare on RedditPin on PinterestShare on StumbleUponShare on TumblrTweet about this on Twitter

By


Readers Comments (0)


You must be logged in to post a comment.

PowenKo’s Online Store

powenko_arduinoBook
Android7

Amazon

adsbygoogle

Recent Posts

Categories

Amazon