Schlangenbewegt

Bislang konnte man Programme für Symbian-Handys in C, C++ und Java schreiben. Seit kurzem gibt es auch eine Python-Implementierung für Serie-60-Geräte.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 6 Min.
Von
  • Ramon Wartala

Seit Anfang des Jahres existiert Python für das Symbian-Betriebssystem der Serie 60, das in vielen Nokia-Handys läuft. Damit ist es die zweite Skriptsprache neben OPL, die den Weg auf Mobiltelefone fand. Unterstützt werden Serie-60-Geräte der ersten (Nokia 3650, N-Gage) und der zweiten Generation (6600, 6630, 7610). Darüber hinaus läuft Python auf Modellen anderer Hersteller wie dem Sendo X und dem SX1 von Siemens.

Für beide Systemvarianten stehen auf der Forums-Webseite von Nokia (s. „Python-Symbian im Web“) nach kostenloser Registrierung passende Zip-Dateien parat. Diese enthalten neben den Installationsdateien für Python und einigen Beispielen die drei Handbücher „Getting Started with Python“, „Programming with Python“ und „API Reference for Python“ im PDF-Format. Außerdem gibt es eine Textdatei, die auf Unterschiede zwischen der üblichen und der Symbian-Version eingeht.

Mehr Infos

Eine Symbian-typische SIS-Datei ermöglicht die Installation von Python auf dem Mobiltelefon. Diese benötigt etwas mehr als 1 MByte freien Speicherplatz. Nach dem Aufspielen lässt sich der Python-Interpreter als eigenständige Applikation über das Handy-Menü starten. Per Optionsmenü wählt man zwischen dem Ausführen eines Python-Skripts aus dem Default-Verzeichnis und dem interaktiven Modus des Interpreters.

Python-Skripte befinden sich standardmäßig im Unterverzeichnis...System\Apps\Python, die dazugehörigen Bibliotheken stehen unter ...\System\libs. Für die ersten Gehversuche ist es ratsam, mit der PC-Suite oder einem geeigneten Tool (users.skynet.be/domi/fexplorer.htm) auf dem Mobiltelefon einen Ordner für eigene Programme anzulegen. Das vorinstallierte Python-Skript fileexplorer.py kann die dort befindlichen Dateien ausführen.

Wer ungern Texte über die Handy-Tastatur eingibt, dürfte sich über die Bluetooth-Konsole freuen, die das Eintippen von Skripten auf dem PC ermöglicht. Dazu startet man auf dem Handy das Serverskript bt_console.py, das per Terminalprogramm die Verbindung zu einem PC mit Bluetooth-Adapter herstellt. Auf jenem lassen sich die Python-Programme per Tastatur eingeben. In der Regel wird man jedoch für das Testen eigener Skripte auf das Symbian-SDK für Python zurückgreifen.

Nach der Installation sind bereits eine ganze Reihe Python-Standardmodule verfügbar. Dazu gehören unter anderem anydbm (Datenbankzugriff), atexit, base64 (Datenkonvertierung nach RFC-1521), binascii (Konvertierungsfunktionen zwischen ASCII- und Binärdaten), cmd (Kommandozeilen Tools), codecs, codeop, copy (Kopieren von Objekten), copy_reg, exceptions, httplib und urllib (HTTP-Kommunikation), keyword, re (reguläre Ausdrücke), repr, rfc822 (Message-Manipulation), socket, string (Zeichenketten-Verarbeitung), StringIO (Zeichenketten als Dateien), struct, sys, types, uu (UU-Encode und -Decode), warnings und xreadlines. Mit Hilfe des Symbian-SDK for Series 60 lassen sich Python-konforme Erweiterungen in C oder C++ erstellen. Somit kann man in Python alles benutzen, was die C- beziehungsweise C++-API von Symbian bieten.

Sinn ergibt eine derartige Skriptsprache auf Mobiltelefonen, wenn sie die Nutzung gerätespezifischer Funktionen vereinfacht. Dazu existieren in der vorliegenden Version zwei Arten von Erweiterungen. Die fest eingebauten stellen die Verbindung zu den GUI-Funktionen von Symbian her. Dazu gehört auch eine Bibliothek zur Erzeugung von GUIs für diese Geräteklasse mit dem sinnreichen Modulnamen appuifw. Folgender Dreizeiler gibt beispielsweise eine Variante des allseits beliebten „Hello World“ als Info-Dialog auf dem Handy-Display aus:

import appuifw 
appuifw.app.title = u"Hello World"
appuifw.note(u"Hello Symbian World!", 'info')

Der Python-Interpreter erscheint im Anwendungsmenü (oben links). Per Terminalemulation lassen sich Skripte vom PC aus eingeben (unten links). Oben rechts zeigt ein Python-Skript die GSM-Zelleninformationen an.

Hier steht das „u“ vor den Zeichenketten übrigens für „Unicode“. Dynamisch nachladbar sind darüber hinaus Module zur Verarbeitung eingebauter Datenbanken (Kontakte beziehungsweise Telefonbuch), SMS und eine API zur Abfrage länderspezifischer Informationen wie Ländercode oder Cell-ID. Mit Letzterem ist es einfach, ein Skript zum Verfolgen der aktuellen Position zu erstellen, das anhand der vom Telefon ermittelten Kennziffern eine Standortprotokollierung realisiert. Bislang musste man Tools für solche Aufgaben in C++ schreiben; ein Beispiel ist Celltrack (s. „Python-Symbian im Web“). Jetzt braucht man dazu nur das Skript gsm_location.py (s. Abb.) aus Nokias Python-Forum und eine modifizierte Version des Sport-Diary-Skripts, das im Python-Archiv enthalten ist.

Fertige Skripte verpackt das Programm py2sis in Symbian-übliche Installationspakete:

py2sis meinskript.py c:\meinsis.sis

Wer weitere Beispiele oder Portierungen bestehender Python-Module sucht, sollte einen Blick in Matt Croydons Wiki werfen. Interessant sind auch die Module aus dem PDIS-Projekt des Helsinki Institute for Information Technology (HIIT). Dort gibt es eine Portierung des XML-Parsers pyexpat und mit PDIS-XPath eine auf elementtree basierende XPath-Implementierung. Blogger können sich über die Portierung von PyBlogger freuen.

Noch hat sich Nokia nicht entschieden, Python als festen Bestandteil auf jedem Serie-60-Handy zu installieren. Bleibt abzuwarten, ob der Sprache auf dem Handy ein schneller Erfolg beschieden ist. Zwar ist es in ihr einfacher als mit J2ME, proprietäre Erweiterungen wie OpenGL ES (Embedded Systems, www.khronos.org/opengles) oder eine API für die Spieleentwicklung zu erstellen.

Offen ist jedoch die Frage nach der Zielgruppe. Spieleentwickler werden wohl auch in Zukunft nicht an den üblichen C++-Programmierwerkzeugen vorbeikommen, wollen sie das Letzte aus der Hardware herausholen. Einfache Applikationen allerdings, bisher in J2ME implementiert, könnten in Zukunft zumindest auf Symbian-Geräten mit Python eine performantere Alternative bekommen. Da man damit in die tiefsten Tiefen des Systems einsteigen kann, dürften die ersten Handy-Trojaner und -Viren in Python nicht lange auf sich warten lassen.

Ramon Wartala
ist System Engineer Ad-Solutions bei AOL Deutschland, Interactive Marketing in Hamburg. (ck)