Измерять трафик роуминга данных на 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
).