Android Bluetooth кросс-платформенное взаимодействие - PullRequest
3 голосов
/ 15 февраля 2010

У меня есть служба Bluetooth, которую я запрограммировал для .Net на компьютере с Windows, и я хотел бы, чтобы к нему подключился мой телефон Android 2.1. Сервер прослушивает тот же UUID, который использует Android для подключения. Но соединение не установлено.

Когда я пытаюсь подключиться к устройствам, которые не прослушивают этот UUID, я получаю исключение с сообщением «Обнаружение службы не удалось», но при попытке подключиться к серверу, который прослушивает правильный UUID, появляется окно сообщения выскакивает поговорка:

«При подключении устройства Bluetooth возникла проблема.»

И я получаю исключение с сообщением «Время соединения истекло». Похоже, сервер и Android взаимодействуют, но во время рукопожатия происходит какой-то сбой. Я знаю, что Android требует, чтобы сервер был связан с телефоном, а также шифровал канал связи. Кто-нибудь знает, какие спецификации используются для этого? Я бы хотел, чтобы мой сервер правильно реагировал на попытку подключения.

Спасибо!

Ответы [ 4 ]

1 голос
/ 03 марта 2010

Ты прав. У меня возникла та же проблема при попытке подключения к устройству RS232 с помощью образца программы BluetoothChat.

1- Если нет связи, я получаю две ошибки подряд:

03-03 13:38:20.020: ERROR/BluetoothService.cpp(2077): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session) // Probably because we're calling cancelDiscovery() as a "security" (it's already been cancelled at some point beforehand)
03-03 13:38:20.040: ERROR/BluetoothEventLoop.cpp(2077): onCreateDeviceResult: D-Bus error: org.bluez.Error.AlreadyExists (Device already exists) // This I don't understand

2 - После подключения через настройки Bluetooth, нет проблем. Соединение установлено отлично и программа работает.

Я пытался проверить Android Source самостоятельно, но, учитывая, что я новичок, это довольно сложно. Если бы какой-нибудь опытный парень мог решить это, это было бы здорово.

1 голос
/ 07 июня 2010

Чтобы ответить Томасу - профиль SPP (Serial Port Profile) не работает на нескольких моделях HTC Android, даже на версиях 2.1, но он не согласован среди моделей.

HTC Desire - не работает.
HTC Legend - плохо, но работает какое-то время? HTC Hero с пользовательскими ПЗУ - некоторые работают хорошо, некоторые совсем нет, а некоторые плохо, когда делают звук одновременно.

1 голос
/ 17 февраля 2010

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

0 голосов
/ 07 декабря 2010

Все предыдущие ответы находятся на отметке;по существу, соединение требуется перед подключением.

Однако я получал ошибку даже после соединения.(Сначала я попытался подключиться без сопряжения).

Временным решением было перезагрузить телефон один раз.И теперь он может нормально подключаться к сопряженному устройству.Звучит просто, но я потратил довольно много времени на его отладку.Надеюсь, кому-то там пригодится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...