Измерять трафик в роуминге данных на Android? - PullRequest
7 голосов
/ 03 августа 2010

Только что вернулись из очень приятного отдыха в Исландии и ожидаем счета за роуминг данных от моей телефонной компании. Я надеюсь на лучшее, максимально ограничив трафик, но хочу знать заранее. Я использовал очень красивое приложение NetCounter , но оно вообще не измеряло трафик данных в роуминге.

Итак, я хочу создать собственное приложение, измеряющее только трафик данных в роуминге. У меня есть несколько логических значений для начала ( NetworkInfo.IsRoaming () & TelephonyManager.isNetworkRoaming () ), но я не уверен, как измерить трафик, если true.

Итак, вопрос: как измерить трафик данных в роуминге? (Что-то вроде функциональности API уровня 8 TrafficStats - это то, что мне нужно, но для API уровня 3). Используемый смартфон - Samsung Galaxy i7500 (Android 1.6)

Спасибо за ваше время!

Ответы [ 2 ]

9 голосов
/ 10 августа 2010

Способ 1. Разбор "/proc/net/dev".

В моем телефоне это выглядит так:

Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo:     712       8    0    0    0     0          0         0      712       8    0    0    0     0       0          0
dummy0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet2:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
 wlan0:  146112     423   32    0    0     0          0         0    42460     409    0    0    0     0       0          0

В моем телефоне строка "rmnet0" содержит статистику для мобильной интернет-линии. Я надеюсь, что его формат не зависит от версии ядра.

Способ 2: анализ "/sys/class/net".

Полагаю, это рекомендуемый метод. Как показано здесь: http://www.jaqpot.net/svn/android/netcounter/trunk/src/net/jaqpot/netcounter/service/SysClassNet.java

3 голосов
/ 09 августа 2010

Существует несколько параметров с открытым исходным кодом, которые были упомянуты в комментариях:

В данный момент я установил 3G Watchdog. Есть несколько комментариев автора по поводу AndroLib , предполагающих, что он не хочет выпускать исходный код, но с некоторой помощью сообщества, я уверен, что мы все могли бы сотрудничать, чтобы сделать лучшее приложение для использования данныхтам.

Я думаю, что лучшим решением было бы взять код из NetMeter и запустить службу в фоновом режиме.3G Watchdog делает это (сервис называется net.NetMonitorService).

...