Series 60 (Nokia N-series & E-series, Siemens, Samsung, Motorola, Panasonic)
Windows
Symbian OS und S60
Symbian OS
Betriebssystem für Smartphones und PDAs
Microkernel, 32bit, Single User
GUI-zentriertes Applikations-Framework
S60
Benutzeroberfläche für Smartphones
Aktuell: S60 3rd Edition
Entwicklungsumgebungen
C++, Java, Web Widgets
(Flash Lite), (Python)
Quelle: S60 Platform: Introductory Guide. Nokia Corporation, 2007. http://www.s60.com/business/developers/documents A schematic diagram of the S60 platform architecture.
Python for S60 (PyS60)
Portierung von Python auf S60-Plattform
Entwicklung von NOKIA
Open-Source-Lizenz (Apache Version 2 und Python)
Stable Release
Aktuelle Version: 1.4.5 (03.12.2008)
Verfügbar bei Sourceforge http://sourceforge.net/projects/pys60
Development Release
Aktuelle Version: 1.9.1 (24.01.2009)
Verfügbar bei maemo.org https://garage.maemo.org/projects/pys60
Installation von PyS60 Version 1.9.1 unter Windows
Herunterladen des Installationspaketes (für Windows: PythonForS60_1.9.1_Setup.exe )
Der Installer installiert:
PyS60 Application Packager Ensymble
Python Dokumentation
Symbian Installationsdateien
Installation der Python Runtime und der Dependencies auf dem Smartphone
Entwicklung eigener Extensions per Python/C API möglich
Python S60-Module (1) Betriebssystem-Zugriff und -Information
e32
Zugriff auf Betriebssystem-Funktion von Symbian, die nicht durch GUI-Module oder die Python Standard Library abgedeckt sind, z.B. Scheduler, Process-Management, Drive-Liste, (Py-)S60-Versionen
sysinfo
Systeminformationen, z.B. aktiviertes Profil, Batteriestatus, Displaygröße, gesamter und freier Speicherplatz, OS Version, Signalstärke
Python S60-Module (2) Benutzerschnittstelle und Grafik (I)
appuifw
API für das S60 GUI Application Framework
graphics
Grafik- und Bildfunktionen, z.B. Laden, Speichern, Rotieren & Skalieren von Bildern, Erstellen von Grafiken mit Grafikprimitiven und Screenshots
camera
Aufnahme von Fotos und Video, Einstellen der Kamera-Parameter
keycapture
Abfangen von Tastatur-Events
topwindow
Einblenden von Fenstern über Applikationen, dargestellt wird ein graphics.Image
Python S60-Module (3) Benutzerschnittstelle und Grafik (II)
gles
Python API für OpenGL ES 2D/3D Grafik. Siehe OpenGL ES Standard bei Khronos ( http://www.khronos.org/opengles / )
glcanvas
UI Steuerung für OpenGL ES Grafik
sensor
Zugriff auf physikalische Sensoren (Bewegung/Acceleration, Antippen/Tapping, Rotation)
Python S60-Module (4) Audio und Kommunikation
audio
Audio-Funktionen, z.B. Aufnahme, Abspielen von Audio-Dateien, Lautstärkeregelung, Sprachausgabe ( text-to-speech )
telephone
Telefonie-Funktionen: Wählen, Auflegen und Rückruf
messaging
Senden von SMS und MMS
inbox
Zugriff auf Message-Folder (Inbox, Outbox, Sent und Draft)
location
Abfrage der GSM-Funkzellen-Informationen
positioning
Zugriff auf GPS-Empfänger
Python S60-Module (5) Datenmanagement
contacts
Zugriff auf Adressbuch ( ContactDb ), z.B. Suchen nach Kontakten, Anzeigen von Gruppen, Ändern von Kontaktinformationen, Import/Export von vCards
calendar
Zugriff auf die Kalender-Datenbank ( CalendarDb ), z.B. Hinzufügen und Ändern von Terminen, Ereignissen, Geburtstagen und Aufgaben, Behandlung wiederholender Einträge, Import/Export des vCalendar-Formats
e32db
Schnittstelle zur nativen Symbian Datenbank, z.B. Anlegen von Datenbanken und SQL-Abfragen
logs
Zugriff auf Telefon-Protokolle, z.B. Anrufe, SMS, Daten, Faxe, Mails
Struktur von Applikationen (1) Visuelles Layout
Typisches visuelles Layout von S60-Applikationen
Title Navigation Tabs Body Menu Exit Dialog
Struktur von Applikationen (2) Source-Code-Template
Beispiel „Kontakte-Datenbank“ import contacts db = contacts.open() print u "Searching contacts…" found = db.find( 'guy' ) # search in name, email, etc. for guy in found: firstname = guy.find( 'first_name' )[0].value company = guy.find( 'company_name' )[0].value email_address = guy.find( 'email_address' )[0].value print u "%s
%s
%s" % (firstname, company, email_address) contacts_demo.py
Beispiel „Kamera und File-Upload“ (1) Aufnahme von Bildern import time import appuifw import camera filename = time.strftime( "n95-%Y%m%d%H%M%S.jpg" , time.gmtime()) image = camera.take_photo() image.save(filename) appuifw.note(u "Photo saved to %s" % filename, 'info' ) if imageToURL(filename) == 200: appuifw.note(u "Photo uploaded successfully." , 'info' ) else : appuifw.note(u "Photo upload failed!" , 'error' ) camera_upload.py
Beispiel „Mandelbrot-Menge“ (2) Iterationsschleife for y in range(height): for x in range(width): magnitude = 0 z = 0+0j c = complex(float(y-yaxis)/scale, float(x-xaxis)/scale) for i in range(iterations): z = z**2+c if abs(z) > 2: v = 765*i/iterations if v > 510: color = (255, 255, v%255) elif v > 255: color = (255, v%255, 0) else : color = (v%255, 0, 0) break else : color = (0, 0, 0) canvas.point((x, y), color) e32.ao_yield()
Beispiel „Bewegungssensor“ (1) Abfrage der Beschleunigungssensoren import sensor sensors = sensor.sensors() # Does this device have Accelerator Sensor if sensors.has_key( 'AccSensor' ): SENSOR_ACC = True sensor_data = sensors[ 'AccSensor' ] sensor_acc = sensor.Sensor(sensor_data[ 'id' ], sensor_data[ 'category' ]) sensor_acc.connect(handle_sensor_raw) def handle_sensor_raw(a_data): if a_data.has_key( 'data_1' ): acc_data_1 = a_data[ 'data_1' ] acc_data_2 = a_data[ 'data_2' ] acc_data_3 = a_data[ 'data_3' ]
Beispiel „Bewegungssensor“ (2) Graphische Aufbereitung: „Sensor Analyzer“
0 comments
Post a comment