Android中当前的下载/上传速度
全部, 我是android的新手,正在开发应用程序来显示当前的下载/上传速度。我从中得到了一些提示。它使用TrafficStats.getTotalRxBytes()函数返回启动后接收的总字节数,并单调递增 所以我使用下面的代码,只显示当前可用的速度。但我没有得到结果。它仅显示Tx/Rx总值Android中当前的下载/上传速度,android,statistics,traffic,traffic-measurement,Android,Statistics,Traffic,Traffic Measurement,全部, 我是android的新手,正在开发应用程序来显示当前的下载/上传速度。我从中得到了一些提示。它使用TrafficStats.getTotalRxBytes()函数返回启动后接收的总字节数,并单调递增 所以我使用下面的代码,只显示当前可用的速度。但我没有得到结果。它仅显示Tx/Rx总值 有没有其他办法来实现这一点?任何代码片段都将非常感谢,因为我是一个完全的初学者 另外,我不能理解下面的代码。有人能解释一下吗 private final Runnable mRunnable = new R
private final Runnable mRunnable = new Runnable()
mHandler.postDelayed(mRunnable, 1000) ( );
是用来做这件事的。还有别的选择吗?如果不是,当使用PostDelayed函数时,控制流会是怎样的?(我有点困惑)
公共类MainActivity扩展活动{
私有处理程序mHandler=新处理程序();
专用长mStartRX=0;
专用长mStartTX=0;
私有静态最终整数结果_设置=1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mHandler.postDelayed(mRunnable,1000);
}
private final Runnable mRunnable=new Runnable()
{
公开募捐
{
长TxResult=0;
长RxResult=0;
长or1=0,or2=0;
long rxBytes=TrafficStats.getTotalRxBytes()-mStartRX-or1;
如果(rxBytes1024)
{
//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;
如果(txBytes1024)
{
TxResult=0;
TxResult=TxResult+(txBytes/1024);
}
TX.setText(Long.toString(TxResult));
or2=or2+txBytes;
or1=or1+rxBytes;
mHandler.postDelayed(mRunnable,100);
}
};
因为我不会解决第一个问题,所以我将把它放在这里。这段代码只是创建一个线程对象,其中包含您要执行的代码,然后您将其分配给每秒执行该代码的处理程序。您可以在google上搜索更多关于线程的信息,您可以找到更深入的答案。请尝试以下代码
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);
}
};