Android獲取網速和下載速度
來源:程序員人生 發布時間:2014-12-10 08:48:23 閱讀次數:5538次
Android利用里常常使用到網絡速度的顯示,特別是文件下載和視頻緩沖的時候。今天筆者就遇到需要顯示視頻播放時的網速,用到的是TrafficStats類。
查找資料,參考了Android流量統計TrafficStats類的使用
private void showNetSpeed() {
long nowTotalRxBytes = getTotalRxBytes();
long nowTimeStamp = System.currentTimeMillis();
long speed = ((nowTotalRxBytes - lastTotalRxBytes) * 1000 / (nowTimeStamp - lastTimeStamp));//毫秒轉換
lastTimeStamp = nowTimeStamp;
lastTotalRxBytes = nowTotalRxBytes;
Message msg = mHandler.obtainMessage();
msg.what = 100;
msg.obj = String.valueOf(speed) + " kb/s";
mHandler.sendMessage(msg);//更新界面
}
思路就是每隔1個時間段就去獲得這個時間段獲得到的網絡數據的大小,然后通過計算取得網速值。
private long lastTotalRxBytes = 0;
private long lastTimeStamp = 0;
private long getTotalRxBytes() {
return TrafficStats.getUidRxBytes(getApplicationInfo().uid)==TrafficStats.UNSUPPORTED ? 0 :(TrafficStats.getTotalRxBytes()/1024);//轉為KB
}
TimerTask task = new TimerTask() {
@Override
public void run() {
showNetSpeed();
}
};
在這里用到的是TimerTask來定時獲得網速,并發消息更新界面。
在啟動任務時,初始化數據
lastTotalRxBytes = getTotalRxBytes();
lastTimeStamp = System.currentTimeMillis();
new Timer().schedule(task, 1000, 2000); // 1s后啟動任務,每2s履行1次
可以根據需求,多久更新獲得1次網速
如果是多個任務下載,需要分別顯示網速,就能夠直接通過在1定時間間隔內下載的數據大小來計算網速,方法類似。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈