gpt4 book ai didi

android - 如何使用 TrafficStats 分别统计 2G 和 3G 的数据使用量?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:43 28 4
gpt4 key购买 nike

当手机处于2G或3G时,如何混合/加入以下两个代码以分别计算TX和RX字节?

我有以下代码来识别手机何时连接到似乎有效的 EDGE 或 UMTS 网络,并在显示屏上显示 Toast 消息。

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateListener ConnectionStateListener = new PhoneStateListener() {

@Override
public void onDataConnectionStateChanged(int state, int networkType) {
super.onDataConnectionStateChanged(state, networkType);
String sState = "";

switch (networkType) {
case TelephonyManager.NETWORK_TYPE_EDGE: sState = "EDGE (2G)"; break;
case TelephonyManager.NETWORK_TYPE_UMTS: sState = "UMTS (3G)"; break;
}
Toast.makeText(getApplicationContext(), sState, Toast.LENGTH_SHORT).show();
}
};
telephonyManager.listen(ConnectionStateListener,PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
}
}

来自 Tech Republic 中的这个例子我得到这个代码来计算 TX 和 RX 字节。

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mStartRX = TrafficStats.getTotalRxBytes();
mStartTX = TrafficStats.getTotalTxBytes();

mHandler.postDelayed(mRunnable, 1000);
}

//This would be to update the bytes usage every second
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);
}
};
}

也许有人可以帮我解决这个问题。在此先感谢您的任何建议/帮助。

最佳答案

如果我认为您的问题有误,请纠正我。

您想分别计算 2G 和 3G 数据的 TX 和 RX。

将必要的代码复制到单个 Activity 。

取一个 bool 值 is3G 并更改它 onDataConnectionStateChanged

然后触发mRunnable

telephonyManager.listen(ConnectionStateListener,PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);

mHandler.postDelayed(mRunnable, 1000);

mRunnable 中分别测量 2G 和 3G 的 rx/tx 字节

 if(is3G) {
rxBytes3G = TrafficStats.getTotalRxBytes() - mStartRX - rxBytes2G;
txBytes3G = TrafficStats.getTotalTxBytes() - mStartTX - txBytes2G;
} else {
rxBytes2G = TrafficStats.getTotalRxBytes() - mStartRX - rxBytes3G;
txBytes2G = TrafficStats.getTotalTxBytes() - mStartTX - txBytes3G;
}

更新你的用户界面

关于android - 如何使用 TrafficStats 分别统计 2G 和 3G 的数据使用量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57732940/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com