TrafficStats

open class TrafficStats
kotlin.Any
   ↳ 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.
Requires API level 8 (Android 2.2, Froyo)

Summary

Constants
static Int

The return value to indicate that the device does not support the statistic.

Public constructors

Public methods
open static Unit

Set active tag to use when accounting Socket traffic originating from the current thread.

open static Int

Set active tag to use when accounting Socket traffic originating from the current thread.

open static Int

Get the active tag used when accounting Socket traffic originating from the current thread.

open static Unit

Clear any active tag set to account Socket traffic originating from the current thread.

open static Unit

Set specific UID to use when accounting Socket traffic originating from the current thread.

open static Int

Get the active UID used when accounting Socket traffic originating from the current thread.

open static Unit

Clear any active UID set to account Socket traffic originating from the current thread.

open static Unit
tagSocket(socket: Socket!)

Tag the given Socket with any statistics parameters active for the current thread.

open static Unit
untagSocket(socket: Socket!)

Remove any statistics parameters from the given Socket.

open static Unit

Tag the given DatagramSocket with any statistics parameters active for the current thread.

open static Unit

Remove any statistics parameters from the given DatagramSocket.

open static Unit

Tag the given FileDescriptor socket with any statistics parameters active for the current thread.

open static Unit

Remove any statistics parameters from the given FileDescriptor socket.

open static Unit
incrementOperationCount(operationCount: Int)

Increment count of network operations performed under the accounting tag currently active on the calling thread.

open static Unit
incrementOperationCount(tag: Int, operationCount: Int)

Increment count of network operations performed under the given accounting tag.

open static Long

Return number of packets transmitted across mobile networks since device boot.

open static Long

Return number of packets received across mobile networks since device boot.

open static Long

Return number of bytes transmitted across mobile networks since device boot.

open static Long

Return number of bytes received across mobile networks since device boot.

open static Long

Return number of packets transmitted since device boot.

open static Long

Return number of packets received since device boot.

open static Long

Return number of bytes transmitted since device boot.

open static Long

Return number of bytes received since device boot.

open static Long

Return number of bytes transmitted by the given UID since device boot.

open static Long

Return number of bytes received by the given UID since device boot.

open static Long

Return number of packets transmitted by the given UID since device boot.

open static Long

Return number of packets received by the given UID since device boot.

open static Long


Requires API level 12 (Android 3.1, Honeycomb)

open static Long


Requires API level 12 (Android 3.1, Honeycomb)

open static Long


Requires API level 12 (Android 3.1, Honeycomb)

open static Long


Requires API level 12 (Android 3.1, Honeycomb)

open static Long


Requires API level 12 (Android 3.1, Honeycomb)

open static Long


Requires API level 12 (Android 3.1, Honeycomb)

open static Long


Requires API level 12 (Android 3.1, Honeycomb)

open static Long


Requires API level 12 (Android 3.1, Honeycomb)

Constants

UNSUPPORTED

added in API level 8
static val UNSUPPORTED: Int

The return value to indicate that the device does not support the statistic.
Requires API level 8 (Android 2.2, Froyo)

Value: -1

Public constructors

<init>

TrafficStats()

Public methods

setThreadStatsTag

added in API level 14
open static fun setThreadStatsTag(tag: Int): Unit

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(Socket).

Tags between 0xFFFFFF00 and 0xFFFFFFFF are reserved and used internally by system services like DownloadManager when performing traffic on behalf of an application.
Requires API level 14 (Android 4.0, IceCreamSandwich)

getAndSetThreadStatsTag

added in API level 26
open static fun getAndSetThreadStatsTag(tag: Int): Int

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(Socket).

Tags between 0xFFFFFF00 and 0xFFFFFFFF are reserved and used internally by system services like DownloadManager when performing traffic on behalf of an application.
Requires API level 26 (Android 8.0, Oreo)

Return
Int: the current tag for the calling thread, which can be used to restore any existing values after a nested operation is finished

getThreadStatsTag

added in API level 14
open static fun getThreadStatsTag(): Int

Get the active tag used when accounting Socket traffic originating from the current thread. Only one active tag per thread is supported. #tagSocket(Socket).
Requires API level 14 (Android 4.0, IceCreamSandwich)

clearThreadStatsTag

added in API level 14
open static fun clearThreadStatsTag(): Unit

Clear any active tag set to account Socket traffic originating from the current thread.
Requires API level 14 (Android 4.0, IceCreamSandwich)

setThreadStatsUid

added in API level 28
open static fun setThreadStatsUid(uid: Int): Unit

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 android.system.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(Socket).
Requires API level 28 (Android 8.+, P)

getThreadStatsUid

added in API level 28
open static fun getThreadStatsUid(): Int

Get the active UID used when accounting Socket traffic originating from the current thread. Only one active tag per thread is supported. #tagSocket(Socket).
Requires API level 28 (Android 8.+, P)

clearThreadStatsUid

added in API level 28
open static fun clearThreadStatsUid(): Unit

Clear any active UID set to account Socket traffic originating from the current thread.
Requires API level 28 (Android 8.+, P)

tagSocket

added in API level 14
open static fun tagSocket(socket: Socket!): Unit

Tag the given Socket with any statistics parameters active for the current thread. Subsequent calls always replace any existing parameters. When finished, call #untagSocket(Socket) to remove statistics parameters.
Requires API level 14 (Android 4.0, IceCreamSandwich)

untagSocket

added in API level 14
open static fun untagSocket(socket: Socket!): Unit

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.
Requires API level 14 (Android 4.0, IceCreamSandwich)

tagDatagramSocket

added in API level 24
open static fun tagDatagramSocket(socket: DatagramSocket!): Unit

Tag the given DatagramSocket with any statistics parameters active for the current thread. Subsequent calls always replace any existing parameters. When finished, call #untagDatagramSocket(DatagramSocket) to remove statistics parameters.
Requires API level 24 (Android 7.0, Nougat)

untagDatagramSocket

added in API level 24
open static fun untagDatagramSocket(socket: DatagramSocket!): Unit

Remove any statistics parameters from the given DatagramSocket.
Requires API level 24 (Android 7.0, Nougat)

tagFileDescriptor

added in API level 28
open static fun tagFileDescriptor(fd: FileDescriptor!): Unit

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(FileDescriptor) to remove statistics parameters.
Requires API level 28 (Android 8.+, P)

untagFileDescriptor

added in API level 28
open static fun untagFileDescriptor(fd: FileDescriptor!): Unit

Remove any statistics parameters from the given FileDescriptor socket.
Requires API level 28 (Android 8.+, P)

incrementOperationCount

added in API level 14
open static fun incrementOperationCount(operationCount: Int): Unit

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.
Requires API level 14 (Android 4.0, IceCreamSandwich)

Parameters
operationCount Int: Number of operations to increment count by.

incrementOperationCount

added in API level 14
open static fun incrementOperationCount(tag: Int, operationCount: Int): Unit

Increment count of network operations performed under the given accounting tag. This can be used to derive bytes-per-operation.
Requires API level 14 (Android 4.0, IceCreamSandwich)

Parameters
tag Int: Accounting tag used in #setThreadStatsTag(int).
operationCount Int: Number of operations to increment count by.

getMobileTxPackets

added in API level 8
open static fun getMobileTxPackets(): Long

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 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2, this may return #UNSUPPORTED on devices where statistics aren't available.
Requires API level 8 (Android 2.2, Froyo)

getMobileRxPackets

added in API level 8
open static fun getMobileRxPackets(): Long

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 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2, this may return #UNSUPPORTED on devices where statistics aren't available.
Requires API level 8 (Android 2.2, Froyo)

getMobileTxBytes

added in API level 8
open static fun getMobileTxBytes(): Long

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 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2, this may return #UNSUPPORTED on devices where statistics aren't available.
Requires API level 8 (Android 2.2, Froyo)

getMobileRxBytes

added in API level 8
open static fun getMobileRxBytes(): Long

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 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2, this may return #UNSUPPORTED on devices where statistics aren't available.
Requires API level 8 (Android 2.2, Froyo)

getTotalTxPackets

added in API level 8
open static fun getTotalTxPackets(): Long

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 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2, this may return #UNSUPPORTED on devices where statistics aren't available.
Requires API level 8 (Android 2.2, Froyo)

getTotalRxPackets

added in API level 8
open static fun getTotalRxPackets(): Long

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 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2, this may return #UNSUPPORTED on devices where statistics aren't available.
Requires API level 8 (Android 2.2, Froyo)

getTotalTxBytes

added in API level 8
open static fun getTotalTxBytes(): Long

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 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2, this may return #UNSUPPORTED on devices where statistics aren't available.
Requires API level 8 (Android 2.2, Froyo)

getTotalRxBytes

added in API level 8
open static fun getTotalRxBytes(): Long

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 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2, this may return #UNSUPPORTED on devices where statistics aren't available.
Requires API level 8 (Android 2.2, Froyo)

getUidTxBytes

added in API level 8
open static fun getUidTxBytes(uid: Int): Long

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 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2, this may return #UNSUPPORTED on devices where statistics aren't available.

Starting in android.os.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.
Requires API level 8 (Android 2.2, Froyo)

getUidRxBytes

added in API level 8
open static fun getUidRxBytes(uid: Int): Long

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 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2, this may return #UNSUPPORTED on devices where statistics aren't available.

Starting in android.os.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.
Requires API level 8 (Android 2.2, Froyo)

getUidTxPackets

added in API level 12
open static fun getUidTxPackets(uid: Int): Long

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 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2, this may return #UNSUPPORTED on devices where statistics aren't available.

Starting in android.os.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.
Requires API level 12 (Android 3.1, Honeycomb)

getUidRxPackets

added in API level 12
open static fun getUidRxPackets(uid: Int): Long

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 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2, this may return #UNSUPPORTED on devices where statistics aren't available.

Starting in android.os.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.
Requires API level 12 (Android 3.1, Honeycomb)

getUidTcpTxBytes

added in API level 12
open static fun getUidTcpTxBytes(uid: Int): Long


Requires API level 12 (Android 3.1, Honeycomb)

getUidTcpRxBytes

added in API level 12
open static fun getUidTcpRxBytes(uid: Int): Long


Requires API level 12 (Android 3.1, Honeycomb)

getUidUdpTxBytes

added in API level 12
open static fun getUidUdpTxBytes(uid: Int): Long


Requires API level 12 (Android 3.1, Honeycomb)

getUidUdpRxBytes

added in API level 12
open static fun getUidUdpRxBytes(uid: Int): Long


Requires API level 12 (Android 3.1, Honeycomb)

getUidTcpTxSegments

added in API level 12
open static fun getUidTcpTxSegments(uid: Int): Long


Requires API level 12 (Android 3.1, Honeycomb)

getUidTcpRxSegments

added in API level 12
open static fun getUidTcpRxSegments(uid: Int): Long


Requires API level 12 (Android 3.1, Honeycomb)

getUidUdpTxPackets

added in API level 12
open static fun getUidUdpTxPackets(uid: Int): Long


Requires API level 12 (Android 3.1, Honeycomb)

getUidUdpRxPackets

added in API level 12
open static fun getUidUdpRxPackets(uid: Int): Long


Requires API level 12 (Android 3.1, Honeycomb)