android 获取未配对的蓝牙设备列表

0yg35tkg  于 2023-04-10  发布在  Android
关注(0)|答案(1)|浏览(205)

如何获取(扫描)在Android中未配对的蓝牙设备列表?意味着必须扫描附近的设备.请在这方面提供帮助.
我知道如何找到(扫描)配对的设备和做所有的事情(插座,连接,服务器,通信等)与削减设备,但无法找到(扫描)附近的蓝牙设备编程.我希望你们的人会理解我的问题,并提供相应的帮助.
我想扫描未配对的蓝牙设备列表。

t3irkdon

t3irkdon1#

我得到了解决方案,这个问题是与设备以及仍然(问题很少)但代码是工作正常,现在为我的设备以及.有可能是在扫描一些设备延迟.即3设备扫描没有时间和其他一个或两个设备需要时间来扫描.一些时间广播接收机错过调用,这就是为什么时间得到一个结束.
以下是将返回蓝牙设备的广播接收器。

class FoundDeviceReceiver(
    private val onDeviceFound: (BluetoothDevice) -> Unit
): BroadcastReceiver() {

override fun onReceive(context: Context?, intent: Intent?) {
    when(intent?.action) {
        BluetoothDevice.ACTION_FOUND -> {
            val device = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
                intent.getParcelableExtra(
                    BluetoothDevice.EXTRA_DEVICE,
                    BluetoothDevice::class.java
                )
            } else {
                intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)
            }
            device?.let(onDeviceFound)
        }
    }
}

下面是注册广播接收器并开始发现的方法。我们还必须根据我们的要求取消注册广播接收器。

override fun startDiscovery() {
        if (!hasPermission(Manifest.permission.BLUETOOTH_SCAN)) {
            return
        }

    context.registerReceiver(
        foundDeviceReceiver, IntentFilter(BluetoothDevice.ACTION_FOUND)
    )

    bluetoothAdapter?.startDiscovery()
}

bluetoothAdapter?.startDiscovery()是内置方法,它将调用注册的广播接收器,我们将成功接收蓝牙设备。
如果有人仍然有问题,那么他可以发表评论,我将很乐意回应。

相关问题