TrafficStats
public
class
TrafficStats
extends Object
java.lang.Object | |
↳ | android.net.TrafficStats |
Class that provides network traffic statistics. These statistics include bytes transmitted and received and network packets transmitted and received, over all interfaces, over the mobile interface, and on a per-UID basis.
These statistics may not be available on all platforms. If the statistics are
not supported by this device, UNSUPPORTED
will be returned.
Note that the statistics returned by this class reset and start from zero
after every reboot. To access more robust historical network statistics data,
use NetworkStatsManager
instead.
Summary
Constants | |
---|---|
int |
UNSUPPORTED
The return value to indicate that the device does not support the statistic. |
Public constructors | |
---|---|
TrafficStats()
|
Public methods | |
---|---|
static
void
|
clearThreadStatsTag()
Clear any active tag set to account |
static
void
|
clearThreadStatsUid()
Clear any active UID set to account |
static
int
|
getAndSetThreadStatsTag(int tag)
Set active tag to use when accounting |
static
long
|
getMobileRxBytes()
Return number of bytes received across mobile networks since device boot. |
static
long
|
getMobileRxPackets()
Return number of packets received across mobile networks since device boot. |
static
long
|
getMobileTxBytes()
Return number of bytes transmitted across mobile networks since device boot. |
static
long
|
getMobileTxPackets()
Return number of packets transmitted across mobile networks since device boot. |
static
long
|
getRxBytes(String iface)
Return the number of bytes received on the specified interface since the interface was created. |
static
long
|
getRxPackets(String iface)
Return the number of packets received on the specified interface since the interface was created. |
static
int
|
getThreadStatsTag()
Get the active tag used when accounting |
static
int
|
getThreadStatsUid()
Get the active UID used when accounting |
static
long
|
getTotalRxBytes()
Return number of bytes received since device boot. |
static
long
|
getTotalRxPackets()
Return number of packets received since device boot. |
static
long
|
getTotalTxBytes()
Return number of bytes transmitted since device boot. |
static
long
|
getTotalTxPackets()
Return number of packets transmitted since device boot. |
static
long
|
getTxBytes(String iface)
Return the number of bytes transmitted on the specified interface since the interface was created. |
static
long
|
getTxPackets(String iface)
Return the number of packets transmitted on the specified interface since the interface was created. |
static
long
|
getUidRxBytes(int uid)
Return number of bytes received by the given UID since device boot. |
static
long
|
getUidRxPackets(int uid)
Return number of packets received by the given UID since device boot. |
static
long
|
getUidTcpRxBytes(int uid)
This method was deprecated
in API level 18.
Starting in |
static
long
|
getUidTcpRxSegments(int uid)
This method was deprecated
in API level 18.
Starting in |
static
long
|
getUidTcpTxBytes(int uid)
This method was deprecated
in API level 18.
Starting in |
static
long
|
getUidTcpTxSegments(int uid)
This method was deprecated
in API level 18.
Starting in |
static
long
|
getUidTxBytes(int uid)
Return number of bytes transmitted by the given UID since device boot. |
static
long
|
getUidTxPackets(int uid)
Return number of packets transmitted by the given UID since device boot. |
static
long
|
getUidUdpRxBytes(int uid)
This method was deprecated
in API level 18.
Starting in |
static
long
|
getUidUdpRxPackets(int uid)
This method was deprecated
in API level 18.
Starting in |
static
long
|
getUidUdpTxBytes(int uid)
This method was deprecated
in API level 18.
Starting in |
static
long
|
getUidUdpTxPackets(int uid)
This method was deprecated
in API level 18.
Starting in |
static
void
|
incrementOperationCount(int operationCount)
Increment count of network operations performed under the accounting tag currently active on the calling thread. |
static
void
|
incrementOperationCount(int tag, int operationCount)
Increment count of network operations performed under the given accounting tag. |
static
void
|
setThreadStatsTag(int tag)
Set active tag to use when accounting |
static
void
|
setThreadStatsUid(int uid)
Set specific UID to use when accounting |
static
void
|
tagDatagramSocket(DatagramSocket socket)
Tag the given |
static
void
|
tagFileDescriptor(FileDescriptor fd)
Tag the given |
static
void
|
tagSocket(Socket socket)
Tag the given |
static
void
|
untagDatagramSocket(DatagramSocket socket)
Remove any statistics parameters from the given |
static
void
|
untagFileDescriptor(FileDescriptor fd)
Remove any statistics parameters from the given |
static
void
|
untagSocket(Socket socket)
Remove any statistics parameters from the given |
Inherited methods | |
---|---|
Constants
UNSUPPORTED
public static final int UNSUPPORTED
The return value to indicate that the device does not support the statistic.
Constant Value: -1 (0xffffffff)
Public constructors
Public methods
clearThreadStatsTag
public static void clearThreadStatsTag ()
Clear any active tag set to account Socket
traffic originating
from the current thread.
See also:
clearThreadStatsUid
public static void clearThreadStatsUid ()
Clear any active UID set to account Socket
traffic originating
from the current thread.
See also:
getAndSetThreadStatsTag
public static int getAndSetThreadStatsTag (int tag)
Set active tag to use when accounting Socket
traffic originating
from the current thread. Only one active tag per thread is supported.
Changes only take effect during subsequent calls to
tagSocket(java.net.Socket)
.
Tags between 0xFFFFFF00
and 0xFFFFFFFF
are reserved and
used internally by system services like DownloadManager
when
performing traffic on behalf of an application.
Parameters | |
---|---|
tag |
int |
Returns | |
---|---|
int |
the current tag for the calling thread, which can be used to restore any existing values after a nested operation is finished |
getMobileRxBytes
public static long getMobileRxBytes ()
Return number of bytes received across mobile networks since device boot. Counts packets across all mobile network interfaces, and always increases monotonically since device boot. Statistics are measured at the network layer, so they include both TCP and UDP usage.
Before Build.VERSION_CODES.JELLY_BEAN_MR2
, this may
return UNSUPPORTED
on devices where statistics aren't available.
Returns | |
---|---|
long |
getMobileRxPackets
public static long getMobileRxPackets ()
Return number of packets received across mobile networks since device boot. Counts packets across all mobile network interfaces, and always increases monotonically since device boot. Statistics are measured at the network layer, so they include both TCP and UDP usage.
Before Build.VERSION_CODES.JELLY_BEAN_MR2
, this may
return UNSUPPORTED
on devices where statistics aren't available.
Returns | |
---|---|
long |
getMobileTxBytes
public static long getMobileTxBytes ()
Return number of bytes transmitted across mobile networks since device boot. Counts packets across all mobile network interfaces, and always increases monotonically since device boot. Statistics are measured at the network layer, so they include both TCP and UDP usage.
Before Build.VERSION_CODES.JELLY_BEAN_MR2
, this may
return UNSUPPORTED
on devices where statistics aren't available.
Returns | |
---|---|
long |
getMobileTxPackets
public static long getMobileTxPackets ()
Return number of packets transmitted across mobile networks since device boot. Counts packets across all mobile network interfaces, and always increases monotonically since device boot. Statistics are measured at the network layer, so they include both TCP and UDP usage.
Before Build.VERSION_CODES.JELLY_BEAN_MR2
, this may
return UNSUPPORTED
on devices where statistics aren't available.
Returns | |
---|---|
long |
getRxBytes
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 NetworkStatsManager
APIs.
Parameters | |
---|---|
iface |
String : The name of the interface.
This value cannot be null . |
Returns | |
---|---|
long |
The number of received bytes. |
getRxPackets
public static long getRxPackets (String iface)
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 NetworkStatsManager
APIs.
Parameters | |
---|---|
iface |
String : The name of the interface.
This value cannot be null . |
Returns | |
---|---|
long |
The number of received packets. |
getThreadStatsTag
public static int getThreadStatsTag ()
Get the active tag used when accounting Socket
traffic originating
from the current thread. Only one active tag per thread is supported.
tagSocket(java.net.Socket)
.
Returns | |
---|---|
int |
See also:
getThreadStatsUid
public static int getThreadStatsUid ()
Get the active UID used when accounting Socket
traffic originating
from the current thread. Only one active tag per thread is supported.
tagSocket(java.net.Socket)
.
Returns | |
---|---|
int |
See also:
getTotalRxBytes
public static long getTotalRxBytes ()
Return number of bytes received since device boot. Counts packets across all network interfaces, and always increases monotonically since device boot. Statistics are measured at the network layer, so they include both TCP and UDP usage.
Before Build.VERSION_CODES.JELLY_BEAN_MR2
, this may
return UNSUPPORTED
on devices where statistics aren't available.
Returns | |
---|---|
long |
getTotalRxPackets
public static long getTotalRxPackets ()
Return number of packets received since device boot. Counts packets across all network interfaces, and always increases monotonically since device boot. Statistics are measured at the network layer, so they include both TCP and UDP usage.
Before Build.VERSION_CODES.JELLY_BEAN_MR2
, this may
return UNSUPPORTED
on devices where statistics aren't available.
Returns | |
---|---|
long |
getTotalTxBytes
public static long getTotalTxBytes ()
Return number of bytes transmitted since device boot. Counts packets across all network interfaces, and always increases monotonically since device boot. Statistics are measured at the network layer, so they include both TCP and UDP usage.
Before Build.VERSION_CODES.JELLY_BEAN_MR2
, this may
return UNSUPPORTED
on devices where statistics aren't available.
Returns | |
---|---|
long |
getTotalTxPackets
public static long getTotalTxPackets ()
Return number of packets transmitted since device boot. Counts packets across all network interfaces, and always increases monotonically since device boot. Statistics are measured at the network layer, so they include both TCP and UDP usage.
Before Build.VERSION_CODES.JELLY_BEAN_MR2
, this may
return UNSUPPORTED
on devices where statistics aren't available.
Returns | |
---|---|
long |
getTxBytes
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 NetworkStatsManager
APIs.
Parameters | |
---|---|
iface |
String : The name of the interface.
This value cannot be null . |
Returns | |
---|---|
long |
The number of transmitted bytes. |
getTxPackets
public static long getTxPackets (String iface)
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 NetworkStatsManager
APIs.
Parameters | |
---|---|
iface |
String : The name of the interface.
This value cannot be null . |
Returns | |
---|---|
long |
The number of transmitted packets. |
getUidRxBytes
public static long getUidRxBytes (int uid)
Return number of bytes received by the given UID since device boot. Counts packets across all network interfaces, and always increases monotonically since device boot. Statistics are measured at the network layer, so they include both TCP and UDP usage.
Before Build.VERSION_CODES.JELLY_BEAN_MR2
, this may return
UNSUPPORTED
on devices where statistics aren't available.
Starting in Build.VERSION_CODES.N
this will only
report traffic statistics for the calling UID. It will return
UNSUPPORTED
for all other UIDs for privacy reasons. To access
historical network statistics belonging to other UIDs, use
NetworkStatsManager
.
Parameters | |
---|---|
uid |
int |
Returns | |
---|---|
long |
See also:
getUidRxPackets
public static long getUidRxPackets (int uid)
Return number of packets received by the given UID since device boot. Counts packets across all network interfaces, and always increases monotonically since device boot. Statistics are measured at the network layer, so they include both TCP and UDP usage.
Before Build.VERSION_CODES.JELLY_BEAN_MR2
, this may return
UNSUPPORTED
on devices where statistics aren't available.
Starting in Build.VERSION_CODES.N
this will only
report traffic statistics for the calling UID. It will return
UNSUPPORTED
for all other UIDs for privacy reasons. To access
historical network statistics belonging to other UIDs, use
NetworkStatsManager
.
Parameters | |
---|---|
uid |
int |
Returns | |
---|---|
long |
See also:
getUidTcpRxBytes
public static long getUidTcpRxBytes (int uid)
This method was deprecated
in API level 18.
Starting in Build.VERSION_CODES.JELLY_BEAN_MR2
,
transport layer statistics are no longer available, and will
always return UNSUPPORTED
.
Parameters | |
---|---|
uid |
int |
Returns | |
---|---|
long |
See also:
getUidTcpRxSegments
public static long getUidTcpRxSegments (int uid)
This method was deprecated
in API level 18.
Starting in Build.VERSION_CODES.JELLY_BEAN_MR2
,
transport layer statistics are no longer available, and will
always return UNSUPPORTED
.
Parameters | |
---|---|
uid |
int |
Returns | |
---|---|
long |
See also:
getUidTcpTxBytes
public static long getUidTcpTxBytes (int uid)
This method was deprecated
in API level 18.
Starting in Build.VERSION_CODES.JELLY_BEAN_MR2
,
transport layer statistics are no longer available, and will
always return UNSUPPORTED
.
Parameters | |
---|---|
uid |
int |
Returns | |
---|---|
long |
See also:
getUidTcpTxSegments
public static long getUidTcpTxSegments (int uid)
This method was deprecated
in API level 18.
Starting in Build.VERSION_CODES.JELLY_BEAN_MR2
,
transport layer statistics are no longer available, and will
always return UNSUPPORTED
.
Parameters | |
---|---|
uid |
int |
Returns | |
---|---|
long |
See also:
getUidTxBytes
public static long getUidTxBytes (int uid)
Return number of bytes transmitted by the given UID since device boot. Counts packets across all network interfaces, and always increases monotonically since device boot. Statistics are measured at the network layer, so they include both TCP and UDP usage.
Before Build.VERSION_CODES.JELLY_BEAN_MR2
, this may
return UNSUPPORTED
on devices where statistics aren't available.
Starting in Build.VERSION_CODES.N
this will only
report traffic statistics for the calling UID. It will return
UNSUPPORTED
for all other UIDs for privacy reasons. To access
historical network statistics belonging to other UIDs, use
NetworkStatsManager
.
Parameters | |
---|---|
uid |
int |
Returns | |
---|---|
long |
See also:
getUidTxPackets
public static long getUidTxPackets (int uid)
Return number of packets transmitted by the given UID since device boot. Counts packets across all network interfaces, and always increases monotonically since device boot. Statistics are measured at the network layer, so they include both TCP and UDP usage.
Before Build.VERSION_CODES.JELLY_BEAN_MR2
, this may return
UNSUPPORTED
on devices where statistics aren't available.
Starting in Build.VERSION_CODES.N
this will only
report traffic statistics for the calling UID. It will return
UNSUPPORTED
for all other UIDs for privacy reasons. To access
historical network statistics belonging to other UIDs, use
NetworkStatsManager
.
Parameters | |
---|---|
uid |
int |
Returns | |
---|---|
long |
See also:
getUidUdpRxBytes
public static long getUidUdpRxBytes (int uid)
This method was deprecated
in API level 18.
Starting in Build.VERSION_CODES.JELLY_BEAN_MR2
,
transport layer statistics are no longer available, and will
always return UNSUPPORTED
.
Parameters | |
---|---|
uid |
int |
Returns | |
---|---|
long |
See also:
getUidUdpRxPackets
public static long getUidUdpRxPackets (int uid)
This method was deprecated
in API level 18.
Starting in Build.VERSION_CODES.JELLY_BEAN_MR2
,
transport layer statistics are no longer available, and will
always return UNSUPPORTED
.
Parameters | |
---|---|
uid |
int |
Returns | |
---|---|
long |
See also:
getUidUdpTxBytes
public static long getUidUdpTxBytes (int uid)
This method was deprecated
in API level 18.
Starting in Build.VERSION_CODES.JELLY_BEAN_MR2
,
transport layer statistics are no longer available, and will
always return UNSUPPORTED
.
Parameters | |
---|---|
uid |
int |
Returns | |
---|---|
long |
See also:
getUidUdpTxPackets
public static long getUidUdpTxPackets (int uid)
This method was deprecated
in API level 18.
Starting in Build.VERSION_CODES.JELLY_BEAN_MR2
,
transport layer statistics are no longer available, and will
always return UNSUPPORTED
.
Parameters | |
---|---|
uid |
int |
Returns | |
---|---|
long |
See also:
incrementOperationCount
public static void incrementOperationCount (int operationCount)
Increment count of network operations performed under the accounting tag currently active on the calling thread. This can be used to derive bytes-per-operation.
Parameters | |
---|---|
operationCount |
int : Number of operations to increment count by. |
incrementOperationCount
public static void incrementOperationCount (int tag, int operationCount)
Increment count of network operations performed under the given accounting tag. This can be used to derive bytes-per-operation.
Parameters | |
---|---|
tag |
int : Accounting tag used in setThreadStatsTag(int) . |
operationCount |
int : Number of operations to increment count by. |
setThreadStatsTag
public static void setThreadStatsTag (int tag)
Set active tag to use when accounting Socket
traffic originating
from the current thread. Only one active tag per thread is supported.
Changes only take effect during subsequent calls to
tagSocket(java.net.Socket)
.
Tags between 0xFFFFFF00
and 0xFFFFFFFF
are reserved and
used internally by system services like DownloadManager
when
performing traffic on behalf of an application.
Parameters | |
---|---|
tag |
int |
See also:
setThreadStatsUid
public static void setThreadStatsUid (int uid)
Set specific UID to use when accounting Socket
traffic
originating from the current thread. Designed for use when performing an
operation on behalf of another application, or when another application
is performing operations on your behalf.
Any app can accept blame for traffic performed on a socket
originally created by another app by calling this method with the
Os.getuid()
value. However, only apps holding the
android.Manifest.permission#UPDATE_DEVICE_STATS
permission may
assign blame to another UIDs.
Changes only take effect during subsequent calls to
tagSocket(java.net.Socket)
.
Parameters | |
---|---|
uid |
int |
tagDatagramSocket
public static void tagDatagramSocket (DatagramSocket socket)
Tag the given DatagramSocket
with any statistics parameters
active for the current thread. Subsequent calls always replace any
existing parameters. When finished, call
untagDatagramSocket(java.net.DatagramSocket)
to remove statistics
parameters.
Parameters | |
---|---|
socket |
DatagramSocket : This value cannot be null . |
Throws | |
---|---|
SocketException |
See also:
tagFileDescriptor
public static void tagFileDescriptor (FileDescriptor fd)
Tag the given FileDescriptor
socket with any statistics
parameters active for the current thread. Subsequent calls always replace
any existing parameters. When finished, call
untagFileDescriptor(java.io.FileDescriptor)
to remove statistics
parameters.
Parameters | |
---|---|
fd |
FileDescriptor : This value cannot be null . |
Throws | |
---|---|
IOException |
See also:
tagSocket
public static void tagSocket (Socket socket)
Tag the given Socket
with any statistics parameters active for
the current thread. Subsequent calls always replace any existing
parameters. When finished, call untagSocket(java.net.Socket)
to remove
statistics parameters.
Parameters | |
---|---|
socket |
Socket : This value cannot be null . |
Throws | |
---|---|
SocketException |
See also:
untagDatagramSocket
public static void untagDatagramSocket (DatagramSocket socket)
Remove any statistics parameters from the given DatagramSocket
.
Parameters | |
---|---|
socket |
DatagramSocket : This value cannot be null . |
Throws | |
---|---|
SocketException |
untagFileDescriptor
public static void untagFileDescriptor (FileDescriptor fd)
Remove any statistics parameters from the given FileDescriptor
socket.
Parameters | |
---|---|
fd |
FileDescriptor : This value cannot be null . |
Throws | |
---|---|
IOException |
untagSocket
public static void untagSocket (Socket socket)
Remove any statistics parameters from the given Socket
.
In Android 8.1 (API level 27) and lower, a socket is automatically
untagged when it's sent to another process using binder IPC with a
ParcelFileDescriptor
container. In Android 9.0 (API level 28)
and higher, the socket tag is kept when the socket is sent to another
process using binder IPC. You can mimic the previous behavior by
calling untagSocket()
before sending the socket to another
process.
Parameters | |
---|---|
socket |
Socket : This value cannot be null . |
Throws | |
---|---|
SocketException |