Измерять трафик роуминга данных на Android?

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

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

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

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

2 ответа

Решение

Способ 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

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

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

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

Другие вопросы по тегам