Android: общее направление для приложения Bluetooth SPP с несколькими действиями пользовательского интерфейса (многопоточность / обработчики) - PullRequest
2 голосов
/ 15 сентября 2010

Я относительно новичок в Android, но имею некоторый опыт работы с Java. Это может быть больше проблема многопоточности / обработчик, в отличие от Bluetooth.

Я пишу приложение, которое имеет несколько макетов с кнопками. Я настроил onClickListners для кнопок. Некоторые кнопки изменят активность и вызовут новый макет с новыми кнопками, а другие будут отправлять исходящие строки SPP через Bluetooth. Строки будут определены в XML-файле и не изменятся (последовательные команды). Я могу жестко закодировать MAC-адрес Bluetooth-сервера и только отправлять данные, а не получать.

Я ищу несколько общих указаний о том, как пройти настройку соединения Bluetooth и исходящих передач. Я подробно рассмотрел пример BluetoothChat, но у меня нет хороших ресурсов в случае нескольких действий.

-Использую ли я отдельное действие для управления всеми передачами и соединениями Bluetooth и создания обработчиков для каждого случая, когда я буду отправлять сообщение Bluetooth? -Можно ли добавить соединение Bluetooth + потоки передачи в каждом действии (кажется, что у меня возникнут проблемы с потерей соединения при смене действий)? -Могу ли я использовать обработчики, которые не относятся к конкретному классу, где активность BluetoothService может отправлять все, что было вызвано активным / текущим действием? -Могу ли я просто жестко кодировать все строки, которые будут отправлены в действии BluetoothService, и действие пользовательского интерфейса может побудить действие BluetoothService отправлять запрошенную строку на основе нажатия кнопки?

Любая информация будет принята с благодарностью. Только общее направление, небольшая выборка или предложения класса помогут мне двигаться в правильном направлении.

Спасибо

Jonathan

1 Ответ

0 голосов
/ 15 сентября 2010

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

...