Используйте BroadcastReceiver
для получения широковещательной рассылки, когда устройство подключено, и SharedPreference
для сохранения значения, такого как логическое значение.
Это может быть код для Получателя:
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().contentEquals("android.bluetooth.device.action.ACL_CONNECTED")) {
//DO SOMETHING, like using a SharedPreference
} else {
if (intent.getAction().contentEquals("android.bluetooth.device.action.ACL_DISCONNECT")) {
//DO SOMETHING
}
}
Вы также должны запустить службу после подключения устройства, которая отслеживает, если Bluetooth выключен, а затем устанавливает для SharedPreference
значение false, поскольку вы не получите ACL_DISCONNECT
трансляцию.
Это может выглядеть так:
public class BTService extends Service {
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
IntentFilter filter2 = new IntentFilter();
filter2.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
registerReceiver(rec_bt_change, filter2);
}
private final BroadcastReceiver rec_bt_change = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1) == BluetoothAdapter.STATE_OFF) {
//SettingsClass.log_me(tag, "BT turned off, stopping");
//DO SOMETHING
stopSelf();
}
}
};
}