Обнаружение, когда Bluetooth моего устройства отключен - PullRequest
0 голосов
/ 21 мая 2018

В моем приложении я пытаюсь реагировать на ситуацию, когда Bluetooth (BT) моего устройства отключен.ACTION_BOND_STATE_CHANGED (отметьте этот и этот ответы), тем не менее, кажется, сообщается, когда другое устройство, подключенное к моему телефону, отключено или выключено, по крайней мере, в моем случае.Если я регистрирую ACTION_ACL_DISCONNECTED и затем выключаю мои устройства BT, то вызывается onReceive ().

init {
    fetchDevices()

    val mBTPairedReceiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            val action = intent.action
            val device = intent.getParcelableExtra<Parcelable>(BluetoothDevice.EXTRA_DEVICE)
            val previousStates = intent.getIntExtra(BluetoothDevice.EXTRA_PREVIOUS_BOND_STATE, BluetoothAdapter.ERROR)
            val states = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothAdapter.ERROR)

            when (action) {
                BluetoothDevice.ACTION_FOUND -> if (device != null) {
                    fetchDevices()
                    deviceListener?.let { it(devices) }
                }
                BluetoothDevice.ACTION_BOND_STATE_CHANGED -> {

                    when (states) {
                        BluetoothAdapter.STATE_TURNING_OFF -> {
                            Log.d("MESSAGE", "BT is turning OFF")
                        }
                        BluetoothAdapter.STATE_ON -> Log.d("MESSAGE", "BT is ON now")

                    }
                }
            }

        }
    }


    application.registerReceiver(mBTPairedReceiver, IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED))

}

Я хочу получить информацию о том, будет ли BT отключен / отключен на моем устройстве, чтобы я мог отправить окончательное сообщение на другое устройство, к которому я подключен, перед тем, как потерять соединение.

1 Ответ

0 голосов
/ 21 мая 2018

Пользователь BroadCast Receiver

private final BroadcastReceiver btReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(btAdapter.ACTION_STATE_CHANGED)) {
                final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, btAdapter.ERROR);
                switch(state){
                    case BluetoothAdapter.STATE_OFF:
                        Log.d(TAG, "btReceiver: STATE OFF");
                        break;
                    case BluetoothAdapter.STATE_TURNING_OFF:
                        Log.d(TAG, "btReceiver: STATE TURNING OFF");
                        break;
                    case BluetoothAdapter.STATE_ON:
                        Log.d(TAG, "btReceiver: STATE ON");
                        break;
                    case BluetoothAdapter.STATE_TURNING_ON:
                        Log.d(TAG, "btReceiver: STATE TURNING ON");
                        break;
                }
            }
        }
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...