Отправка данных через Bluetooth - PullRequest
3 голосов
/ 07 июля 2011

Я немного озадачен тем, как отправлять данные через соединение Bluetooth.В документации по API Android, из примера чата Bluetooth, класс BluetoothChat.java создает объект Handler.Внутри есть оператор switch и MESSAGE_WRITE case.Нужно ли реализовывать подобный код для отправки строк через Bluetooth?Заявление о регистре для каждой строки, которую я хочу отправить?В частности, я хочу отправить (name,value) пар , чтобы я знал, что отправлено и какова его ценность.Как мне это реализовать?Если, следуя примеру, я позвоню BluetoothChatService.write(String.getBytes()) несколько раз, чтобы отправить ...?Тогда откуда мне знать, какие строки связаны с какими именами?Пожалуйста, помогите.

Ответы [ 3 ]

2 голосов
/ 07 июля 2011

Я использую Google Protocol Buffers для отправки структурированных данных по соединениям Bluetooth в моем приложении Android. protobuf позаботится о том, чтобы выяснить, как сериализовать сообщение для вас, чтобы вам нужно было только отправить байтовое значение (длину сообщения) и затем сериализованное сообщение; библиотека заботится о десериализации сообщения на другом конце и заполнении полей пользовательского объекта. Определенно взгляните на это; это сделало написание собственного протокола сокета Bluetooth довольно простым.

0 голосов
/ 07 июля 2011

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

Например, я использую такой формат для отправки набора из 3 строк с одного устройства на другое:

String toSend = partOne + ":" + partTwo + ":" + partThree;

На другом устройстве, чтобы получить отправленные строки, используйте метод String.split () следующим образом:

String parts[] = received.split(":",3);

2-й параметр - это предел, сколько раз делить. В этом примере есть 3 строки, поэтому разделите их максимум на 3 раза.

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

В моем приложении я использовал этот метод для отправки данных о текстовых сообщениях, а первые 2 части - это номер телефона и метка времени, поэтому в нем никогда не может быть:. Для имен, вероятно, будет работать перевод строки.

Если вы собираетесь отправлять более сложные данные, обязательно используйте что-то вроде буферов протокола.

0 голосов
/ 07 июля 2011

Сериализация пар в любом из форматов, который позволяет представление байтов. Такие как XML или JSON. Или даже ваш собственный формат, это не будет трудно для пар строк. А затем отправьте его.

...