Фоновый сервис Android TrafficStats? - PullRequest
1 голос
/ 06 января 2012

Я хотел бы получить некоторую помощь по получению статистики данных 3G между интервалами дат.Насколько я знаю, я должен использовать TrafficStats (Android API 2.2 или выше).Я хотел бы сохранить эту информацию в таблице SQLite, чтобы ежемесячно отображать статистику для приложений:

Интервал: 01.01.2012 - 31.01.2012

Карты Google -1,5 Мб

Google Talk - 0,9 Мб

Приложение Facebook - 5,6 Мб

Итак, я думаю, мне следует использовать фоновый сервис.Это лучший способ?Как мне попробовать сделать это в фоновом режиме?Как вы думаете, я должен сохранить информацию в SQLite?

1 Ответ

2 голосов
/ 29 ноября 2013

(@ Паблоку, извините, этот ответ приходит так поздно, надеюсь, он все равно поможет)

Во-первых, если вы хотите получать статистику трафика для отдельных приложений, но только для 3G, использование публичных API невозможно. Android предоставляет TrafficStats.getUidTxBytes(int) и TrafficStats.getUidRxBytes(int) в качестве общедоступных API для получения общего количества байтов, используемых приложениями, но ничего (публичного) для разделения их по интерфейсу.

Предполагая, что это не разрушит ваш день, вот алгоритм псевдокода для того, как сделать остальное из того, что вы упомянули:

  1. При необходимости установите аварийный сигнал (используя AlarmManager) для начала вашего диапазона и сохраните эти значения (предположительно в БД). Причина: вам может потребоваться вычесть эти существующие значения TrafficStats в качестве смещения, если они> 0 на момент начала диапазона дат.
  2. Также установите будильник в конце вашего диапазона.
  3. Создание BroadcastReceiver для получения ACTION_SHUTDOWN .
  4. В вашем BroacastReceiver запишите TrafficStats для ваших приложений при завершении работы. Причина: TrafficStats будет сбрасываться при каждой перезагрузке.
    • Если это первое отключение с момента запуска: вычтите ваше начальное смещение и сохраните это окончательное значение (соблюдая осторожность, чтобы удалить начальное смещение)
    • В противном случае указанное значение будет точным с момента загрузки.
  5. Как только сработает ваш сигнал окончания, запишите TrafficStats в этой точке и добавьте все ранее собранные статистические данные.
    • (если каким-то образом телефон никогда не перезагружался между началом и концом, просто выполните endStats - startStats).

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...