Адаптация примера Android BluetoothChat к одному серверу, нескольким клиентам

1

Я пытаюсь адаптировать пример BluetoothChat, который поставляется с SDK, к конфигурации клиента single-, multiple-. У меня возникают проблемы и надеюсь, что кто-то может помочь.

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

Первый клиент подключается просто отлично.

Когда второй клиент пытается подключиться, соединение терпит неудачу. Выход журнала:

D/BluetoothEventLoop(  140): Device property changed: <device address> property: Connected value: true
I/BluetoothService(  140): ACL connected, mAclLinkCount = 2
D/BluetoothEventLoop(  140): Device property changed: <device address> property: Connected value: false
I/BluetoothService(  140): ACL disconnected, mAclLinkCount = 1

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

Может ли кто-нибудь помочь с этим?

Кроме того, может ли кто-нибудь указать пример примера подключения нескольких клиентов cnd12 → , использующего bluetooth с Android? Я наткнулся на пример Air Hockey:

http://code.google.com/p/apps-for-android/source/browse/#svn%2Ftrunk%2FBTClickLinkCompete%2Fsrc%2Fnet%2Fclc%2Fbt

Но этот проект очень глючит на моих тестовых устройствах, и фактическая игра не будет отображаться должным образом. Кто-нибудь знает, есть ли пример BluetoothChat для обработки нескольких соединений?

UPDATE:

При попытке решить эту проблему, я считаю, что я успешно распространил официальный пример Bluetooth Bluetooth Chat для работы с сервером, подключающимся к нескольким клиентам.

Я загрузил свои изменения в github здесь.

Одно устройство действует как сервер, выбрав "Меню > Сделать доступным". Затем каждый клиент соединяется, выбирая "Меню > Подключить устройство". Я успешно смогла подключить свой Motorola Droid и HTC Eris к клиентам на Samsung Galaxy Tab 10.1 ". Каждое сообщение, отправленное с клиента, отображается только на сервере. Сообщение, отправленное с сервера, отображается на всех клиентах.

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

Надеюсь, кто-то еще найдет этот пример полезным. Если у вас есть какие-либо вопросы, предложения или другие отзывы, пожалуйста, дайте мне знать.

Теги:
bluetooth

1 ответ

0

Я проверил ваш код. Как, вы сказали, что подключение HTC к мастеру было проблемой. Я сделал Samsung S3 ведущим и HTC в качестве клиента. это сработало. Но я снова попробовал с телефоном Sony Ericsson. Ни одно другое устройство не может успешно выполнять роль мастера.  S3 имеет версию Blutooth версии 4.0, имеющую более раннюю версию. Считаете ли вы, что проблема связана с стеклом Bluetooth?  Мне нужно использовать эту концепцию в проекте, где устройства будут изготовлены на заказ. Попытка выяснить, какая проблема связана с производителями (HTC, Sony) или ее связью с стеклом bluetooth. и я не знаю, как это выяснить. Это не документировано.:(  Кто-нибудь сталкивался с этим?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню