Проблемы с подключением Android bluetooth J2ME

#android #debugging #java-me #bluetooth #connection

#Android #отладка #java-me #bluetooth #подключение

Вопрос:

Я пытаюсь заставить 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:

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

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

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