2016-09-01 13 views
2

モバイルデータの使用量を計算しようとしているため、3G接続について通知するブロードキャストを使用していて、データをカウントするのにServiceを実行します。計算されたモバイルデータの使用率は常に実際よりも低い

問題は計算値が常にAndroidデータ使用のデフォルトアプリで計算された値よりも小さいことです。ここで

はコードです:

long now = TrafficStats.getMobileRxBytes(); 
long before = now; 
do { 

    now = TrafficStats.getMobileRxBytes() ; 
    Diffnow = now - before; 

    SystemClock.sleep(500); 


}while ((cm.getActiveNetworkInfo() != null) && (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)); 

Log.i(TAG,"delta = "+(float)Diffnow/(1024*1024)); 
+0

このスレッドをチェックするhttp://stackoverflow.com/questions/11939939/how-can-i-find-the-data-usage-on-a-per-application-basis-on-android – AndroidRuntimeException

+0

私はそれを以前に見ましたが、私はすべてのアプリのデータ使用量を計算するだけでいいです。答えに現れている同じ作業をしていても、まだ違いがある – Soufiane

答えて

0

私は私が次のように私のコードを変更する必要がありますので、我々はtransmettedとデータを受信計算しなければならないのいずれかのデータ使用量を計算するには答え を見つけたと思う:

long now = TrafficStats.getMobileRxBytes()+TrafficStats.getMobileTxBytes(); 
long before = now; 
long Diffnow ; 

do { 

    now = TrafficStats.getMobileRxBytes()+TrafficStats.getMobileTxBytes() ; 
    Diffnow = now - before; 
    SystemClock.sleep(500); 


}while ((cm.getActiveNetworkInfo() != null) && (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)); 

Log.i(TAG,"delta = "+(float)Diffnow/(1024*1024)); 
+0

問題を修正する理由についての詳細情報を追加できれば、他の人に役立つだけでなく、再度実行すると自分自身も役に立ちます。 – Sufian

+0

問題は使用データを計算する方法でした: 私は受け取ったデータ(getMobileRxBytes())を計算するだけだと思っていましたが、現実にはデータの使用量は両方とも受信され、変換されたデータなので、前に合計データを計算するgetMobileTxBytes 3G接続後 – Soufiane

関連する問題