package com.loaderman.trafficdemo;

import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.TrafficStats;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.format.Formatter;
import android.view.View;
import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView tvMobileRxBytes;
private TextView tvMobileTxBytes;
private TextView tvTotalRxBytes;
private TextView tvTotalTxBytes;
private TextView tvAppRxBytes;
private TextView tvAppTxBytes;
private TextView tvAppWifiRxBytes;
private TextView tvAppWifiTxBytes; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvMobileRxBytes = (TextView) findViewById(R.id.tv_mobileRxBytes);
tvMobileTxBytes = (TextView) findViewById(R.id.tv_mobileTxBytes);
tvTotalRxBytes = (TextView) findViewById(R.id.tv_totalRxBytes);
tvTotalTxBytes = (TextView) findViewById(R.id.tv_totalTxBytes);
tvAppRxBytes = (TextView) findViewById(R.id.tv_appRxBytes);
tvAppTxBytes = (TextView) findViewById(R.id.tv_appTxBytes);
tvAppWifiRxBytes = (TextView) findViewById(R.id.tv_appwifiRxBytes);
tvAppWifiTxBytes = (TextView) findViewById(R.id.tv_appwifiTxBytes);
method();
}
//上网让其产生流量,Demo模拟使用
public void web(View view){
startActivity(new Intent(this,WebViewActivity.class)) ;
}
public void method() {
long totalRxBytes = TrafficStats.getTotalRxBytes(); //接收总流量, wifi + 移动
long totalTxBytes = TrafficStats.getTotalTxBytes();//发送总流量, wifi+移动
long mobileRxBytes = TrafficStats.getMobileRxBytes();//接收总流量, 移动
long mobileTxBytes = TrafficStats.getMobileTxBytes();//发送总流量, 移动
tvMobileRxBytes.setText("手机总接收流量:" + Formatter.formatFileSize(this, totalRxBytes));
tvMobileTxBytes.setText("手机总发送流量:" + Formatter.formatFileSize(this, totalTxBytes));
tvTotalRxBytes.setText("手机GPRS接收:" + Formatter.formatFileSize(this, mobileRxBytes));
tvTotalTxBytes.setText("手机GPRS发送:" + Formatter.formatFileSize(this, mobileTxBytes));
ConnectivityManager connectMgr = (ConnectivityManager) this
.getSystemService(Context.CONNECTIVITY_SERVICE);
ApplicationInfo info = getApplicationInfo();
NetworkInfo netinfo = connectMgr.getActiveNetworkInfo();
if (netinfo != null || netinfo.isAvailable()) {
if (netinfo.getType() == ConnectivityManager.TYPE_MOBILE) {
System.out.println(info.packageName);
String name = info.packageName;
if (name.equals("com.loaderman.trafficdemo") || name == "com.loaderman.trafficdemo") {
int uid = info.uid;
tvAppRxBytes.setText("本软件GPRS接收:" + Formatter.formatFileSize(this, TrafficStats.getUidRxBytes(uid)));
tvAppTxBytes.setText("本软件GPRS发送:" + Formatter.formatFileSize(this, TrafficStats.getUidTxBytes(uid)));
}
}
if (netinfo.getType() == ConnectivityManager.TYPE_WIFI) {
System.out.println(info.packageName);
String name = info.packageName;
if (name.equals("com.loaderman.trafficdemo") || name == "com.loaderman.trafficdemo") {
int uid = info.uid;
tvAppWifiRxBytes.setText("本软件接收wifi:" + Formatter.formatFileSize(this, TrafficStats.getUidRxBytes(uid)));
tvAppWifiTxBytes.setText("本软件发送wifi:" + Formatter.formatFileSize(this, TrafficStats.getUidTxBytes(uid)));
}
}
} }
//可见时再次刷新
@Override
protected void onResume() {
super.onResume();
method();
}
}

添加权限:

    <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

效果图

手机APP流量的发送与获取功能的实现的更多相关文章

  1. 通过天天模拟器加burpsuite抓取手机app流量

    通过天天模拟器,代理抓取安卓app数据包.也可以抓取https. 1.下载天天模拟器,官方下载即可,下载安装. 2.启动天天模拟器,设置代理,点击上方wlan设置图标,打开wlan设置,如下: 3.鼠 ...

  2. 360WIFI下使用Fiddler抓取手机APP流量

    过程其实很简单,仅仅做个记录.过程适用Android和ios手机 fidder的原理如下: 下面开始步骤: 1.在fidder中设置代理:Tools--->Fidder Options,设置端口 ...

  3. 【Python】[技术博客] 一些使用Python编写获取手机App日志的操作

    一些使用Python编写获取手机App日志的操作 如何获取手机当前打开的App的包名 如何获取当前App进程的PID 如何查看当前App的日志 如何将日志保存到文件 如何关闭进程 如何不显示命令行窗口 ...

  4. 手机app抓包

    简介 爬虫是cs架构中的c端 原理是模拟浏览器向服务器发送请求 如果要爬取手机APP的数据,APP也是服务端与浏览器性质相同 我们只要获取到手机APP给服务器发送数据 并加以分析就能模拟它的请求 从而 ...

  5. 使用Fiddler抓取手机APP数据包--360WIFI

    使用Fiddler抓取手机APP流量--360WIFI 操作步骤:1.打开Fiddler,Tools-Fiddler Options-Connections,勾选Allow remote comput ...

  6. 利用WeX5给手机APP增加短信验证码功能

    帖子来源:http://bbs.wex5.com/thread-70908-1-1.html 遇到一个手机APP项目客户要求注册到APP上的用户手机号必须是真实的通过X5平台整合短信发送平台接口完成了 ...

  7. App流量测试--使用安卓自身提供的TCP收发长度统计功能

    在Linux系统有3个地方保存流量统计文件,对于Android系统同样也适用: (1)在/proc/net/dev下可以查看各个网络接口的收发流量  (等同adb shell cat /proc/pi ...

  8. 手机App测试如何获取包名的入口【两种方式】

    在进行手机APP测试的时候经常要获取包名.那么何为包名呢?简单来说其实就是手机APP的安装apk文件的名称,每个手机APP(软件)的包名都是唯一的. 那么我们怎样来获取包名以及包名的入口呢? 方法一: ...

  9. 手机app(功能)测试重点

    在手机客户端进行查看的测试重点:1.“点击加载更多”的分页处理技术,是否有重复的数据,数据显示是否完整,到达最后一页后是否还有数据进行显示2.数据的排序方式2.界面跳转是否正确3.出现异常情况是否有提 ...

随机推荐

  1. bisect:维护一个有序的列表

    介绍 bisect模块实现了一个算法来向列表中插入元素,同时仍然保证列表有序 有序插入 import bisect ''' 可以使用bisect.insort向一个列表中插入元素 ''' values ...

  2. spring-02

    spring-02 1.谈谈你对 Spring 的理解 Spring 是一个开源框架,为简化企业级应用开发而生.Spring 可以是使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.S ...

  3. 6.Shell 计划任务服务程序

    计划任务服务程序 经验丰富的系统运维工程师可以使得Linux在无需人为介入的情况下,在指定的时间段自动启用或停止某些服务或命令,从而实现运维的自动化. 如何设置服务器的计划任务服务,把周期性.规律性的 ...

  4. Mysqldump备份问题

    1.1 Mysqldump文件数打开过多 mysql> mysqldump -uroot -p131400 --all-databases >/backup/mysql.sql mysql ...

  5. C++第五次作业--运算符重载和函数重载

    C++ 运算符重载和函数重载 C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载. 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是 ...

  6. 数据库——Oracle(1)

    1 Oracle数据库:ORACLE数据库系统是美国ORACLE(甲骨文)研发并提供的款关系型数据库管理系统,占据市场的主要的份额. 目前常用版本:Oracle9i,Oracle10g,Oracle1 ...

  7. 【转载】MCMC和Gibbs Sampling算法

    转载随笔,原贴地址:MCMC和Gibbs Sampling算法 本文是整理网上的几篇博客和论文所得出来的,所有的原文连接都在文末. 在科学研究中,如何生成服从某个概率分布的样本是一个重要的问题.如果样 ...

  8. 如何保存ActionMailbox inbound HTML email和关于ActionText与ActiveStorage的附加

    gi代码: https://github.com/gorails-screencasts/action-mailbox-action-text/commit/3aeedc09441696c9489ed ...

  9. java 发布订阅

    https://www.cnblogs.com/coderdxj/p/9627310.html java 观察这模式(发布订阅模式)   观察者设计模式定义了对象间的一种一对多的组合关系,以便一个对象 ...

  10. 自制centos6开机界面

    1.先准备好一张640x480大小的图片并上传至主机(可在画图工具中调整图片大小) 注意如没有rz命令,可以先安装: yum install lrzsz 2.制作背景图 制作需要用到convert命令 ...