2012-01-05 11 views
1

私は、日付の間隔の間に3Gデータ統計を取得するための助けをしたいと思います。 私の知る限り、TrafficStats(Android API 2.2以上)を使用してください。私は毎月のアプリケーションのための統計情報を表示するためにSQLiteのテーブルにこの情報を保存したいと思います:Android TrafficStatsバックグラウンドサービス?

間隔日:2012年1月1日 - 31/01/2012

Googleマップ - 1,5 MBの

Googleトーク - 0.9 Mbの

Facebookアプリ - だから、5,6 Mbの

、私はバックグラウンドサービスを使用すべきだと思います。これが最善の方法ですか?バックグラウンドサービスではどうすればよいですか?どのように私はSQLiteの情報を保存する必要があると思いますか?まず

答えて

2

(この答えはこんなに遅く来ている@Pablokuは、申し訳ありませんが、うまくいけば、それはまだいくつかの助けになるだろう)

、あなたは個々のアプリケーションのための、唯一の3G上のトラフィックの統計情報を取得するために探しているなら、それはですパブリックAPIを使用することはできません。 Androidは公開アプリケーションとしてTrafficStats.getUidTxBytes(int)TrafficStats.getUidRxBytes(int)を提供し、アプリで使用される合計バイト数を取得しますが、インターフェースでそれらを区切るものは何もありません。必要に応じて

  1. はあなたの範囲の開始のために(AlarmManagerを使用して)、アラームを設定します。

    あなたが言及何の残りの部分を実行する方法のための擬似コードアルゴリズムは、ここでは、あなたの一日を台無しにしない、これをされると仮定すると、これらの値を(おそらくDBに)保存します。理由:これらの既存のTrafficStatsの値を、日付範囲の開始時に> 0である場合は、オフセットとして減算する必要があります。

  2. また、範囲の最後にアラームを設定します。
  3. BroadcastReceiverを作成してACTION_SHUTDOWNを受信します。
  4. BroacastReceiverには、シャットダウン時にお使いのアプリのTrafficStatsを書き留めておいてください。理由:TrafficStatsは再起動するたびにリセットされます。
    • これは開始から最初のシャットダウンの場合:あなたの最初のオフセットを減算し、その最終的な値(初期オフセットを削除するように注意して)を格納
    • そうでない場合は、報告されてどのような値ブートので、正確になります。
  5. エンド・アラームがトリガされると、その時点でTrafficStatsを書き留めて、すべての以前に収集した統計情報
    • を追加します(電話は開始と終了の間に再起動しません何とかならば、ちょうどendStats行う - startStatsを)。

幸運!

+0

ありがとう非常にanddev84!答えは遅れていますが、今私はあなたが提案したものと同じものを使った「アルゴリズム」を見ています:) – Pabloku

関連する問題