我需要让手机在 2G 网络、3G 网络或数据断开上花费的时间。我搜索了 android 参考资料,但找不到任何解决方案。有什么方法可以获取这些统计信息吗?
我想使用监听器来检测网络/连接类型何时发生变化,并使用计数器来计算 2G 时间、3G 时间和断开连接时间。但我想知道是否有更好/更简单的方法来解决这个问题。
我需要让手机在 2G 网络、3G 网络或数据断开上花费的时间。我搜索了 android 参考资料,但找不到任何解决方案。有什么方法可以获取这些统计信息吗?
我想使用监听器来检测网络/连接类型何时发生变化,并使用计数器来计算 2G 时间、3G 时间和断开连接时间。但我想知道是否有更好/更简单的方法来解决这个问题。
像这样的连接检查怎么样
public boolean isOnline() {
// check if an internet connection is present
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (!(netInfo != null && cm.getActiveNetworkInfo().isAvailable() && cm
.getActiveNetworkInfo().isConnected())) {
return false;
}
return true;
}
然后计算时间...
不要忘记 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
清单中的。
没有更好的办法,TrafficStats只包含数据统计。您必须为CONNECTIVITY_CHANGED意图注册一个 BroadcastReceiver。您还必须监听电话启动 (RECEIVE_BOOT_COMPLETED)。关机比较麻烦。我会为 TIMER_TICK 添加一个侦听器,这将为您提供一分钟精确的正常运行时间,这对于此应用程序来说已经足够了。您可以在启动时处理它,从最后一个网络状态的计数器中减去停机时间。