Android当前下载/上传速度

时间:2013-10-13 21:49:07

标签: android statistics traffic traffic-measurement

所有

我是android的新手,只是开发app来显示当前的下载/上传速度。我从这个Example得到了一些提示。它使用TrafficStats.getTotalRxBytes()函数返回引导后收到的总字节数并单调增加。

所以我使用下面的代码,只显示当前可用速度。但我没有得到结果。它仅显示Total Tx / Rx值。

  1. 有没有替代方法可以实现这一目标?任何代码片段都会非常受欢迎,因为我是一个完整的初学者。

  2. 另外,我无法理解下面的代码。有人可以解释一下吗?

    private final Runnable mRunnable = new Runnable() 
    
  3. 我需要每隔一秒刷新textView中显示的数据。我猜猜想

      mHandler.postDelayed(mRunnable, 1000) ( );   
    

    用于做到这一点。还有其他选择吗?如果没有,使用PostDelayed功能时控制流程如何? (我有点困惑)

    public class MainActivity extends Activity {
    
    private Handler mHandler = new Handler();
    private long mStartRX =0;
    private long mStartTX = 0;
    private static final int RESULT_SETTINGS = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mHandler.postDelayed(mRunnable, 1000);
    
    }
    private final Runnable mRunnable = new Runnable() 
    {
    
          public void run() 
          {
    
            long TxResult=0;
            long RxResult=0;
            long or1=0,or2=0;
    
            long rxBytes = TrafficStats.getTotalRxBytes()- mStartRX-or1; 
    
            if (rxBytes<1024)
            {
                RxResult=0;
    
            }
           else if (rxBytes>1024)
           {
               // RxResult=0;
               RxResult=RxResult+(rxBytes/1024);
           }
           TextView RX = (TextView)findViewById(R.id.rxOut);
           //mStartRX=rxBytes;
           TextView TX = (TextView)findViewById(R.id.txOut);
           RX.setText(Long.toString(RxResult));
           long txBytes = TrafficStats.getTotalTxBytes()- mStartTX-or2;
           if (txBytes<1024)
           {
               TxResult=0;
           }
           else if (txBytes>1024)
           {
               TxResult=0;
               TxResult=TxResult+(txBytes/1024);
           }
    
           TX.setText(Long.toString(TxResult));
           or2=or2+txBytes;
            or1=or1+rxBytes;
            mHandler.postDelayed(mRunnable, 100);
    
           }
     };
    

0 个答案:

没有答案