android.app.usage.NetworkStatsManager#android.app.usage.NetworkStats源码实例Demo

下面列出了android.app.usage.NetworkStatsManager#android.app.usage.NetworkStats 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

private void getBytesForType(
    long[] bytes, int connectivityManagerType, int type, long startTimeMs, long endTimeMs)
    throws RemoteException {
  NetworkStats stats =
      mNetworkStatsManager.querySummary(connectivityManagerType, null, startTimeMs, endTimeMs);
  while (stats.hasNextBucket()) {
    stats.getNextBucket(mBucket);

    int appState =
        mBucket.getState() == NetworkStats.Bucket.STATE_FOREGROUND
            ? NetworkBytesCollector.FG
            : NetworkBytesCollector.BG;
    bytes[type | RX | appState] += mBucket.getRxBytes();
    bytes[type | TX | appState] += mBucket.getTxBytes();
  }
  stats.close();
}
 
源代码2 项目: Awesome-WanAndroid   文件: NetUtils.java
/**
 * Given the start time and end time, then you can get the traffic usage during this time.
 *
 * @param startTime Start of period. Defined in terms of "Unix time", see
 *                  {@link System#currentTimeMillis}.
 * @param endTime   End of period. Defined in terms of "Unix time", see
 *                  {@link System#currentTimeMillis}.
 * @param netType   the netWorkType you want to query
 * @return Number of bytes.
 */
@RequiresApi(api = Build.VERSION_CODES.M)
public static long getNetStats(@NonNull Context context, long startTime, long endTime, int netType) {
    long netDataReceive = 0;
    long netDataSend = 0;
    String subId = null;
    NetworkStatsManager manager = (NetworkStatsManager) context.getApplicationContext().
            getSystemService(Context.NETWORK_STATS_SERVICE);

    if (manager == null) {
        return 0;
    }
    NetworkStats networkStats = null;
    NetworkStats.Bucket bucket = new NetworkStats.Bucket();
    try {
        networkStats = manager.querySummary(netType, subId, startTime, endTime);
    } catch (Exception e) {
        e.printStackTrace();
    }

    while (networkStats != null && networkStats.hasNextBucket()) {
        networkStats.getNextBucket(bucket);
        int uid = bucket.getUid();
        if (getAppUid(context) == uid) {
            netDataReceive += bucket.getRxBytes();
            netDataSend += bucket.getTxBytes();
        }
    }
    return (netDataReceive + netDataSend);
}
 
源代码3 项目: AppsMonitor   文件: DataManager.java
private Map<String, Long> getMobileData(Context context, TelephonyManager tm, NetworkStatsManager nsm, int offset) {
    Map<String, Long> result = new HashMap<>();
    if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
        long[] range = AppUtil.getTimeRange(SortEnum.getSortEnum(offset));
        NetworkStats networkStatsM;
        try {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                networkStatsM = nsm.querySummary(ConnectivityManager.TYPE_MOBILE, null, range[0], range[1]);
                if (networkStatsM != null) {
                    while (networkStatsM.hasNextBucket()) {
                        NetworkStats.Bucket bucket = new NetworkStats.Bucket();
                        networkStatsM.getNextBucket(bucket);
                        String key = "u" + bucket.getUid();
                        Log.d("******", key + " " + bucket.getTxBytes() + "");
                        if (result.containsKey(key)) {
                            result.put(key, result.get(key) + bucket.getTxBytes() + bucket.getRxBytes());
                        } else {
                            result.put(key, bucket.getTxBytes() + bucket.getRxBytes());
                        }
                    }
                }
            }
        } catch (RemoteException e) {
            e.printStackTrace();
            Log.e(">>>>>", e.getMessage());
        }
    }
    return result;
}
 
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    View view = inflater.inflate(R.layout.network_usage_stats, container, false);

    getActivity().getActionBar().setTitle(R.string.data_usage);

    mPackageManager = getActivity().getPackageManager();
    mNetstatsManager = (NetworkStatsManager)getActivity().getSystemService(
            Context.NETWORK_STATS_SERVICE);

    mListData = new ArrayList<>();
    mListAdapter = new ArrayAdapter<List<NetworkStats.Bucket>>(getActivity(),
            R.layout.data_usage_item, android.R.id.title, mListData) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View appView = convertView;
            if (convertView == null) {
                appView = inflater.inflate(R.layout.data_usage_item, parent, false);
                final TextView title = (TextView) appView.findViewById(android.R.id.title);
                final TextView summary = (TextView) appView.findViewById(android.R.id.summary);
                final TextView state = (TextView) appView.findViewById(R.id.state);
                ImageView imageView = (ImageView) appView.findViewById(android.R.id.icon);
                appView.setTag(new ViewHolder(title, summary, state, imageView));
            }
            List<NetworkStats.Bucket> item = getItem(position);
            bindView(appView, item);
            return appView;
        }
    };
    mQuerySpinner = (Spinner) view.findViewById(R.id.query_type_spinner);
    mQuerySpinner.setOnItemSelectedListener(this);
    mExplanation = (TextView) view.findViewById(R.id.explanation);
    mStartDate = getTodayPlus(0, 0);
    mEndDate = getTodayPlus(Calendar.DAY_OF_MONTH, 1);
    mStartDateButton = (Button) view.findViewById(R.id.start_date_button);
    if (mStartDateButton != null) {
        mStartDateButton.setOnClickListener(this);
    }
    mEndDateButton = (Button) view.findViewById(R.id.end_date_button);
    if (mEndDateButton != null) {
        mEndDateButton.setOnClickListener(this);
    }
    updateButtonsText();
    mDataUsageSummary = (TextView) view.findViewById(R.id.data_usage_summary);
    mDataUsageList = (ListView) view.findViewById(android.R.id.list);
    mDataUsageList.setAdapter(mListAdapter);
    mAppHistoryList = (ListView) view.findViewById(R.id.app_history);
    return view;
}
 
private void bindView(View appView, List<NetworkStats.Bucket> item) {
    final ViewHolder viewHolder = (ViewHolder) appView.getTag();
    final TextView title = viewHolder.title;
    final TextView summary = viewHolder.summary;
    final TextView state = viewHolder.state;
    final ImageView imageView = viewHolder.image;
    final Resources res = getResources();
    Drawable icon = res.getDrawable(android.R.drawable.ic_dialog_info, null);
    NetworkStats.Bucket bucket = item.get(0);
    final int uid = bucket.getUid();
    switch (uid) {
        case NetworkStats.Bucket.UID_REMOVED: {
            title.setText(R.string.network_stats_uid_removed);
        } break;
        case NetworkStats.Bucket.UID_TETHERING: {
            title.setText(R.string.network_stats_uid_tethering);
        } break;
        case android.os.Process.SYSTEM_UID: {
            title.setText(R.string.network_stats_uid_system);
        } break;
        default: {
            title.setText(getString(R.string.network_stats_uid, uid));
            icon = mPackageManager.getDefaultActivityIcon();
            final String[] packageNames = mPackageManager.getPackagesForUid(uid);
            final int length = packageNames != null ? packageNames.length : 0;
            try {
                if (length == 1) {
                    final String pkgName = packageNames[0];
                    final ApplicationInfo info = mPackageManager.getApplicationInfo(pkgName,
                            0 /* no flags */);
                    if (info != null) {
                        title.setText(info.loadLabel(mPackageManager));
                        icon = info.loadIcon(mPackageManager);
                    }
                } else {
                    for (int i = 0; i < length; i++) {
                        final String packageName = packageNames[i];
                        final PackageInfo packageInfo = mPackageManager.getPackageInfo(
                                packageName, 0 /* no flags */);
                        final ApplicationInfo appInfo = mPackageManager.getApplicationInfo(
                                packageName, 0 /* no flags */);

                        if (appInfo != null && packageInfo != null) {
                            if (packageInfo.sharedUserLabel != 0) {
                                title.setText(mPackageManager.getText(packageName,
                                        packageInfo.sharedUserLabel,
                                        packageInfo.applicationInfo));
                                icon = appInfo.loadIcon(mPackageManager);
                            }
                        }
                    }
                }
            } catch (PackageManager.NameNotFoundException e) {
                // keep the default activity icon
            }
        }
    }
    imageView.setImageDrawable(icon);
    final int bucketsCount = item.size();
    if (bucketsCount == 1) {
        summary.setText(formatSize(bucket.getRxBytes() + bucket.getTxBytes()));
        switch (bucket.getState()) {
            case NetworkStats.Bucket.STATE_FOREGROUND: {
                state.setText(R.string.network_stats_foreground_state);
            } break;
            case NetworkStats.Bucket.STATE_DEFAULT: {
                state.setText(R.string.network_stats_default_state);
            } break;
            case NetworkStats.Bucket.STATE_ALL: {
                state.setText(R.string.network_stats_combined_state);
            } break;
        }
    } else {
        summary.setText(getString(R.string.network_stats_items, bucketsCount));
        state.setText(R.string.network_stats_combined_state);
    }
}