mercredi 9 septembre 2015

how do I get mobile- data cosnumption per app per day

Have been trying this but does not get the exact mobile data consumption. I am storing data in a db per hour and pushing it to server in hourly basis but it does not return me the exact amount of data consumed per app

    public void getMobileDataPerApp() {
                // arrayMobileConsumption.clear();
                DecimalFormat df = new DecimalFormat("0.0");
                final PackageManager pm =getPackageManager();
               // List<ApplicationInfo> packages = pm.getInstalledApplications(0);
                ActivityManager activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
                List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
                //final List<ActivityManager.RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
                for (int i = 0; i < appProcesses.size(); i++)
                {
                    Log.d("Executed app", "Application executed : " +appProcesses.get(i).processName+ "\t\t ID: "+appProcesses.get(i).pid+"");
                    //  String packageName = activityManager.getRunningTasks(1).get(0).topActivity.getPackageName();
                    //String packageName = appProcesses.get(i)..getPackageName();
                    ApplicationInfo app = null;
                    if(appProcesses.get(i).uid > 1026)
                    {
                    try {
                        app = pm.getApplicationInfo(appProcesses.get(i).processName, 0);
                       /* if((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 1) {
                            //it's a system app, not interested
                        } else if ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {
                            //Discard this one
                            //in this case, it should be a user-installed app
                        } else {*/
                            if (Util.isConnectedMobile(this)) {
                                long delta_tx = TrafficStats.getUidTxBytes(app.uid) - tx;
                                long delta_rx = TrafficStats.getUidRxBytes(app.uid) - rx;
                                tx = TrafficStats.getUidTxBytes(app.uid);
                                rx = TrafficStats.getUidRxBytes(app.uid);
                                mobil_tx = mobil_tx + delta_tx;
                                mobil_rx = mobil_rx + delta_rx;
                                datarecivedPerAppTotal = mobil_tx + mobil_tx;

                                String name = (String) pm.getApplicationLabel(app);

}

Aucun commentaire:

Enregistrer un commentaire