2012-03-06 9 views
1

trafficstats APIの次のメソッドを使用して、特定のアプリケーションのすべてのネットワークインターフェイスに対して送受信されるバイトを取得できます。しかし、どのように私は携帯電話のための統計情報を取得するのですか?モバイルとWi-Fiのデータを分離できるようにTrafficStats特定のアプリケーション固有のネットワークインターフェイス

getUidTxBytes(int型のUID)
このUIDのために ネットワークを介して送信されたバイト数を取得します。

getUidRxBytes(int uid)
このUIDに対して ネットワーク経由で受信したバイト数を取得します。

このようなものはAPIにはありません。そして、他の方法は、それを

答えて

0

申し訳 getUidMobileRxBytes(int型のUID)を取得するには、しかし、あなただけではないUIDごとに、デバイス全体のためのインターフェイス単位の統計情報を取得することができます。

すべてのインターフェイス、UIDごとの統計情報、およびインターフェイスごとの全デバイスの統計情報の両方を収集して、デバイス全体のインターフェイスの比率およそその個々のUIDの比率になります。短時間の間は、デバイスがインターフェイスを定期的に切り替えるだけなので、これはかなり正確です。

1
package com.formation.traficstates; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.net.TrafficStats; 
import android.os.Bundle; 
import android.os.Handler; 
import android.widget.TextView; 

public class TraficstatesActivity extends Activity { 

    private Handler mHandler=new Handler();; 

    private long mStartRX; 





    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     mStartRX=TrafficStats.getTotalRxBytes(); 

     if (mStartRX == TrafficStats.UNSUPPORTED) { 

      AlertDialog.Builder alert = new AlertDialog.Builder(this); 

      alert.setTitle("Uh Oh!"); 

      alert.setMessage("Your device does not support traffic stat monitoring."); 

      alert.show(); 

     } else { 

      mHandler.postDelayed(mRunnable, 1000); 

     } 
    } 

    private final Runnable mRunnable = new Runnable() { 

     public void run() { 


     long rxBytes = TrafficStats.getTotalRxBytes()- mStartRX; 

     TextView RX = (TextView)findViewById(R.id.textViewRX); 

     RX.setText("\nbytes recreived :"+Long.toString(rxBytes)); 


     } 

     }; 

} 
関連する問題