android - 如何从特定时间段获取总体(非特定于应用程序)数据使用情况?
问题描述
我正在研究 wifi 数据使用情况并想开发一个程序,例如,当用户单击一个按钮时,设备已经连接到 wifi 将开始计算数据使用情况,在同一个按钮上单击它将停止计算数据使用情况并给我总计开始和停止事件之间的数据使用情况。我已经搜索了许多与此相关的线程,但没有找到我要查找的内容,任何人都可以帮助我,这是我尝试过的。 代码
public class MainActivity extends AppCompatActivity {
NetworkInfo wifiCheck;
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button)findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
getDataWifiDataUsageInfo();
ConnectivityManager connectionManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
wifiCheck = connectionManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifiCheck.isConnected()) {
// Do whatever here
Toast.makeText(MainActivity.this,"WiFi is Connected",Toast.LENGTH_LONG);
} else {
Toast.makeText(MainActivity.this,"WiFi is not Connected",Toast.LENGTH_LONG);
}
}
public void checkWiFi(View view) {
Intent intent = getIntent();
finish();
startActivity(intent);
}
//get data usage info
void getDataWifiDataUsageInfo(){
Log.e("bytes recvd", "" + android.net.TrafficStats.getMobileRxBytes());
Log.e("Total", "Bytes received" + android.net.TrafficStats.getTotalRxBytes());
}
}
我希望有人一定会帮助我。寻求帮助。
解决方案
如果您在单击按钮时已经知道用户已连接到 WiFi(如您所述),则所有网络(发送和接收数据)都将通过 WiFi 连接。因此,当用户单击按钮开始时:
long startBytes = TrafficStats.getTotalRxBytes() + TrafficStats.getTotalTxBytes();
当点击停止按钮时:
long stopBytes = TrafficStats.getTotalRxBytes() + TrafficStats.getTotalTxBytes();
最后,计算开始和停止之间传输的字节数:
long bytesTransferred = stopBytes - startBytes;
有关更多信息,请查看此处和此处使用的 TrafficStats 方法。
推荐阅读
- python - 根据类别分布在训练和测试之间划分数据集
- ios - Swift 包管理器 - 排除依赖
- google-bigquery - 从列分区表查询时是否需要使用伪列_PARTITIONTIME?
- javascript - 没有为 tpp 项目安装 NPM 包
- reactjs - “从不”类型上不存在属性“值”。在 mui 中使用 useRef 挂钩时
- javascript - 当 url 为空数组时如何添加错误消息?
- angular - Angular 9 - 动画和 *ngIf 条件
- django - 如何在 django rest 框架中的 simplejwt 令牌身份验证中跳过或删除密码字段?
- sql-server - 使用 Bash 脚本更新本地 SQL Server
- html - 导航栏不会折叠到汉堡菜单