Android 4.0'ta, Linux ağ arayüzleri tarafından raporlanan istatistikler zaman içinde kaydedilir ve ağ kotası sınırlarını uygulamak, kullanıcıların görebileceği grafikler oluşturmak ve daha fazlası için kullanılır.
Her ağ cihaz sürücüsü (kablosuz ağ dahil), standart çekirdek cihaz yaşam döngüsüne uymalı ve dev_get_stats()
aracılığıyla doğru istatistikleri döndürmelidir. Özellikle, döndürülen istatistikler arayüz etkinken kesinlikle monoton kalmalıdır. Sürücüler, istatistikleri yalnızca unregister_netdev()
'ü veya register_netdevice_notifier()
/ register_inetaddr_notifier()
/ register_inet6addr_notifier()
ile kayıtlı geri çağırmalar için NETDEV_UNREGISTER
etkinliği oluşturan eşdeğeri başarıyla tamamladıktan sonra sıfırlayabilir.
Mobil operatörler genellikle veri kullanımını internet katmanında (IP) ölçer. Android 4.0'taki bu yaklaşımı karşılamak için, önemsediğimiz çekirdek cihazlarda dev_get_stats()
tarafından döndürülen rx_bytes
ve tx_bytes
değerlerinin tam olarak aktarılan internet katmanı (IP
) baytlarını döndürdüğü gerçeğinden yararlanırız. Ancak diğer cihazlarda bu durumun geçerli olmayabileceğinin farkındayız. Bu özellik şu anda bu özelliğe dayanıyor. Yeni sürücüler de bu özelliğe sahip olmalıdır ve dev_get_stats()
değerleri, alt ağ katmanlarının (Ethernet üstbilgileri gibi) kapsülleme yükü içermemelidir ve tercihen önemsiz olmadığı sürece diğer trafiği (ARP gibi) içermemelidir.
Android çerçevesi yalnızca ConnectivityService
içindeki bir NetworkStateTracker
ile ilişkili ağ arayüzlerinden istatistik toplar. Bu, çerçevenin türü (TYPE_MOBILE
veya TYPE_WIFI
gibi) ve abone kimliği (IMSI gibi) dahil olmak üzere her ağ arayüzünü net bir şekilde tanımlamasına olanak tanır. Verileri yönlendirmek için kullanılan tüm ağ arayüzleri, istatistiklerin doğru şekilde hesaplanması için bir NetworkStateTracker
ile temsil edilmelidir.