如何测量 Android wifi 连接中的上传/下载速度和延迟

2023-12-31

我需要一些 api 或操作代码,通过它们我可以测量 android 应用程序的上传/下载速度和 wifi 连接的延迟。


您使用的是 2.2 (Froyo) 或更高版本吗?

如果是这样,请在您的应用程序中导入流量统计信息,并在您的应用程序使用互联网时添加以下内容。

下载上载:

long BeforeTime = System.currentTimeMillis();
long TotalTxBeforeTest = TrafficStats.getTotalTxBytes();
long TotalRxBeforeTest = TrafficStats.getTotalRxBytes();

/* DO WHATEVER NETWORK STUFF YOU NEED TO DO */

long TotalTxAfterTest = TrafficStats.getTotalTxBytes();
long TotalRxAfterTest = TrafficStats.getTotalRxBytes();
long AfterTime = System.currentTimeMillis();

double TimeDifference = AfterTime - BeforeTime;

double rxDiff = TotalRxAfterTest - TotalRxBeforeTest;
double txDiff = TotalTxAfterTest - TotalTxBeforeTest;

if((rxDiff != 0) && (txDiff != 0)) {
    double rxBPS = (rxDiff / (TimeDifference/1000)); // total rx bytes per second.
    double txBPS = (txDiff / (TimeDifference/1000)); // total tx bytes per second.
    testing[0] = String.valueOf(rxBPS) + "B/s. Total rx = " + rxDiff;
    testing[1] = String.valueOf(txBPS) + "B/s. Total tx = " + txDiff;
}
else {
    testing[0] = "No uploaded or downloaded bytes.";
}

现在你有testing[0]是您的下载速度(大致)和testing[1]是你的上传速度(大约)

只需确保您仅在实际进行网络通信时调用此代码,否则时间会扭曲您的结果。

就延迟而言,没有什么特别好的。我写的这个未经测试,但应该可以正常工作,但可能有更好的解决方案可用。

Latency:

String host = YOUR_HOST
HttpGet request = new HttpGet(host);
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 3000);
HttpClient httpClient = new DefaultHttpClient(httpParameters);

for(int i=0; i<5; i++) {
    long BeforeTime = System.currentTimeMillis();
    HttpResponse response = httpClient.execute(request);
    long AfterTime = System.currentTimeMillis();
    Long TimeDifference = AfterTime - BeforeTime;
    time[i] = TimeDifference 
}

注意:请记住,这并不是说您使用时的延迟,而是让您了解您在特定时间段使用的网络上经历的延迟。此外,这是请求和响应时间,而不是像“ping”通常那样的请求到达网络时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何测量 Android wifi 连接中的上传/下载速度和延迟 的相关文章

随机推荐

  • 最小起订量 - 如何验证静态类调用和委托?

    我刚刚开始阅读 Moq 框架 并考虑将其应用到我现有的代码中 我可以提出一个测试用例来验证基本函数调用 但现在坚持将其应用于委托和静态类 以下是被测系统 SUT public class SUT ISUT private IInterfac
  • 在 Swift 中,我们是“发送消息”还是“调用方法/函数”?

    Swift 在编译时是否保留方法查找列表 或者是否调用特定内存位置中的函数 关于this http davedelong tumblr com post 58428190187 an observation on objective c 我
  • 在 Mathematica 中求解二元递归方程,这可能吗?

    我尝试使用RSolve求解二变量递归方程数学 但它只是重复我输入的内容 是否可以求解两个变量递归方程数学 也许您应该在问题中包含方程式 因为您可能只是使用RSolve错误地 数学可以解一些二变量递推方程 但不是全部 有时免费套餐Guess
  • HTML 源代码中没有嵌套链接元素的嵌套超链接区域

    我想要一些看起来和行为都像大矩形 整页宽 内的超链接的东西 这也是超链接 下面是它应该是什么样子的 ASCII 艺术表示 Some text link 整个外部矩形 块元素 将成为超链接 在这个矩形内应该有一些文本 并且在该文本的末尾应该有
  • 手动实现bayern转RGB

    我正在尝试实现图像转换 Bayern Pattern gt RGB I uploaded this image 这是我的代码片段 import cv2 import numpy as np from matplotlib import py
  • 使用 Python Logging 记录出现两次的消息

    我正在使用 Python 日志记录 由于某种原因 我的所有消息都出现了两次 我有一个配置日志记录的模块 BUG It s outputting logging messages twice not sure why it s not the
  • pcap_pkthdr 是做什么用的?

    代码片段来自here https www winpcap org docs docs 40 2 html group wpcap tut6 html void packet handler u char param const struct
  • 如何使用 .NET Core 从 nuget 从命令行下载包?

    微软软件包Linux 上的 NET Core https learn microsoft com en us nuget tools cli ref install对于Ubuntu 我目前正在使用它 我现在想安装Json NET https
  • Spring:POJO的@Autowired,不由Spring管理[重复]

    这个问题在这里已经有答案了 我使用 Autowired 在 POJO 中注入一些服务 这些服务注册为 Bean 如果一旦 POJO 由 Spring 管理 它也在 Spring Config 上注册为 Bean 那么注入服务就没有问题 但是
  • 在 Linux 中将文本文件中的空格替换为逗号

    我需要编辑一些文本文件 来自sar 并将它们转换为 CSV 文件 我需要使用 sed 或 awk 函数 Linux 中的简单 shell 脚本 更改每个空格 可能是输出中数字之间的制表符 谁能帮我 我使用的每个命令根本没有改变文件 我试过g
  • 如何使滚动条在有角度的材料中始终可见?

    所以目前 我正在使用角度材料及其默认滚动 但我认为它是完美的滚动条 用作滚动条的滚动设计 但只有当用户尝试滚动页面 div 时才会显示滚动 我尝试阅读 Angular Material 的滚动 api 但没有可以在此处使用的属性 我已经把o
  • Selenium 中的 WebDriver 和 WebElement 有什么区别?

    Selenium 中的 WebDriver 和 WebElement 有什么区别 示例代码 WebDriver driver new FirefoxDriver driver get http www google com WebEleme
  • 反应本机 PIP

    我需要将画中画模式添加到反应本机应用程序 iOS 中 但我不知道如何去做 我看到这是react native video 的一个功能 但我对视频使用了不同的模块 所以我只能将画中画添加为单独的功能 任何包含有关如何设置的详细信息的文档 博客
  • Puppeteer 流程​​逻辑,检查导航是否发生(与等待)

    寻找一些反馈 在 Puppeteer 中 我想检查导航是否发生 如果发生则执行某些操作 否则如果未发生则执行其他操作 例如重试 我想出的两种方法是 if await page url finalURL let t 0 busy while
  • Selenium WebDriver Click() 在 IE9 中失败

    我看过很多其他类似的帖子 不幸的是无法解决这个问题 所以这里 我正在使用 Selenium WebDriver C 实现 版本 2 15 来驱动一个相当简单的网页 该页面包含一个表单 其中有两个用于用户名和密码的 以及一个用于提交表单的 我
  • 使用 tidyverse 和 broom 进行许多回归:相同的因变量,不同的自变量

    此链接显示了在我们具有相同的自变量但可能有许多不同的因变量的情况下如何回答我的问题 使用 broom 和 tidyverse 对不同的因变量进行回归 https stackoverflow com questions 51642146 us
  • Magento 2:重新索引不起作用

    我做不到重新索引 in 玛根托2 谷歌之后我得到了解决方案We can reindex with shell command php dev shell indexer php reindexall 但它给出了错误 Could not op
  • 无法使用 C# 客户端反序列化日期时间属性 Neo4j

    我正在尝试使用 C 客户端从 Neo4j 中获取强类型对象 这一切都有效 直到我添加DateTime财产 我已成功将数据插入 Neo4j 数据库 并且可以使用控制台查看它 我还可以查询数据 但无法返回任何强类型对象 因为反序列化似乎失败 我
  • Linux C++:如何跨多个文件正确使用模板专业化?

    我有一个奇怪的问题 在 Windows 上 使用 Visual Studio 2010 以及 Intel 编译器 一切都按预期链接 但是 当我尝试在 Linux 上使用 CLang 3 0 编译代码时 它会编译 如果我只使用单个 CPP 文
  • 如何测量 Android wifi 连接中的上传/下载速度和延迟

    我需要一些 api 或操作代码 通过它们我可以测量 android 应用程序的上传 下载速度和 wifi 连接的延迟 您使用的是 2 2 Froyo 或更高版本吗 如果是这样 请在您的应用程序中导入流量统计信息 并在您的应用程序使用互联网时