Android蓝牙连接设备

Android蓝牙连接设备,android,bluetooth,android-bluetooth,bluetooth-profile,Android,Bluetooth,Android Bluetooth,Bluetooth Profile,我如何获得Android所有已连接蓝牙设备的列表,而不考虑配置文件 或者,我发现您可以通过获取特定配置文件的所有连接设备 我想我可以通过监听连接/断开连接来查看哪些设备是连接的,/…似乎容易出错 但我想知道是否有更简单的方法来获取所有已连接蓝牙设备的列表。要查看完整列表,这是一个两步操作: 获取当前配对设备的列表 扫描或发现范围内的所有其他对象 要获取当前配对设备的列表并进行迭代,请执行以下操作: Set<BluetoothDevice> pairedDevices = Blueto

我如何获得Android所有已连接蓝牙设备的列表,而不考虑配置文件

或者,我发现您可以通过获取特定配置文件的所有连接设备

我想我可以通过监听连接/断开连接来查看哪些设备是连接的,/…似乎容易出错


但我想知道是否有更简单的方法来获取所有已连接蓝牙设备的列表。

要查看完整列表,这是一个两步操作:

  • 获取当前配对设备的列表
  • 扫描或发现范围内的所有其他对象
  • 要获取当前配对设备的列表并进行迭代,请执行以下操作:

    Set<BluetoothDevice> pairedDevices = BluetoothAdapter.getDefaultAdapter().getBondedDevices();
    if (pairedDevices.size() > 0) {
        for (BluetoothDevice d: pairedDevices) {
            String deviceName = d.getName();
            String macAddress = d.getAddress();
            Log.i(LOGTAG, "paired device: " + deviceName + " at " + macAddress);
            // do what you need/want this these list items
        }
    }
    
    现在只剩下告诉BluetoothAdapter开始扫描:

    BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();
    // if already scanning ... cancel
    if (btAdapter.isDiscovering()) {
        btAdapter.cancelDiscovery();
    }
    
    btAdapter.startDiscovery();
    
    这就是“连接”设备的方式,而不仅仅是配对设备。不需要进一步检查它的状态

    val btManager = view.getSystemService(BLUETOOTH_SERVICE) as BluetoothManager
    val connectedDevices = btManager.getConnectedDevices(GATT)
    

    你是对的,只听acl连接/断开连接是有问题的,因为它可能发生在你的应用程序不运行或听广播的时候。你找到了解决方案@Steven WexierI找到了一个解决方案,它在android 10上工作。如果投反对票的读者花时间评论它是什么,这将是最有帮助的他们不喜欢。上面的代码正是我为实现OP的目标所做的。。。至少对我来说,它看起来像预期的那样工作。你不需要配对蓝牙低能设备来连接它。和“getBondedDevices()”不会返回已连接的设备。因此,您的代码并没有真正执行要求的操作。仅供参考,这些代码仅适用于蓝牙经典设备。它们不适用于可编程设备。它可以获取配对设备的列表,但我不知道哪一个已连接我们可以只获取当前已连接蓝牙的设备名称吗?
    val btManager = view.getSystemService(BLUETOOTH_SERVICE) as BluetoothManager
    val connectedDevices = btManager.getConnectedDevices(GATT)