全て、
私はアンドロイドの初心者で、現在のダウンロード/アップロード速度を表示するアプリを開発しています。この例からいくつかのヒントを得ました。これは、起動後に受信した総バイト数を返し、単調に増加する TrafficStats.getTotalRxBytes() 関数を使用します。
そこで、現在利用可能な速度のみを表示するために、以下のコードを使用しました。しかし、私は結果を得ていません。合計 Tx/Rx 値のみが表示されます。
これを達成するための代替手段はありますか? 私は完全な初心者なので、コードスニペットは大歓迎です。
また、以下のコードが理解できません。誰かがこれを説明できますか?
private final Runnable mRunnable = new Runnable()
textView に表示されるデータを 1 秒ごとに更新する必要があります。私は推測する
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); } };