Intereting Posts
Android: FloatingActionButton не может быть создан AdView, прикрепленный к нижней части, не позволяет мне видеть последний элемент в Recyclerview Где я должен писать временный файл? ClassCastException: java.lang.Object нельзя добавить в java.lang.String android Утечка памяти Android? ERROR get 'name' attribute: атрибут не является строковым значением Создайте PDFium на Android Соединение не выполнено: ECONNREFUSED Кнопка «ОК» в диалоговом окне «Создать новое виртуальное устройство Android (AVD)» ничего не делает Как использовать вкладки chrome custom под api 16? Ionic android build Error – Не удалось найти переменную окружения ANDROID_HOME Cordova APP – Можно ли показывать подачу камеры в контейнере? Что такое хорошая «активная установка» для бесплатного приложения для Android? Android Espresso: Подождите, пока активность закончится / запустится Может ли операция получать намерение неупорядоченного вещания (входящего вызова) до приемника по умолчанию системы?

Как обнаружить, что уже обнаруженное и сопряженное устройство доступно?

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

Теперь на BluetoothSocket.connect () могут возникнуть две проблемы:

  1. Удаленное устройство отключено или иным образом недоступно
  2. Удаленное устройство забыло о спаривании, поскольку оно может соединяться только с одним другим устройством и было сопряжено с другим телефоном

    => Затем соединение завершается с ошибкой после определенного таймаута.

Можно ли проверить, действительно ли уже подключенное устройство действительно доступно, и помнит, что оно было сопряжено с моим телефоном без подключения к нему? Это не связано с обнаружением подключения устройства. Сопряженный и видимый не совпадает с подключенным.

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

Другие способы заставить пользователя подтвердить их перед подключением или, возможно, использовать внешний канал TCP / IP или WiFi или NFC. Если ни одна из тех магических сил не будет единственной альтернативой. : -,)

  1. Помнить о подключенном устройстве на самом деле просто. После успешного связывания с устройством вы получите объект BluetoothDevice . Вы можете запросить уникальный адрес mac с getAddress() . Как только у вас есть адрес, сохраните его с общим предпочтением. Это касается «был ли он спарен» – в следующий раз, когда мы будем использовать BluetoothAdapter и получим список связанных устройств, мы можем искать среди них сохраненный адрес устройства.
  2. Теперь, когда мы знаем точный адрес устройства, как мы можем определить, действительно ли он «действительно доступен»? Ну, если вам достаточно попробовать открыть устройство ( startDiscovery () ), чтобы проверить, доступен ли он на уровне «обнаружить» – тогда вы знаете трюк (элемент списка 1). Если вы узнали, что устройство доступно для обнаружения, и вам нужно протестировать устройство для полного подключения, вам нужно будет открыть новый сокет и посмотреть, будет ли он плавным.

По моему опыту я отношусь к 3 различным возможностям BT-устройств:

  1. Устройство не связано
  2. Устройство привязано – но не подключено
  3. Устройство связано и связано

Вы можете получить уже соединенный список устройств и перекрестно проверить их с текущими устройствами для обнаружения. Таким образом, вы получите уже сопряженные устройства, находящиеся в режиме обнаружения.

Но для неоткрытых устройств обязательно вам нужно связаться с ними. Попробуйте создать соединение сокетов между ними, если данные успешно отправлены удаленным устройством.

Также вы можете использовать getBondState () удаленного устройства для проверки связанного состояния и зарегистрировать приемник ACTION_BOND_STATE_CHANGED для получения обратного вызова изменений состояния связи.