Пишется J2ME приложение с использование Bluetooth
Пакет собирался на Eclipse+J2ME плагин, и на Sun Java (TM) Wireless Toolkit 2.5.2_01 for CLDC — с одинаковым результатом.
Для пакета прописано требование разрешения на JSR-082.
String tst = "";
try {
/* на этом кусок точно те же проблемы с LocalDevice
if (LocalDevice.isPowerOn())
{
tst += " pow on";
}
else {
tst += " pow off";
}
*/
LocalDevice local = LocalDevice.getLocalDevice(); // проблема здесь
}
Насколько я понимаю, для выполнения этих операторов никакой инициализации Bluetooth не требуется. Кроме физического его включения на телефоне.
На эмуляторе WTK — все нормально.
На телефоне Motorola ROKR E1 (MIDP 2.0, CLDC 1.1) при обращении к LocalDevice не происходит НИЧЕГО. Т.е. ни exception, ни креша, ни возврата NULL. Как будто там вместо оператора return стоит.
Кто-нибудь встречался с подобным поведением — есть идеи?
Здравствуйте, Shm04, Вы писали:
S>Пишется J2ME приложение с использование Bluetooth
S> LocalDevice local = LocalDevice.getLocalDevice(); // проблема здесь
S>На телефоне Motorola ROKR E1 (MIDP 2.0, CLDC 1.1) при обращении к LocalDevice не происходит НИЧЕГО. Т.е. ни exception, ни креша, ни возврата NULL. Как будто там вместо оператора return стоит.
Что содержит поле local после выполнения этой строчки? Выполняются ли строки после этой в этом методе?
В какой нити идет вызов? Он должен быть в своей, а не где-нибудь типа startApp или других, которые вызывает AMS
Здравствуйте, Donz, Вы писали:
D>Здравствуйте, Shm04, Вы писали:
S>>Пишется J2ME приложение с использование Bluetooth
S>> LocalDevice local = LocalDevice.getLocalDevice(); // проблема здесь
S>>На телефоне Motorola ROKR E1 (MIDP 2.0, CLDC 1.1) при обращении к LocalDevice не происходит НИЧЕГО. Т.е. ни exception, ни креша, ни возврата NULL. Как будто там вместо оператора return стоит.
D>Что содержит поле local после выполнения этой строчки? Выполняются ли строки после этой в этом методе? D>В какой нити идет вызов? Он должен быть в своей, а не где-нибудь типа startApp или других, которые вызывает AMS
В том-то и дело, что я не могу проверить local — как будто на это строке происходит Exception, который не ловится. Ни одна строка после этого не выполняется. Гм, может есть еще вариант — thread просто взвисает на этом месте. Ожидание было минут по 5 — без результата. Не может же оно инстанс брать так долго.
А зачем вызывать th.join() ? Результат получается тем же, как если бы отдельную нить не создавать вообще. Смысл своей нити — не грузить и не останавливать системную нить, то есть нить, из которой был вызван метод GetBT(). А он, подозреваю, вызывается откуда-нибудь из startApp, keyPressed или из commandAction, тогда результат вполне ожидаем.
И, кстати, раз пишешь на яве, то было бы хорошим тоном следовать соглашению по именованию. Конкретно методы должны начинаться со строчной буквы.
Здравствуйте, Donz, Вы писали:
D>Здравствуйте, Shm04, Вы писали:
S>>Да, выполняется в отдельной нити:
S>>private void GetBT() {
S>> BT th = new BT(); S>> th.statusLabel = statusLabel; S>> th.start(); S>> try { S>> th.join(); S>> } catch (InterruptedException e) { S>> statusLabel.setText("Join interrupted") ; S>> } S>> }
D>А зачем вызывать th.join() ? Результат получается тем же, как если бы отдельную нить не создавать вообще. Смысл своей нити — не грузить и не останавливать системную нить, то есть нить, из которой был вызван метод GetBT(). А он, подозреваю, вызывается откуда-нибудь из startApp, keyPressed или из commandAction, тогда результат вполне ожидаем.
Спасибо, учту. Наверное, тут еще и с Excpetion что-то не то было.
Здравствуйте, Shm04, Вы писали:
S>Для всех, кто работает с J2ME Bluetooth — список девайсов с поддержкой JSR-82 S>http://www.javabluetooth.com/jsr822devices.html S>Хотя похоже, что от далеко не полный. Скорей всего поддержка идет по линейке моделей.
Список очень устаревший. Когда-то это был хороший ресурс по явовскому блютусу, но потом запустел.
Здравствуйте, Shm04, Вы писали:
S>Для всех, кто работает с J2ME Bluetooth — список девайсов с поддержкой JSR-82
S>http://www.javabluetooth.com/jsr822devices.html
S>Хотя похоже, что от далеко не полный. Скорей всего поддержка идет по линейке моделей.
Из моторол точно поддерживают ROKR EM30 и E8. ЕМ30 у меня лично отлично пашет в спарке с блютуз GPS приёмником Dimga BM100 и явским софтом для навигации, в частности с Яндекс.Карты
На мотофане(motofan.ru) много инфы про моторолу и про программирование для неё в частности