Меню

Как подключить usb bluetooth к android

Peugeot 3008 GT Line 2.0Т › Бортжурнал › 10. Bluetooth/Car Play/Android Auto – а выбор есть?

Собственно, одно из первых действия что я сделал, купив Пыжа, законнектил его со своим стареньким iPhone 5s по Bluetooth. Включил BT, установил «пару» и ура, вся моя музыка с Google Play могла воспроизводиться в машине, прощайте CD-диски и магнитолы, прощайте флешки с гигабайтами музыки теперь только 3G только хардкор)

Функция телефонных звонков также подключилась автоматом, так что водить и говорить стало безопасно и мега-удобно. Ну это все понятно, а что дальше? И тут вспоминаешь что у 3008го есть поддержка CarPlay и Android Auto.

Так как на тот момент я обладал «яблоком», то решил тут же проверить CarPlay. Все было достаточно просто — подключил кабель и включил CarPlay в настройках телефона, тут же обнаружил что без провода CarPlay не работает… Пришлось таскать в машине китайский lightning провод. А с учетом того что провод питания видеорегистратора не был скрыт под обшивкой, выглядело это как клубок проводов — довольно печальное зрелище (((

Спустя месяц купил Samsung под Android, и решил проверить как работает Android Auto. Захожу в PlayMarket и вижу подобную картину:

Недоступно в Вашей стране? Мдааа… Начал искать как это обойти, в итоге нашел довольно известный сайт с выложенными установочными пакетами приложений (до этого оттуда на свой Xiaomi телевизор качал google сервисы и прочие программы). И там собственно были выложены APK установочные файлы для Android Auto. Скачал последнюю сборку, и установил, заработало!

Полет нормальный, для работы нужно:
— качаем и устанавливаем APK файл по ссылке
— подключаем шнур от машины к телефону
— запускаем приложение на телефоне
— идем согласно инструкции на телефоне
— соглашаемся с запросами на всевозможные права доступа

Опять же, замечено, что без провода приложение отказывается работать хоть ты тресни. Почитал зарубежные форумы:

Почему нельзя использовать Bluetooth для работы Android Auto?
— Пишут, что BT самостоятельно не работает по причине плохой пропускной способности. Типа стриминг видео он не потянет. На самом деле потянет, просто речь идет, как я понимаю, о версии BT 3.0 хотя в новых телефонах уже стоит 5я версия и там это не проблема, но в автоиндустрию «нанотехнологии» приходят со значительным запозданием, что видно по убогим touch дисплеям, дешманским камерам кругового обзора и тд и тп. Поэтому остается довольствоваться тем что есть и скрестив пальцы смотреть в будущее…
Почему используется Bluetooth если есть подключение по USB?
— Потому что они для звонков используют протокол HFP (Hands Free Protocol).
В итоге для работы нужны одновременно два соединения Bluetooth и USB. Вот почему бы, например, не дать возможность оставить только Bluetooth соединение и просто не позволять проигрывать по нему видео, раз ему не позволяет пропускная способность?!
Для меня, как программиста, это остаётся загадкой… В итоге видимо без кабеля никуда, или я что-то упустил?

Попользовавшись всеми видами подключений пришел к следующим выводам по каждому типу:

CarPlay:
Требует подключение телефона через шнур
Помощник Siri не работает в СНГ регионах, так что кафе поблизости вы не найдете
Убогие Apple Maps карты
+ Удобный интерфейс аудиоплеера (отдельное Google Play окно)
+ Доступен полный список контактов с телефона

Android Auto:
Требует подключение телефона через шнур
+ Поддержка Google ассистента, говоришь «Ok, Google» и вперед
+ удобные Google Maps карты (однако печалит что они не синхронизируются с картами на приборной панели в режиме «навигация»)
+ Удобный интерфейс аудиоплеера (отдельное Google Play окно)
+ Доступен полный список контактов с телефона

Bluetooth:
Не видит всю адресную книгу, видимо только контакты на SIM карте
Не видит плейлисты аудио приложения, можно только включать след. Или предыдущий трек.
нет поддержки приложений (карты и тп, но это и логично)
+ НЕ НУЖЕН ПРОВОД!

Для себя сделал вывод следующий: Если провода напрягают, то выбора особо-то и нет, так что езжу с простым Bluetooth подключением, музыка есть, звонки есть, хоть список контактов не полный но исходящие и входящие списки синхронизированы и там все номера подписаны (еще одна из загадок) а 99% звонков находятся в этих списках, так что все ок.

Читайте также:  Как подключить автоплатеж сбербанк через телефон по смс теле 2

На дальняк, когда нужна карта, однозначно с проводом и через Android Auto. И карты поддерживаются и плейлисты все видны, и телефон через провод подключен и не сядет (хотя есть беспроводная зарядка… хммм)

Вобщем как-то так, надеюсь кому-то этот пост поможет разобраться с установкой приложения, или понять нужно ли оно ему как таковое)

Ну или может я где-то тупанул и провод на самом деле не обязателен?

Источник

Кто знает, как «подружить» с блютузприемником андроид версии 4.0?

Этот свисток мне обошелся в 800 рублей денег. Asus USB-BT221 называется. Надо было за 195 рублей покупать.

Просто так андроид не рассчитывает увидеть GPS через синезуба, посему ставь «Bluetooth GPS Provider» и всё должно зафунциклировать.

Просто так андроид не рассчитывает увидеть GPS через синезуба, посему ставь «Bluetooth GPS Provider» и всё должно зафунциклировать.

P.S. Вроде сейчас все планшеиты с GPS на борту

Свисток вставлен. А что значит «встроен в GPS»? Датчик подключается после того, как планшет увидит блютуз порт. Вроде так?

Просто так андроид не рассчитывает увидеть GPS через синезуба, посему ставь «Bluetooth GPS Provider» и всё должно зафунциклировать.

И кстати, ты сам девайс на низком уровне зацепил к планшету?

Ставил. НО «Bluetooth GPS Provider» ставится только на версии андроида 2.0 У меня 4** и девайс пишет, что данная программа не поддерживается.

А что значит «зацепить на низком уровне»?

Свисток вставлен. А что значит «встроен в GPS»? Датчик подключается после того, как планшет увидит блютуз порт. Вроде так?

А что значит «зацепить на низком уровне»?

. «Bluetooth GPS Provider» ставится только на версии андроида 2.0 У меня 4** и девайс пишет, что данная программа не поддерживается.

А что значит «зацепить на низком уровне»?

Скажи модель планшета, у меня чёто подозрения что ты на борту имеешь только USB и пытаешься в него вставить синезуб, а потом связаться с внешним GPS через этот посути внешний usb->bluetooth
?

Скажи модель планшета, у меня чёто подозрения что ты на борту имеешь только USB и пытаешься в него вставить синезуб, а потом связаться с внешним GPS через этот посути внешний usb->bluetooth
?

Судя по 4pda, там в процессоре не реализовали Bluetooth, а производитель решил «умерла так умерла» и не включил модули ядра Линукс в поставку.

Дык. У меня и УСБ приемник на проводе не работает. Фтыкаю в девайс. Питание на него приходит (горит индикатор) а связи с планшетом НЕТ.

Ааа. понятно. Это уже потому, что дпрайверов нет для GPS 🙁

Дык. У меня и УСБ приемник на проводе не работает. Фтыкаю в девайс. Питание на него приходит (горит индикатор) а связи с планшетом НЕТ.

Судя по 4pda, там в процессоре не реализовали Bluetooth, а производитель решил «умерла так умерла» и не включил модули ядра Линукс в поставку. Вроде там кто-то заикнулся про собрать модули, но решения я не нашёл.
Вроде как это просто другая инкарнация A713: http://4pda.ru/forum. &. ooth[]=358472&forums=400&st=20

Ааа. понятно. Это уже потому, что дпрайверов нет для GPS 🙁

Да гдеж их взять под Андроит, мать его.

Я именно такой и конектил. Наверное драйвера на диске у тебя тоже под Виндозу.

Дык. У меня и УСБ приемник на проводе не работает. Фтыкаю в девайс. Питание на него приходит (горит индикатор) а связи с планшетом НЕТ.

А кабель отс исправен? Что то другое через него работает,например мышь или клава? В настройках юсб хост отдельно включается.

Источник

Использование Bluetooth в Android

Платформа Android предоставляет разработчику богатые коммуникационные возможности. Для работы с Bluetooth в состав Android входит мощный API, позволяющий легко производить сканирование окружающего пространства на предмет наличия готовых к соединению устройств, передачу данных между устройствами и многое другое.

Работа с Bluetooth состоит из четырех этапов: установка настроек bluetooth адаптера, поиск доступных для соединения устройств, установка соединения, передача данных.

Читайте также:  Как подключить телефон alcatel one touch к компьютеру через usb кабель

Обзор Android Bluetooth API

Bluetooth API располагается в пакетеandroid.bluetooth. В его состав входит несколько классов:

В рамках этой статьи мы не будем углубляться в суть работы с медицинскими bluetooth устройствами и сосредоточимся на первых четырех классах.

Установка настроек Bluetooth адаптера из Android

Если Вы решили задействовать в своей программе возможности Bluetooth модуля, вам необходимо, прежде всего, подключить соответствующий пакет API.

Помимо этого необходимо дать приложению разрешение на использования Bluetooth модуля. Для этого в манифест программы нужно добавить строку

Если Вы собираетесь использовать критические с точки зрения безопасности возможности, например, изменить имя устройства, то нужно дать более мощные разрешения BLUETOOTH_ADMIN:

При использовании разрешения BLUETOOTH_ADMIN, необходимо также указывать и BLUETOOTH.

Прежде чем соединяться с кем-нибудь и передавать данные нужно убедиться, что ваш телефон имеет bluetooth модуль. Первым делом при работе с bluetooth API нужно создать экземпляр класса BluetoothAdapter

Если ваш телефон не поддерживает bluetooth, будет возвращено значение «null». На практике нужно всегда проверять это условие, чтобы избежать ошибок.

Даже если ваш аппарат оснащен Bluetooth модулем, он может быть недоступен, поскольку пользователь просто отключил его. Для проверки доступности Bluetooth служит метод isEnabled(). В случае, если модуль отключен, можно предложить пользователю включить его.

После того, как все проверки выполнены, можно приступать к работе. Давайте, например, отобразим имя и адрес нашего адаптера, вызвав методы getName() и getAddress().

Если приложение имеет разрешение BLUETOOTH_ADMIN, вы можете изменить имя Bluetooth устройства с помощью метода

для отображения состояния адаптера служит метод BluetoothAdapter.getState(). Этот метод может возвращать одно из следующих значений:

STATE_TURNING_ON
STATE_ON
STATE_TURNING_OFF
STATE_OFF

Часто в целях экономии заряда батареи Bluetooth выключен по умолчанию. Следующих код создает сообщение, в котором информирует пользователя о состоянии адаптера:

Организация поиска доступных bluetooth устройств

С помощью класса BluetoothAdapter, Вы можете найти удаленное bluetooth устройство, запустив сканирование или запросив список спаренных устройств.

При сканировании осуществляется поиск доступных bluetooth модулей вокруг вас. Если в поле досягаемости окажется устройство с разрешенным bluetooth, оно отправит в ответ на запрос некоторую информацию о себе: имя, класс, свой уникальный MAC адрес. На основе этой информации можно организовать соединение и передачу данных.

Сразу после установки соединения с удаленным устройством, пользователю будет автоматически показан запрос на соединение. В случае положительного ответа полученная информация (имя, класс и MAC адрес) сохраняется и может затем использоваться через bluetooth API. Так при следующем сеансе связи с данным удаленным устройством вам уже не придется проводить сканирование, поскольку необходимый MAC адрес уже будет занесен в базу вашего телефона и его можно просто выбрать из списка спаренных устройств.

Необходимо различать понятие спаренных и соединенных устройств. Спаренные устройства просто знают о существовании друг-друга, имеют ссылку-ключ, которую могут использовать для аутентификации, и способны создать шифрованное соединение друг с другом. Соединенные устройства разделяют один радиоканал и могут передавать данные друг другу. Текущая реализация bluetooth API требует, чтобы устройства были спарены перед соединением. (Спаривание выполняется автоматически, когда вы начинаете шифрованное соединение через Bluetooth API)

Запрос на соединение со спаренным устройством

Прежде чем приступать к поиску устройств вокруг имеет смысл показать пользователю список уже известных системе устройств. Вполне возможно, что требуемый телефон окажется в этом списке. Метод getBondedDevices() возвращает множество (Set) устройств BluetoothDevice, с которыми уже происходило соединение. Вы можете показать пользователю этот список, например с помощью ArrayAdapter:

Для того чтобы инициализировать соединение нужно знать MAC адрес устройства. В приведенном выше примере эти адреса заносятся в Arrayadapter и показываются пользователю. При желании, Вы можете легко достать любой адрес из этого списка.

Поиск устройств

Для того, чтобы начать сканирование радиодиапазона на предмет наличия доступных устройств просто вызовите метод startDiscovery(). Сканирование происходит в отдельном асинхронном потоке. Метод возвращает true, если запуск сканирования прошел успешно. Обычно процесс сканирования занимает порядка 10-15 секунд. Чтобы получить информацию о найденных устройствах Ваше приложение должно зарегистрировать BroadcastReceiver для интента ACTION_FOUND. Этот интент вызывается для каждого найденного устройства. Интент содержит дополнительные поля EXTRA_DEVICE и EXTRA_CLASS, которые содержат объекты BluetoothDevice и BluetoothClass соответственно.

Читайте также:  Как подключить роуминг на теле2 самостоятельно

Поиск Bluetooth устройств требует много ресурсов. Как только Вы нашли подходящее устройство, не забудьте остановить процесс сканирования. Это можно сделать с помощью метода cancelDiscovery(). Кроме того, если ваш телефон уже находится в соединении с каким-либо устройством, сканирование может значительно сузить ширину пропускания канала, поэтому лучше воздержаться от поиска новых устройств при установленном соединении.

Включение Bluetooth из приложения

Современные Android смартфоны не могут похвастаться долгим временем работы, поэтому все нормальные люди отключают Bluetooth модуль. Если Вы припрограммровании для Android хотите дать своим пользователям возможность сделать телефон видимым для других телефонов, вызовите с помощью метода startActivityForResult(Intent, int) интент ACTION_REQUEST_DISCOVERABLE. В результате пользователю будет показано системное окно с запросом на перевод телефона в режим bluetooth видимости. По умолчанию этот режим включается на 120 секунд. Это время можно изменить с передав интенту дополнительный параметр EXTRA_DISCOVERABLE_DURATION. Максимально доступное время составляет 3600 секунд. Значение 0 переводит bluetooth модуль вашего телефона в режим постоянной видимости. Для примера создадим интент с запросом на переход в режим видимости на 300 секунд

Вам не нужно переводить свой телефон в режим видимости, если вы инициализируете соединение. Видимым должно быть устройство к которому вы хотите подключиться.

Соединение устройств

Сервер

Поскольку метод accept() является блокирующим, его не стоит вызывать из потока главной деятельности, поскольку это приведет к подвисанию интерфейса. Обычна вся работа с BluetoothServerSocket и BluetoothSocket выполняется в отдельном потоке. Чтобы прекратить выполнение метода accept(), вызовите метод close() для BluetoothServerSocket (или BluetoothSocket) из любого другого потока вашего приложения.

Ниже приведен пример потока, реализующий описанный выше механизм работы

В этом примере подразумевается, что может быть установлено только одно соединение, поэтому после того, как соединение подтверждено и получен BluetoothSocket, приложение посылает его отдельному потоку, закрывает BluetoothServerSocket и выходит из цикла.

Обратите внимание, когда accept() возвращает BluetoothSocket, сокет уже соединен, поэтому не требуется вызывать метод connect().

manageConnectedSocket() представляет собой метод, внутри которого нужно создать поток для передачи данных. Его возможная реализация будет рассмотрена ниже.

Вы должны закрыть BluetoothServerSocket сразу же после завершения прослушивания эфира на предмет наличия входящего соединения. В приведенном примере метод close() вызывается сразу после получения объекта BluetoothSocket. Также Вам может понадобиться public метод для остановки приватного BluetoothSocket.

Клиент

Для инициализации соединения с удаленным устройствам (устройством, которое держит открытым серверный сокет) вам необходимо получить объект BluetoothDevice, содержащий информацию о нем. Этот объект используется для получения BluetoothSocket и инициализации соединения.

Опишем процедуру соединения:

Как и в случае с accept, метод connect() следует выполнять в отдельном потоке, в противном случае может произойти подвисание интерфейса.

Замечание. Прежде чем вызывать connect() убедитесь, что в данный момент не происходит сканирование с целью поиска доступных устройств. В случае одновременного выполнения этих операций соединение будет устанавливаться намного медленнее, и вы рискуете не уложиться в timeout.

Приведем пример клиентского приложения, инициализирующего соединение

Для остановки сканирования эфира вызывается метод cancelDiscovery(). Перед вызовом этого метода можно проверить идет ли сканирование с помощью isDiscovering().

После завершения работы с BluetoothSocket всегда вызывайте метод close(). Это поможет сэкономить ресурсы телефона.

Передача данных

После успешного соединения, каждое из соединенных устройств имеет объект BluetoothSocket с помощью которого легко реализовать передачу/прием данных:

Вы должны использовать отдельный поток для чтения и записи данных. Это важно, поскольку методы read(byte[]) и write(byte[]) являются блокирующими и их вызов в основном потоке может парализовать вашу программу. Главный цикл в этом отдельном потоке должен считывать данные из InputStream. Для записи в OutputStream имеет смысл создать отдельный public метод.

В конструкторе создаются объекты для работы с потоками данных, после чего поток оживает входящие данные. После того как прочитан очередной блок данных из входящего потока он посылается в главную деятельность посредствам вызова метода Handler родительского класса. Для отправки данных из главной деятельности просто вызывается метод write(). Внутри этого публичного метода происходит вызов write(byte[]). Метод close() также можно вызвать из главной деятельности. Он разрывает соединение.

Источник