Androidでは、アプリケーションごとにインターフェースごとにデータトラフィックを測定する方法

android.net.TrafficStats の拡張を実装して、アプリケーションごとのAPNまたはAPNごとのデータトラフィックを測定したいと考えています。メソッドのプロトタイプは次のようになります。

getInterfaceTxPackets(String interface)
getInterfaceRxPackets(String interface)
getInterfaceTxBytes(String interface)
getInterfaceRxBytes(String interface)
getUidInterfaceTxPackets(int uid,String interface)
getUidInterfaceRxPackets(int uid,String interface)
getUidInterfaceTxBytes(int uid,String interface)
getUidInterfaceRxBytes(int uid,String interface)

私は android.net.TrafficStats.java を読んで、 android_net_TrafficStats.cpp のネイティブメソッドを呼び出し、ネイティブメソッドはいくつかのファイルからトラフィック統計を読み込みます。

    総トラフィック統計ファイルは/sys/class/net/フォルダにあり、このフォルダにはeth0、ip6tnl0、rmnet0、rmnet1、rmnet2、rmnet3のようないくつかのサブフォルダがあります。 。、詳細な統計ファイルはこれらのフォルダに保存されます。

    アプリケーションごとのトラフィック統計ファイルは/proc/uid_stat/[uid]/

    にあります。

私の質問:

  1. rmnet0、rmnet1、rmnet2、rmnet3 .. のフォルダを作成します。各APNに一致しますか?そうであれば、一致ルールは何ですか?そうでない場合は、どのようにAPNトラフィックの統計情報を取得できますか?

  2. tcp_src tcp_snd の2つのファイルしか存在しません。

    /proc/uid_stat/APNのトラフィック統計ごとに各アプリケーションを入手できますか?

13
あなたはICSにいますか?私の意見では、アプリケーショントラフィックの統計情報はICSでのみ利用できます。 developer.android.com/sdk/android-4.0-highlights.html#data-d‌ ev
追加された 著者 ChrLipp,
この要件を満たすことができるICSのNetworkStatsFactory.javaが見つかりました。ありがとう
追加された 著者 freeman,

1 答え

Android 4.0に切り替えると、データの使用状況を監視するためにこれが強化されています。これらのAPIは、インターフェイスごとのUIDごとのトラフィック情報を収集する、より複雑なサービスの上に置かれています。

インターフェイス名のそれぞれには意味はありませんので、あるデバイスで特定の名前が別のデバイスで同じものを意味すると仮定することはできません。

0
追加された