2010-09-15 14 views
2

Я относительно новичок в Android, но имею некоторый опыт работы с Java. Это может быть проблема с многопоточным/обработчиком, связанная с Bluetooth.Android: Общее руководство для приложения Bluetooth SPP с несколькими пользовательскими интерфейсами (многопоточность/обработчики)

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

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

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

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

Спасибо,

Джонатан

ответ

0

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