fetchUuidWithSdp 始终给出缓存的 UUID

2023-11-29

我正在编写一个应用程序,其中我必须在选定的设备上进行服务发现,但每当我执行 fetchUuid 时,它总是为我提供远程设备上缓存的 UUID。

这就是我正在尝试的

public boolean UUIDsearch(BluetoothDevice device){

    t=device.fetchUuidsWithSdp();
    Log.d(TAG,"Device class = :"+device.getClass());



    mReceiver = new BroadcastReceiver() {
      @Override
      public void onReceive(Context arg0, Intent intent) {

          String action = intent.getAction();
        //BluetoothDevice deviceExtra = intent.getParcelableExtra("android.bluetooth.device.extra.DEVICE");
          if (BluetoothDevice.ACTION_UUID.equals(action)){
             uuidExtra =intent.getParcelableArrayExtra("android.bluetooth.device.extra.UUID");
          }
          Log.d(TAG,"SDP has no errors: = "+t);
         // if(found==false){
          for(int i=0;i<uuidExtra.length;i++){
              Log.d(TAG,"UUID:   "+ uuidExtra[i]);
              if((uuidExtra[i].toString()).equals(MY_UUID.toString())){
                  found=true;
                  Log.d(TAG,"Match found in loop");

              }

          }
         // }
      }
  };



  // Register the BroadcastReceiver

  IntentFilter filter1 = new IntentFilter(BluetoothDevice.ACTION_UUID);
  registerReceiver(mReceiver, filter1);

  return true;

}

有人可以告诉我代码有什么问题吗?

这是日志猫:

这是开始发现时的错误:

 09-05 15:05:15.906: D/(32591): bta_jv_start_discovery_cback: p_sdp_rec:0x52ab0e4c
 09-05 15:05:15.906: D/BTIF_SOCK(32591): jv_dm_cback: event:8, slot id:26
 09-05 15:05:15.906: E/BTIF_SOCK(32591): ## ERROR : jv_dm_cback: BTA_JV_DISCOVERY_COMP_EVT, slot id:26, found channle #, status:0, scn:7##
 09-05 15:05:15.906: I/(32591): BTA_JvRfcommConnect
 09-05 15:05:15.910: D/BluetoothSocket(2100): inputStream.read ret: 4
 09-05 15:05:15.910: D/(32591): releasing SDP rsp_list

发生上述错误后,fetchUuidWithSdp() 返回带有缓存 UUID 的意图作为错误

 09-04 16:54:51.851: I/(24860): BTA got event 0x206
 09-04 16:54:51.851: I/(24860): btif_dm_search_services_evt:  event = 2
 09-04 16:54:51.851: D/(24860): btif_dm_search_services_evt:(result=0x0, services 0xa42ed8f)
 09-04 16:54:51.851: E/(24860): Index: 0 uuid:00001101-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.851: E/(24860): Index: 1 uuid:00001103-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.851: E/(24860): Index: 2 uuid:0000110a-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.851: E/(24860): Index: 3 uuid:00001105-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.851: E/(24860): Index: 4 uuid:00001106-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.851: E/(24860): Index: 5 uuid:00001110-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.851: E/(24860): Index: 6 uuid:00001104-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.851: E/(24860): Index: 7 uuid:0000111b-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.855: E/(24860): Index: 8 uuid:00001115-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.855: E/(24860): Index: 9 uuid:00001116-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.855: E/(24860): Index: 10 uuid:0000112d-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.855: E/(24860): Index: 11 uuid:0000112f-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.855: E/(24860): Index: 12 uuid:00001132-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.855: E/(24860): Index: 13 uuid:00001400-0000-1000-8000-00805f9b34fb
 09-04 16:54:51.855: D/(24860): btif_dm_search_services_evt Remote Service SDP done. Call bond_state_changed_cb BONDED
 09-04 16:54:51.855: D/(24860): bond_state_changed: state=2 prev_state=1
 09-04 16:54:51.855: D/(24860): HAL bt_hal_cbacks->bond_state_changed_cb
 09-04 16:54:51.855: I/(24860): bta_dm_search_sm_execute state:3, event:0x206
 09-04 16:54:51.855: D/(24860): bta_dm_search_cmpl
 09-04 16:55:59.703: E/BluetoothRemoteDevices(24860): aclStateChangeCallback: State:DisConnected to Device:00:0A:3A:64:A7:34

上述 UUID 被标记为错误,因为当服务发现中遇到错误或需要很长时间才能执行相同操作时,fetchUuidWithSdp 返回缓存的 UUID。


我看到这是一篇旧帖子,但它是我在 Google 搜索中关于 Android 和服务发现协议 (SDP) 中缓存的 UUID 的第一个结果

Android 会缓存设备的 SDP UUID 记录以及设备的蓝牙地址,因此,如果您更改服务的 UUID 但未更改设备的蓝牙地址,则在调用时 Android 仍会将旧的缓存 UUID 保留在 UUID 列表中设备上的 getUuids()。

摆脱缓存的 UUID 记录的唯一方法是重置 Android 系统设置中的网络设置。似乎不可能以编程方式清除缓存。

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

fetchUuidWithSdp 始终给出缓存的 UUID 的相关文章

随机推荐

  • 处理“大量”数据时的 WinForms UI 响应能力

    我正在修改一个 Windows 窗体 以允许在后台加载数据 同时 UI 保持响应 数据的检索和绑定都需要相当长的时间 理想情况下 我会在后台执行这两项操作 但是对于我应该在后台执行哪种 UI 更新 如在主线程之外 存在一些模糊性 一个在后台
  • C++ 中的字符串没有越界异常/错误吗? [复制]

    这个问题在这里已经有答案了 string p a cout lt
  • 从 asp.net core api 添加用户声明到 firebase auth

    给定一个 asp net core api 和仅使用 Authorize 属性的工作 firebase 身份验证 如何将自定义声明添加到令牌以使用 Authorize Policy admin 管理 SDK 仅适用于 Node js Jav
  • 创建一种通过网络发送整数的有效方法。传输控制协议

    如何将整数值转换为字节数组 然后通过字节流将它们发送到客户端程序 客户端程序将字节数组转换回整数 我的程序是乒乓球游戏 运行后 它会创建一个服务器 客户端使用对象流通过互联网连接到该服务器现在 一切都运转良好 但似乎效率不高 我的意思是 当
  • 如何检查 Javascript 数组中是否存在多个值

    所以 我正在使用 Jquery 并有两个具有多个值的数组 我想检查是否all第一个数组中的值存在于第二个数组中 例如 例1 数组 A 包含以下值 34 78 89 数组 B 包含以下值 78 67 34 99 56 89 这将返回true
  • 带有伪元素之前的 Z 索引

    我创建了一个带有 before pseudo 元素的 header 元素 伪元素必须位于父元素后面 一切都工作得很好 直到我给我的 标题 一个 z 索引 我想要的 前景中的黄色 标题 背景中的红色伪元素以及黄色 标题 元素上的简单 z 索引
  • 对 IText 7 中的所有 PDF 页面使用单一模板

    我有以下内容PDF模板这对于所有的应该是一致的pages添加到我正在创建的 PDF 中 问题是 我只得到这个模板Page 1仅适用于其余页面空白模板已使用 这是现在正在使用的代码 PdfDocument pdfDoc new PdfDocu
  • 在 Java 中对从数据库检索的一小部分数据执行连接操作。 (上下文:网络应用程序)

    在 Web 应用程序的上下文中 是否适合在 Java 中对从数据库检索的数据 从第一个查询 执行一些 JOIN 操作 并使用该 JOIN 数据进行第二个也是最后一个数据库查询以获得所需的数据 Java 是否为此类实现提供任何内置机制 或者实
  • Laravel 5.2 通过 API 进行身份验证

    我正在使用 Laravel 5 2 开发 RESTful API 在令牌守卫中位于 Illuminate Auth TokenGuard TokenGuard php在第 46 行 标记的列名称定义为api token this gt st
  • Selenium 测试在本地工作但在 Jenkins 中失败

    在工作中 我们为我们的一个应用程序提供了一个自动化套件 该套件设置为在每次提交到 master 部署到产品时运行 并且很长一段时间以来 我们一直在尝试使其足够可靠 测试在 Jenkins 中运行 使用 Selenium webDriver
  • 如何在 Android Canvas 上制作路径动画

    是否可以将动画师附加到路径上 还有其他方法可以在画布上绘制动画线条吗 我在发布之前搜索过此内容 但找不到任何内容 在另外两篇文章中在 Android 的 Canvas 上绘制路径作为动画 and 如何在 Android Canvas 上用动
  • 使用JS或Jquery读取css比例值

    我有这个div div div 我如何获得 transform scale x y 使用 JS 或 jQuery 的元素 id css transform 给我矩阵 但我需要元素的实际比例值 或者 如果我无法直接获得比例 那么将矩阵 转换为
  • Fortran 中不区分大小写的字符串比较

    尽管 Fortran 不区分大小写 但我观察到使用以下命令比较字符串时情况并非如此if查看 当然 用户应该意识到这一点 然而 Fortran 不区分大小写 我潜意识里希望同样适用于字符串检查 实现不区分大小写的字符串比较的有效方法是什么 这
  • ld 在 OSX Leopard 上找不到 X11 库

    我有一个在 Linux 上运行的非常基本的 X11 应用程序 我试图在 OSX 10 5 8 下编译它 我已经安装了X11和X11 SDK 并修改了makefile如下 CFLAGS L usr X11 lib I usr X11 incl
  • 如何从DataFrame中获取Array[Seq[String]]?

    如何通过DataFrame cc into Array Seq String val factors ccCols split val cc dataset select factors head factors tail 我尝试过这种方式
  • 扩展 Typescript 中的内置类型

    我有以下结构 project types global d ts string d ts wdio d ts src Models Resources Components Extensions string ts tsconfig jso
  • 使用 CURRENT_TIMESTAMP 的 Rails 5.2 和 Active Record 迁移

    我有一些属性需要有默认值 我已经设置了迁移以在数据库中设置默认值 如下所示 class AddDefaultsToModel lt ActiveRecord Migration 5 2 def change change column po
  • 如何使用 Perl 动态获取 Web 内容?

    这有点棘手 我猜这个网页使用某种 AJAX 来根据搜索查询提取内容 当我在 Perl 中使用 get 获取页面时 它会获取 php html 后面的脚本代码 但不会获取手动搜索查询时显示的结果 我需要能够获取结果页面的内容 无论如何 在 P
  • iOS 中的视频编辑问题

    我目前正在开发一个 iOS 应用程序 它可以合并所需数量的视频 一旦用户点击按钮来合并视频 视频就会被合并 然后使用 AVPlayer 进行播放 如下所示 CMTime nextClipStartTime kCMTimeZero NSInt
  • fetchUuidWithSdp 始终给出缓存的 UUID

    我正在编写一个应用程序 其中我必须在选定的设备上进行服务发现 但每当我执行 fetchUuid 时 它总是为我提供远程设备上缓存的 UUID 这就是我正在尝试的 public boolean UUIDsearch BluetoothDevi