2012-02-19 81 views
4

我試圖獲取由我的應用程序生成的流量。它包括一個視頻流,我想獲取網絡使用數據。來自特定應用程序的trafficstats

我使用了MobileStats和Mobile和Total功能。現在我想設置它使用應用程序的UID,但我沒有設法這樣做,因爲它總是返回-1。我正在使用Android 2.3.4,這裏是代碼:

int uid = getApplication().getApplicationInfo().uid; 
uid = android.os.Process.myUid(); 
long txApp = TrafficStats.getUidTxBytes(uid); 
long rxApp = TrafficStats.getUidRxBytes(uid); 

對於這兩個uids,我都會在TrafficStats上得到一個錯誤(-1)。任何幫助?

+0

你能分享一下你的手機型號嗎?我只想看看TrafficStats.getUidTxBytes()是多麼可靠。 Android文檔還表示,某些手機無法訪問networkStats。 – Gem 2014-09-18 13:11:22

+0

我用Nexus S做了所有的開發。我可以嘗試尋找更多的信息,但這是我2年前完成的一個項目。 – jlanza 2014-09-22 08:34:13

回答

4

看起來您的設備不支持TrafficStatsThe documentation指出:

如果統計信息不被此設備支持,則會返回UNSUPPORTED。

TrafficStats.UNSUPPORTED的代碼是-1

您可以改爲閱讀/sys/class/net/日誌文件。試試this answer中提供的代碼。

+0

我忘了提供答案。發展如此繁忙。我按照你說的方式做了。就像閱讀文件一樣簡單;) – jlanza 2012-03-01 07:43:22

+0

太棒了!感謝您的反饋。 – 2012-06-22 11:45:00

+0

@paul這種情況如此罕見?我們不能從manifest中檢查這個功能嗎? – Gem 2014-09-18 13:15:33