Подключиться к блютуз гарнитуре в андроиде - PullRequest
1 голос
/ 18 апреля 2011

У меня следующая проблема: Когда моя гарнитура включена до того, как мой телефон включил Bluetooth, она не будет подключаться к моему телефону.Он будет подключаться к моему телефону только тогда, когда Bluetooth включен, и моя гарнитура включена второй раз.Я узнал, что я все еще могу подключиться к своей гарнитуре, когда Bluetooth включен второй (1. случай), зайдя в меню андроида Bluetooth, где перечислены мои сопряженные устройства, и выберите мою гарнитуру (хотя моя гарнитура указана как «подключенная»),Это также соединит мою гарнитуру и мой телефон.

Теперь я хочу выполнить второй способ подключения к моей гарнитуре, когда мой телефон включается автоматически, программно.Я хочу использовать Android версии 2.0 (API Level 5), поэтому я попробовал BluetoothDevice.createRfcommSocketToServiceRecord и позвонил connect() на своем сокете.Но я всегда получаю исключение «Отказ в соединении» или «Не удалось обнаружить службу».Я использовал много UUID, который, как мне показалось, может быть правильным и имеет какое-либо отношение к гарнитуре.

1 Ответ

3 голосов
/ 19 апреля 2011

Вы не можете вызвать API RFCOMM для подключения к гарнитуре. Он предназначен для подключения к профилю SPP, гарнитура будет использовать профили HS / HFP. Использование различных UUID также на API-интерфейсе RFCOMM не решит проблему.

По сути, это соединение профиля уровня гарнитуры выполняется внутри Android (и нет доступа на уровне приложений для установки соединений). Приложения могут только получить состояние соединений - см. BluetoothHeadset Класс

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

...