24
Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas - www.metaviewsoft.de 14.11.09

Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Embed Size (px)

Citation preview

Page 1: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Softwareentwicklung für WebOS

● Überblick WebOS

● Was braucht man?● Aufbau von Mojo● Aufbau einer Anwendung● Beispiel● Der AppCatalog

Henk Jonas - www.metaviewsoft.de 14.11.09

Page 2: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Überblick WebOS

● WebOS: HTML5, CSS, Javascript, Mojo

● HTML5: Datenbank, Canvashttp://www.w3.org/TR/2009/WD-webdatabase-20091029/http://www.whatwg.org/specs/web-apps/current-work/

multipage/the-canvas-element.html#the-canvas-element

● CSS: Animationenhttp://www.webos101.com/-webkit-transition-property

● Javascript: Prototype Frameworkhttp://www.prototypejs.org/

● Mojo: Widgets, Services, APIs

Page 3: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Was braucht man?

● WebOS SDK: http://developer.palm.com/

● Java, Sun VirtualBox● SDK enthält Emulator und Putty● IDE: Eclipse oder Komodo Edit● Dokumentation: nur Online verfügbar

Page 4: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Überblick über die Tools

● Emulator in VirtualBox● Komandozeilen Tools von Palm:

Palm-generate – Erzeuge ein Anwendungsgerüst Palm-package – Erzeuge ein .ipk Palm-install – Installation auf Emulator oder Gerät Palm-launch – Starte eine Anwendung auf Emulator oder Gerät

● Eclipse mit Plug-Ins von Palm

● Komodo Edit mit WebOS Erweiterung von http://webos.templarian.com/

● Putty für Debuglog (localhost:5522, root ohne Pwd, tail -f /var/log/messages, Mojo.Log.error())

Page 5: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Überblick über die Tools

Kurze Präsentation von Eclipse und Komodo

Page 6: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Aufbau von Mojo

● 3 Teile: Widgets, Services, APIs

● Widgets: alle HTML-Element von WebOS HTML: <div x-mojo-element=”...”></div> JS: this.controller.setupWidget(...)

● Services: GPS, Sound, Camera, Maps etc.● APIs: Hilfsfunktionen (z.B.

Mojo.Controller.stageController.pushScene())

Page 7: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Aufbau einer Anwendung

● Stages (Karten), Scenes (UI)● Scene besteht aus Assistant (der Code) und

View (die HTML-UI)

Page 8: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Der Assistent

function MainAssistant() {}● Constructor

MainAssistant.prototype.setup = function() {...}● Hier die Widgets initialisieren: evt. Eventhandler einrichten

MainAssistant.prototype.activate = function(event) {}● Szene wird aktiviert, evt: Eventhandler einrichten

MainAssistant.prototype.deactivate = function(event) {}● Szene wird deaktiviert: evt. Eventhandler deaktivieren

MainAssistant.prototype.cleanup = function(event) {}● Szene wird beendet: aufräumen?

Page 9: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Die Szene

<div id="header" class="palm-page-header"><div class="palm-page-header-wrapper">

<div id="appIcon" class="img_icon"></div><div id="title" class="title">

PUM 2009</div>

</div></div><div x-mojo-element="Button" id="target"></div>[...]

Page 10: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Beispiel

● Periodische Abfrage unserer aktuellen Position● Anzeige von Position, Höhe, Geschwindigkeit, Richtung

etc.● Logging unserer Position in DB● Ermittlung der genauen Oberflächenhöhe durch

Webservice● Zielposition anzeigen (Richtung, Entfernung)● Aufruf von geocaching.com mit aktueller Position

Page 11: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Das Grundgerüst

● Verzeichnis-layout:

appinfo.json – ID, Name, Version etc.

sources.json – verbindet UI mit Code

index.html – Lädt Mojo, Stylesheet etc.

icon.png – das Icon

assistants/stage-assistant.js – Start der Anwendung,

ruft 1. Scene auf

assistants/main-assistant.js – Code für unsere Scene

views/main/main-scene.html – HTML UI

stylesheets/main.css – Stylesheet für UI

Page 12: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Das Grundgerüst

Projekt in Komodo anlegen

Page 13: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Die 1. Szene

1. Szene anschauen

Page 14: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Die aktuelle Position

Aufruf über Service-API:this.controller.serviceRequest("pal m://com.palm.location",

{ method: "getCurrentPosition", parameters: {},

onSuccess: this.positionSuccess.bind(this),onFailure: ...

});

Ergebnis:MainAssistant.prototype.positionSuccess = function(event) {

this.lng = event.longitude;this.lat = event.latitude;

}

Page 15: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Periodische Abfrage

● Timerhandler zum Pollen:

MainAssistant.prototype.timerHandler = function() {this.getPosition();setTimeout(this.timerHandler.bind(this), 60 *

1000);}

Page 16: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Die HTML5 Datenbank

gblDB = openDatabase(Name, Version, Display Name, Est. Size);

Führt SQL-Anweisungen aus:gblDB.transaction(function (tx) {tx.executeSql("...”, [], succ, fail);}

Datenbankcheck zum Start:var locthis = this;gblDB.transaction(function(tx) {

tx.executeSql("SELECT COUNT(*) FROM...", [],function(tx, result) {locthis.start();},function(tx, error) {

tx.executeSql("CREATE TABLE...", [],function(result) {locthis.start();}, function(tx, error) {});});});

}

Page 17: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Aufruf eines Webservices

Aufruf:var url = "http://...”;new Ajax.Request(url, {

method: 'get',evalJSON: 'force',onSuccess: this.requestSuccess.bind(this), on Failure});

Ergebnis:MainAssistant.prototype.requestSuccess = function(json) {

json.responseJSON['Element'];}

Page 18: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Alles zusammen

Testen im Emulator

Page 19: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Eine 2. Szene

assistants/target-assistant.js – Code für unsere 2. Scene views/target/target-scene.html – HTML UI

Eintragung in source.json nicht vergessen!

Aufruf:Mojo.Controller.stageController.pushScene("target");

Page 20: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Eine 2. Szene

2. Szene einfügen, Aufruf per Button

Page 21: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Das HTML5 Canvaselement

● Zum Zeichnen beliebiger Formen auf den Bildschirm

● Definition in HTML-Datei:

<canvas id="myCanvas" width="320" height="320">

● Benutzung in JS-Datei:var canvas = this.controller.get("myCanvas");var ctx = canvas.getContext('2d');ctx.clearRect(...);ctx.drawImage(...);

Page 22: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Aufruf einer Webseite

Aufruf über Service-API:

this.controller.serviceRequest("palm://com.palm.applicationManager", {method: "open",

parameters: { id: 'com.palm.app.browser', params: { target: url } }});

Page 23: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Alles zusammen

Testen im Emulator

Page 24: Softwareentwicklung für WebOS Überblick WebOS Was braucht man? Aufbau von Mojo Aufbau einer Anwendung Beispiel Der AppCatalog Henk Jonas -

Der AppCatalog

● Infos unterhttp://developer.palm.com/index.php?

option=com_content&view=article&id=1796

● Checkliste unterhttp://developer.palm.com/index.php?

option=com_content&view=article&id=1527

● Submission zum Review per Email● Alternative: Homebrew unter

http://www.precentral.net/