Bluetooth связь на Samsung Galaxy S - PullRequest
2 голосов
/ 09 марта 2012

У меня на телефоне Samsung Galaxy S работает приложение Android.Приложение собирает данные датчика через Bluetooth с устройства.В большинстве случаев данные не отправляются / не принимаются.Я настроил свое приложение таким образом, чтобы оно «автоматически переподключалось» к устройству Bluetooth в случае «потери соединения».

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

Отправка данных датчика с устройства на телефон является «критически важной».Как я могу убедиться, что соединение не потеряно.Решение должно быть оптимальным.То есть для экономии заряда аккумулятора телефон должен быть в состоянии сна / гибернации.

Ответы [ 2 ]

1 голос
/ 03 мая 2012

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

Поток прослушивания должен работать точно так же, как указано в Документация Android :

Чтобы создать прослушивающий сокет BluetoothServer, готовый для входящих соединений, используйте BluetoothAdapter.listenUsingRfcommWithServiceRecord ().Затем вызовите accept () для прослушивания входящих запросов на соединение.

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

0 голосов
/ 26 июня 2012

У моего друга была похожая проблема, теперь он использует приложение для Android " BluetoothKeepalive " чтобы избежать потери соединения

...