Как определить, находится ли Bluetooth-устройство вне зоны действия или мы его потеряли?

Для найденного bluetooth-устройства мы получаем Brodcast от Android с действием:

if (BluetoothDevice.ACTION_FOUND.equals(action)) {
    // New bluetooth device found    
}

Когда мы настраиваем устройство для обнаружения, это происходит.

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

В моем представлении списка я показываю устройства, которые «НАЙДЕНЫ». Я могу сделать это, используя приведенный выше код. Но я хочу удалить запись об устройстве, которое больше не находится в пределах досягаемости, больше не обнаруживается или отключило Bluetooth. Есть ли какое-либо конкретное намерение, которое запускает платформа Android?

Я просмотрел BluetoothDevice, BluetoothAdapter ссылки APIс. Но не нашел полезного действия по трансляции.


person Prashant    schedule 15.06.2015    source источник
comment
У меня тоже такая же проблема, и я все еще работаю над этим.   -  person Kartheek    schedule 15.06.2015
comment
Это должно помочь вам.   -  person Strider    schedule 15.06.2015
comment
@ Strider Я уже прошел через это. В моем случае это не сработало.   -  person Prashant    schedule 15.06.2015
comment
Вы не можете обнаружить, когда «найденное» устройство выключает Bluetooth или выходит за пределы досягаемости, если только вы не выполните повторное сканирование.   -  person Strider    schedule 15.06.2015
comment
@Страйдер, я вижу, что пока это единственный способ. Для повторного сканирования и сравнения результатов с последним сканированием и удаления записей, которые исчезли при новом сканировании. Но это дорого.   -  person Prashant    schedule 15.06.2015
comment
@pcj Да, но это кажется лучшим и единственным решением на данный момент.   -  person Strider    schedule 15.06.2015
comment
Спасибо всем @ Jordi Castilla, @ Strider, @Kartheek за ваши предложения.   -  person Prashant    schedule 15.06.2015


Ответы (1)


Вы ищете следующее намерение: BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED.

Намерение, используемое для трансляции изменения состояния подключения локального адаптера Bluetooth в профиль удаленного устройства.

Это намерение будет иметь 3 дополнения:

EXTRA_CONNECTION_STATE или EXTRA_PREVIOUS_CONNECTION_STATE может быть:

person Jordi Castilla    schedule 15.06.2015
comment
Спасибо за ответ. Что происходит? Я реализовал BluetoothDevice.ACTION_FOUND, какое устройство в пределах досягаемости включает Bluetooth и обнаруживается в моем списке. Но когда он отключен для обнаружения или Bluetooth, его следует удалить из списка, будет ли в этом случае работать вышеуказанное намерение? - person Prashant; 15.06.2015
comment
У меня уже есть это ACTION_CONNECTION_STATE_CHANGED, но оно не работает - person Kartheek; 15.06.2015
comment
вам нужно действовать в зависимости от состояния, которое вы получаете для управления устройствами вашего приложения, но, насколько я знаю, да, это также будет работать в вашем случае с STATE_DISCONNECTING - person Jordi Castilla; 15.06.2015
comment
Привет, я добавил фильтр, как вы предложили. Я включил отладчик в момент onReceive (контекст контекста, намерение намерения) { final String action = намерение.getAction(); но не вижу никакого намерения, срабатывающего, когда другое устройство находится вне зоны действия, оставлено или больше не обнаруживается. Возможен ли этот сценарий? Спасибо @Jordi Castilla. - person Prashant; 15.06.2015
comment
Это работает, только если вы подключаетесь к устройству, а не просто смотрите трансляции. - person Tim; 11.02.2016
comment
Я не думаю, что это хороший ответ. Цитата из документации: это намерение полезно для приложений, которые заботятся только о том, подключен ли локальный адаптер к какому-либо профилю любого устройства, и на самом деле не заботятся о том, к какому профилю. Поэтому, если ваше устройство X подключено к какому-то другому устройству Y, и вы хотите проверить, не находится ли устройство Z вне диапазона, это намерение не будет иметь смысла. - person LLL; 10.09.2019