Intereting Posts

Не удалось обнаружить Bluetooth ->

Я пишу приложение, которое может общаться с моим ПК. Я использовал функции Bluetooth SDK 2.1.

Я могу найти устройства, получить их MAC-адрес, создать сокет RFCOMM , но когда я запустил соединение, я получаю следующее сообщение об ошибке.

Не удалось обнаружить службу.

  1. Это из-за UUID , который не совпадает с моим приложением и на моем ПК?
  2. Как я могу получить правильный UUID на моем ПК?

Если я пишу такое приложение, является ли мой Nexus One клиентом или сервером?

Solutions Collecting From Web of "Не удалось обнаружить Bluetooth ->"

Хорошо, у меня такая же проблема, но я думаю, что могу ответить на несколько ваших вопросов. Если ваш ПК открыл порт SPP, например, используя «sdptool add -channel = 3 SP», ваш телефон Android будет клиентом, открывающим сокет и подключающимся к этому сокету на сервер (ваш ПК или любое другое устройство Bluetooth, Например, GPS, мышь и т. Д.).

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

Если вы открываете порт SPP на сервере (ваш компьютер и т. Д.), Вы предлагаете стандартную услугу, и для этой службы назначается специальный UUID. Это будет: 00001101-0000-1000-8000-00805F9B34FB если я не ошибаюсь.

Поэтому я думаю, что мы должны получить квалифицированный ответ от разработчика Android. Или задайте этот вопрос в четверг в часы работы IRC.

Подсказка. Если вы подключаетесь к последовательной плате Bluetooth, попробуйте использовать известный SPP UUID 00001101-0000-1000-8000-00805F9B34FB. Однако, если вы подключаетесь к одноранговому узлу Android, пожалуйста, создайте свой собственный уникальный UUID.

Связь

Хотя это может быть ваш UUID, я также предлагаю вам убедиться, что MAC-адрес Bluetooth является точным и верхним.

Я также предлагаю запустить hcidump -X в терминале в ящике Linux и посмотреть, можно ли увидеть любой двусторонний трафик между вашей машиной Linux и телефоном в течение всего процесса.

Я нашел способ убедиться, что UUID найден на устройстве. На стороне клиента, перед device.createRfcommSocketToServiceRecord(uuid); Добавить:

 Process process = Runtime.getRuntime().exec("su -c 'sdptool records " + device.getAddress() + "'"); process.waitFor(); 

Процесс заморожен в течение 20-30 секунд, потому что Android получает услуги. Но, если сервер находится в режиме обнаружения (если сервер является телефоном Android), соединение будет успешным каждый раз!

У меня была та же проблема при повторном подключении SPP после первого подключения.

Это связано с тем, rfcomm channel=-1 в BluetoothService.java . Я добавил updateDeviceServiceChannelCache() в конец fetchRemoteUuids() , а потом он сработал!

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