- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当手机处于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/
我正在尝试使用 TrafficStats 获取移动数据使用情况。 例子: mobileDataUsage = TrafficStats.getMobileRxBytes() +TrafficStats
当我打开 wifi 并连接时,TrafficStats.getMobileRxBytes() 和 TrafficStats.getMobileTxBytes() 总是返回 0,但是关闭 wifi,得到
我想获得一些有关获取日期间隔之间的 3G 数据统计信息的帮助。据我所知,我应该使用 TrafficStats(Android api 2.2 或更高版本)。我想将此信息保存到 SQLite 表中以每月
我花了一些时间研究了 volley 的实现,并在类 NetworkDispatcher 中找到了这段代码: // Tag the request (if API >= 14)
我的应用程序使用 TrafficStats 来测量来自 3G 连接的传入字节数。出于某种原因,在我 friend 的三星 Galaxy SII 上运行我的应用程序时,该值似乎在一段时间后重置为零。 我
我正在尝试测量我的应用收到了多少字节。我这样做: long receivedBytesBefore = TrafficStats.getTotalRxBytes(); ... doSomething(
我写了一个小的 android 应用程序,发送 Http 请求,从服务器接收响应,并计算传输和接收的字节数。代码如下 long receivedBytes = TrafficStats.getUidR
(我认为这是一个常见问题,但请不要太快将其标记为重复,因为我相信我的回答为讨论增添了新内容。) 相关的API是TrafficStats ,它从例如获取数据/proc/uid_stat/. 统计信息必须
我的应用正在尝试计算通过 WiFi/LAN 和移动数据连接发送和接收的字节数。为此,我在某个时间点获取了 TrafficStats 计数器的值,并在下次检查时从其值中减去该值。 // get curr
有什么方法可以按天获取网络流量/数据使用情况? (我对实时跟踪不感兴趣) 示例:启动应用程序 (APK),搜索 30 天前的一些网络流量日志,并显示一些总字节数。 TrafficStats 类可以返回
TrafficStats.incrementOperationCount() 的文档说: Increment count of network operations performed under t
我正在制作一个软件来播放在线视频,我正在尝试向软件添加流量统计功能。我尝试使用 TrafficStats 和 getUidRxBytes 函数。但是,它不计算 videoview 的净流量。像下面的代
我正在尝试在我的代码中获取流量统计信息。但是当我使用 TrafficStats.getUidTxBytes(uid) 它总是返回-1,即 TrafficStats.UNSUPPORTED 我不确定如何
我想获取android应用产生的准确网络流量:: long totalTraffic = TrafficStats.getUidRxBytes(uid) + TrafficStats.getUidTx
我制作了这个程序,我的 TrafficStats.getUidRxBytes() 方法一直给我 0。我检查了我的应用程序并有数据使用记录,但我的代码没有显示接收和发送数据量的数据使用量。另外,当我打印
我试图弄清楚我使用 OkHttpClient 发送的请求具体使用了多少我的应用程序数据,我发现我可以使用 TrafficStats标记线程,然后使用标记查看它的网络 Activity 。 如果我做类似
我知道我可以使用以下 trafficstats api 方法来获取任何给定应用程序的所有网络接口(interface)发送和接收的字节数。但是我如何只获取移动设备的统计信息?这样我就可以将移动数据和
我正在尝试获取从设备传输的字节总数(使用 getMobileTxBytes() 。 我从模拟器中的方法调用中得到的数字是 -1(这意味着该方法在设备上不受支持)。有没有办法让模拟器在这里返回一个合理的
对Android的TrafficStats的以下两种方法有疑惑:getUidTxBytes(int uid) 和 getUidRxBytes(int uid) ,这两个方法返回通过网络为此 UID 传
使用 TrafficStats 我正在检查 youtube 应用程序数据使用情况。在某些设备上它工作正常,但在许多其他设备上却不行。 我从开发者网站发现,这些统计数据可能并非在所有平台上都可用。如果此
我是一名优秀的程序员,十分优秀!