我的Android应用程序中经常出现getBluetoothService() called with no BluetoothManagerCallback
错误。
我不知道是什么导致了这个或任何关于蓝牙管理器回调。任何人都可以让我知道可能导致这个问题的原因或从哪里开始寻找。
答案 0 :(得分:35)
通过阅读Android源代码,似乎是一个警告,你无法做任何事情。源代码显示如果您调用
BluetoothSocket#connect();
然后它将调用
BluetoothAdapter.getDefaultAdapter().getBluetoothService(null);
这里的关键是它在上面的行中传递的null参数。因此,将不会有回调,然后BluetoothSocket类将发出警告。
由于这只是一个警告,我认为你不需要做任何事情。
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/bluetooth/BluetoothSocket.java第306行 https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/bluetooth/BluetoothAdapter.java第1610行
答案 1 :(得分:6)
当一次打开多个蓝牙套接字时,似乎会调用它。我通过确保我一次只打开1个套接字来解决这个问题。
答案 2 :(得分:2)
即使在我的申请被关闭后我也会收到此错误,我无法以任何可能的方式摆脱它。在这个开始发生之后,我需要硬重启我的手机,因为我甚至无法打开蓝牙。
现在(使用相同的代码)它只发生在我的一部手机上......也许这是驱动程序的问题。
答案 3 :(得分:0)
我收到带有BluetoothHeadset.STATE_CONNECTED状态的BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED后直接尝试BluetoothSocket.connect()后收到此消息。 BluetoothSocket.connect()也失败了。在尝试BluetoothSocket.connect()之前添加500ms的超时后,这解决了我实际连接的问题。消息“没有BluetoothManagerCallback调用的getBluetoothService()”仍然存在,但一切正常。
答案 4 :(得分:-1)
如果BluetoothServerSocket当前没有使用您尝试连接的相同UUID接受[bluetoothServerSocket.accept()],也会出现这种情况。
如果您确定接受服务器套接字,请仔细检查您是否提供了太短的超时(我之前已将其设置为200来检查某些内容,哎呀)。
答案 5 :(得分:-3)
调用getBluetoothService()时没有BluetoothManagerCallback
我也面临同样的问题。但我解决了。 在我的情况下,已经有一个套接字处于打开状态,我正在尝试打开另一个套接字。所以我们尝试一次打开多个套接字作为客户端。我觉得这就是原因