【问题标题】:Getting upload and Download bandwidth in Android using NetworkCapabilities class使用 NetworkCapabilities 类在 Android 中获取上传和下载带宽
【发布时间】:2015-07-29 17:29:17
【问题描述】:

我正在开发一个小型视频流应用程序。我想在Android中获得网络的上传和下载速度。我发现我们可以通过使用提供功能的Android NetworkCapabilities类来做到这一点

getLinkDownstreamBandwidthKbps()
Retrieves the downstream bandwidth for this network in Kbps. 
This always only refers to the estimated first hop transport bandwidth.

getLinkUpstreamBandwidthKbps ()
Retrieves the upstream bandwidth for this network in Kbps. 
This always only refers to the estimated first hop transport bandwidth.

1.first hop Here是什么意思?

2.如何使用它们。请提供一些链接以供参考,我们如何使用它们?

【问题讨论】:

    标签: android bandwidth


    【解决方案1】:

    如果你在一个 Activity 中,你可以通过这种方式获取信息:

    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    Network[] networks = cm.getAllNetworks();
    ...cycle or choose a network...
    NetworkCapabilities capabilities = cm.getNetworkCapabilities(network);
    

    第一跳意味着它是对链接功能的估计,而不是对当您的流量通过网络路由到您的端点时您将获得的带宽的估计。请注意,此方法可从 Lollipop 获得。

    【讨论】:

    • 感谢您提供此信息。先生,您知道在 Android 中我如何以编程方式检查下载和上传速度。像 speedtest.net 一样。
    • 我猜他们使用 Socket 和 SocketServer 来检查在固定时间段内发送和接收了多少字节。速度是按广告字节数/时间计算的;这并不难,我相信有很多可用的示例,因为逻辑应该类似于您使用 java 应用程序实现的逻辑。顺便说一句,您正在实现一个流式应用程序,这种机制应该由您使用的协议处理。例如,RTCP 协议可以帮助您了解视频质量如何。
    • 先生,实际上用户可以在世界任何地方,如果我们在澳大利亚选择一个有 Socketserver 的服务器并且用户在英国,那么它将影响我们的性能。所以我需要选择一个靠近用户位置的服务器。
    • 所以基本上,您正在播放从服务器获取的视频,并且您在世界各地有许多可用的服务器?你的问题不清楚。
    • 我会以这种方式进行。如果您认为我的回答对您的问题很好,请接受我的回答,然后再发布一个问题!
    猜你喜欢
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2020-05-30
    • 2020-01-29
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多