Текущая скорость загрузки/выгрузки в Android

Все,

Я новичок в Android, просто разрабатываю приложение для отображения текущей скорости загрузки/выгрузки. У меня есть несколько советов из этого Пример. Он использует функцию 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);
    
           }
     };
    

person Cyborgz    schedule 13.10.2013    source источник
comment
Поскольку я не буду решать первую проблему, я положу ее здесь. часть кода просто создает объект Thread, который содержит код, который вы хотите выполнить, и вы назначаете его обработчику, который будет выполнять его каждую секунду. вы можете поискать больше о темах в Google, и вы можете найти более подробный ответ на этот вопрос.   -  person Jorge Aguilar    schedule 14.10.2013
comment
Попробуйте этот код stackoverflow.com/questions/5193518/   -  person user23836    schedule 28.04.2014