Программа на андроид включения и отключения bluetooth
Название Bluetooth происходит от скандинавской технологии. Он был назван в честь датского короля Харальда Bluetooth. Сегодня в нашей повседневной жизни, мы окружены различными мультимедийными устройствами, такими как смартфоны, КПК, ноутбуки, плееры, видео игровых систем и других портативных устройств. Все или большинство из них имеет технологию Bluetooth, встроенную в них.
- Часть 1: Что же такое Bluetooth
- Часть 2: менеджер Топ 5 Android Bluetooth для установления соединения Bluetooth Faster
- Часть 3: Преимущества и недостатки технологии Bluetooth
- Часть 4: Как Сопряжение и Подключите Android Mobile через Bluetooth
- Часть 5: Что вы можете сделать с Bluetooth в Android устройств
- Часть 6: Пять Общие проблемы с Android Bluetooth и их решения
- Часть 7: Как управлять Android Bluetooth Manager приложения
Часть 1: Что же такое Bluetooth
Bluetooth является беспроводной технологией, используемой для передачи данных между различными портативными и непереносимыми электронными и мультимедийными устройствами. С помощью этой технологии мы можем послать и надежно и быстро получать файлы. Расстояние передачи данных в Bluetooth является небольшим, как правило, сроком до 30 футов или 10 метров, по сравнению с другими режимами беспроводной связи. Тем не менее, эта технология искореняет использование шнуров, кабелей, адаптеров и других управляемых средств массовой информации и позволяет электронные устройства для беспроводного общения друг с другом.
Часть 2: менеджер Топ 5 Android Bluetooth для установления соединения Bluetooth Faster
1. Bluetooth Auto Connect
Это одна из очень немногих менеджеров Android Bluetooth, которые действительно работают должным образом. Он автоматически подключается к Android устройства Bluetooth, когда включается или когда экран Android устройства продолжается. Сначала вам придется подключить Android устройство вручную в первый раз, и с этого момента он будет автоматически распознавать ваш Android устройства. Вы можете подключить несколько устройств Bluetooth в одно время, отдавая предпочтение устройствам. Но иногда это просто не может обнаружить ваш Android устройства или автоматического Bluetooth признака не работает на некоторых мобильных телефонах.
2. Btoolkit Bluetooth Manager
Btoolkit менеджер Bluetooth автоматически сканирует Android устройство и присоединяет один Android устройства с одним из ваших контактов, так что вы можете легко получить доступ к ним. Вы можете сортировать, фильтровать список устройств Android и даже поделиться любимыми фотографиями или музыкой с вашими контактами. Тем не менее, он имеет некоторые проблемы с Android версии 4.1+, поскольку он не может спариваться с PIN-менее устройств.
3. Авто Bluetooth
Это Android менеджер Bluetooth автоматически подключается к выбранному устройству после приема вызова и, как только заканчивается вызов. Он отключает Bluetooth снова, чтобы сохранить власть. Это приложение является полезным, если вы ведете машину, потому что вы можете принимать входящие вызовы, не останавливаясь. Он также улучшает вашу жизнь батареи чрезвычайно.
4. Менеджер Bluetooth ICS
Если вы любитель музыки, это менеджер Bluetooth для Android разработан для вас. Это простой инструмент для управления удаленных устройств Android и воспроизводить музыку с помощью беспроводной гарнитуры или беспроводных колонок. Просто подключите Android устройство через Bluetooth Manager ICS и включить / выключить аудио функции флажка. Тем не менее, есть два негативных моментов: во-первых, это не поток аудио должным образом, и есть задержка иногда; во-вторых, вы должны платить за это приложение.
5. Bluetooth по вызову
Это Bluetooth на приложение вызова автоматически включается Bluetooth, когда вы находитесь на телефонный звонок. И позже, когда вы завершение вызова он переходит в режим энергосбережения. Когда вы пытаетесь использовать голосовые исходящие вызовы, он не включается Bluetooth на. Кроме того, он не выключается Bluetooth, когда устройство полностью заряжено.
Часть 3: Преимущества и недостатки технологии Bluetooth
преимущества | Недостатки |
---|---|
1. Не требует прямой видимости между синхронизированными устройствами | 1. Скорость передачи (до 1 Мбит) медленно по сравнению с другими беспроводными технологиями. (до 4 Мбит) |
2. не требует никаких кабелей и проводов | 2. Менее безопасными, чем другие беспроводные технологии |
3. Требовать малую мощность | 3. Не совместим со всеми мультимедийными устройствами |
4. Простой и безопасный в использовании | |
5. Отсутствие помех | |
6. Прочные |
Часть 4: Как Сопряжение и Подключите Android Mobile через Bluetooth?
Android, наконец, присоединился к компании Apple, Microsoft и Blackberry в Bluetooth смарт-Ready революции. Это означает, что Android-устройства с питанием, такие как таблетки, смартфоны теперь устройства Bluetooth Smart Ready работает последняя ОС и будет совместим с любым включенным Bluetooth продукта, как клавиатура или наушники.
Шаг 1. - Перейдите в Настройки , затем Wireless & Networks , затем Настройки Bluetooth .
Шаг 2. - Включите Bluetooth и убедитесь , что ваше устройство видимым для всех других устройств.
Шаг 3. - поиск устройства в паре.
Шаг 4. - Нажмите на имя устройства , которое вы хотите подключиться из списка доступных устройств и введите код доступа (или просто совпадают в большинстве случаев) и нажмите кнопку Pair .
Шаг 5 - Вы увидите устройство спаренного в сдвоенном списке устройств.
Часть 5: Что вы можете сделать с Bluetooth в Android устройств
С помощью Bluetooth в нашем Android устройств мы можем:
- Отправлять и получать данные из других поддерживающих Bluetooth устройств.
- Воспроизведение музыки и звонков на нашей беспроводной Bluetooth гарнитуре.
- Соедините все наши периферийные устройства, такие как компьютер, принтер, сканер и т.д.
- Синхронизация данных между различными мультимедийными устройствами, такими как таблетки, ПК и т.д.
Часть 6: Пять Общие проблемы с Android Bluetooth и их решения
Q1. Я не могу сопряжение Android Bluetooth с другими устройствами. Он получает не удалось каждый раз. То, что я должен do?
Решение:
Q2. Я не могу передавать файлы с устройства на другое. То, что я должен do?
Решение:
1): Очистить все данные и кэш , связанные с любым приложением Bluetooth.
Шаг 1. Перейдите в Настройки
Шаг 2. Выберите Apps вариант.
Шаг 3. Выбрать все вкладки
Шаг 4. Теперь найдите и нажмите на приложение Bluetooth.
Шаг 5. Выберите четкие данные, очистить кэш и силы близки соответственно.
2): Выберите четкие данные, очистить кэш и силы близки соответственно.
Для сброса, вы можете следовать инструкциям ниже.
Шаг 1. Перейдите в Настройки .
Шаг 2. Выберите резервную копию и восстановить функцию.
Шаг 3. Теперь нажмите на сброс заводских данных в нижней части.
Шаг 4. После того, как через несколько минут ваш телефон будет перезагружен и сброс.
Q3. Я не могу подключить Bluetooth моего телефона с автомобилем. То, что я должен do?
Решение:
- Удалить все ваши Bluetooth профили из телефона, а также из автомобиля.
- Питание устройства и снова включите его. Мягкая перезагрузка иногда может решить проблему. Самый простой способ сделать это, перейдя в и из режима самолета.
- Убедитесь, что ваш телефон доступен для всех устройств, для того, чтобы быть обнаружен автомобилем.
Q4. Я попытался подключения мой Bluetooth-гарнитура или внешние динамики на мой телефон, но я не могу слышать звук. То, что я должен do?
Решение:
- Перезапустите свой мобильный телефон с гарнитурой или внешние динамики подключены.
- Сброс мобильного телефона: Выполните описанные выше шаги, как сбросить настройки телефона.
- Удалите SD-карту и вставьте ее. Это иногда помогает, потому что ваша карта SD может мешать.
- Если у вас есть SanDisk SD карту, заменить ее другой марки: SanDisk марки SD карты имеют некоторые проблемы с Samsung Galaxy мобильных телефонов. Так что, если вы используете карту памяти SanDisk, замените ее на другую карту памяти бренда, и это должно решить проблему.
Q5. Мой Bluetooth не работает после обновления моего телефона Android. То, что я должен do?
Решение:
- Попробуйте распаривания и ремонт устройство, которое вы хотите подключиться.
- Использование OTA (Over воздуха) обновление и сброс телефона позже. Ошибки, как это, как правило, фиксируется с помощью этого метода.
Часть 7: Как управлять Android Bluetooth Manager приложения
Может быть, вы обнаружили, что этот Bluetooth помощи приложения имеет свои собственные преимущества. Это хорошая идея, чтобы загрузить несколько таких приложений, в случае, вам нужен конкретный один.
Но это скучно, чтобы загрузить и установить их один за другим. Кроме того, легко забыть, какой из них вы установили. И вы можете быть также интересно, как не удалить их сразу, если больше не нуждающихся в них.
Новые темы необходимо создавать только в корневом разделе! В дальнейшем они будут обработаны модераторами.
AutoBluetooth PRO
версия: 2.6.3
Последнее обновление программы в шапке: 26.02.2014
Краткое описание:
Автоматизация включения/отключения протокола Bluetooth на вашем андроид устройстве в зависимости от заданных вами правил.
Описание:
Автоматизация включения/отключения протокола Bluetooth на вашем андроид устройстве в зависимости от заданных вами правил. Таймер позволяет задать интервал времени в определенные дни недели, в которых будет применяться это правило. При выполнении правила, Bluetooth активируется в одном из двух режимов: непрерывном или дискретном. В непрерывном режиме Bluetooth активен в течение интервала времени, заданным правилом. В дискретном режиме Bluetooth включается через заданные промежутки времени, пока не истечет срок действия правила или пока устройство неподключится к аксессуару.
Требуется Android: 2.2 и выше
Русский интерфейс: Неизвестно
Слово «Bluetooth» происходит от скандинавского эпитета от короля X века Харальда Bluetooth, который объединил несогласные датские племена в единое королевство. В настоящее время электронные устройства, такие как смартфоны, ноутбуки, MP3-плееры, КПК, плееры для видеоигр и планшеты, есть повсюду вокруг нас. А Bluetooth - это незаменимый метод в большинстве устройств.
Часть 1. Определение Bluetooth
Bluetooth - это стандарт беспроводной технологии для обмена данными на небольших расстояниях от стационарных или мобильных устройств. Техника позволяет нам отправлять и получать данные безопасно и быстро. По сравнению с другими методами беспроводной связи Bluetooth доступен только на небольшом расстоянии, обычно на высоте до десяти метров или 30 футов. Но преимущество вполне очевидно с другой стороны. Вы можете избавиться от раздражающих управляемых носителей, таких как кабели, шнуры, адаптеры. Поэтому связь между устройствами является беспроводной и удобной.
Часть 2. Плюсы и минусы Bluetooth
Плюсы:
- Вам не нужно располагать два устройства рядом друг с другом.
- Никакие шнуры или кабели не требуются
- Нужен только низкий заряд батареи
- Безопасный и удобный в обращении
- Не легко вмешиваться
- Устойчивый и мощный
Минусы:
- Скорость передачи ниже (максимум 1 Мбит / с) по сравнению с другими беспроводными технологиями (максимум 4 Мбит / с).
- Не безопаснее, чем любая другая беспроводная техника.
- Не работает идеально со всеми видами устройств.
Кроме того, для людей, которые сталкиваются с проблемой Bluetooth не работает Android, нажмите, чтобы узнать больше.
Часть 3: Шаги очистки и подключения устройства Android с Bluetooth
Следуя указаниям Apple, Microsoft и Blackberry, Android наконец-то входит в сообщество Bluetooth Smart Ready. Устройства Android, такие как смартфоны и планшеты, теперь официально становятся устройствами Bluetooth Smart Ready и будут хорошо работать с любыми другими устройствами, поддерживающими Bluetooth, такими как наушники и клавиатуры.
Шаг 1. Откройте «Настройки» телефона, нажмите «Беспроводные сети», затем откройте «Настройки Bluetooth».
Шаг 2. Включите кнопку Bluetooth и убедитесь, что ваше устройство видно другим устройствам.
Шаг 3. Начните находить устройство, с которым хотите соединиться.
Шаг 4. Выберите устройство, к которому вы хотите подключиться, из отображаемого списка и при необходимости введите пароль (или просто подключите устройство без ключа в некоторых случаях). Затем нажмите «Пара».
Шаг 5. Процесс сопряжения осуществляется путем отображения в списке сопряженных устройств.
Часть 4. Особенности устройств Android с технологией Bluetooth
Если ваше устройство Android оснащено Bluetooth, вы можете выполнять следующие действия:
- 1. Отправляйте и получайте файлы с других устройств, поддерживающих Bluetooth.
- 2. Гарнитура с Bluetooth позволяет воспроизводить музыку и напрямую звонить по телефону.
- 3. Соедините устройства, такие как принтер, сканер и компьютеры, вместе.
- 4. Синхронизируйте файлы между устройствами, такими как компьютеры, планшеты и так далее.
Кроме того, если вы ищете Лучший адаптер Bluetooth 5.0 для игр на ПК, этот список вам следует проверить.
Часть 5: Наиболее часто задаваемые вопросы об Android Bluetooth и соответствующие ответы.
Q1. Мне не удалось подключить устройство Android к другим устройствам через Bluetooth все время. Что я могу сделать, чтобы сделать это правильно?
Решение:
- 1. Выключите устройство и включите его позже. Простой сброс может решить эту проблему иногда. Вы можете включить режим полета и затем выключить его, чтобы попробовать.
- 2. Вы можете нажать на устройство и нажать «Отключить», чтобы очистить список устройств и попытаться выполнить поиск сопряженных устройств еще раз.
- 3. Если у вашего компьютера такая же проблема, вы можете загрузить новый драйвер, подходящий для вашего компьютера.
- 4. Проверьте два устройства, чтобы они были расположены достаточно близко друг к другу.
Q2. Я не могу передать данные между двумя устройствами. Любое решение для решения проблемы?
Решение: Сотрите все данные и кеш приложения Bluetooth.
Для сброса вы можете следовать инструкциям ниже.
Q3. Bluetooth моего телефона не может быть успешно подключен к машине. Что я могу сделать?
Решение:
- 1. Сотрите все данные Bluetooth с вашего телефона и автомобиля
- 2. Выключите устройство и затем включите его снова. Иногда простой сброс решит проблему. Один из способов сделать это - открыть и выключить режим полета.
- 3. Убедитесь, что ваш телефон может быть обнаружен всеми другими устройствами, чтобы его мог обнаружить ваш автомобиль.
Q4. Я не слышу звук от гарнитуры Bluetooth или внешнего динамика после подключения их к телефону. Есть ли решение для решения этой проблемы?
Решение:
- 1. Подключите гарнитуру или динамик к телефону и перезагрузите телефон
- 2. Следуйте инструкциям выше, чтобы перезагрузить телефон.
- 3. Извлеките SD-карту из телефона и вставьте ее обратно. Это может быть полезно, потому что SD-карта может быть помехой.
- 4. Замените SD-карту SanDisk другими брендами. Бренд SanDisk не очень хорошо работает с мобильными телефонами Samsung Galaxy. Таким образом, замена кажется хорошим решением, если вы используете карту памяти SanDisk.
Q5. Я обнаружил, что мой Bluetooth не работает должным образом после обновления телефона Android. Что я могу с этим поделать?
Решение:
- 1. Попробуйте отключить устройство, а затем снова подключите устройство.
- 2. Перезагрузите телефон после использования OTA обновления. Вы можете быть в состоянии решить проблему.
Часть 6. Лучшие 5 приложений Bluetooth Manager для Android для оптимизации соединения Bluetooth
1. Bluetooth Auto Connect
На рынке не хватает Android Bluetooth менеджеров. Тем не менее, Bluetooth Auto Connect является одним из немногих менеджеров, которые работают функционально. Когда переключатель Bluetooth включен или экран вашего Android-устройства включается, приложение немедленно подключится к вашему устройству. Но вы должны установить соединение самостоятельно, и приложение автоматически запомнит ваше устройство. Вы можете подключить несколько устройств Bluetooth за один раз, назначив им приоритет. Иногда возникают непредвиденные ситуации. Приложение может не распознать ваше устройство Android, или Bluetooth не работает на некоторых устройствах.
2. Btoolkit Bluetooth Manager
Это приложение может автоматически определять ваше устройство Android и связывать одно устройство Android с одним контактом, чтобы вы могли легко получить к ним доступ.
Вы можете классифицировать список устройств и делиться фотографиями и музыкой, которые вам нравятся, с вашими контактами. Но когда ваше устройство Android работает на версии 4.1 +, у вас могут возникнуть проблемы с подключением к устройствам без PIN-кода.
3. Авто Bluetooth
Когда вы звоните, этот менеджер Bluetooth автоматически подключится к вашему устройству. После завершения вызова Bluetooth будет отключен для экономии энергии. Приложение очень полезно, когда вы за рулем, потому что вам не нужно останавливать машину, чтобы получить звонки. Это также может увеличить время работы от батареи.
4. Bluetooth Manager ICS
Если вы большой поклонник музыки, это приложение является идеальным выбором для вас. Это удобное приложение, которое позволяет удаленно управлять устройством Android и воспроизводить музыку через беспроводную гарнитуру и динамики. Все, что вам нужно сделать, это подключить устройство через Bluetooth Manager ICS и заставить работать звуковой флажок. Несмотря на сильные стороны, у приложения все еще есть некоторые недостатки. Приложение не может свободно передавать данные, и иногда может быть задержка. И приложение не может свободно использовать.
5. Bluetooth на вызов
Это приложение включит Bluetooth, когда вы делаете телефонные звонки, и переключитесь в режим энергосбережения, когда вы отключите вызов. Но Bluetooth не будет открыт, когда вы используете голосовые вызовы. Кроме того, Bluetooth не будет отключен после полной зарядки устройства.
PS: вот несколько профессиональных приложений, которые вы можете попробовать: Приложения для отслеживания телефона GPS, WhatsApp Recovery для Android.
Часть 7: Использование dr.fone Android Phone Manager для управления приложениями Bluetooth Manager для Android.
dr.fone Диспетчер телефона Android это универсальный сторонний инструмент для простого управления приложениями Android Bluetooth Manager.
- 1. Загрузите и установите любой Android Bluetooth менеджер из магазина Google Play.
- 2. Импортируйте и установите несколько менеджеров Bluetooth для Android с ПК
- 3. Экспортируйте нужные приложения управления Bluetooth на ПК
- 4. Поделитесь своим любимым менеджером Bluetooth для Android через Facebook, Twitter или SMS.
- 5. Переместите приложения Android Bluetooth Manager на SD-карту.
- 6. Совместим с более чем 3000 Android телефонов и планшетов.
Примечание: dr.fone Пользователи версии Phone Manager для Android Mac не могут войти в магазин Google Play, перенести приложения на SD-карту и поделиться ими с другими.
Как установить и удалить, экспортировать и поделиться своим Bluetooth Manager для приложений Android с dr.fone
- Запустите dr.fone - Диспетчер телефона (Android) на вашем компьютере после загрузки и установки. Вы увидите главное окно программы на экране.
- Нажмите «Приложения», чтобы попасть на страницу, где показаны все установленные приложения. Вы можете устанавливать новые приложения, удалять ненужные приложения, передавать и делиться своими приложениями с другими.
Не все знают, насколько может быть полезным использование Bluetooth соединения. В статье собраны лучшие приложения для телефонов на ОС андроид, поддерживающих Bluetooth, которые позволят пользователем расширить функционал своих устройств или облегчить их эксплуатацию. Играйте через блютуз с друзьями, передавайте файлы, общайтесь или контролируйте свои беспроводные гаджеты.
Контроллер BT
Это приложение превратит ваш андроид смартфон в контроллер для игры с помощью эмуляторов. Важной особенностью является полная свобода при настройке джойстика и кнопок, а также возможность объединить до четырех человек в одной игре через блютуз.
Управлять эмулятором через андроид телефон можно на планшете, ноутбуке или даже телевизоре со Smart TV. Приложение использует беспроводные блютуз и Wi-Fi соединения, что делает его универсальным для любителей приставочных игр. Достаточно установить его на устройство, с которого вы будете управлять игрой, и на устройство с эмулятором, соединить их во вкладке «Create Host».
Bluetooth Pair
Отличное приложение для автоматизации процесса подключения двух устройств на андроид через беспроводное блютуз соединение. Это очень удобно пользователям, которые имеют в своем распоряжении большое количество сторонних гаджетов. Например, это могут быть аудиоколонки, гарнитуры, автомобильные динамики или умные часы.
Вместо того, чтобы тратить время на подключение каждого устройства к вашему телефону на андроид, вы можете автоматизировать их с помощью Блютуз Pair и сэкономить свое время. Среди особенностей этого приложения можно отметить безупречную работу с операционными системами Андроид, начиная с шестой версии, обширные настройки, несколько дизайнов заглавной темы и простую навигацию.
BlueBatt
Контролируйте заряд батареи своих беспроводных устройств и получайте о них максимально подробную информацию о состоянии соединения блютуз благодаря андроид приложению BlueBatt. В приложении пользователи также найдут некоторые дополнительные бесплатные функции, которые обеспечат еще более комфортное использование своих гаджетов:
- Отображение значка уведомлений при подключении устройства через блютуз. В нем будет указана информация об уровне заряда батареи.
- Специальные голосовые подсказки, которые будут предупреждать о плохом соединении блютуз или низком уровне батарейки.
- Отдельный удобный виджет, размещаемый на главном экране телефона на андроид. Благодаря виджету следить за своими устройствами намного проще: вы сразу заметите, если какой-то из нескольких гаджетов требует подзарядки.
LightBlue
Удобное приложения для пользователей Андроид, использующих устройства с Блютуз Low Energy (BLE) соединениями. С этим приложением можно сканировать, подключаться и просматривать информацию о находящихся рядом гаджетах с Блютуз Low Energy соединением.
В режиме реального времени также возможно просматривать уровень и состояние сигнала, что позволяет определить, насколько вы близко находитесь к гаджету – это особенно удобно во время поиска потерявшихся устройств.
Все действия в андроид приложении можно отследить в специальном журнале, туда автоматически заносятся данные о подключенных ранее устройствах через блютуз, чтении информации или обнаружении новых гаджетов.
Bluetooth виджет
Подключайте любимые колонки или наушники одним нажатием на экран через блютуз. Для этого достаточно установить виджет и занести в его память обнаруженное устройство.
Содержание
В предыдущей статье мы подробно рассмотрели сканирование устройств. Эта статья - о подключении, отключении и обнаружении сервисов (discovering services).
Подключение к устройству
После удачного сканирования, вы должны подключиться к устройству, вызывая метод connectGatt() . В результате мы получаем объект – BluetoothGatt , который будет использоваться для всех GATT операций, такие как чтение и запись характеристик. Однако будьте внимательны, есть две версии метода connectGatt() . Поздние версии Android имеют еще несколько вариантов, но нам нужна совместимость с Android-6 поэтому мы рассматриваем только эти две:
Внутренняя реализация первой версии – это фактически вызов второй версии с аргументом transport = TRANSPORT_AUTO . Для подключения BLE устройств такой вариант не подходит. TRANSPORT_AUTO используется для устройств с поддержкой и BLE и классического Bluetooth протоколов. Это значит, что Android будет сам выбирать протокол подключения. Этот момент практически нигде не описан и может привести к непредсказуемым результатам, много людей сталкивались с такой проблемой. Вот почему вы должны использовать вторую версию connectGatt() с transport = TRANSPORT_LE :
Первый аргумент – context приложения. Второй аргумент – флаг autoconnect , говорит подключаться немедленно ( false ) или нет ( true ). При немедленном подключении ( false ) Android будет пытаться соединиться в течение 30 секунд (на большинстве смартфонов), по истечении этого времени придет статус соединения status_code = 133 . Это не официальная ошибка для таймаута соединения. В исходниках Android код фигурирует как GATT_ERROR . К сожалению, эта ошибка появляется и в других случаях. Имейте ввиду, с autoconnect = false Android делает соединение только с одним устройством в одно и то же время (это значит если у вас несколько устройств - подключайте их последовательно, а не паралелльно). Третий аргумент – функция обратного вызова BluetoothGattCallback (callback) для конкретного устройства. Этот колбек используется для всех связанных с устройством операциях, такие как чтение и запись. Мы рассмотрим это более детально в следующей статье.
Autoconnect = true
Если вы установите autoconnect = true , Android будет подключаться самостоятельно к устройству всякий раз, когда оно будет обнаружено. Внутри это работает так: Bluetooth стек сканирует сохраненные устройства и когда увидит одно из них – подключается к нему. Это довольно удобно, если вы хотите подключиться к конкретному устройству, когда оно становится доступным. Фактически, это предпочтительный способ для переподключения. Вы просто создаете BluetoothDevice объект и вызываете connectGatt с autoconnect = true .
Обратите внимание, этот подход работает только, если устройство есть в Bluetooth кеше или устройство было уже сопряжено (bonding). Посмотрите мою предыдущую статью, где подробно объясняется работа с Bluetooth кешем. При перезагрузке смартфона или выключении/включении Bluetooth (а также Airplane режима) – кеш очистится, это надо проверять перед подключением с autoconnect = true , что действительно раздражает.
Autoconnect работает только с закешированными и сопряженными (bonded) устройствами!
Для того, чтобы узнать, закешировано устройство или нет, можно использовать небольшой трюк. После создания объекта BluetoothDevice , вызовите у него getType , если результат – TYPE_UNKNOWN , значит устройство не закешировано. В этом случае, необходимо просканировать устройство с этим мак-адресом (используя не агрессивный метод сканирования) и после этого можно использовать автоподключение снова.
Android-6 и ниже имеет известный баг, в котором возникает гонка состояний и автоматическое подключение становится обычным ( autoconnect = false ). К счастью, умные ребята из Polidea нашли решение для этого. Настоятельно рекомендуется использовать его, если думаете использовать автоподключение.
работает достаточно хорошо на современных версиях Android (прим. переводчика - от Android-8 и выше).
возможность подключаться к нескольким устройствам одновременно;
работает медленнее, если сравнивать сканирование в агрессивном режиме + подключение с autoconnect = false . Потому что Android в этом случае сканирует в режиме SCAN_MODE_LOW_POWER , экономя энергию.
Изменения статуса подключения
После вызова connectGatt() , Bluetooth стек присылает результат в колбек onConnectionStateChange , он вызывается при любом изменении соединения.
Работа с этим колбеком – достаточно нетривиальная вещь. Большинство простых примеров из сети выглядит так (не обольщайтесь):
Этот код обрабатывает только аргумент newState и полностью игнорирует status . В многих случаях это работает и кажется безошибочным. Действительно, после подключения, следующее что нужно сделать – это вызвать discoverServices() . А в случае отключения - необходимо сделать вызов close() , чтобы Android освободил все связанные ресурсы в стеке Bluetooth. Эти два момента очень важные для стабильной работы BLE под Android, давайте их обсудим прямо сейчас!
При вызове connectGatt() , Bluetooth стек регистрирует внутри себя интерфейс для нового клиента ( client interface: clientIf ).
Возможно вы заметили такие логи в LogCat:
Важно всегда вызывать close() после отключения! А сейчас обсудим основные случаи дисконнекта устройств.
Состояние подключения (newState)
Переменная newState содержит новое состояние подключения и может иметь 4 значения:
Значения говорят сами за себя. Хотя состояния STATE_CONNECTING , STATE_DISCONNECTING есть в документации, на практике я их не встречал. Так что, в принципе, можно не обрабатывать их, но для уверенности, я предлагаю их явно учитывать (прим. переводчика - и это лучше, чем не обрабатывать их), вызывая close() только в том случае если устройство действительно отключено.
Статус подключения (status)
В примере выше, переменная статуса status полностью игнорировалась, но в действительности обрабатывать ее важно. Эта переменная, по сути, является кодом ошибки. Вы можете получить GATT_SUCCESS в результате как подключения, так и контролируемого отключения. Таким образом, мы можем по-разному обрабатывать контролируемое или внезапное отключение устройства. Если вы получили значение отличное от GATT_SUCCESS , значит «что-то пошло не так» и в status будет указана причина. К сожалению, объект BluetoothGatt дает очень мало кодов ошибок, все они описаны здесь. Чаще всего вы будете встречаться с кодом 133 ( GATT_ERROR ). Который не имеет точного описания, и просто говорит – «произошла какая-то ошибка». Не очень информативно, подробнее об GATT_ERROR позже.
Теперь мы знаем, что обозначают переменные newState и status , давайте улучшим наш колбек onConnectionStateChange :
Это не последний вариант, мы еще улучшим колбек в этой статье. В любом случае, теперь у нас есть обработка ошибок и успешных операций.
Состояние bonding (bondState)
Последний параметр, который необходимо учитывать в колбеке onConnectionStateChange – это bondState , состояние сопряжения (bonding) с устройством. Мы получаем этот параметр так:
Состояние bonding может иметь одно из трех значений BOND_NONE , BOND_BONDING or BOND_BONDED . Каждое из них влияет на то, как обрабатывать подключение.
BOND_NONE , нет проблем, можно вызывать discoverServices() ;
BOND_BONDING , устройство в процессе сопряжения, нельзя вызывать discoverServices() , так как Bluetooth стек в работе и запуск discoverServices() может прервать сопряжение и вызвать ошибку соединения. discoverServices() вызываем только после того, как пройдет сопряжение (bonding);
BOND_BONDED , для Android-8 и выше, можно запускать discoverServices() без задержки. Для версий 7 и ниже может потребоваться задержка перед вызовом. Если ваше устройство имеет Service Changed Characteristic, то Bluetooth стек в этот момент еще обрабатывает их и запуск discoverServices() без задержки может вызвать ошибку соединения. Добавьте 1000-1500мс задержки, конкретное значение зависит от количества характеристик на устройстве. Используйте задержку всегда, если вы не знаете сколько Service Changed Characteristic имеет устройство.
Теперь мы можем учитывать состояние bondState вместе с status и newState :
Обработка ошибок
После того как мы разобрались с успешными операциями, давайте взглянем на ошибки. Есть ряд ситуаций, которые на самом деле «нормальные», но выдают себя за ошибки.
Устройство отключилось намеренно. Например, все данные были переданы и больше ему нечего делать. Вы получите статус - 19 ( GATT_CONN_TERMINATE_PEER_USER );
Истекло время ожидания соединения и устройство отключилось само. В этом случае придет статус - 8 ( GATT_CONN_TIMEOUT );
Низкоуровневая ошибка соединения, которая привела к отключению. Обычно это статус - 133 ( GATT_ERROR ) или более конкретный код, если повезет;
Bluetooth стек не смог подключится ни разу. Здесь также получим статус - 133 ( GATT_ERROR );
Соединение было потеряно в процессе bonding или discoverServices . Необходимо выяснить причину и возможно повторить попытку подключения.
Первые два случая абсолютно нормальные явления и все что нужно сделать - это вызывать close() и подчистить ссылки на объект BluetoothGatt , если необходимо. В остальных случаях, либо ваш код, либо устройство, что-то делает не так. Вы возможно захотите уведомить UI или другие части приложения о проблеме, повторить подключение или еще каким-то образом отреагировать на ситуацию. Взгляните как я сделал это в моей библиотеке.
Статус 133 при подключении (connecting)
Статус - 133 часто встречается при попытках подключиться к устройству, особенно во время разработки. Этот статус может иметь множество причин, некоторые из них можно контролировать:
Убедитесь, что вы всегда вызываете close() при отключении. Если этого не сделать, в следующий раз при подключении вы точно получите status=133 ;
Всегда используйте TRANSPORT_LE в вызове connectGatt() ;
Перезагрузите смартфон. Возможно Bluetooth стек выбрал лимит по клиентским подключениям или есть внутренняя проблема. (Прим. переводчика: я сначала выключал/включал Bluetooth, потом Airplane режим и если не помогало - перезагружал);
Проверьте что устройство посылает advertising пакеты. Вызов connectGatt() с autoconnect = false имеет таймаут 30 секунд, после чего присылает ошибку status=133 ;
Замените/зарядите батарею на устройстве. Обычно устройства работают нестабильно при низком заряде;
Если вы попробовали все способы выше и все еще получаете статус 133, необходимо просто повторить подключение! Это одна из Android ошибок, которую мне так и не удалось понять или решить. Иногда вы получаете 133 при подключении к устройству, но если вызывать close() и переподключиться, то все работает без проблем! Есть подозрение, что проблема в кеше Android и вызов close() сбрасывает его состояние для конкретного устройства. Если кто-нибудь поймет, как решить эту проблему – дайте мне знать!
Отключение по запросу (disconnect)
Для отключения устройства вам необходимо сделать шаги:
подождать обновления статуса в onConnectionStateChange ;
освободить связанные с объектом gatt ресурсы;
Команда disconnect() фактически разрывает соединение с устройством и обновляет внутреннее состояние Bluetooth стека. Затем вызывается колбек onConnectionStateChange с новым состоянием «disconnected».
Вызов close() удаляет ваш BluetoothGattCallback и освобождает клиента в Bluetooth стеке.
Наконец, удаление BluetoothGatt освободит все связанные с подключением ресурсы.
Отключение «неправильно»
В примерах из сети можно увидеть, разные примеры отключения, например:
сразу вызвать close()
Это будет работать более-менее. Да устройство отключится, но вы никогда не получите вызов колбека с состоянием «disconnected». Дело в том, что disconnect() операция асинхронная (не блокирует поток и имеет свое время выполнения), а close() немедленно удаляет коллбек! Получается, когда Android будет готов вызвать колбек, его уже не будет.
Иногда в примерах не вызывают disconnect() , а только close() . Это приведет к отключению устройства, но это неправильный способ, поскольку disconnect() отключает активное соединение и отменяет ожидающее автоматическое подключение (вызов с autoconnect = true ). Поэтому, если вы вызываете только close() , любое ожидающее автоподключение может привести к новому подключению.
Отмена попытки подключения
Если вы хотите отменить подключение после connectGatt() , вам нужно вызвать disconnect() . Так как в этому моменту вы еще не подключены, колбек onConnectionStateChange не сработает! Просто подождите некоторое время после disconnect() и после этого вызывайте close() (прим. переводчика: обычно это 50-100мс).
При удачной отмене вы увидите примерно такое в логах:
Скорее всего, вы никогда не отмените соединение, для параметра autoconnect = false . Часто это делается для подключений с autoconnect = true . Например, когда приложение на переднем плане – вы подключаетесь к вашим устройствам и отключаетесь от них, если приложение переходит в фон.
Прим. переводчика: но это не значит что для autoconnect = false не надо проводить такую отмену!
Обнаружение сервисов (discovering services)
Как только вы подключились к устройству, необходимо запустить обнаружение его сервисов вызовом discoverServices() . Bluetooth стек запустит серию низкоуровневых команд для получения сервисов, характеристик и дескрипторов. Это занимает обычно около одной секунды в зависимости от того сколько таких служб, характеристик, дескрипторов имеет ваше устройство. В результате будет вызыван колбек onServicesDiscovered.
Первым делом проверим, есть ли какие ошибки после обнаружения сервисов:
Если все прошло удачно, вы получите список сервисов:
Кеширование сервисов.
Bluetooth стек кеширует найденные на устройстве сервисы, характеристики и дескрипторы. Первое подключение вызывает реальное обнаружение сервисов, все последующие – возвращаются кешированные версии. Это соответствует стандарту Bluetooth. Обычно это нормально и сокращает время соединения с устройством. Однако в некоторых случаях, может потребоваться очистить кеш, чтобы снова обнаружить их с устройства при следующем соединении. Типичный сценарий: обновление прошивки, в которой изменяется набор сервисов, характеристик, дескрипторов. Есть скрытый метод очистки кеша и добраться до него нам поможет механизм рефлексии Java:
Этот метод асинхронный, дайте ему некоторое время для завершения!
Странные штуки в подключении/отключении
Хотя операции подключения и отключения выглядят просто, есть некоторые особенности, которые нужно знать.
Случайная ошибка 133 при подключении, выше мы разобрались как с ней работать;
Периодическое зависание подключения, не срабатывает таймаут и не вызывается колбек onConnectionStateChange . Это случается не часто, но я видел такие случае при низком уровне батареи или когда устройство находится на границе доступности по расстоянию Bluetooth. Скорее всего общение с устройством происходит, но затем прерывается и зависает. Мой обходной путь – использовать свой таймер подключения и в случае таймаута – закрывать соединение и отключаться;
Некоторые смартфоны имеют проблему с подключением во время сканирования. Например, Huawei P8 Lite один из таких. Останавливаем сканнер перед любым подключением (Прим. переводчика: это правило соблюдаем строго!);
Все вызовы подключения/отключения асинхронные. То есть неблокирующие, но при этом им нужно время, чтобы выполнится до конца. Избегайте быстрый запуск их друг за другом (Прим. переводчика: я обычно использую задержку 50-100мс между вызовами).
Следующая статья: чтение и запись характеристик.
Теперь мы разобрались с подключением/отключением и обнаружением сервисов, следующая статья – о том, как работать с характеристиками.
Не терпится поработать с BLE? Попробуйте мою библиотеку Blessed for Android. Она использует все подходы из этой серии статей и упрощает работу с BLE в вашем приложении.
Читайте также: