9

私がやりたいことは、3G トラフィックと WiFi トラフィックをそれぞれカウントすることです。これで、WiFi の使い方がわかりました。以下はWiFiのソースコードです。このようにして、すべてのメーカーのすべての Android 携帯の WiFi トラフィックをカウントできます。しかし、私は 3g の同様の方法を見つけていません。誰か知っていますか?

//to get wifi interface  
private static String getProp(String prop){
    String output = "";
    try{
        Class<?> sp = Class.forName("android.os.SystemProperites");
        Method get = sp.getMethod("get",String.class);
        output = (String)get.invoke(null,prop);
    }catch(Exception e){
        e.printStackTrace();
    }
    return output;
}


//to get the traffic from system file
...
...
if (connectinTpe == ConnectivityManager.TYPE_WIFI){
    String wifiInterface = getProp("wifi.interface");
    if(wifiInterface == null || "".equals(wifiInterface)) wifiInterface = "eth0";
    rxFile = "/sys/class/net/" +wifiInterface+ "/statistics/rx_bytes";
    txFile = "/sys/class/net/" +wifiInterface+ "/statistics/tx_bytes";
}
...
...
4

2 に答える 2

7

API レベル 8 (Android 2.2) から、必要なものを提供するクラスTrafficStatsがあります。

ネットワーク トラフィックの統計情報を提供するクラス。これらの統計には、すべてのインターフェイス、モバイル インターフェイス、および UID ごとに送受信されたバイト数と送受信されたネットワーク パケットが含まれます。

古いバージョンでは、あなたが言及したアプローチを使用できます(つまり、ファイルのファイルコンテンツを読み取る/sys/class/net/...)。このブログ投稿TrafficStatsには、メソッドとファイルの場所の間の優れたマッピングが含まれています。そして、この SO 投稿には、作成者がそれらのファイルの値を読み取るために使用したソースが含まれています。それによると、最初に " " ファイルから数値を読み取ろうとする必要があり/sys/class/net/rmnet0/statistics/rx_bytesます ("受信したバイト数" の値)。失敗した場合は、/sys/class/net/ppp0/statistics/rx_bytes代わりに " " を試してください。

于 2011-09-02T12:59:14.457 に答える
0

現在の接続の種類を取得するには、TelephonyManager を使用できます: http://developer.android.com/reference/android/telephony/TelephonyManager.html

まず、デバイスがデフォルトのモバイル データ接続に接続されているかどうかを確認してから、接続の種類を確認します。

    if (connectinTpe == ConnectivityManager.TYPE_MOBILE)
    {
         TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
         int curConnectionType = tm.getNetworkType();

         if(curConnectionType >= /*connection type you are looking for*/)
         {
             // do what you want
         }
    }
于 2011-09-02T09:03:21.547 に答える