Below is the class which returns me data counter value in String. I was wanted to format String into KB, MB, and GB
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView infoView = (TextView)findViewById(R.id.traffic_info);
String info = "";
long getmobilerxbytes = TrafficStats.getMobileRxBytes();
long getmobilerxpackets = TrafficStats.getMobileRxPackets();
long getmobiletxbytes = TrafficStats.getMobileTxBytes();
long getmobiletxpackets = TrafficStats.getMobileTxPackets();
long totalrxbytes = TrafficStats.getTotalRxBytes();
long totalrxpackets = TrafficStats.getTotalRxPackets();
long totaltxbytes = TrafficStats.getTotalTxBytes();
long totaltxpackets = TrafficStats.getTotalTxPackets();
info += "Mobile Interface:\n";
info += ("\tReceived: " + getmobilerxbytes + " bytes / " + getmobilerxpackets + " packets\n");
info += ("\tTransmitted: " + getmobiletxbytes + " bytes / " + getmobiletxpackets + " packets\n");
info += "All Network Interface:\n";
info += ("\tReceived: " + totalrxbytes + " bytes / " + totalrxpackets + " packets\n");
info += ("\tTransmitted: " + totaltxbytes + " bytes / " + totaltxpackets + " packets\n");
infoView.setText(info);
}
Here is beautiful method to do that :
public static String humanReadableByteCount(long bytes, boolean si) {
int unit = si ? 1000 : 1024;
if (bytes < unit) return bytes + " B";
int exp = (int) (Math.log(bytes) / Math.log(unit));
String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp-1) + (si ? "" : "i");
return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre);
}
But I am not sure how can i use above method in my onCreate code
Thanks in advance
For the better usability, the required code is grouped into the formatFileSize () function. The formatFileSize () function converts the size from bytes to KB, MB, GB, TB, PB, EB, ZB, YB using Javascript.
C# FileInfo.Length returns the size of a file in bytes. This method coverts file size in bytes into KB, MB, GB, TB, or PB.
For the better usability, the required code is grouped into the formatFileSize () function. The formatFileSize () function converts the size from bytes to KB, MB, GB, TB, PB, EB, ZB, YB using Javascript. The formatFileSize () function accepts the following parametters.
Each 1024 bytes is the next byte in size. Please make sure to change the file name to your own file. In the above code, FileInfo.Length returns the size of a file in number of bytes. FormatSize method divides total bytes by x1024 and finds the next abbreviation from the array.
Call the method by passing the bytes . Add the String which is returned after doing the calculations to the TextView.
public static String getFileSize(long size) {
if (size <= 0)
return "0";
final String[] units = new String[] { "B", "KB", "MB", "GB", "TB" };
int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
}
Just use some mathematical formula shown below where you need:
if(bytes < 1024)
return bytes + " bytes";
bytes /= 1024;
if(bytes < 1024)
return bytes + " KB";
bytes /= 1024;
if(bytes < 1024)
return bytes + " MB";
bytes /= 1024;
if(bytes < 1024)
return bytes + " GB";
return String(bytes);
and to pass it to function
humanReadableByteCount(bytes,true);
where bytes equals TrafficStats.getTotalTxBytes()
Hope it helps. I found some link on stack too link1 and link2
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With