As per my question above... does the data usage that came into existence in ICS count uploads as well as downloads?
Yes, there's an API for that (the class is
android.net.TrafficStats). It was added with API level 8 (Android 2.2).
As you can see below, it offers both Rx and Tx bytes in total, only accounting mobile or per app (added in API level 14, note that with an equal UID count as one). This is an excerpt, see the link below for all methods.
static long getMobileRxBytes()
static long getMobileTxBytes()
static long getTotalRxBytes()
static long getTotalTxBytes()
static long getUidRxBytes(int uid)
static long getUidTxBytes(int uid)
Implementation for the "data usage" view: here
final long foregroundBytes = entry.rxBytes + entry.txBytes;
PS: The carriers also count UDP traffic that just leaves their end but never arrives, such as rtp streams where the phone loses the carrier but the whole video gets streamed anyway.