2014-10-01 2 views
2

У меня есть проект, в котором используется устройство Android для отправки команд и получения сообщений с удаленного встроенного контроллера (аналогично Arduino) через Bluetooth SPP.Служба Android bluetooth с несколькими действиями

Я успешно создал одно приложение для активности, основанное на серии tutorials на YouTube. Большая часть кода в учебнике взята из официального примера, но это не делается как услуга.

Теперь для моей проблемы ... Мне нужно настроить активность «Главная страница», которая начнет другие действия при нажатии соответствующей кнопки.

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

Начальное соединение Bluetooth запускается в моей домашней странице. Когда запускается новое действие, вызывается метод моей домашней страницы onStop() и соединение Bluetooth теряется.

Короткое дублирование кода Bluetooth в каждом мероприятии, похоже, что услуга - это путь? Я нашел это сообщение в Stack Overflow link, что очень хорошо, но я достаточно новичок в программировании на Android, что недостающие детали заставили меня ударить по кирпичной стене.

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

ответ

2

Я вижу два варианта для вас, чтобы достичь того, что вы ищете:

  • Управление связи Bluetooth в службе, и использовать Android doc написать рабочую службу. И вы можете привязать каждую вашу деятельность к вашему запущенному сервису с помощью bindService(). Служба работает в фоновом режиме и не останавливается, когда вы переходите от одной активности к другой. Но для этого вам нужно переместить большую часть кода, который у вас есть, в службу. Опять же, следуйте документу.

  • Используйте фрагменты: Android Doc. И если вы ничего не знаете об фрагментах: Android doc. В принципе, фрагмент очень похож на действие, но Android рекомендуется использовать фрагменты. У вас будет одно действие, которое управляет подключением Bluetooth и размещает ваши фрагменты: вы замените все действия, которые вы хотели иметь в своем приложении, на фрагменты. Поэтому, когда вы перемещаетесь от фрагмента к другому, ваша активность не будет остановлена, и ваше соединение Bluetooth будет безопасным.

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

Надеюсь, что это ясно.

+1

Идея фрагмента - это путь для меня.Я очень мало знал об фрагментах, но большую часть времени проводил, и мое приложение теперь работает так, как я этого хочу. Для тех, кто имеет аналогичную ситуацию, помимо Android-документов, я настоятельно рекомендую серию учебников по фрагментам «Slidenerd» на Youtube. – john8791

+0

Насколько я понимаю, служба docs останавливается, когда останавливаются ограниченные действия. Я прав? Итак, если второе действие начинается после какого-либо действия в первом (например, нажатие кнопки), как вы связываете второе действие с сервисом? (так что соединение, сделанное в первом действии, не умирает) – Sndn

+0

@Sndn. Вы должны создать Activity, который будет похож на главную деятельность для всех остальных. Вы можете назвать его AbstractActivity или что-то еще, и продлить действие с этим, а затем все другие действия должны вывести AbstractActivity. Так он не перестанет работать. -edit- Я только видел, сколько лет вопрос. Но ответ может помочь кому-то, кто знает. :) – zed

-1

Возможно, вы захотите запустить это из потока пользовательского интерфейса ... независимо от жизненного цикла вашей деятельности в стеке. Посмотрите также на поставщиков. Провайдеры действительно помогут, если вы имеете дело с коммуникацией/доступом к вашему приложению или общением за его пределами (особенно в отношении действий и других приложений для Android).

Смежные вопросы