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

时间:2013-03-26 23:13:23

标签: android timer bluetooth refresh discovery

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

这很容易。

我遇到问题的部分是找出如何(或者是否可能)这样做但是定时器设置,以便发现过程不一定完成,但是所以我可以计时它自己重复启动和停止发现以获得新值,直到我完成。 USUALLY附近的大多数值出现在大约5秒左右的时间内,对于我目前正在尝试做的事情,我很满意。 我发现了this问题,但没有答案。

为了使它更清楚一个简单的例子:

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

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

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

谢谢

1 个答案:

答案 0 :(得分: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的变量repeat。 start按钮将repeat设置为true并调用start()。

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