当前位置: 首页 > 知识库问答 >
问题:

只能从BluetoothAdapter进行扫描。LeScanCallback未在AndroidMarshmallow中调用

董弘新
2023-03-14

我刚刚更新了Nexus 5,我的应用程序的功能已经停止工作。

原因是接口LeScanCallback没有调用函数onLeScan。在下面的代码中,我使用了一些不推荐使用的代码,但我需要这样做,因为我正在测试一些技术。这是我启动蓝牙适配器的方式:

@Override
protected void onStart()
{
    super.onStart();

    // Check if the device has BLE
    if (!this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE))
    {
        bleNotSupported();
        return;
    }

    // Initializes a Bluetooth adapter.
    final BluetoothManager bluetoothManager = (BluetoothManager)this.getSystemService(Context.BLUETOOTH_SERVICE);
    mBluetoothAdapter = bluetoothManager.getAdapter();

    if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled())
    {
        bleNotEnabled();

        /*
        * Bluetooth can be enabled in app:
        *
        *    Intent btIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        *    btIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        *    mAppContext.startActivity(btIntent);
        */
        return;
    }

    boolean bluetoothScanning = mBluetoothAdapter.startLeScan(mScanCallback); // this is true as well
    progressBar.setVisibility(View.VISIBLE);
}

@Override
protected void onStop() {
    super.onStop();

    if (mBluetoothAdapter != null)
    {
        mBluetoothAdapter.stopLeScan(mScanCallback);
    }
    progressBar.setVisibility(View.GONE);
    mDeviceAdapter.clearList();
}

BluetoothAdapter.LeScanCallback mScanCallback = new BluetoothAdapter.LeScanCallback() {
    @Override
    public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord)
    {
//            if (previousBluetoothSelected == null)
        mDeviceAdapter.refreshList(device);

        if (device.getAddress().equalsIgnoreCase(previousBluetoothSelected)) {
            selectDeviceAndGo(device);
            mBluetoothAdapter.stopLeScan(this);
        }
    }
};

它可以在每个带有API的设备中工作

可能是什么原因?

提前非常感谢你。

问候。

拉斐尔。

共有1个答案

孙成化
2023-03-14

有一个错误在一些Nexus 5手机与Marshmold.在一些手机扫描不会开始,如果你的gps是关闭的。

 类似资料:
  • 我想从标准输入中读取一个双数,但是我总是得到这个异常: Java . util . inputmismatchexception 如果输入是整数,那没问题,但是如果是双精度的,我会得到异常。 线程“main”Java . util . inputmismatchexception Java . util . scanner . throw for(scanner . Java:864)Java .

  • 我对java有点陌生,习惯于用Python编写代码。因此,当涉及到获取用户输入时,我总是对执行这样的任务需要多少行代码感到恼火。所以我尝试创建自己的类来简化这个过程。我想表演这样的节目: 控制台内部: 以下是迄今为止的代码: 当我使用该类一次时,一切正常,但当我再次尝试使用它时,我会遇到一个异常: 输出: 我真的不知道为什么总是这样。请帮帮我,谢谢。

  • 问题内容: 我有一个包含很多列的表,而我的sql是这样的:。现在,我只想从返回的宽行集中扫描一两列。但是,sql.Scan接受作为参数。这是否意味着我必须扫描所有内容并仅使用所需的列? 我知道我可以将sql从更改为,但是在这种情况下,我无法更改sql。 问题答案: 您可以使用Rows.Columns,例如

  • 我正在创建一个Android应用程序,该应用程序使用Android Studio扫描所有附近的BLE(蓝牙低功耗)设备。 我想我已经实施了所有这些文件: https://developer.android.com/guide/topics/connectivity/bluetooth/ble-overview https://developer.android.com/guide/topics/c

  • 声纳扫描仪无法完成扫描。我检查了日志,我看到扫描卡在一个文件上,如下所示 信息:977/6093已分析文件,当前文件:C:\Projects\ABC\src\main\java。通用域名格式。化学机械抛光。rpt。汇报JAVA 扫描仪会一直打印此消息,扫描永远不会完成。这是最近的一个问题。我检查了该文件的历史记录,该文件没有任何更改。我最近更新了Sonar中的Java插件。我的服务器配置如下 So

  • 问题内容: 我收到以下异常。 java.util.NoSuchElementException:找不到行 我在编写一个需要从文本文件读取的较大程序时遇到了此错误,因此决定进行测试。 而且我仍然得到例外。我在与名为stricts.txt的类相同的文件夹中有一个文本文件,其中包含文本。我究竟做错了什么? 问题答案: 新的File(“ restrictions.txt”)将在应用程序的“开始目录”中查找