android 流量統計

2021-07-11 06:55:30 字數 2056 閱讀 3435

說明:這裡流量統計用到的方法只支援在6.0以上系統執行,還有用到的乙個許可權只提供給系統應用使用,這兩條不能滿足,這篇文章基本也沒什麼參考價值,請移步其他解決方式。

關於流量統計,早期android系統做的不太完善,手機關機所有的統計流量就會清零,資料都是從開機到當前時間的資料,沒有具體的一段時間內的流量統計。

網上一些方法基本都是讀取流量資料然後自己建立資料庫儲存資料。但是一些清理程式經常把我們做的統計程式清理掉,從android 4.3以後,一些方法提公升應用程式在後台執行的優先順序而不被kill的方法也基本失效,這樣程式統計的資料可信度基本為零了。。。。

唯一的缺陷是只提供給系統應用的,還好公司是某款手機研發生產商,應用程式都提供平台簽名才可以使用這種方法,希望google早點放開許可權。。。

關於該類官網介紹如下:

簡單翻譯就是:該類提供乙個網路使用的歷史以及資料統計,資料被封裝在乙個稱為「buckets」的時間離散集合中。

該類提供的一些方法:

從方法說明中可以看到,可以根據應用程式uid統計流量資訊,還可以統計具體時間段的流量使用情況,本人測試,關機並不會影響統計結果。

需要新增的許可權:

<uses-permissionandroid:name="android.permission.read_network_usage_history"/>
顯示資料的函式:
@targetapi(23)

private voidshowdata(inttype)

trylog.e("安裝包:", p.packagename+" uid:".uid); }stringbuffer.delete(0,stringbuffer.length()); networkstats networkstats = nsm.querysummary(type,null,stime,etime); arraylistbucketlist =newarraylist();while(networkstats.hasnextbucket()) } }stringbuffer詳細資訊:\r\n\r\n");for(inti = 0; i < bucketlist.size(); i++)if(txbytes> 1048576)elseif(rxbytes> 1048576)elseif((rxbytes+txbytes)> 1048576)elsetvshowdata.settext(stringbuffer.tostring());rxbytes= 0;txbytes= 0; }catch(remoteexception e)catch(exception e1)}}

Android流量統計

static long getmobilerxbytes 獲取通過mobile連線收到的位元組總數,不包含wifi static long getmobilerxpackets 獲取mobile連線收到的資料報總數 static long getmobiletxbytes mobile傳送的總位元組...

android 流量統計

1 android通過架構流量統計trafficstats類可以直接獲得 獲得總流量受理trafficstats.gettotalrxbytes 獲得總傳出流量trafficstats.gettotaltxbytes 獲取不包括wifi的手機gprs接收量trafficstats.getmobile...

Android流量統計TrafficStats類

對於android流量統計來說在2.2版中新加入了trafficstats類可以輕鬆獲取,其實本身trafficstats類也是讀取linux提供的檔案物件系統型別的文字進行解析。android.net.trafficstats類中,提供了多種靜態方法,可以直接呼叫獲取,返回型別均為 long型,如...