【问题标题】:Measure Bluetooth Signal Strengths (RSSI) in Real Time实时测量蓝牙信号强度 (RSSI)
【发布时间】:2013-03-26 23:13:23
【问题描述】:

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

这是最简单的部分。

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

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

  • 按“Room1”按钮
  • 开始发现
  • 5 秒后,停止发现并重新开始
  • 反复执行此操作,直到...
  • 按下“停止”按钮

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

在我开始深入了解它之前,我还要问一些问题,因为在 n 不得不回到开始之前我已经这样做了。 :(

谢谢

【问题讨论】:

  • 您目前如何完成您的发现? BluetoothChat 示例建议发现无限期运行,无论如何您都需要实现超时。您可以使用线程或处理程序来执行此操作。

标签: android timer bluetooth refresh discovery


【解决方案1】:

你可以这样使用:

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。开始按钮将重复设置为 true 并调用 start()。

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

【讨论】:

  • 抱歉耽搁了。这很有魅力。然而,我确实需要停止并开始发现,因为我需要记录在每次扫描中找到的值。谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 2012-03-09
  • 2014-02-07
  • 2011-05-15
  • 2014-08-12
相关资源
最近更新 更多