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

显示连接的蓝牙设备Kotlin

鞠通
2023-03-14

我只能找到如何显示配对的蓝牙设备,而不是当前连接的蓝牙设备。这是显示配对的代码:

val blueToothManager=applicationContext.getSystemService(BLUETOOTH_SERVICE) as BluetoothManager
    val bluetoothAdapter=blueToothManager.adapter
    var pairedDevices = bluetoothAdapter.bondedDevices
    var data:StringBuffer = StringBuffer()
    for(device: BluetoothDevice in pairedDevices)
    {
        data.append(device.name + " ")
    }
    if(data.isEmpty())
    {
        bluetoothText.text = "0 Devices Connected"
        val leftDrawable: Drawable? = getDrawable(R.drawable.ic_bluetooth_disabled)
        val drawables: Array<Drawable> = bluetoothText.getCompoundDrawables()
        bluetoothText.setCompoundDrawablesWithIntrinsicBounds(
            leftDrawable, drawables[1],
            drawables[2], drawables[3]
        )
    }
    else
    {
        bluetoothText.text = data
        val leftDrawable: Drawable? = getDrawable(R.drawable.ic_bluetooth_connected)
        val drawables: Array<Drawable> = bluetoothText.getCompoundDrawables()
        bluetoothText.setCompoundDrawablesWithIntrinsicBounds(
            leftDrawable, drawables[1],
            drawables[2], drawables[3]
        )
    }

有人知道如何显示当前连接的蓝牙设备和未配对的设备吗?谢谢

共有2个答案

靳睿
2023-03-14

@穆罕默德·萨利赫,谢谢你,这很有效。我补充说:

private fun isConnected(device: BluetoothDevice): Boolean {
return try {
    val m: Method = device.javaClass.getMethod("isConnected")
    m.invoke(device) as Boolean
} catch (e: Exception) {
    throw IllegalStateException(e)
}

}

并改变了这一点:

for(device in pairedDevices)
    {
        if(isConnected((device)))
        data.append(" " + device.name + " ")
    }

现在显示的是已连接的蓝牙设备,而不是配对的设备!同样感谢另一个帖子中的@AbdallahAbusalah:Android蓝牙连接设备

寿翰飞
2023-03-14

我认为没有直接的方法来检查配对的蓝牙设备是否连接,因为它可以随时更改。。我建议的最佳解决方案是列出所有配对设备,并使用返回蓝牙状态的广播接收器更改列表中的指定设备,如以下链接中所述Android bluetooth get connected devices

 类似资料:
  • 连接设备 接口说明 用于连接 扫描出来的蓝牙设备。 参数说明 字段 类型 必须? 说明 device RKBLEDevice 是 蓝牙设备 示例代码 Swift: RokidMobileSDK.binder.connect(device: RKBLEDevice) Objc: [RokidMobileSDK.binder connect:device]; 断开设备 接口说明 用于断开已经连接的

  • 连接蓝牙设备 接口说明 接口需传入蓝牙名称(蓝牙address重启后会变) 参数说明 字段 类型 必须? 说明 name String 是 设备名称 举个大栗子 RokidMobileSDK.binder.connectBT(name, new IBTConnectCallBack() { @Override public void onConnectSucceed(BTDevic

  • 我如何获得Android所有已连接蓝牙设备的列表,而不考虑配置文件? 或者,我看到您可以通过BluetoothManager获取特定配置文件的所有连接设备。获取连接的设备。 我想我可以通过ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED监听连接/断开来查看哪些设备连接...似乎容易出错。 但我想知道是否有更简单的方法来获取所有已连接蓝牙设备的列表。

  • 连接和断开蓝牙设备在Windows Phone/Desktop 8.1上产生了各种结果。我一直在使用命名空间和我尝试连接具有不同蓝牙版本/类的几个设备。 版本1.2(1级和2级) 每当我尝试连接到2.0或2.1设备时,都会出现问题。第一次尝试连接到每个设备时,一切都会顺利,连接也会打开。当我随后关闭连接并重新连接设备时,问题就开始了。在重新连接期间,连接将永远不会打开,调试器将抛出一个系统。例外:

  • 问题内容: 如何在使用Java的android中显示蓝牙设备名称?有什么代码可供我参考吗? 问题答案: 下面的代码将为您提供蓝牙名称,类型为。

  • 我想连接第三方蓝牙设备到我的Android Wear手表(三星Gear Live)。我试图找到留档如何做到这一点,但我没有任何运气。所有的搜索,我似乎都认为我想连接到手机上。 有谁知道一个很好的例子来演示如何将蓝牙心率监视器(或其他设备)连接到Android Wear,以便我在手机不存在时保存历史记录?这可能吗?它是否与从手机/平板电脑上执行相同的协议?