目前,我正在努力在状态栏中始终显示互联网速度。我能做的是,通过旧方法(上传和下载一些文件从/到服务器并使用 TrafficStats API)找到互联网速度。我尝试了一些 Play 商店应用程序,当用户打开任何使用互联网的应用程序时,它们都会显示互联网速度。我想实现相同的功能。我相信他们要么使用广播接收器,要么使用服务。我怎样才能实现相同的?
或者是否有任何库可以执行相同或任何其他更好的方法?
目前,我正在努力在状态栏中始终显示互联网速度。我能做的是,通过旧方法(上传和下载一些文件从/到服务器并使用 TrafficStats API)找到互联网速度。我尝试了一些 Play 商店应用程序,当用户打开任何使用互联网的应用程序时,它们都会显示互联网速度。我想实现相同的功能。我相信他们要么使用广播接收器,要么使用服务。我怎样才能实现相同的?
或者是否有任何库可以执行相同或任何其他更好的方法?
显示互联网速度的问题在于它总是“历史”或估计值 - 即即使您在 1 秒前能够达到 300Mbps,但这并不意味着您现在就能够实现。
牢记这一点,您已经概述的方法与任何方法一样可靠 - 即测量已知数据大小的往返时间。如果准确性对您很重要,那么如果您对服务器端的周转时间有信心,这可能是最准确的。
您可以收听 Android 网络事件,这些事件会告诉您网络连接类型何时发生变化等 - 推荐的方法已经改变了 API 级别,但这是一个很好的起点:https ://developer.android.com/training/monitoring -设备状态/连接监控
对于您的示例,听起来您希望获得尽可能近的网络统计信息,而不是连接更改 - 因为“NetworkStatsManager”可能是最佳匹配。
提供对网络使用历史和统计数据的访问。使用数据收集在称为“桶”的离散时间箱中。