我希望能够在手里拿着Android设备的房间里走动,单击显示1号房间的按钮,然后开始发现我周围的蓝牙设备并获取它们的RSSI值。然后,我想将此信息另存为文本文件。然后在不同的房间重复。

那是容易的部分。

我遇到的问题是找出如何(或是否有可能)执行此操作,但要设置一个计时器,以便发现过程不一定会自行完成,但是我可以安排它的时间来启动和停止自己反复发现以获取新的价值,直到我完成为止。通常,大多数接近的值会在大约5秒钟左右出现,对于我目前正在尝试的操作,我感到非常满意。
我找到了this问题,但没有答案。

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


按下“ Room1”按钮
开始发现
5秒后,停止发现并重新开始
一遍又一遍地做,直到...
按下“停止”按钮


有人知道这是否可能吗?如果是这样,最好的方法是什么?
我看过Timer和TimerTask,它们看起来很有用。

我也想问一下,在我开始深入之前,我已经做过了,在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);
}


重复执行一个由停止按钮设置为false的变量。启动按钮将重复设置为true并调用start()。

据我所知,蓝牙发现无限期运行,因此您无需停止并重新启动它。

07-28 10:09