Android 实时测量蓝牙信号强度(RSSI)

Android 实时测量蓝牙信号强度(RSSI),android,timer,bluetooth,refresh,discovery,Android,Timer,Bluetooth,Refresh,Discovery,我想能够在一个房间里走动,手里拿着一个android设备,点击一个显示房间1的按钮,然后开始发现我周围的蓝牙设备并获取它们的RSSI值。然后我想将此信息保存为文本文件。然后对不同的房间重复上述步骤 这是最简单的部分 我遇到的问题是找到如何(或者如果可能的话)这样做,但是设置了一个计时器,这样发现过程就不一定会自己完成,但是我可以计时它自己反复启动和停止发现,以获得新的值,直到我完成为止。大多数接近的值通常出现在大约5秒钟之内,这对于我目前正在尝试做的事情来说已经足够令人满意了。 我发现了一个问题

我想能够在一个房间里走动,手里拿着一个android设备,点击一个显示房间1的按钮,然后开始发现我周围的蓝牙设备并获取它们的RSSI值。然后我想将此信息保存为文本文件。然后对不同的房间重复上述步骤

这是最简单的部分

我遇到的问题是找到如何(或者如果可能的话)这样做,但是设置了一个计时器,这样发现过程就不一定会自己完成,但是我可以计时它自己反复启动和停止发现,以获得新的值,直到我完成为止。大多数接近的值通常出现在大约5秒钟之内,这对于我目前正在尝试做的事情来说已经足够令人满意了。 我发现了一个问题,但并没有答案

更清楚一点,一个简单的例子是:

  • 按“房间1”按钮
  • 开始发现
  • 5秒钟后,停止查找并重新启动
  • 反复这样做直到
  • 按下“停止”按钮
有人知道这是否可能吗?如果是这样的话,最好的办法是什么? 我看过定时器和定时器任务,它们看起来很有用

此外,在我开始深入研究之前,我也会问一些问题,因为我在n不得不回到开始之前就已经做过了(


谢谢

您可以使用以下内容:

private void start() {
    mBluetoothAdapter.startDiscovery();
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            if (mBluetoothAdapter.isDiscovering())
                mBluetoothAdapter.cancelDiscovery();
            if (repeat) start();                
        } }, 5000);
}
通过停止按钮将变量repeat设置为false。开始按钮将repeat设置为true并调用start()


据我所知,bluetooth discovery无限期运行,因此您无需停止并重新启动它。

您目前如何确定您的发现?BluetoothChat示例建议发现无限期运行,您无论如何都需要实现超时。您可以使用线程或处理程序来执行此操作。很抱歉,延迟了。这很有效魅力。不过,我确实需要停止并开始发现,因为我需要记录每次扫描中发现的值。谢谢!