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

Java 如何以编程方式获得链接速度?,java,android,networking,Java,Android,Networking,我正在开发一个应用程序,它几乎完成了,除了一件事:我不知道如何获得链接速度并将其放置在状态栏中。我是Java新手,如果有人能帮助我,我将非常感激。 顺便说一句,很抱歉英语不好。你不能直接说出来。您必须询问底层操作系统。对于OS X,您可以在适当的网络端口上解析“/sbin/ifconfig”的输出。您还可以使用JNI编写扩展,并使用C询问连接速度。如果您不想解析其他应用程序的输出,这只是为了以防万一,但请记住此解决方案不可移植 正如回答者所说,你的问题不是很清楚。您可以参考链路连接速度(即使用良

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

你不能直接说出来。您必须询问底层操作系统。对于OS X,您可以在适当的网络端口上解析“/sbin/ifconfig”的输出。

您还可以使用JNI编写扩展,并使用C询问连接速度。如果您不想解析其他应用程序的输出,这只是为了以防万一,但请记住此解决方案不可移植

正如回答者所说,你的问题不是很清楚。您可以参考链路连接速度(即使用良好的信号接收Wifi时高达54 Mbps,或使用全速HSDPA时高达7.2 Mbps),这取决于:

  • 一次使用的网络接口。有些手机允许连接,这意味着您可以同时启用Wifi和移动数据链路(GPRS/3G/HSDPA),或者启用自动切换(如果您的Wifi连接断开,您的手机将在启用后自动切换到移动网络)
  • 一次协商的连接速度。取决于信号质量/运营商网络配置(一些有最高速度限制)/移动数据合同(超过配额的每月带宽通常意味着默认为GPRS速度)
在这种情况下,恐怕没有标准的Java API方法知道它,但Android API提供了所需的功能:

  • 用于WiFi链路速度检查
  • 对于移动数据链路,恐怕您只能通过检查来确定当前的移动数据链路类型。然后,您应该根据链路类型接近实际速度(即,对于高达128 kbps的GPRS,对于高达236.8 kpbs的EDGE,对于高达2 Mbps的3G,对于高达7.2 Mbps的HSDPA)。考虑到这只是一个近似值。您可以使用HSDPA连接,但您的运营商将最高速度限制为2 Mbps
其他情况下,您参考当前(下载/上传)数据链路速度这仅在较高级别上可用,实际测量的不是链路速度,而是手机与服务器之间的速度,这不仅可以由您的链路速度确定,还可以由许多其他因素确定(手机与服务器、服务器本身等之间的所有链接)。您可以只测量“HTTP级别速度”,这意味着HTTP数据速度(不考虑数据包的开销流量),因为通常每个场景都只支持HTTP连接(您的运营商可能将您隐藏在一个代理之后,该代理可以过滤除HTTP流量之外的所有内容)


如果您使用的是8级API,还可以使用一个有趣的功能,名为。这可以让您知道手机通过移动数据链路在低级别交换的发送/接收数据包,这可能只提供您要查找的信息(将这些测量值与经过的时间一起使用,您可以轻松测量当前/平均使用的数据链路速度).

链接速度应该是多少?你是指带宽下载速度吗?或者你指的是一个不确定的进度条?你想知道internet连接下载的速度有多快?或者它现在下载东西的速度有多快?或者完全其他什么?它现在下载东西的速度有多快谢谢您的快速响应可以更详细地检测3G连接速度吗?当我输出TelefonyManager.getNetworkType()时,它返回“CONNECTED”,而不是特定的电话类型。