Как читать вывод консоли в мобильных телефонах j2me? Куда идет System.out.println()?

При написании приложений j2me для мобильных телефонов использование System.out.println() выводит на консоль при использовании эмулятора. Однако, когда код развернут на мобильном телефоне, куда идет вывод консоли?

Если это невозможно увидеть на непривязанном мобильном телефоне, есть ли способ увидеть это, если мобильный телефон все еще подключен к развертывающему ПК [через USB]?


person Animesh    schedule 24.09.2008    source источник


Ответы (8)


На телефонах Symbian (Nokia, Sony-Ericsson, Motorola, Samsung, Panasonic, Siemens, проверьте платформы Series60, Series80, Series90 или UIQ) вы можете получить как System.out, так и System.err. Самое главное, вы также можете получить Throwable.printStackTrace().

Ранние версии Symbian OS поставлялись с собственным инструментом под названием Redirector. В итоге он стал доступен и сторонним разработчикам мидлетов. В наши дни его может быть трудно найти, но его можно переработать, используя код C++, который подключается к реализации Symbian стандартной библиотеки C, которую использует виртуальная машина Java.

Более новые версии ОС Symbian поставляются с дополнительным протоколом GCF, который позволяет получать System.out, System.err и Throwable.printStackTrace(), просто используя

javax.microedition.io.Connector.openDataInputStream("redirect://");

Вам может понадобиться использовать «redirect://test» в некоторых версиях Series60 во время перехода с виртуальной машины Sun Ltd cldc-hi на виртуальную машину IBM J9.

Соединение должно быть открыто до того, как вы запустите мидлет, выходные данные которого вы хотите регистрировать, поэтому вам нужно открыть его в отдельном мидлете.

person michael aubert    schedule 30.09.2009

Я нашел этот вопрос с ответами на ведение журнала j2me. Может быть, можно попробовать это, если ничего не работает. Хотя простой способ доступа к System.out.println() был бы неплох.

person Animesh    schedule 24.09.2008

Спасибо за ваш ответ QuickRecipesOnSymbian.

В следующей статье вы можете найти соответствующий мидлет J2ME для отображения стандартной ошибки/вывода на телефонах Symbian:

http://wiki.forum.nokia.com/index.php/How_to_get_System.out_output_from_a_MIDlet_and_save_it_to_a_file_in_S60_devices

Решение отлично работает и на Samsung i8910. (Поскольку я новичок на этом сайте, я не мог разместить более одной ссылки, поэтому вам нужно найти zip с исходниками и jar в конце статьи.)

person user430145    schedule 25.08.2010

Ответ прост: нигде их не увидишь. Он где-то печатает (поскольку многие телефоны замедляются, если у вас много отпечатков), но на большинстве телефонов нет доступа к нему.

Некоторые устройства отображают вывод консоли, например Sony Ericsson, которые показывают все это, если они подключены и запущена программа отладки на устройстве. Вы можете узнать, какие из них делают это, а какие нет, выполнив поиск на сайтах разработчиков (если они существуют) различных производителей.

Лучше всего написать небольшой метод, который добавляется к StringBuffer в вашей программе. Затем сопоставьте нажатие клавиши, которое отобразит содержимое StringBuffer на экране. Это неоценимо для поиска этих неприятных проблем с устройством.

person Shane Breatnach    schedule 27.09.2008

Единственное, что я могу предложить, это то, что это будет сильно отличаться на каждой платформе. Я работаю в основном с BlackBerry, и System.err попадает в журнал событий устройств, но я понятия не имею, куда идет System.out.

person roryf    schedule 24.09.2008

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

Я видел некоторые телефоны, у которых при этом действительно происходит утечка памяти (например, Sanyo 8400 на Sprint.

person Hortitude    schedule 05.10.2008

Регистрация на устройствах всегда является проблемой для J2ME, потому что для нее нет стандартной реализации. Я могу обратиться к вам по адресу GEAR. Это графическая среда J2ME, которая также реализует консоль отладки «в устройстве», где вы можете печатать свои строки и отображать их на экране.

person Stefano Driussi    schedule 13.01.2009

Например, устройства BlackBerry J2ME могут быть подключены к компьютеру, а отладчик может подключиться к этому устройству. Как только вы запустите программу на реальном устройстве, ваш System.out OutputStream переходит в консоль отладчика.

person kozen    schedule 30.04.2009