getbluetoothservice() вызывается без вызова bluetoothmanager

Я получаю getBluetoothService() called with no BluetoothManagerCallback как ошибка часто в моем приложении для Android.

Я понятия не имею, что вызывает это или что-нибудь о обратных вызовах менеджера Bluetooth. Может кто-нибудь дать мне хорошее представление о том, что может быть причиной этой проблемы или с чего начать поиск.

6 ответов

Читая исходный код Android, вы увидите предупреждение, с которым ничего не поделаешь. Исходный код показывает, что если вы звоните

BluetoothSocket#connect();

Потом позвонит

BluetoothAdapter.getDefaultAdapter().getBluetoothService(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

Похоже, что это вызывается, когда несколько разъемов Bluetooth открыты одновременно. Я исправил это, убедившись, что открывал только 1 сокет за раз.

Я получаю эту ошибку даже после того, как мое приложение было закрыто, и я не могу избавиться от него любым возможным способом. После того, как это начало происходить, мне нужно перезагрузить телефон, потому что я больше не могу даже включить Bluetooth.

Прямо сейчас (с тем же кодом) это происходит только на одном из моих телефонов.. возможно, это проблема драйверов.

Я получил это сообщение после попытки BluetoothSocket.connect() сразу после получения BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED с состоянием BluetoothHeadset.STATE_CONNECTED. BluetoothSocket.connect() также не удалось. После добавления времени ожидания 500 мс перед попыткой BluetoothSocket.connect() это решило мою проблему с фактическим подключением. Сообщение "getBluetoothService() вызывается без BluetoothManagerCallback" все еще остается, но все работает.

Это также происходит, если BluetoothServerSocket в настоящее время не принимает [bluetoothServerSocket.accept()] с тем же UUID, который вы пытаетесь подключить.

Если вы уверены, что принимаете с серверным сокетом, дважды проверьте, что вы не предоставили слишком короткий тайм-аут (я предварительно установил его на 200, чтобы что-то проверить, к сожалению).

getBluetoothService() вызывается без BluetoothManagerCallback

Я тоже сталкиваюсь с той же проблемой. Но я решил. В моем случае уже один сокет находится в открытом состоянии, и я пытаюсь открыть другой сокет. Поэтому мы пытаемся открыть более одного сокета одновременно как клиент. Я чувствовал, что это причина

Другие вопросы по тегам