Android 设备上的低功耗蓝牙 RSSI 会定期更改

2023-11-22

我注意到 Android 上接收到的低功耗蓝牙信号强度随周期变化。 下图表示一个 BLE 信标在两分钟内的 RSSI 值。接收机器人和信标均处于静止状态,距离均为 1 米。我确保干扰尽可能低。 Android 是 Nexus 5,但我在其他 Android 设备上也遇到了同样的现象,所有设备都运行在 API 21 上。我还无法在 iOS 上测试它。

RSSI图

您可以看到 RSSI 每 15 秒重复一次,有 3 个主要级别,如低 -> 中 -> 高 -> 低 -> 中 -> 高等。

我猜测是android方面的原因,不知道是硬件还是软件的原因。

为什么 RSSI 会随时间循环?有人可以解释一下吗?


在阅读了这个主题的很多内容之后,我可能已经找到了答案。

蓝牙低功耗信标使用三个不同的频道进行广告,这是它们对跳频的适应,以避免与其他 2.4GHz 信号的干扰。根据我的测量,这种情况比普通蓝牙 (1600/s) 慢得多,大约每 5 秒发生一次。

更多这里:http://www.argenox.com/bluetooth-low-energy-ble-v4-0-development/library/a-ble-advertising-primer/

接收信号强度显然取决于频率,因此如果频率改变到另一个频道,则RSSI是不同的。如何处理这个问题现在是一个不同的问题。

UPDATE:跟进这个问题后,我必须更新一下我的言论:

每个大约 5 秒的三个级别很可能不是直接由于信标缓慢跳频造成的,而是由于 Android 设备在信道上单独扫描并在这样的时间间隔后切换到下一个。

克服这种行为的一种方法是循环启动和停止扫描过程,以便扫描持续时间明显少于 5 秒。开始扫描时,设备似乎总是在同一频道上开始扫描,并且在切换到不同频道之前重新启动扫描。重新启动后,该模式将不再可检测到 - 缺点是信道是“固定的”并且可能在此频率上遭受干扰。 感谢 Airsource Ltd 让我回到这个问题。

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

Android 设备上的低功耗蓝牙 RSSI 会定期更改 的相关文章

  • 保存用户可以访问的 Flutter Android 应用程序中的文本文件

    我在 Flutter 中开发的 Android 应用程序的用户应该能够将一些数据保存 导出 到文本文件中 用户应该能够使用其他应用程序 包括文件管理器 在其 Android 设备上找到并访问此文件 我想 final directory aw
  • onActivityResult 中的完成活动不起作用

    我有一对必须同生共死的活动 基本上 AlphaActivity 会做一些工作 然后发送一个意图 startActivityForResult 对于 Beta 活动 当 Beta 活动完成时 我希望它发送一个意图 startActivity
  • 任务“:app:dexDebug”执行失败

    我目前正在处理我的项目 我决定将我的 Android Studio 更新到新版本 但在我导入项目后 它显示如下错误 Information Gradle tasks app assembleDebug app preBuild UP TO
  • 如何改变android中menuItem的背景颜色?

    我正在以编程方式将菜单项添加到菜单中 我想在选择特定项目时添加背景颜色 如何为 menuItem 添加背景 您的回答将不胜感激 虽然其他答案提供了更改样式 这会影响all菜单项 据我了解 需要更改一个菜单项 我建议你使用android ac
  • 更改工具栏中汉堡图标的大小?

    我有两个问题 可能很奇怪 但无论如何 我有带有应用程序标题的工具栏 如何将其更改为非徽标的图片 下一个问题 是否可以设置 更改工具栏中汉堡图标的大小 我在下面的下一个代码的帮助下制作了经典的导航抽屉 我也使用了 ActionBarDrawe
  • 无法解析符号 FlutterActivity

    我使用 VCS gt Checkout from Version Control 将 flutter 项目从 github 导入到 Android Studio 中 现在我面临的问题是 Cannot resolve symbol Flutt
  • 在 Android 2.2 上运行 HelloCordova 时找不到类“android.webkit.WebResourceResponse”

    我尝试按照本教程进行操作 http docs phonegap com en 2 7 0 guide getting started android index md html Getting 20 Started 20with 20 An
  • 如何在照片删除后刷新 Android 的 MediaStore

    问题 如何使媒体存储刷新其已删除文件的条目 从外部存储中删除代码中的照片后 我仍然在图库中看到已删除照片的插槽 空白照片 画廊似乎反映了媒体存储 并且在媒体存储中找到了已删除的照片 直到手机重新启动或通常 直到重新扫描媒体为止 尝试扫描已删
  • 6:需要显示BuyFlow UI

    There is a problem when i am click on payWithGoogle Button I am implementing Google Pay in my Android Application and wh
  • 如何将单选按钮状态保存到已保存/共享首选项?

    我可以在保存的首选项中保存字符串 但很难保存单选按钮 public class PersonalDetailsf extends Activity private SharedPreferences sharedPreferences pr
  • invalidateOptionsMenu 在片段中不起作用

    显示或隐藏项目ActionBar根据文本中是否有文本EditText or not 所以 我做了以下事情 public class NounSearch extends android app Fragment EditText seach
  • Facebook LoginActivity 未正确显示

    我有一个使用 Facebook 登录的应用程序 我有 FacebookSDK 并且使用 com facebook LoginActivity 问题是 在 10 英寸平板电脑上 当显示软键盘时 活动无法正确显示 我使用的是 Samsung G
  • 手动启用时 Firebase Crashlytics 不报告崩溃

    Crashlytics 在没有选择加入报告的情况下也能正常工作 但一旦我根据规定设置了选择加入报告 它就会停止报告任何内容tutorial https firebase google com docs crashlytics customi
  • 如何从SurfaceView绘制到Canvas?

    我正在尝试做简单的画家 问题是Android看起来有三个独立的Canvas并给我它来顺序绘制 我用以下方式制作了用户界面SurfaceView 把霍尔德从中拿走 Override protected void onCreate Bundle
  • Android:如何监控WiFi信号强度

    当信号强度发生变化时我会收到通知 我尝试创建以下方法并在 onCreate 中调用它 private void initializeWiFiListener Log i TAG executing initializeWiFiListene
  • 点击监听器的公共类

    我的所有 6 项活动中有 7 个按钮 所有 6 个按钮在所有活动中都具有相同的功能 如何为这 6 个按钮执行通用的单击事件侦听器 您可以创建一个实现 View OnClickListener 的新类 如下所示 public class My
  • Android:如何使视图增长以填充可用空间?

    这看起来很简单 但我不知道该怎么做 我有一个带有 EditText 和两个 ImageButtons 的水平布局 我希望 ImageButtons 具有固定大小 并且 EditText 占据布局中的剩余空间 如何才能做到这一点
  • 如何更改锁屏自定义文本(所有者信息)?

    我写了程序代码 String message This is test Settings System putString context getContentResolver Settings Secure LOCK PATTERN EN
  • Google Android Drive api 在已安装版本上登录失败

    我开发了一个使用 GoogleDrive api 的 Android 应用程序 当处于调试状态或运行调试版本时 应用程序 工作正常 并正确验证附加的谷歌帐户 等 当我构建发行版本时 使用我的签名密钥 并且 安装apk文件 当我运行时 Goo
  • 基于BluetoothChat示例通过蓝牙套接字发送文件

    大家好 根据我之前问的一个问题 我已经能够将文件转换为其他字节数组 以便使用以下写入方法 public void sendFile Log d TAG sending data InputStream inputStream null Ur

随机推荐

  • Flexbox 使一件物品比其他物品大 4 倍

    我正在看这个 Flexbox 备忘单 http www sketchingwithcss com samplechapter cheatsheet html wrapcolumn 这里我们有一个例子 我想让大项目比小项目大 4 倍 而不是大
  • C++:将 wchar_t* 转换为 BSTR?

    我正在尝试转换wchar t to BSTR include
  • 在 django 模型自定义 save() 方法中,应该如何识别新对象?

    我想在以下位置触发一项特殊操作save Django 的方法Model当我保存新记录 不更新现有记录 时对象 支票是 self id None 保证自我记录是新的且不被更新的必要且充分 这可能会忽略任何特殊情况吗 检查的替代方法self p
  • 共享主机中的 Laravel 存储链接

    我在共享主机上设置存储链接时遇到问题 因此 我无法将任何图像上传到共享主机中的存储文件夹 只需创建一条路线并访问一次即可 Route get generate function Illuminate Support Facades Arti
  • 过滤两个存在串扰的表

    我正在 R 中创建一个 Flexdashboard 我希望仪表板包含一个表格和一系列可视化内容 这些可视化内容将通过输入进行过滤 由于我需要在本地提供仪表板 没有在后台运行的服务器 因此我无法使用 Shiny 因此我依赖于串扰 我知道串扰包
  • 如何从 android studio 创建 jar 文件

    我有一个相当最新版本的android studio 我在一个项目下创建了一个模块 它基本上应该是一个库 当我构建它时 它会创建一个 aar 文件 我想要的是 jar文件 如下所示该库也应该与 eclipse 一起使用 该库也包含活动 有什么
  • 将任意 Flash 对象 wmode 更改为透明

    我需要改变wmode任意 Flash 对象对外部 js 文件透明 以确保它们在不使用 Jquery 或类似库的情况下不会隐藏菜单 在FF我用getElementsByTagName embed 并设置属性 看起来效果不错 具体来说我遇到了麻
  • Android ListView 和 OnClickListener:如何获取所选项目

    我有一个包含一些项目的列表视图 我想从 onClickListener 获取所选项目的名称 字符串 我知道如何获取所选位置 但如何找到该元素的字符串 这是我的点击监听器 journalNames setOnItemClickListener
  • 在 Swift 中将 NSData 转换为整数

    在 Objective C 中 代码看起来像这样并且工作完美 NSInteger random arc4random uniform 99 1 NSData data NSData dataWithBytes random length s
  • 将 numpy 数组从使用 numpy.save(...) 保存的文件加载到 C 中

    我想访问 C 程序中的数据 该程序驻留在使用 numpy save 从 python 编写的文件中 到目前为止 我一直在寻找一种方法来调用我的C程序的numpy load的C版本 但似乎没有直接访问的C版本 因为numpy load使用pi
  • 通过 SQLLDR 将多个 csv 加载到一张表中

    我正在使用 SQL LOADER 在一个表中加载多个 csv 文件 我发现的过程非常简单 LOAD DATA INFILE path file1 csv INFILE path file2 csv INFILE path file3 csv
  • 依赖类型不适用于构造函数?

    路径相关类型很有用 trait Sys type Global def foo S lt Sys system S global system Global 为什么这对构造函数不起作用 class Foo S lt Sys val syst
  • 如何从文本图像OpenCV中去除非直线对角线?

    我有一个包含文本的图像 但上面绘制了非直线 我想删除这些行而不影响 删除文本中的任何内容 为此 我使用了霍夫概率变换 import cv2 import numpy as np def remove lines filename img c
  • 如何将 foreach 转换为 Parallel.ForEach?

    如何转换 foreach NotifyCollectionChangedEventHandler handler in delegates 对于这样的事情 Parallel ForEach NotifyCollectionChangedEv
  • 如何计算android中每个应用程序的移动和wifi数据使用情况?

    有没有可能使用 TrafficStats getUidRxBytes getUidTxBytes getTotalRxbytes getTotalTXbytes getMobileRxBytes getMobileTxBytes 方法来计算
  • 为什么 return/redo 在调用上下文中评估结果函数,但不评估块结果?

    昨晚我了解了 redo 选项 当你return来自一个函数 它可以让你回来another函数 然后在调用站点调用该函数并从同一位置重新调用评估器 gt gt foo func a print a return redo func b pri
  • ExpressJS 路由正则表达式

    我有路线 app get id routes action 它工作正常 但我需要跳过robot txt和其他 人类 我创建正则表达式 仅字符或数字 a z 0 10 我如何才能仅路由与此正则表达式匹配的 id 将正则表达式放在括号中 如下所
  • MySql批量插入

    我想在 MySql 数据库中插入一些 4K 行 我不想触发 4k 插入 查询 有什么方法可以让我只触发一个插入查询来将这些 4k 行存储在数据库中 我在互联网上搜索 发现用户正在从文件批量插入数据库 就我而言 我的数据位于内存中 并且我不想
  • 在 Mac (Yosemite) 上使用 phantomjs#2.0.0 运行 casperjs 时出现问题

    我正在尝试奔跑CasperJS having PhantomJS 2 0 0 on a Mac 优胜美地 当尝试跑步时CasperJS我收到以下消息 CasperJS needs PhantomJS v1 x usr local Cella
  • Android 设备上的低功耗蓝牙 RSSI 会定期更改

    我注意到 Android 上接收到的低功耗蓝牙信号强度随周期变化 下图表示一个 BLE 信标在两分钟内的 RSSI 值 接收机器人和信标均处于静止状态 距离均为 1 米 我确保干扰尽可能低 Android 是 Nexus 5 但我在其他 A