Как да открием дали bluetooth устройството е извън обхват или сме го загубили?

За намерено bluetooth устройство получаваме Brodcast от Android с действие:

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

Когато настроим устройството да може да открива, това се случва.

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

В моя списъчен изглед показвам устройства, които са „НАМЕРЕНИ“. Мога да направя това с помощта на горния код. Но искам да премахна записа на устройството, което вече не е в обхват, вече не е откриваемо или е изключило bluetooth има ли някакво конкретно намерение, което платформата Android задейства?

Прегледах BluetoothDevice, BluetoothAdapter препратки APIs. Но не откри никакво полезно действие за излъчване.


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
@Strider, виждам, че това е единственият начин за сега. За повторно сканиране и сравняване на резултата с последното сканиране и премахване на записи, които са изчезнали при ново сканиране. Но това е скъпо.   -  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
трябва да действате в зависимост от състоянието, което получавате, за да управлявате устройствата си с приложения, но AFAIK, да, ще работи и във вашия случай с STATE_DISCONNECTING - person Jordi Castilla; 15.06.2015
comment
Здравейте, добавих филтър, както предложихте. Активирах програмата за отстраняване на грешки в точката на onReceive(Context context, Intent intent) { final String action = intent.getAction(); но не виждат задействано намерение, когато друго устройство е извън обхват, или е напуснато, или вече не е откриваемо. Възможен ли е този сценарий? Благодаря ти @Jordi Castilla. - person Prashant; 15.06.2015
comment
Това работи само ако се свързвате с устройството, а не ако просто наблюдавате излъчвания - person Tim; 11.02.2016
comment
Не мисля, че това е добър отговор. Цитиране на документация: Това намерение е полезно за приложения, които са загрижени само за това дали локалният адаптер е свързан към който и да е профил на всяко устройство и не са наистина загрижени за това кой профил. Така че, ако вашето устройство X е свързано с друго устройство Y и искате да проверите дали устройството Z е извън обхват, това намерение няма да има полза. - person LLL; 10.09.2019