Android获取网速和下载速度

     稍微整理了下,直接上代码。

private long lastTotalRxBytes = 0;

private long lastTimeStamp = 0;
private int UPDATE = 100;

private Handler mHandler = new Handler() {
       @Override
       public void handleMessage(Message msg) {
           // TODO 接收消息并且去更新UI线程上的控件内容
           if (msg.what == UPDATE) {
               //tv.setText(String.valueOf(msg.obj));
            Log.i(TAG, "网速为:"+msg.obj);
           }
           super.handleMessage(msg);
       }
   };

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_net_speed);

lastTotalRxBytes = getTotalRxBytes();
lastTimeStamp = System.currentTimeMillis();
Log.i(TAG, "lastTotalRxBytes:"+lastTotalRxBytes);
Log.i(TAG, "lastTimeStamp:"+lastTimeStamp);

TimerTask task = new TimerTask() {
@Override
public void run() {
showNetSpeed();
}
};
new Timer().schedule(task, 1000, 2000); // 1s后启动任务,每2s执行一次
}


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 = UPDATE;
if(speed == 0){
msg.obj = String.valueOf(speed) + ".00kb/s";
}else {
msg.obj = String.valueOf(speed) + "kb/s";
}
mHandler.sendMessage(msg);//更新界面
}

private long getTotalRxBytes() {
// return TrafficStats.getUidRxBytes(getApplicationInfo().uid) == TrafficStats.UNSUPPORTED ? 0 :(TrafficStats.getTotalRxBytes()/1024);//转为KB
return TrafficStats.getTotalRxBytes()/1024;//转为KB
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值