Android 4.0-এ, Linux নেটওয়ার্ক ইন্টারফেসের মাধ্যমে রিপোর্ট করা পরিসংখ্যান সময়ের সাথে সাথে রেকর্ড করা হয় এবং নেটওয়ার্ক কোটার সীমা এনফোর্স করতে, ব্যবহারকারীর দেখার জন্য চার্ট রেন্ডার করতে এবং আরও অনেক কিছু করতে ব্যবহার করা হয়।
প্রতিটি নেটওয়ার্ক ডিভাইস ড্রাইভারকে (ওয়াই-ফাই সহ) অবশ্যই স্ট্যান্ডার্ড
কার্নেল ডিভাইস লাইফ-সাইকেল মেনে চলতে হবে এবং
dev_get_stats()-এর মাধ্যমে সঠিক পরিসংখ্যান রিটার্ন করতে হবে। বিশেষ করে, ইন্টারফেস অ্যাক্টিভ থাকাকালীন, ফেরত আসা পরিসংখ্যান অবশ্যই
কঠোরভাবে মনোটনিক থাকতে হবে। ড্রাইভাররা শুধুমাত্র কোনও unregister_netdev()
বা তার সমতুল্য সফলভাবে সম্পূর্ণ করার পরেই
পরিসংখ্যান রিসেট করতে পারেন যা NETDEV_UNREGISTER ইভেন্ট তৈরি করে
register_netdevice_notifier() /
register_inetaddr_notifier() / register_inet6addr_notifier()-এর সাথে রেজিস্টার করা কলব্যাকের জন্য।
মোবাইল অপারেটর সাধারণত ইন্টারনেট লেয়ারে (IP) ডেটা ব্যবহার পরিমাপ করে। Android 4.0-এ এই পদ্ধতির সাথে ম্যাচ করাতে, আমরা এই তথ্যের উপর নির্ভর করি যে
যেসব কার্নেল ডিভাইসের ব্যাপারে আমরা যত্নশীল, সেগুলির জন্য rx_bytes এবং tx_bytes
dev_get_stats()-এর মাধ্যমে ফেরত দেওয়া ভ্যালু ঠিক ইন্টারনেট লেয়ার
(IP) বাইট ট্রান্সফার ফেরত দেয়। তবে আমরা বুঝি যে অন্যান্য ডিভাইসের ক্ষেত্রে
এমন নাও হতে পারে। আপাতত, ফিচারটি এই
বিশেষত্বের উপর নির্ভর করে। নতুন ড্রাইভারের ক্ষেত্রেও সেই প্রপার্টি থাকতে হবে এবং
dev_get_stats() ভ্যালুতে লোয়ার নেটওয়ার্ক লেয়ারের (যেমন, ইথারনেট হেডার) কোনও এনক্যাপসুলেশন ওভারহেড
থাকলে চলবে না এবং
অগ্রাধিকার হিসেবে অন্যান্য ট্রাফিক (যেমন, ARP) থাকলে চলবে না, যদি না তা
নগণ্য হয়।
Android ফ্রেমওয়ার্ক শুধুমাত্র ConnectivityService-এ NetworkStateTracker-এর সাথে যুক্ত
নেটওয়ার্ক ইন্টারফেস থেকে পরিসংখ্যান সংগ্রহ করে। এটি
ফ্রেমওয়ার্ককে প্রতিটি নেটওয়ার্ক ইন্টারফেসকে সঠিকভাবে শনাক্ত করতে সাহায্য করে,
যার মধ্যে এর ধরন (যেমন TYPE_MOBILE বা TYPE_WIFI) এবং
গ্রাহকের পরিচয় (যেমন IMSI) অন্তর্ভুক্ত। ডেটা রুট করার জন্য ব্যবহৃত সমস্ত নেটওয়ার্ক ইন্টারফেসকে একটি NetworkStateTracker দ্বারা উপস্থাপন করা উচিত যাতে
পরিসংখ্যান সঠিকভাবে গণনা করা যায়।