TechRepublicから:
Eclipseで新しいAndroidプロジェクトを作成します。Android 2.2(Froyo)以降のAPIをターゲットにする必要があるTrafficStatsクラスを使用することを忘れないでください。
この/res/layout
フォルダーに、activity_main.xmlリソースを作成します。このプロジェクトでは、垂直に積み重ねられた線形レイアウトで一連のテキストビューを使用しています。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingBottom="20dip"
android:text="Traffic Stats Demo"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Transmit Bytes"
android:textColor="#00ff00"
android:textSize="14sp" />
<TextView
android:id="@+id/TX"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="0"
android:textSize="14sp" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Receive Bytes"
android:textColor="#ff0000"
android:textSize="14sp" />
<TextView
android:id="@+id/RX"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="0"
android:textSize="14sp" />
</LinearLayout>
レイアウトが整ったら、/srcフォルダーに移動できます。Activity / AppCompatActivityクラスを拡張して、MainActivity.javaを作成します。また、先に進んで、3つのプライベートクラス変数を宣言しましょう。
MainActivity.java
package com.authorwjf;
import android.app.Activity;
import android.app.AlertDialog;
import android.net.TrafficStats;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
public class Main extends Activity {
private Handler mHandler = new Handler();
private long mStartRX = 0;
private long mStartTX = 0;
}
on createオーバーライドを使用して、プライベート変数を初期化し、UIスレッドでコールバックをスケジュールします。列挙型TrafficStats.UNSUPPORTEDのチェックをメモします。私のTrafficStatsクラスの経験は問題ありませんでしたが、Googleの公式ドキュメントには、一部のデバイスがこのタイプのレポートをサポートしていない可能性があり、その場合、呼び出しは前述の値を返すと記載されています。そのため、ここで示したように、防御的にコードを作成することをお勧めします。
MainActivity.java
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mStartRX = TrafficStats.getTotalRxBytes();
mStartTX = TrafficStats.getTotalTxBytes();
if (mStartRX == TrafficStats.UNSUPPORTED || mStartTX == TrafficStats.UNSUPPORTED) {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Uh Oh!");
alert.setMessage("Your device does not support traffic stat monitoring.");
alert.show();
} else {
mHandler.postDelayed(mRunnable, 1000);
}
}
最後になりましたが、表示を更新し、ランナブルのスケジュールを変更する必要があります。
MainActivity.java
private final Runnable mRunnable = new Runnable() {
public void run() {
TextView RX = (TextView) findViewById(R.id.RX);
TextView TX = (TextView) findViewById(R.id.TX);
long rxBytes = TrafficStats.getTotalRxBytes() - mStartRX;
RX.setText(Long.toString(rxBytes));
long txBytes = TrafficStats.getTotalTxBytes() - mStartTX;
TX.setText(Long.toString(txBytes));
mHandler.postDelayed(mRunnable, 1000);
}
};