来自技术共和国:
在 Eclipse 中创建一个新的 Android 项目。请记住使用 TrafficStats 类,您必须针对 Android 2.2 (Froyo) 或更高版本的 API。
在该/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。让我们继续声明三个私有类变量。
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 override 来初始化我们的私有变量,并在 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);
}
};