У меня есть приложение, которое разговаривает с пользовательским устройством через RFCOMM через Bluetooth. Код связи основан на примере проекта BluetoothTalk. Он работал без каких-либо проблем раньше на Galaxy S3, Galaxy S2, Galaxy Note и Nexus 7.
Недавно Nexus 7 был обновлен до Android 4.2, и с тех пор проблема происходит следующим образом:
-
Когда вы используете приложение для настройки соединения в первый раз, что означает, что устройство только что включено, а приложение только что запущено, никаких проблем, вы можете получить данные в обычном режиме.
-
Затем, если вы остановите связь и попытаетесь перезапустить, сообщение завершится с ошибкой "java.io.IOException: bt socket closed, read return: -1". С этого момента, независимо от того, сколько раз вы пытаетесь восстановить соединение, он просто всегда терпит неудачу.
-
Единственный способ заставить его работать снова - перезагрузить пользовательское устройство и приложение, а затем попытаться подключиться, общение станет нормальным. Но затем, как только вы остановите и перезапустите сообщение, он продолжает терпеть неудачу.
Я позаимствовал Nexus 4 с Android 4.2, и проблема остается.
Это действительно раздражает, потому что основная ценность нашего устройства зависит от приложения RFCOMM Bluetooth. Я дважды проверял документацию на BT в Android 4.2 и не видел никаких существенных изменений. Я довольно уверен в том, что код на моей стороне, потому что он работает для любого Android-устройства, которое не работает 4.2
Любые намеки или предложения были бы весьма полезны. Устройство необходимо демонтировать в самом начале декабря, и мы действительно хотим решить эту проблему как можно скорее.
EDIT: теперь, когда был выпущен 4.2.1, и проблема все еще не решена. Можем ли мы хотя бы получить подтверждение относительно того, будет ли оно работать и скоро будет исправлено?