Python для смартфонов на базе S60: начало

image
Решил написать серию статей про написание программ на Python для смартфонов Nokia на базе Symbian S60.
Python для S60 (или сокращенно PyS60) является open source проектом компании Nokia по портированию языка Python на смартфоны, работающие на платформе S60. Он предоставляет все возможности языка Python а также доступ к специфичным для телефонов функциям, таким как: работа с камерой, календарем, телефонной книгой, GPS, запись и воспроизведение аудио и видео, передача данных через Bluetooth, WiFi и GPRS.
PyS60 является open source проектом и распространяется под лицензиями Apache 2 и Python. На момент написания статьи последняя версия 1.9.1
Итак, начнем!

Для начала установим Python на наш смартфон(также существует возможность установить его и на эмуляторе S60)


Перед установкой нам необходимо знать версию операционной системы нашего смартфона, так как различные версии системы требуют различне версии Python. Для этого заходим сюда, находим в таблице свою модель телефона и смотрим в первой колонке название (к примеру, у меня «S60 3rd Edition, Feature Pack 2»):
Для установки нам потребуются 2 пакета:
  • сам PyS60 (для версий 3rd Edition и новее качаем с maemo garage, для 2nd Edition качаем с SourceForge). Внимание! Качайте только версию для своей операционной системы (к примеру для «S60 3rd Edition, Feature Pack 2» мне понадобился файл Python_1.9.1_3rdEdFP2.sis)
  • PythonScriptShell (аналогично, для версий 3rd Edition и новее качаем с maemo garage, для 2nd Edition качаем с SourceForge). Внимание! Качайте только версию для своей операционной системы (к примеру для «S60 3rd Edition, Feature Pack 2» мне понадобился файл PythonScriptShell_1.9.1_3rdEdFP2.sis)


После этого закидываем оба файла на телефон любым удобным для вас способом и устанавливаем вначале PythonForS60, а затем PythonScriptShell

После установки на карте памяти телефона будет создана папка Python(если по каким то причинам она не была создана, вы можете создать ее сами), в которой и будут храниться все наши .py файлы.

Если появляется ошибка об утсутвствии Python Runtime and PIPS Library, смотрите решение в конце топика

После успешной установки в меню телефона появляется значок Python

Сам Python встречает нас информацией об установленной версии.


image

После нажатия на левую софт-клавишу, будет выведен список возможных операций. Тут можно вызвать предустановленные скрипты, или вызвать интерактивную консоль, что мы и сделаем. Здесь можно поиграть немного с выводом на экран.


image

Интерактивная консоль позволяет писать и целые скрипты, если конечно вам удобно набирать их на клавиатуре телефона.


image

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


image

Предустановленные скрипты раскрывают некоторые из возможностей PyS60. Вот некоторые из них:
  • ball.py — при помощи стрелок мы управляем шариком, который подчиняется некоторым законам физики
  • snake.py – всеми любимая змейка
  • simplecube.py – простой вращающийся куб – показывает возможности PyS60 в 3D
  • gles_demo.py – еще одна демонстрация возможностей 3D

В следующих статьях я рассмотрю как создавать простейшие программы на PyS60 для решения тех или иных задач: файловый менеджер, работа с встроенной камерой, просмотр и обработка изображений и многое другое.

upd: так как на сайте есть блоги посвященные Symbian или Python не смог выбрать в какой из них перенести топик и решил создать новый блог «Python для S60»

upd2: если при установке выдает ошибку об отсутствии Python Runtime and PIPS Library:
  • установите PIPS(P.I.P.S. Is POSIX on Symbian OS) отсюда: http://developer.symbian.com/wiki/display/pub/P.I.P.S. (спасибо nik_the_spirit)
  • либо(если есть эмулятор Symbian на помпьютере) необходимо поставить к нему плагин Open C/C++ отсюда и затем установить на телефоне следующие файлы:
    (они находятся в папке <ваш путь к SDK>\nokia_plugin\openc\s60opencsis)
    1)pips_nokia_1_3_SS.sis
    2)glib.sis
    3)ssl.sis
    4)stdioserver_s60_1_3_SS.SIS

после этого установите Python как было написано выше
+63
27 февраля 2009, 23:39
77
zoc 16,6

комментарии (31)

+6
posthuman #
Было бы интерессно почитать про приложения работающие через интернет.
0
Arion #
Очень актуально, искал для своего телефона нормальный клиент для GTalk, так и не нашел, все или на яве или кривое. Будет интересно почитать продолжение
0
Gasoid #
Умм, твитер клиент на питоне))
+3
YasonBy #
А можно ли запускать скрипты не из-под Python-шелла (скажем, прямо из меню телефона)?
+2
zoc #
да, естественно существует возможность создания полноценного приложения, доступного прямо из меню телефона
+1
n3m0 #
можно. Существует конвертер: py2sys
+3
n3m0 #
извините, py2sis
0
Chaos_Code #
У меня на коммуникатор на базе Windows Mobile. Python на нем стоит, но запускать просто из консоли скрипты не получилось(не из консоли Python), отдельная консоль стоит. Название забыл. Существует ли какое то решение для Windows Mobile?
Очень бы хотелось использовать самописные приложения в работе с коммуникатора :)
+3
Bahusss #
эх, послушать бы про использование сенсора в питоне. Хочу начать писать что-нибудь для 5800 XM.
0
Barttos #
mobilenin.com/pys60/menu.htm Sensor (Nokia 5500 sensor / N95 sensor) и тп.

Поздно, знаю :-)
0
Dexter_Holland #
Он имел в виду сенсорный экран, а не акселерометр.
0
Bahusss #
Спасибо, но я действительно имел ввиду сенсорный экран (тачскрин), а по ссылке работа с акселерометром. Хотя информация по ссылке несомненно полезная.
0
vitaly_KF #
Весьма с запозданием… =)) Но в версии pys60 2.0 лежит пример скрипта, где можно управлять шариком с помощью пальца по тач-скрину.
0
marazm #
Давно искал эту инфу и наконецто. Будем веселиться =) Заодно повод поменять телефон…

Плюс топику и в карму!
+2
cybergrind #
очень интересно, но может кто осветит проблему в 1.9.* с сокетами?
старый socket -> btsocket
в итоге:

import urllib2
urllib2.urlopen('http://habr.ru')

и телефон зависает… тоже с xmlrpclib и далее по списку.
почему-то как решение все пишут:

import btsocket
btsocket.select_default_socket()

на выходе получаем int, который судя по всему надо куда-то и как-то передавать… :(
в стандартной документации есть такое:

n=btsocket.select_default_socket()
apo = btsocket.access_point(apo)
btsocket.select_default_access_point(apo)

после этого вроде как удается работать с сокетами без совсем умираний… но тоже как-то коряво. да и urllib2 от этих процедур не начинает работь

p.s. phone == nokia5800 (может это только у этой модели такое?)

0
p0is0n #
Наверно он возвращает fileno
0
cybergrind #
и где в urllib2 я должен указывать fileno? :\
0
MVM #
Эх, были времена… я на Nokia 6630 писал прямо на телефоне игру на лекциях.)
Потом даже у меня появилась кливиатурка ко смарту, nokia su-8w.
+3
nik_the_spirit #
Может кому будет полезно. Мне для того чтобы все встало на 6120с пришлось еще скачать PIPS(P.I.P.S. Is POSIX on Symbian OS) отсюда
developer.symbian.com/wiki/display/pub/P.I.P.S.
0
zoc #
спасибо, добавил в топик
+2
Vedbmak_dn #
Спасибо, ждем статью по написаню программ. Думаю, будет интересно.
0
Atreides07 #
Интересно, а написанные приложения будут работать только там где установлен Python или же можно компилировать и распространять на другие смартфоны?
0
Atreides07 #
пропустил комментарии выше о py2sis
+1
DnKrozz #
Я могу ошибаться но считаю что новичкам лучше было бы предложить стабильную 1.4 версию.
1.9 это девелоперский тестовый релиз который выпустили для отладки будущей версии 2
И новички на нем вместо обучения будут спотыкаться на багах платформы.
К тому же все мануалы, туториалы, книжки и тп написаны для 1.4
0
ssmaxss #
А можно осветить вопрос с нумераций версий? 1.9 по фичям соответствует какой версии CPython?
+1
DnKrozz #
Там на скриншотах видно
1.9.1 — 2.5.1
стабильный 1.4.5 — 2.2.2
0
WoZ #
предустановленный скрипт imageviewer открывал 2мп фото 2 мин 37 сек. жесть товарищи)
а вообще — отличный тренажер, чтобы выучить раскладку клавиатуры)
0
DnKrozz #
Странно, это явно глюки, на 5700 2-х метровый открылся не медленнее чем в родном вьювере. 2-3 сек.
Питон тут тормозить не может тк там идут вызовы симбиановских ф-ций.
Кст. если что-то таки тормозит всегда можно написать экстеншн к питону на С.
0
zholdas #
интересно, а как вы снимали скриншот с телефона?
0
Maker #
хм… вот честно говоря, у меня S60 3rd Edition, Feature Pack 1. А там для него только SDK лежит. Ни shell`а, ни pyS60 для первого фиче пака нету. Что посоветуете выбрать — Feature Pack 2 или вообще без фиче пака, просто S60 3rd Edition?
0
Kogol #
Я тупой, какой питон качать для Nokia 5800?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.