当前位置: 首页 > 知识库问答 >
问题:

Android GATT服务在多次成功连接后返回Null

吕峰
2023-03-14

我正在开发一个连接到BLE设备的Android应用程序,设备大部分时间都在连接,我能够捕捉读数。但是在许多连接断开之后,蓝牙打开/关闭,我的BluetoothGattCallback类方法

onServicesDiscovered(BluetoothGatt gatt, int status)
BluetoothGattService service = gatt.getService(getServiceUUID());

它返回null,因此我无法执行下一步。请帮我找出问题。

共有1个答案

盛嘉
2023-03-14

您必须首先发现给定设备的所有服务,否则当您运行BluetoothGattService service=gatt.getService(getServiceUUID());时,它将返回null。

我建议您添加onservicesdiscovered函数,并使用gatt.discoverservices();

@Override
    // New services discovered
    public void onServicesDiscovered(BluetoothGatt gatt, int status) {
        if (status == BluetoothGatt.GATT_SUCCESS) {
            for (BluetoothGattService gattService : gattServices) {
                Log.i(TAG, "Service UUID Found: " + gattService.getUuid().toString());
            }
        }
    }
 类似资料:
  • 问题内容: 我想编写一个脚本来测试所有链接的服务器,并返回唯一已连接的服务器(可以肯定只有一个)。 这是我当前的脚本,但是我被困在这一点上: 但是使用此查询,代码无法在第一次迭代时停止,因为它无法连接到表的第一台服务器。这是错误消息: 链接服务器“ server1”的OLE DB提供程序“ MSDASQL”返回了消息“通信链接失败; -10709连接失败(连接超时已过期)”。消息7303,级别16

  • 我在运行使用Netty的服务时遇到了问题。它启动和工作正常,但只有一次。在此之后,不接受任何连接(它们将立即被删除)。 当我第一次使用(示例端口,随便什么)连接到服务器时,一切正常: 客户端会话: 服务器日志: --编辑2-- 只要连接处于活动状态,服务器就可以正常工作--在关闭连接之前,我可以轻松地交换请求/响应。 不要被IP地址迷惑,这是一个转发到Docker的本地端口,应用程序就是在那里启动

  • 问题内容: 在我的Angular 2应用中,我具有以下后端服务。 调用此服务后,我想在上一个成功的情况下调用另一个服务。 第二次服务 这两个服务分别返回两个JSON数组。然后,我需要使用这两个数组进行一些登录。 已编辑 服务 然后,我在其他ts文件中使用following来调用服务。 但这会在控制台日志上出现以下错误。 任何建议表示赞赏。 问题答案: 您需要利用操作员在前一个请求完成后调用一个请求

  • 基类控制器里有success方法,用于api的成功返回输出 /** * 操作成功跳转的快捷方法 * @access protected * @param mixed $msg 提示信息 * @param mixed $data 返回的数据 * @param array $header 发送的Header信息 * @return void */ protected f

  • 问题内容: 服务器已创建一个套接字并绑定到端口,并启动了一个正在循环以接受连接的线程。有时由于异常导致线程退出而退出了稍后的循环,但是套接字仍然绑定到端口。现在,如果客户端与该服务器建立“连接”,则说明连接成功。这怎么可能?如果我理解正确,则仅当服务器在侦听套接字上执行“接受”操作后,“连接”才返回。我在这里想念什么吗? 问题答案: 如果我理解正确,则仅当服务器在侦听套接字上执行“接受”操作后,“

  • 我想返回每个行,并为和提供空值,如果它们没有。当我执行此查询时,我得到空结果。如果我使用而不是,我得到不正确的结果。如何过滤左连接,以便如果没有匹配,我仍然得到返回的p行与和的空值? 注:我在末尾添加了,仅用于测试目的。