Android 将蓝牙从可恢复状态删除

Android 将蓝牙从可恢复状态删除,android,bluetooth,bluetooth-lowenergy,Android,Bluetooth,Bluetooth Lowenergy,我正在尝试在我的Android应用程序中以编程方式启用蓝牙 adapter = BluetoothAdapter.getDefaultAdapter(); if (!adapter.isEnabled()) { adapter.enable(); } 然而,有时(并不总是)我在控制台中收到以下消息:“BT处于BLE_ON状态”。考虑到我的关系不应该是不稳定的,我怎样才能摆脱它呢 有用信息:查看源代码,它似乎无法从API进行调整。有时,该服务(蓝牙服务)似乎会进入仅限BT LE的状态。更有趣

我正在尝试在我的Android应用程序中以编程方式启用蓝牙

adapter = BluetoothAdapter.getDefaultAdapter();
if (!adapter.isEnabled()) {
  adapter.enable();
}
然而,有时(并不总是)我在控制台中收到以下消息:“BT处于BLE_ON状态”。考虑到我的关系不应该是不稳定的,我怎样才能摆脱它呢


有用信息:

查看源代码,它似乎无法从API进行调整。有时,该服务(蓝牙服务)似乎会进入仅限BT LE的状态。更有趣的是,如果您查看API级别23上BluetoothAdapter.getState()的源代码,框架将此“内部状态”视为非公共状态。因此,可能这是一个先发生的过渡状态,可能几分钟后启用了非LE功能(没有关于这方面的文档,只是在黑暗中拍摄)

此外,如果您查看API 25及更高版本的源代码,方法enable不再检查状态,它只是一个异步传递给底层蓝牙服务。翻阅源代码,我发现了两种关于启用/禁用ABLE的方法,分别是enablable和disableBLE()

这种方法是公开的,但对外界是隐藏的。编写一些反射代码,在几行代码中调用这些方法并不困难,但我绝对建议使用另一种方法进行大量研究,并将其作为最后手段。之所以这样说,是因为enable()将尝试在设备上打开蓝牙服务,而用户不会明确知道发生了什么。这是一种潜在的危险方法,包含在公共蓝牙框架中,用于设置应用程序和小部件。我建议使用“安卓方式”通过系统请求来启用蓝牙。这也可能有助于解决您的问题