1

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

那是容易的部分。

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

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

  • 按“房间1”按钮
  • 开始发现
  • 5 秒后,停止发现并重新开始
  • 一遍又一遍地这样做,直到...
  • 按下“停止”按钮

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

另外,在我开始深入研究之前,我会问一些问题,因为在 n 不得不恢复到开始之前,我已经这样做了。:(

谢谢

4

1 回答 1

2

你可以使用这样的东西:

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()。

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

于 2013-03-26T23:33:50.433 回答