Android中如何统计每一个APP的流量(3g)使用?
2016-11-06 17:05
375 查看
翻译自http://stackoverflow.com/questions/12613402/android-statistic-3g-traffic-for-each-app-how
想要统计每一个APP的流量使用,我现在使用的是Android TrafficStats
然后我可以得到类似与以下的结果:
Youtube 50.30 MBytes
Facebook 21.39 MBytes
Google Play 103.38 MBytes
(and more…)
我所知道的是,“Android TrafficStat”只是一个指向c文件的指针。(或者是.so?)
但得到的结果是wifi&3g混合的结果,有没有得到没有wifi的流量信息的方法呢?
首先创建一个class,继承BroadcasrReceiver
清单文件
代码
创建一个phone stats listener
最后,我的逻辑是:
1 连接数据库
2 通过TrafficStats 统计流量数据(每一分钟),当且仅当3g开的时候才统计
3 如果3g关了,停止统计
4 如果3g&wifi都开着,停止统计
据我所知,如果3g&wifi都开着,只跑wifi流量
想要统计每一个APP的流量使用,我现在使用的是Android TrafficStats
然后我可以得到类似与以下的结果:
Youtube 50.30 MBytes
Facebook 21.39 MBytes
Google Play 103.38 MBytes
(and more…)
我所知道的是,“Android TrafficStat”只是一个指向c文件的指针。(或者是.so?)
但得到的结果是wifi&3g混合的结果,有没有得到没有wifi的流量信息的方法呢?
回答
我有一个方法。。。。首先创建一个class,继承BroadcasrReceiver
清单文件
<receiver android:name=".core.CoreReceiver" android:enabled="true" android:exported="false"> <intent-filter> <action android:name="android.net.ConnectivityManager.CONNECTIVITY_ACTION" /> <action android:name="android.net.wifi.STATE_CHANGE" /> </intent-filter> </receiver>
代码
/** * @author me */ public class CoreReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (Constants.phone == null) { // Receive [network] event Constants.phone=new PhoneListen(context); TelephonyManager telephony=(TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); telephony.listen(Const
创建一个phone stats listener
public class PhoneListen extends PhoneStateListener { private Context context; public PhoneListen(Context c) { context=c; } @Override public void onDataConnectionStateChanged(int state) { switch(state) { case TelephonyManager.DATA_DISCONNECTED:// 3G //3G has been turned OFF break; case TelephonyManager.DATA_CONNECTING:// 3G //3G is connecting break; case TelephonyManager.DATA_CONNECTED:// 3G //3G has turned ON break; } } }
最后,我的逻辑是:
1 连接数据库
2 通过TrafficStats 统计流量数据(每一分钟),当且仅当3g开的时候才统计
3 如果3g关了,停止统计
4 如果3g&wifi都开着,停止统计
据我所知,如果3g&wifi都开着,只跑wifi流量
相关文章推荐
- Burpsuite如何抓取使用了SSL或TLS传输的Android App流量
- Fiddler如何抓取使用了SSL或TLS传输的Android App流量
- android中如何使用一张图片适配不同尺寸的APP引导页
- 如何使用真机调试Android App
- 如何优雅的使用Retrofit、Rxjava、Butterknife、Material开发一款MVP模式的新闻+天气预报+妹子的Android app
- android 了解你的APP如何使用内存
- android 了解你的APP如何使用内存
- Android&iOS:如何在外部启动app(若有安裝APP, 则自动启动app(使用 URL Schema), 若没有安装, 则询问是不是到应用市场下载)
- 如何使用Android Studio打开一个App项目,导入Android App项目需要修改哪些配置文件?
- 如何在android app中使用STL库
- linux下如何使用vnstat查看服务器带宽流量统计
- android中如何使用一张图片适配不同屏幕尺寸的APP启动引导页
- 如何使用android-support-v7-appcompat
- Android 获取手机整体流量使用情况以及某个应用的流量的统计
- android 手机同时使用wifi 和数据流量(3G/4G...)
- Burpsuite如何抓取使用了SSL或TLS传输的 IOS App流量
- android app开发,如何使用/引入第三方扩展jar
- Android App 开源项目使用统计
- Android--获取使用的总流量和每个App的上传、下载的流量
- 【python调用windows CLI】调用adb统计Android app的流量消耗