如何以编程方式获得链接速度?

4yB*_*BAk 10 java networking android

我正在开发一个应用程序,它几乎完成了除了一件事:我不知道如何获得链接速度并将其放在状态栏中.我是Java的新手,所以如果有人能帮助我,我将非常感激.PS抱歉英语不好.

Fer*_*lez 35

正如回复者所说,你的问题不是很清楚.您可能指的是链路连接速度(即高达54 Mbps,信号接收良好Wifi或全速HSDPA高达7.2 Mbps),具体取决于:

  • 您一次使用的网络接口.有些手机允许网络共享,这意味着您可以同时激活Wifi和移动数据链路(GPRS/3G/HSDPA),或自动切换(如果您的Wifi连接断开,手机将自动切换到移动网络).
  • 连接速度一次协商.取决于信号质量/运营商网络配置(一些具有最大速度限制)/移动数据合同(超过每月带宽配额通常意味着默认为GPRS速度).

在这种情况下,我担心没有标准的Java API方法可以了解它,但Android API需要的功能:

  • 对于WiFi链接速度检查WifiInfo.getLinkSpeed()
  • 对于移动数据链接我担心您只能检查TelefonyManager.getNetworkType()以确定当前的移动数据链接类型.然后,您应该通过链路类型接近实际速度(即,对于高达128 kbps的GPRS,对于高达236.8 kpbs的EDGE,对于高达2 Mbps的3G,对于高达7.2 Mbps的HSDPA).考虑到这只是一个近似.您可以使用HSDPA进行连接,但您的运营商将最高速度限制为2 Mbps.

另一种情况下,您参考当前(下载/上传)数据链接速度,这仅在较高级别可用,实际上不是测量链接速度,而是测量手机和服务器之间的速度,这不仅可以由您的链接速度,但也由许多其他因素(您的手机,服务器,服务器本身等之间的所有链接).您可以只测量"HTTP级别速度",这意味着HTTP数据速度(省略数据包的开销流量),因为通常在每种情况下都只支持HTTP连接(您的运营商可能会将您隐藏在代理之外,而代理会过滤掉所有内容但HTTP交通).

如果您使用的是8级API,则还可以使用名为TrafficStats的有趣功能.这可以让您通过移动数据链路了解手机交换的低水平发送/接收数据包,这可能只提供您所寻找的信息(使用经过时间的这些测量,您可以轻松测量当前/平均使用的数据)链接速度).