Я пишу приложение для Android, в котором я хотел бы программно связать себя с обычным устройством BLE. У меня есть ручная привязка, в которой пользователь вводит PIN-код, используя стандартный диалог Bluetooth Bluetooth, но я не смог найти какую-либо информацию о том, как автоматически связывать устройство BLE программно, без вмешательства пользователя. Это возможно? Если да, то какой процесс?Программная привязка к устройству BLE на Android
ответ
Все, что вы можете сделать, чтобы избежать взаимодействия с пользователем, - это принудительное соединение Just Works. Чтобы сделать это, запрограммируйте периферийное устройство для приема сопряжения с возможностью ввода-вывода NoInputNoOutput.
Я смог выполнить эту работу САМОЕ ВРЕМЯ, зарегистрировав BroadcastReceiver для получения намерения BluetoothDevice.ACTION_BOND_STATE_CHANGED, а затем вызывая BluetoothDevice.setPin после получения сообщения BluetoothDevice.BOND_BONDING. Как и в случае с большинством вещей BLE в Android, это, похоже, действует несколько иначе, в зависимости от устройства и версии Android. К сожалению, я не могу заставить Android отказаться от намерения Bluetooth, поэтому экран ввода PIN-кода все еще появляется на секунду, пока соединение не будет завершено.
private final BroadcastReceiver mReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
final String action = intent.getAction();
Logger("Broadcast Receiver:" + action);
if (action.equals(BluetoothDevice.ACTION_BOND_STATE_CHANGED))
{
final int state = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR);
if(state == BluetoothDevice.BOND_BONDING)
{
Logger("Bonding...");
if (mDevice != null) {
mDevice.setPin(BONDING_CODE.getBytes());
Logger("Setting bonding code = " + BONDING_CODE);
}
}
else if(state == BluetoothDevice.BOND_BONDED)
{
Logger("Bonded!!!");
mOwner.unregisterReceiver(mReceiver);
}
else if(state == BluetoothDevice.BOND_NONE)
{
Logger("Not Bonded");
}
}
}
};
мне удалось это сделать - см мой ответ here.
TL: DR: забудьте о ACTION_BOND_STATE_CHANGED
; вам это не нужно. Вместо этого прослушивайте ACTION_PAIRING_REQUEST
и установите приоритет высокий. В приемнике вещания, когда вы получите ACTION_PAIRING_REQUEST
, позвоните setPin()
с вашим PIN-кодом, а затем abortBroadcast()
, чтобы предотвратить уведомление системы.
- 1. Android BLE, Не удается подключиться к устройству
- 2. Android BLE одновременное подключение нескольких приложений к одному устройству BLE
- 3. Автоподключение к известному устройству BLE
- 4. Подключение к сопряженному устройству BLE
- 5. Программная привязка к изменяющейся ViewModel
- 6. Подключитесь к устройству BLE после вытаскивания аккумулятора
- 7. Android BLE GATT_ERROR (133) при подключении к устройству
- 8. Подключение к периферийному устройству BLE без сервисов
- 9. Android BluetoothLEGatt BLE не остается подключенным к устройству
- 10. Как подключиться к определенному устройству BLE?
- 11. Подключиться к периферийному устройству BLE Windows 10
- 12. Невозможно повторно подключиться к устройству BLE после BluetoothGatt.disconnect() в android
- 13. Android подключается к устройству BLE из службы (начинается с загрузки)
- 14. Программная привязка данных
- 15. Программная привязка в Silverlight
- 16. Подключение к периферийному устройству BLE на Windows 10
- 17. Как подключиться к сопряженному устройству (BLE) без сканирования
- 18. WinForms программная привязка master-detail
- 19. Android 4.3 BLE
- 20. программная привязка WPF не работает
- 21. Ошибка при подключении к устройству BLE с использованием Gatttool
- 22. Как можно разрешить одному устройству iOS подключаться к микроконтроллеру BLE?
- 23. Как непрерывно получать RSSI без подключения к устройству BLE?
- 24. Почему приложение не подключается к устройству BLE при установке autoConnect на true в Android?
- 25. XCode: Как вы подключаетесь к периферийному устройству BLE через UUID?
- 26. iOS Как подключиться к устройству BLE в фоновом режиме?
- 27. Подключение к устройству BLE с использованием MAC ios
- 28. Автоматическое подключение к устройству BLE в приложении iOS
- 29. подключение Android к встроенному устройству
- 30. Привязка к сервису на Android
Оказывается, вы не хотите 'ACTION_BOND_STATE_CHANGE'. См. [Мой другой ответ] (http://stackoverflow.com/a/38241240/265521). – Timmmm