Я пытаюсь написать приложение, которое включает подключение двух устройств Android через Bluetooth.
Я понимаю, что одно устройство работает как сервер, слушая входящие соединения, а другое действует как клиент и инициализирует соединение с использованием MAC-адреса сервера.
Рассмотрим следующее:
У меня есть мой телефон для Android в кармане, я начинаю работать на планшете Android. Я хочу подключить планшет к телефону (через Bluetooth), не вынимая телефон из кармана (я не хочу вытаскивать телефон и вручную начинать слушать входящие соединения).
Что было бы хорошим способом добиться этого? Похоже, мне пришлось бы сделать телефон сервером, постоянно слушая подключения 24/7. Однако, мой кишок говорит, что это сильно разрядит батарею.
Какие-либо предложения?
Вы правы, вы можете сделать свой телефон (или планшет) сервером. Но он не должен использовать такую батарею; после того, как вы настроите серверный сокет и начнете accept
соединения с кодом простых блоков и будете ожидать входящего соединения. По моему опыту, я не обнаружил, что это слишком большая часть разряда батареи (но у меня нет твердых фигур, чтобы поддержать это).
Если есть интерфейс, связанный с сервером, вы хотите разделить сокет сервера в отдельный поток, чтобы не блокировать события пользовательского интерфейса.
Обычно телефоны ведут себя таким образом - т.е. ждут входящих соединений от сопряженных устройств. Ожидание/Сканирование входящих соединений меньше потребляет энергию, чем пытаться найти или подключиться к устройствам в режиме опроса. Многие чипы Bluetooth имеют маломощное сканирование, которое обеспечивает эффективное сканирование.