Schlangenbeschwörung
Seit Nokia seine Series-60-Plattform für die Skriptsprache Python fit gemacht hat, können auch Programmierneulinge schnell und einfach Anwendungen für ihre mobilen Begleiter erstellen.
- Frank Fitzek
Symbian-OS-Smartphones bekommt man inzwischen mit Vertrag schon für einen Euro scheinbar nachgeworfen. Seit Nokia seine Series-60-Plattform für die Skriptsprache Python fit gemacht hat, können auch Programmierneulinge schnell und einfach Anwendungen für ihre mobilen Begleiter erstellen.
Wollte man Programme für Symbian-Smartphones mit Series-60-Bedienoberfläche entwickeln, blieb einem lange nichts anderes übrig, als mit C++ oder Java zu arbeiten. Beide eignen sich zwar für hardwarenahe und effiziente Programmierung, sind aber Anfängern nur schwer begreiflich und nützen für die ersten Schritte wenig.
Seit Nokia ein Entwicklerpaket mit der Skriptsprache Python kostenlos bereitstellt, haben auch Programmiereinsteiger die Chance, mit wenigen Schritten nützliche Applikationen für ihr Smartphone zu erstellen. Python ist leicht erlernbar, enthält aber schon Elemente objektorientierter Programmierung. Mit geringem Programmieraufwand kommt man im Vergleich zu den meisten anderen Programmiersprachen schnell zum Ziel. Weil einzelne Klassen beispielsweise auch aus C++ oder Java angesprochen werden können, braucht der fortgeschrittene Programmierer alten Quellcode nicht wegzuwerfen, sondern kann ihn aus anderen Programmen heraus benutzen. Wer sich mit der Sprache Python vertraut machen möchte, findet im Internet eine Fülle von Anleitungen wie beispielsweise das Tutorial des Python-Erfinders Guido von Rossum [1].
Zwar verarbeitet bislang noch kein Series-60-Gerät von Haus aus Python-Skripte, aber mit wenigen Handgriffen bringt man seinem Smartphone die Sprache bei. Die aktuelle Version 1.2 baut auf Python 2.2.2 auf und bedient die Systemversionen Symbian OS Series 60 1st und 2nd Edition. Nokia legt dem Software Development Kit (SDK) alle nötigen Programmbibliotheken bei, um die Fähigkeiten des Smartphones von der Fotokamera über SMS bis zu Bluetooth-Funk in eigenen Applikationen relativ einfach zu nutzen.
Simulant
Selbst wer kein Series-60-Smartphone besitzt, kann Python-Programme für solche Geräte auf seinem PC erstellen und starten, denn das Python-Paket enthält einen Smartphone-Emulator für PCs mit Windows XP. Der Emulator stellt ein generisches Symbian-OS-Handy mit Series-60-Bedienoberfläche dar, das sich in den meisten Fällen genau wie ein echtes Mobiltelefon verhält.
Aber auch wer bereits ein Series-60-Smartphone besitzt, lernt den Emulator schnell schätzen, spart er doch viel Zeit beim Programmieren und Testen. Zudem erweist er sich zum Prüfen von Applikationen als hilfreich, die gleichzeitig auf mehreren Smartphones laufen sollen (beispielsweise für Peer-to-Peer-Netzwerke), falls die nötigen Endgeräte fehlen. Im PC öffnet man beliebig viele Emulator-Fenster, die auch untereinander kommunizieren können. Sogar GPRS-Verbindungen gaukelt der Emulator vor und nutzt dabei die Internet-Verbindung des PC. Zum Testen gerätespezifischer Funktionen wie Kamera oder Mobilfunk braucht man allerdings ein echtes Smartphone.
Installation
Am Beispiel der aktuell am meisten verbreiteten Systemversion Series 60 2nd Edition zeigen wir, wie man PC und Smartphone fit für Python macht. Alle benötigten Dateien stehen unter kom.aau.dk/project/mobilephone/Python/ zum Download bereit.. Man findet sie allerdings auch - nebst der Entwicklerpakete für alle anderen Series-60-Versionen - auf dem Entwicklerportal von Nokia [2]. Für die Installation benötigt man einen Rechner mit Windows XP SP1 oder höher.
Um das SDK mit dem Emulator, der Dokumentation und weiteren nützlichen Tools auf dem PC zu installieren, lädt man die für sein Smartphone-System passende Datei herunter, entpackt sie und führt das enthaltene Setup-Programm aus. Soll der Emulator die Internet-Verbindung des PC für virtuelle GPRS-Verbindungen benutzen, muss man gegen Ende der Installation eine Netzwerkverbindung hierfür auswählen. Auch wenn das Installationsprogramm auf Kompatibilitäten zu C++-Compilern verweist, kann man diese für Python geflissentlich ignorieren.
Das Beispielprogramm fragt die aktuelle Funkzelle ab und sendet bei Erreichen der Homezone eine SMS an eine beliebige Handy-Nummer.
Nach einem Neustart des Rechners spielt man die Python-Komponenten auf seinen PC. Hierzu lädt und entpackt man das passende Python-SDK und führt die darin enthaltene Installationsdatei aus. Das Setupprogramm richtet innerhalb der SDK-Installation ein Verzeichnis für die Python-spezifische Dokumentation und andere nützliche Programme ein. Der Ordner enthält beispielsweise eine Auflistung und Erläuterungen sämtlicher Python-Programmbibliotheken für Series 60 und einen Python-Einführungskurs. Das Installationsprogramm kopiert automatisch die nötigen Dateien des Python-Interpreters samt einiger Beispielprogramme in das richtige Verzeichnis des Emulators. Nach der Installation sollte nun in der Debug-Version des Emulators in der Hauptgruppe des Menüs das Schlangen-Symbol für den Series-60-Python-Interpreter erscheinen. Wer noch kein PC-Python ab Version 2.2.2 hat, installiert sich die aktuelle Version. Dazu startet man das Einrichtungsprogramm python-2.4.2.msi.
Mobilmachung
Um das Python-Paket auf sein Series-60-Smartphone zu installieren, braucht man Abgleich-Software, bei Nokia-Handys die PC-Suite. Für jede Series-60-Version (1st und 2nd Edition) stellt Nokia eine passende SIS-Programmdatei bereit. Im Falle der 2nd Edition handelt es sich um die Datei PythonForSeries60_for_2ndEd_SIS.zip, in der sich die Smartphone-Programmdatei PythonForSeries60.SIS befindet, welche die Abgleich-Software mit einem Doppelklick auf das mit dem PC verbundene Smartphone schiebt. Sobald die Installation abgeschlossen ist, entdeckt man im Hauptmenü des Handys das Python-Symbol in Form einer grünen Schlange.
Beim Start von Python auf dem Smartphone oder dem Emulator öffnet sich die Konsole des Python-Interpreters, auch Python-Shell genannt. Dort können Befehle direkt eingegeben und die Ergebnisse sofort begutachtet werden.
Die Eingabe der Befehle mit der Nummerntastatur des Handys ist relativ mühsam. Wer ein Bluetooth-fähiges Smartphone und einen ebensolchen PC sein Eignen nennt, tippt alternativ die Befehle über HyperTerminal vom PC aus ein. Dazu startet man auf dem PC das Programm HyperTerminal aus der Rubrik Kommunikation im Zubehör-Ordner des Startmenüs. Name und Symbol der neuen Verbindung, die das Programm vorschlägt, können Sie beliebig wählen. In das Feld "Verbindung herstellen über" im folgenden Dialog gehört die von Ihrer Bluetooth-Software emulierte serielle Schnittstelle. Wenn sich HyperTerminal beschwert, die Schnittstelle sei belegt, läuft vermutlich Ihre Handy-Synchronisationssoftware noch, die erst geschlossen werden muss. Bei aktiviertem Bluetooth-Funk startet man nun auf dem Handy die Python-Shell und wählt aus dem Menü die Funktion "Options/Bluetooth console" aus. Nach erfolgter PC-Koppelung sieht man sowohl auf dem Smartphone als auch auf dem Hyperterminal einen Eingabebildschirm. Alles, was nun im Terminal-Fenster des PC eingetippt wird, erscheint auch im Smartphone. So eingerichtet erstellt man schnell sein erstes Python-Programm, indem man einfach die Befehle in die Python-Shell eingibt:
import appuifw
appuifw.note(u"Hello World!","info")
Bei korrekter Eingabe unter Beachtung von Groß- und Kleinschreibung erscheint als Ergebnis eine Infobox auf dem Handy, in welcher der Unicode-String "Hello World!" steht. Will man die einzelnen Befehle in ein Programm zusammenfassen, muss man den PC bemühen, weil die Python-Shell auf dem Smartphone nichts speichern kann. Zur Eingabe genügt zwar Notepad, aber Python für Windows liegt der Editor Idle bei, der immerhin schon Syntax-Hervorhebung und grundlegende Debug-Funktionen mitbringt. Um das Beispielskript im Emulator zu testen, müssen die Programmzeilen unter hello.py in dessen Python-Verzeichnis abgespeichert werden. Über den Befehl "Run Script" im Python-Menü des Emulators kann man das Programm nun starten, und wenn alles gut gegangen ist, erhält man das gleiche Ergebnis wie zuvor.
Mittels Bluetooth und HyperTerminal überträgt man Tastatureingaben von seinem PC auf das Smartphone.
Um hello.py auf dem Mobiltelefon zu testen, muss zuerst wieder eine Verbindung zwischen PC und Smartphone hergestellt werden. Danach das Python-Skript im Windows-Explorer mit der rechten Maustaste anklicken und an das Handy senden. Auf dem Mobiltelefon sollte sich daraufhin der Python-Installer melden, der die Freigabe für das Skript benötigt. Er erkennt Python-Skripte und -Objekte mit den Endungen .py, .pyc, .pyo und .pyd automatisch und ordnet sie je nach Nutzerangabe dem richtigen Verzeichnis im Smartphone zu.
Vor dem endgültigen Abspeichern fragt der Installer nach, ob die Datei als Python-Skript ("Python script") oder als Bibliothekselement ("Python lib module") abgespeichert werden soll. In diesem Fall muss die Datei als Python-Skript abgelegt werden. Nach der Installation sollten beim Aufruf des Skriptes hello.py keine Unterschiede zwischen der Ausgabe auf dem Emulator und auf dem Smartphone zu sehen sein.
Um Python-Applikationen ohne den Umweg über den Interpreter wie ein gewöhnliches Programm aufrufen zu können, muss man sie in eine SIS-Datei verpacken. Dazu dient das im Python-SDK enthaltene Programm py2sis. Es liegt standardmäßig im Tools-Verzeichnis des SDK-Installationsordners und nimmt - in einer Eingabeaufforderung - den Namen der umzuwandelnden Python-Datei als Befehlszeilen-Parameter entgegen. Die fertige SIS-Datei kann man dann wie gewohnt auf dem Smartphone installieren. Damit das Programm läuft, muss allerdings trotzdem der Python-Interpreter auf dem Smartphone installiert sein.
Gut angepasst
Das Python-SDK enthält in seinen Bibliotheken Funktionen, Methoden und Objekte zur gezielten Steuerung von Symbian OS Series 60. Zwei von ihnen lädt der Interpreter gleich beim Start: Die e32-Erweiterung hält Symbian-OS-spezifische Dienste bereit. Die schon bei der Hello-World-Applikation genutzte appuifw-Bibliothek kümmert sich um die Steuerung von Bedienelementen (Fenster, Buttons, Symbole).
Weitere dynamisch nachladbare Bibliotheken sind graphics (alles rund um die Grafikausgabe), e32db (Datenbank), messaging (SMS-Verwaltung), location (Funkzellen-Informationen), sysinfo (Systeminformation zum Series-60-Smartphone), camera (alles rund um die Kamera), audio (Aufnehmen und Abspielen von Audiodateien), telephone (zwei Funktionen zum Initiieren und Beenden von Telefongesprächen), calendar (Funktionen zum Erstellen und Manipulieren von Kalendereinträgen) und contacts (Funktionen um das Adressbuch zu bearbeiten). Mit den dynamisch nachladbaren Bibliotheken steuert man die meisten Funktionen des Handys schnell und einfach. Möchte man zum Beispiel eine SMS an die Nummer 1234567 versenden, reichen folgende Befehle:
#SMS versenden
from message import *
sms_send("1234567", u /
"Hello World per SMS")
Mit genauso wenigen Schritten knipst man Bilder mit der Handy-Kamera, erzeugt Adresseinträge oder steuert die Aufnahme von Audiosignalen. Eine genaue Auflistung der einzelnen Bibliotheksfunktionen findet man in der Dokumentation des SDK.
Die eigene Homezone
Ein komplexeres Beispiel zeigt, wie schnell sich Konzepte in Python für Series-60-Smartphones umsetzen lassen. Das folgende Programm identifiziert die Funkzelle, in der sich das Smartphone gerade befindet, und vergleicht sie mit einer vorher festgelegten. Dadurch erzeugt man mit wenigen Schritten praktisch eine eigene Homezone - wenn auch nicht gebührentechnisch, so doch wenigstens geografisch.
Betritt man den Bereich seiner vorher festgelegten Homezone, soll das Smartphone automatisch eine SMS an eine vorgegebene Mobilfunknummer versenden. Das könnte beispielsweise ein Familienmitglied sein, welches nun Bescheid weiß, dass der Vater bald zu Hause ist.
"Hello World!"-Ausgabe auf dem Emulator des Software Development Kits (SDK) für Symbian OS Series 60
Das Programm setzt beim ersten Start die aktuelle Funkzelle als Homezone. Alle 20 Sekunden prüft die Applikation auf einen Funkzellenwechsel. Beim Wiedereintritt in die Homezone schickt das Programm eine SMS. Danach terminiert es, damit nicht mehrere SMS versendet werden, sollte man zwischen zwei Funkzellen pendeln.
Der Grundaufbau des Listings dürfte Python-Programmierern geläufig sein. Allerdings umfasst das Programm auch einige Symbian-spezifische Funktionen, die fremd sein dürften. Mit dem Setzen der Systemvariable appuifw.app.screen auf "large" (Zeile 6) öffnet man beispielsweise einen Bildschirm, der keine Titelzeile, aber Softkeys enthält. Bei appuifw.app.body handelt es sich um einen Zeiger auf das Bedieninterface der Applikation, das mit der canvas-Zuweisung in den Zeilen 7 und 8 als reine Bitmap initialisiert wird. Zur Zellinfo-Ausgabe würde zwar auch ein Textfenster reichen, wer aber später die Zelleninformationen grafisch darstellen möchte, kann auf diesen Programmcode aufbauen.
Um Bildschirmflackern vorzubeugen, erfolgt die Grafikausgabe in der Routine PaintCanvas übrigens zunächst in eine Speicher-Bitmap, die der blit-Aufruf in Zeile 48 in einem Rutsch in den angezeigten Bildschirm überträgt.
Die set_exit-Funktion ab Zeile 16 dient zum Beenden des Programms. Sie wird der Applikation als Handler für den Schließen-Softkey zugewiesen und mit dem Menü-Eintrag "Quit" verknüpft. e32.ao_sleep veranlasst das Smartphone, 20 Sekunden bis zum nächsten Prüfvorgang zu warten, wobei dem Prozessor für die übrigen Funktionen des Handys Rechenzeit zur Verfügung gestellt wird. Mit messaging.sms_send in Zeile 45 übermittelt das Smartphone eine Nachricht an eine beliebige Telefonnummer. Denkbar wäre hier auch ein anderer Funktionsaufruf, der womöglich von Ferne per Funk eine Kaffeemaschine startet oder das Licht einschaltet - sozusagen ein Smarthome, gesteuert via Mobilfunk. Wer sich für weiterführende Beispielprogramme diesbezüglich interessiert, findet in der Zusammenstellung unter kom.aau.dk/project/mobilephone/Python/ mehr Material dazu.
|
Fazit
Python ist leicht zu erlernen und der Programmcode wegen der durchdachten Syntaxkonventionen übersichtlich und schnell begreiflich. Das Beispiel zeigt, dass Python durchaus auch für komplexere Aufgabenstellungen taugt, weshalb auch Profi-Programmierer gern zu dieser Skriptsprache greifen, um Konzepte schnell und einfach zu verwirklichen oder erste Prototyp-Programme zu entwickeln. Spezielle Funktionen der Series-60-Smartphones nutzt man flugs mit den zahlreichen Programmbibliotheken von Nokia.
In vielen Fällen kann man sogar ganz auf die bewährten, aber komplizierteren Hochsprachen C++ oder Java verzichten. Und lässt das Python-Entwicklerpaket doch einmal eine Funktion vermissen, ergänzen fortgeschrittene Programmierer Python-Skripte durch eigene Module, beispielsweise in C++. Die dazu nötigen Kenntnisse erwirbt man sich durch Tipps aus den zahlreichen Foren und Online-Literatur wie beispielsweise dem Nokia-Entwicklerportal. Die Umsetzung von Python für Series-60-Smartphones zeigt, dass die Zeiten, in denen Applikationsentwicklung für Smartphones IT-Profis vorbehalten waren, vorbei sind. (dal)
Literatur
| [1] Python Tutorial (Guido von Rossum): Ypython.org/doc/current/tut/ |
| [2] Python for Series 60 Platform (API-Reference Version 1.2): www.forum.nokia.com/python |
| [3] Python Programming Language (offizielle Webseite): www.python.org |