Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android獲取網速和下載速度

Android獲取網速和下載速度

編輯:關於Android編程


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);//更新界面
	}

思路就是每隔一個時間段就去獲取這個時間段獲取到的網絡數據的大小,然後通過計算獲得網速值。

	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. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved