Проблемы с Android <-> Bluetooth <-> J2ME - PullRequest
0 голосов
/ 04 октября 2011

Я пытаюсь заставить Samsung Galaxy Ace с Android общаться с Nokia N95 через Bluetooth. Я написал приложение для стороны J2ME, которое прекрасно взаимодействует, используя 2 устройства symbian. Я также создал версию для Android, которая очень хорошо взаимодействует между устройствами Android. Инициирование соединения с J2ME на Android также работает. Создание соединения с Android на J2ME вызывает у меня проблемы.

Сосредоточение внимания на проблеме: первая попытка подключения завершается неудачно с использованием createRfcommSocketToServiceRecord. Затем я пробую обходной путь, используя отражение и метод createRfcommSocket для канала 1, затем 2, затем 3, а затем 4, если они потерпят неудачу соответственно. В какой-то момент у меня будет соединение, и я смогу отправлять данные, но когда я пытаюсь получить, используя InputStream.read (), он просто зависает, поэтому я думаю, что соединение в J2ME каким-то образом не передается в мое приложение.

Итак, я создал тестовые приложения, чтобы увидеть, что не так в маленьком масштабе. N95 устанавливает прослушиватель с зашифрованным и аутентифицированным UUID, а приложение Android создает соединение с createRfcommSocketToServiceRecord. Это работает! Я также могу запустить настоящее приложение Android и отправлять сообщения в тестовое приложение N95. Из этого опыта я сделал вывод, что ошибка должна заключаться в версии J2ME.

Мне интересно, есть ли у кого-нибудь советы о том, как отладить это. Сейчас я комментирую код, собираю, отправляю приложение на телефон, устанавливаю, тестирую, повторяю. Это очень утомительно и идет очень медленно, но у меня нет другого варианта для проверки этого. Я также был бы признателен за понимание того, почему соединение createRfcommSocket не отвечает. Нужно ли что-то регистрировать на стороне J2ME? Спасибо за ваше время.

1 Ответ

0 голосов
/ 30 октября 2011

Я решил эту конкретную проблему, подробно изучив мой код, и обнаружил, что неправильно внедрил свои пользовательские потоки вывода.

out.write(x);
out.write(y);
out.flush();

поток не сбрасывается автоматически в j2me

...