首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何了解在android系统中BLE扫描的状态?

如何了解在android系统中BLE扫描的状态?
EN

Stack Overflow用户
提问于 2021-02-25 03:45:18
回答 2查看 773关注 0票数 1

我正在开发一个移动应用程序,我正在做下面的工作,以便从我的传感器获取数据。

  1. 在前台服务中运行BLE扫描。
  2. 检测蓝牙开关状态,并自动启动和停止BLE扫描。
  3. 每3分钟重新启动BLE扫描(我在某个地方看到,BLE扫描在运行超过15分钟时会自动停止)。所以为了安全起见,我每3分钟重新启动一次。

我使用以下语句启动/重新启动扫描

代码语言:javascript
复制
scanner.startScan(scanFilters,scanSettings,callback);

我使用以下语句停止扫描

代码语言:javascript
复制
scanner.stopScan(callback);

scanFilters中,我设置了设备ID的名称,在scanSettings中,我将扫描模式设置为LOW_LATENCY

这个应用程序大部分时间运行良好。但有时我会收到客户的抱怨,即使蓝牙和位置是开着的,也没有数据更新。传感器工作正常。当我启动blueooth LE扫描时,如何确保扫描实际上正在运行?我在任何我能得到扫描状态的地方运行或不运行。

EN

回答 2

Stack Overflow用户

发布于 2021-02-25 05:53:27

因为您是说,这只发生在一些客户,可能有另一个来源您的问题。

对于运行低于8.0的安卓版本的设备,布尔需要获得位置权限。更高版本可以使用设备伴侣配对。您可能已经将权限添加到应用程序清单文件中,如下所示:

代码语言:javascript
复制
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

但是,在运行时也检查此权限并在未授予的情况下请求该权限更安全。有关如何在运行时请求用户许可的更多信息,请查看页面。

票数 1
EN

Stack Overflow用户

发布于 2021-02-25 05:46:41

你只需要一点修改就行了。

  • 从下面的代码中,我们发现mScanning是标记。
  • 当开始和停止扫描时,我们正在更改mScanning值。
  • 现在,我们声明一个静态get方法来检查mScanning是真还是假。
代码语言:javascript
复制
public static boolean isScanRunning(){
   return mScanning;
}
  • 根据您所能理解的值,是扫描运行与否。
代码语言:javascript
复制
private BluetoothLeScanner bluetoothLeScanner =
        BluetoothAdapter.getDefaultAdapter().getBluetoothLeScanner();
private boolean static mScanning = false;
private Handler handler = new Handler();

// Stops scanning after 10 seconds.
private static final long SCAN_PERIOD = 10000;

private void scanLeDevice() {
    if (!mScanning) {
        // Stops scanning after a pre-defined scan period.
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                mScanning = false;
                bluetoothLeScanner.stopScan(leScanCallback);
            }
        }, SCAN_PERIOD);

        mScanning = true;
        bluetoothLeScanner.startScan(leScanCallback);
    } else {
        mScanning = false;
        bluetoothLeScanner.stopScan(leScanCallback);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66362099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档