如何防止名称缓存并在发现时检测蓝牙名称更改

2023-12-13

我正在编写一个 Android 应用程序,它从蓝牙设备接收信息。我们的客户建议蓝牙设备(他们生产的)将根据某些条件更改其名称 - 举个最简单的例子,其名称有时是“xxx-ON”,有时是“xxx-OFF”。我的应用程序只是应该寻找这个 BT 发射器(我使用 BluetoothAdapter.startDiscovery() )并根据它找到的名称执行不同的操作。我没有与蓝牙设备配对(尽管我认为这可能是可能的,但该应用程序最终应该与多个 Android 设备和多个 BT 发射器配合使用,所以我不确定这是否是一个好主意)。

我的代码可以很好地检测 BT 设备并找到它们的名称。另外,如果设备关闭,我可以在下次搜索时检测到它不在那里。但似乎如果它在那里并且它改变了名称,我会选择旧名称 - 大概它被缓存在某个地方。即使蓝牙设备关闭,并且我们注意到,下次检测到它时,我仍然会看到旧名称。

我在谷歌代码中发现了这个问题:here但我什至不清楚如何使用给出的解决方法(“尝试连接”)。有人这样做过并且运气好吗?你能分享代码吗?

有没有一种简单的方法可以删除缓存的名称并再次搜索,以便我始终找到最新的名称?即使是一种不简单的方法也会很好(我正在为 root 设备编写)。

Thanks


我建议使用“fetchUuidsWithSdp()”。其意义在于,与类似的 getUuids() 方法不同,fetchUuidsWithSdp 会导致设备更新有关远程设备的缓存信息。我相信这包括远程名称和 SPD。

请注意,我提到的两种方法在 4.0.3 之前都是隐藏的,因此您的代码将如下所示:

public static void startServiceDiscovery( BluetoothDevice device ) {
    // Need to use reflection prior to API 15
    Class cl = null;
    try {
        cl = Class.forName("android.bluetooth.BluetoothDevice");
    } catch( ClassNotFoundException exc ) {
        Log.e(CTAG, "android.bluetooth.BluetoothDevice not found." );
    }
    if (null != cl) {
        Class[] param = {};
        Method method = null;
        try {
            method = cl.getMethod("fetchUuidsWithSdp", param);
        } catch( NoSuchMethodException exc ) {
            Log.e(CTAG, "fetchUuidsWithSdp not found." );
        }
        if (null != method) {
            Object[] args = {};
            try {
                method.invoke(device, args);
            } catch (Exception exc) {
                Log.e(CTAG, "Failed to invoke fetchUuidsWithSdp method." );
            }               
        }
    }
}

然后,您需要侦听BluetoothDevice.ACTION_NAME_CHANGED意图,并从中提取BluetoothDevice.EXTRA_NAME。

让我知道这是否有帮助。

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

如何防止名称缓存并在发现时检测蓝牙名称更改 的相关文章

  • onBeaconServiceConnect 未调用

    和以前一样 我使用 Android Beacon 库 它已经工作了 我可以通过 BLE 低功耗蓝牙找到信标 但是现在 更新到最新版本的库后 现在方法onBeaconServiceConnect 不再跑了 请告诉我我需要做什么才能让它发挥作用
  • 使用 google Directions API 的地图视图绘制方向 - 解码折线

    我正在尝试使用 Google 方向 API 在我的地图视图上显示方向 但我在从 JSON 响应获取数据时遇到困难 我可以获得 级别 和 点 字符串 但无法弄清楚如何将它们解码为地图上的点 任何帮助将非常感激 我有一个类可以为您解码它们 添加
  • Twitter 登录说明

    我想在 Android 中创建一个 Twitter 应用程序 为此 我想创建一个登录页面并登录到 Twitter 为此 我们需要消费者密钥和消费者密钥 这是什么意思 要创建此登录页面 除了 Twitter 帐户之外 我们还需要其他任何东西吗
  • Manifest Merger工具:替换失败

    我正在使用一个使用自己的 android theme 的库 因此在构建时收到以下错误 错误 55 9 任务 contacit processDebugManifest 执行失败 清单合并失败 AndroidManifest xml 中的属性
  • FTS3 在 ORMLite 中搜索?

    我对 FTS3 一无所知 除了http developer android com guide topics search search dialog html http developer android com guide topics
  • 如何使用Android opencv使图像的白色部分透明

    我无法链接超过 2 个网址 因此我将我的照片发布到此博客 请在这里查看我的问题 http blog naver com mail1001 220650041897 http blog naver com mail1001 220650041
  • 安卓定位不准确

    我正在尝试获取当前用户的位置 我试图重构我的代码以获得更好的结果 但我只是不断得到关于准确度的荒谬位置 它在 900 600 米之间 如何才能得到更好的结果 使其精度达到50m以内 这是我的代码 package com agam mapsl
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • 调整浮动操作按钮的图标大小(fab)

    The new floating action button should be 56dp x 56dp and the icon inside it should be 24dp x 24dp So the space between i
  • 出现错误错误:res/menu/mainMenu.xml:文件名无效:必须仅包含[a-z0-9_。]

    我是安卓新手 刚刚开始使用 我在 res 文件夹中创建了一个文件 menu mainMenu xml 但我得到了错误 Error res menu mainMenu xml invalid file name must contain on
  • 如何在android中设置权限WRITE_SECURE_SETTINGS? [复制]

    这个问题在这里已经有答案了 我正在尝试启用 4 0 以上的辅助功能服务设置 但它显示异常 即 引起原因 java lang SecurityException 权限拒绝 写入安全设置需要 android permission WRITE S
  • Camera.open()返回NULL Android开发

    我正在按照构建相机应用程序的教程进行操作http developer android com tools device html http developer android com tools device html我对 Camera o
  • Android 服务是否有办法检测设备何时锁定?

    我有一个 Android 服务 我希望在设备锁定时执行操作 我想澄清一下 我对屏幕开 关状态不感兴趣 我知道如何使用带有 Intent ACTION USER PRESENT 和 KeyguardManager inKeyguardRest
  • glTexImage2D: 之前出错:( 0x506 内部 0x1908 格式 0x1908 类型 0x1401

    当使用 Android Studio 运行模拟器时 我在模拟器屏幕上看不到任何内容 一切都是黑色的 我得到以下事件日志 模拟器 glTexImage2D 出错了 0x506 内部 0x1908 格式 0x1908 类型 0x1401 我已经
  • 如何检查用户在EditText中输入自己的电话号码?

    用户将在我的 Android 应用程序的注册页面上的编辑文本中输入手机号码 如何检查用户输入的是他 她的手机号码而不是其他人的 我试过这个 TelephonyManager tMgr TelephonyManager mAppContext
  • Android Studio:未找到 Gradle DSL 方法:“classpath()”

    首先 我已阅读所有其他解决方案帖子以及有关迁移到 1 0 的官方文档 到目前为止 还没有任何效果 Error Error 23 0 Gradle DSL method not found classpath Possible causes
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • Android:监听状态栏通知

    有没有办法在状态栏被下拉时监听通知 1 用于检测状态栏变化 您可以注册一个监听器来获取系统UI可见性变化的通知 因此 要在您的活动中注册侦听器 Detecting if the user swipe from the top down to
  • Android studio - 如何查找哪个库正在使用危险权限?

    我正在尝试将 apk 上传到 google play 商店 但令我惊讶的是 我正在使用以下权限 Your APK is using permissions that require a privacy policy android perm

随机推荐

  • 在手机间隙运行 https 请求

    我正在iPhone中开发phone gap应用程序 我想使用JQuery getJSON url function 访问https json 请求 但仅在应用程序中它不会返回任何内容 但在正常的移动Safari中它工作正常 尽管它在phon
  • 如何使用 watchOS 2 SDK 构建应用程序

    在上次提交申请时 我们收到了此警告 WatchKit 支持无效 从 2018 年 4 月 1 日开始 提交到 Apple Watch App Store 的所有应用程序都必须使用 watchOS 2 SDK 或更高版本构建 检查您的部署目标
  • 仅沿第三维在 3D 逻辑数组中使用 Matlab“查找”

    我有一个 3D 逻辑数组 例如 A randi 0 1 x y z 其中 x y z 是整数 有没有办法找到每个 x y 沿第三维 z 的第一个真值 我可以像这样循环执行 B zeros x y for ix 1 x for iy 1 y
  • 如何将自定义ListAdapter设置为appwidget中的列表视图?

    我有一个列表视图 我需要为每个列表项提供一个自定义视图 因此我创建了一个自定义 ListAdapter 它提供了视图和布局 如下所示 但是如何使用 RemoteViews 将这个 listAdapter 设置为小部件中的 ListView
  • 程序集编号转 ascii

    我正在使用 intel 上的 at t 语法来处理汇编程序 我迷路了 如何将寄存器中的整数转换为 ASCII 数字 假设我想转换数字 10 我会将数字 10 放入寄存器 eax 中 如果我只是将数字 48 添加到 eax ascii 符号将
  • ZipArchive::close():读取错误:是一个目录

    我试图找出这个问题 但我无法想象为什么它一直发生 我正在将文件添加到 ZipArchive 当我尝试关闭它时 它收到目标是目录的错误 但我很确定事实并非如此 这是 zip 函数的代码 function create zip folder d
  • 打算打开Goog​​le身份验证器

    有没有办法通过 Intent 打开 Google Authenticator 如果是 是否可以使用已填充的密钥来打开它 以使其对用户实用 我有一个更通用的代码 因此 您只需将包名称作为参数发送给方法openApp Context conte
  • Meteor.js 应用程序模板中的多重收益

    我在布局文件中有一个用于iron router的通用 gt yield 它渲染我的页面 这些页面是模板 在我的一个页面中 我有一个侧面菜单 根据此菜单中的选择 我想在此页面中加载与此页面相关的不同模板 我怎样才能实现这个目标 我用iron
  • 使用 Matplotlib 绘制字典中的日期和关联值

    我有一本包含 Python 实例的字典datetime date和相关的数值 整数 类似这样的东西 但当然要大得多 datetime date 2016 5 31 27 datetime date 2016 9 1 87 我正在尝试使用 M
  • Jackson 动态更改 JsonIgnore

    我有一个类 里面也有变量 有时我想忽略某些字段 有时在反序列化时不想忽略 也许也在序列化时 我怎样才能在杰克逊做到这一点 对于序列化 过滤属性 博客文章应该有所帮助 反序列化方面的支持较少 因为更常见的是想要过滤掉写入的内容 一种可能的方法
  • 列表视图的自定义滚动条

    I have a task to create a custom scrollbar for list view and to my knowledge the way you can customize your scrollbar is
  • 解决 MySQL“无法重新打开表”错误

    我目前正忙于实现一个过滤器 我需要为每个要过滤的 标签 生成一个 INNER JOIN 子句 问题是 在执行完一大堆 SQL 之后 我有一个表 其中包含进行选择所需的所有信息 但对于每个生成的 INNER JOIN 我再次需要它 这基本上看
  • 如何为气泡设置边界并根据命令触发移动?

    我在 D3 中有一个气泡图 我用它来显示每组有多少个气泡 这个版本一开始有大约 500 个气泡 我的完整版本有大约 3 000 个 我在二维中挣扎 我试图让气泡在不在状态之间转换时保持原状 并且我还试图让气泡创建矩形形状 这是一个demo的
  • 表单完成后 PHP 重定向

  • 如何检查 Linux shell 上是否设置了“s”权限位?还是珀尔?

    我正在编写一些脚本来检查是否为特定文件设置了 s 权限位 例如 我的文件的权限如下 drwxr s 如果设置了该位 如何检查 bash 脚本或 perl 脚本 如果你使用 perl 那么看看perldoc u File has setuid
  • Python:类方法内的变量

    我正在学习 python 并尝试编写一个基于角色热区的伤口系统 这是我写的 别对我评价太多 class Character def init self agility strength coordination self max agili
  • 类型错误:无法读取未定义的属性“根”

    我正在尝试将 Material Ui 中的 BasicTable 函数放入我的 React js 文件中 这是我的代码 import React Component from react import Route Redirect Swit
  • axios支持Set-Cookie吗?是否可以通过axios HTTP请求进行身份验证?

    我正在尝试使用 Axios HTTP 请求调用来验证 Express API 后端 我能够在响应标头中看到 Set Cookie 但未设置 cookie 是否可以通过axios HTTP调用设置cookie Access Control A
  • 为什么打字稿会在数字上抛出错误 |未定义的比较,即使在使用可选链接之后也是如此?

    下面是我的代码块 如果说 Object 可能未定义 打字稿将在第二个代码块上抛出错误 在这种情况下 打字稿不应该假设它为 falsea is undefined并且不抛出错误 const condition true can be a co
  • 如何防止名称缓存并在发现时检测蓝牙名称更改

    我正在编写一个 Android 应用程序 它从蓝牙设备接收信息 我们的客户建议蓝牙设备 他们生产的 将根据某些条件更改其名称 举个最简单的例子 其名称有时是 xxx ON 有时是 xxx OFF 我的应用程序只是应该寻找这个 BT 发射器