ВАЖНЫЙ:
Это только краткий перечень ссылок, предоставленных STUCI выше. С тех пор он обновил свой ответ, и я не обновлял/редактировал это лето. Темы в моем резюме не являются пояснительными, а предназначены для справки и помощи в постановке конкретных вопросов.
Исходный пост...
Спасибо, Стуци! Что-то из этого было полезно: - что-то нет. Я подумал, что лучше всего собраться с мыслями и посмотреть, что было объяснено, а что нет.
(Я не могу опубликовать это в комментарии, извините)
ПОЖАЛУЙСТА, ЗВОНИТЕ МНЕ ПО ВСЕМ НЕПРАВИЛЬНЫМ УСЛОВИЯМ.
Видео Bluetooth LE
(Охватывает множество случайных вещей)
Хотя мне "не нравятся" видео с кодом: - Я посмотрел его, потому что его рекомендовали... и я рад, что сделал это. Хотя это и не очень помогло, оно познакомило меня с некоторыми понятиями, о которых я не знал. Поскольку я нацелен на старые устройства Android (v8+), функции LE не имеют значения.
- Отправка данных: [в зависимости от исходного набора функций] нет необходимости постоянно извлекать данные (например, с помощью датчика температуры), но некоторые устройства могут «отправлять» их на устройство при изменении. Кажется, используется концепция дизайна «реклама».
- UUID определяют услуги и/или характеристики подключенного устройства.
- Возможность записи конфигурации на подключенные устройства.
- Характеристики, которые кажутся просто «настройками», которые можно назначать через Bluetooth. Не уверен, что это (~ 19 минут) применимо к коннектоинам без gatt, но похоже на конечный автомат, который контролирует
- Рекламные объявления, которые кажутся «метаданными» относительно текущего состояния или конфигурации устройств (~ 24 минуты). Опять же, не уверен, что это относится даже к не LE Bluetooth.
Оставить соединения открытыми
Соединения Bluetooth действительно могут оставаться открытыми; начиная с точки, в которой был успешно вызван метод startActivityForResult(...). Две основные вещи влияют на то, нужно ли поддерживать открытое соединение:
- Understand the power consumption.
- Having the adapter active simply consumes additional power. If one can keep the adapter shut-off while it is not "absolutely-needed" will mearly save battery power.
- Accidental disconnects are managed.
- Other than leaving the connection continually connected, one could disconnect & reconnect regularly at specified intervals to ensure a connection is up.
- В потоках, используемых для ввода-вывода, можно было бы проверить отключение и повторное подключение (возможно, запустив новый поток).
Потоки ввода-вывода для соединения
Одно соединение действительно может «иметь» одновременные потоки ввода и вывода. я
Поскольку это было предложено, я перечитал Android-руководство по Bluetooth и в разделе «управление соединением» (речь об одном сокете) я заметил это...
- Получите InputStream и OutputStream, которые обрабатывают передачу через сокет, через getInputStream() и getOutputStream() соответственно.
- Чтение и запись данных в потоки с помощью read(byte[]) и write(byte[]).
... но продолжает, отмечая, что чтение и запись блокируют друг друга. Кое-что, что мне еще нужно изучить. Похоже, вы не можете одновременно выполнять ввод-вывод на одном и том же сокете???
Максимальное количество подключений
Я также изучил проблему с максимальным подключением, добавленную Стуци, и не нашел документации на стороне Android. Может и есть, не могу найти. Тем не менее, большинство людей, похоже, согласны с тем, что существует ограничение (которое может составлять всего 4), налагаемое любым оборудованием, для которого вы кодируете. Некоторые важные ссылки: - Сколько устройств мы можем подключиться через Bluetooth BLE к Android? - Сколько максимальное количество устройств мы можем подключить через Bluetooth к устройству Android одновременно? - https://groups.google.com/forum/#!topic/android-developers/adeBD275u30
person
Kevin J.
schedule
24.03.2015