diff --git a/core/java/android/net/TrafficStats.java b/core/java/android/net/TrafficStats.java index 4e019cf073..fa650617f3 100644 --- a/core/java/android/net/TrafficStats.java +++ b/core/java/android/net/TrafficStats.java @@ -597,10 +597,17 @@ public class TrafficStats { } /** - * Return the number of packets transmitted on the specified interface since - * device boot. Statistics are measured at the network layer, so both TCP and + * Return the number of packets transmitted on the specified interface since the interface + * was created. Statistics are measured at the network layer, so both TCP and * UDP usage are included. * + * Note that the returned values are partial statistics that do not count data from several + * sources and do not apply several adjustments that are necessary for correctness, such + * as adjusting for VPN apps, IPv6-in-IPv4 translation, etc. These values can be used to + * determine whether traffic is being transferred on the specific interface but are not a + * substitute for the more accurate statistics provided by the {@link NetworkStatsManager} + * APIs. + * * @param iface The name of the interface. * @return The number of transmitted packets. */ @@ -613,10 +620,17 @@ public class TrafficStats { } /** - * Return the number of packets received on the specified interface since - * device boot. Statistics are measured at the network layer, so both TCP + * Return the number of packets received on the specified interface since the interface was + * created. Statistics are measured at the network layer, so both TCP * and UDP usage are included. * + * Note that the returned values are partial statistics that do not count data from several + * sources and do not apply several adjustments that are necessary for correctness, such + * as adjusting for VPN apps, IPv6-in-IPv4 translation, etc. These values can be used to + * determine whether traffic is being transferred on the specific interface but are not a + * substitute for the more accurate statistics provided by the {@link NetworkStatsManager} + * APIs. + * * @param iface The name of the interface. * @return The number of received packets. */ @@ -628,9 +642,22 @@ public class TrafficStats { } } - /** {@hide} */ - @UnsupportedAppUsage - public static long getTxBytes(String iface) { + /** + * Return the number of bytes transmitted on the specified interface since the interface + * was created. Statistics are measured at the network layer, so both TCP and + * UDP usage are included. + * + * Note that the returned values are partial statistics that do not count data from several + * sources and do not apply several adjustments that are necessary for correctness, such + * as adjusting for VPN apps, IPv6-in-IPv4 translation, etc. These values can be used to + * determine whether traffic is being transferred on the specific interface but are not a + * substitute for the more accurate statistics provided by the {@link NetworkStatsManager} + * APIs. + * + * @param iface The name of the interface. + * @return The number of transmitted bytes. + */ + public static long getTxBytes(@NonNull String iface) { try { return getStatsService().getIfaceStats(iface, TYPE_TX_BYTES); } catch (RemoteException e) { @@ -638,9 +665,22 @@ public class TrafficStats { } } - /** {@hide} */ - @UnsupportedAppUsage - public static long getRxBytes(String iface) { + /** + * Return the number of bytes received on the specified interface since the interface + * was created. Statistics are measured at the network layer, so both TCP + * and UDP usage are included. + * + * Note that the returned values are partial statistics that do not count data from several + * sources and do not apply several adjustments that are necessary for correctness, such + * as adjusting for VPN apps, IPv6-in-IPv4 translation, etc. These values can be used to + * determine whether traffic is being transferred on the specific interface but are not a + * substitute for the more accurate statistics provided by the {@link NetworkStatsManager} + * APIs. + * + * @param iface The name of the interface. + * @return The number of received bytes. + */ + public static long getRxBytes(@NonNull String iface) { try { return getStatsService().getIfaceStats(iface, TYPE_RX_BYTES); } catch (RemoteException e) {