[Update] Widgets mit Windows Mobile 6.5

Seit WM 6.5 werden auf dem Windows Smartphone W3C Widgets* unterstützt. Diese kleinen Mini-Applikationen werden mittels HTML und Javascript implementiert. Folgend eine kleine Beispiel App.

hello-widget

Konfiguration

Eine config.xml definiert die Startdatei (hello.html), ein Icon (hello.png) und ein paar Metadaten.

<?xml version=”1.0″ encoding=”utf-8″ ?>
<widget xmlns=”http://www.w3.org/ns/widgets”
version=”0.1″
id=”">
<name>Hello Widget</name>
<content src=”hello.html” type=”text/html” />
<icon src=”hello.png” />

<author href=”http://www.pc-in-not.net/”
email=”dennis@pc-in-not.net”>Dennis</author>
<description>Dies ist eine kleine Hallo-App.</description>
</widget>

Inhalt

Eine HTML Datei stellt den Inhalt eines Widget dar und wird in der Konfiguration angegeben.

<html>
<head>
<title>Hallo Widget</title>
<script type=”text/javascript”>

var mn1001 = widget.menu.createMenuItem(1001);
mn1001.text = ‘Hilfe’;
mn1001.onSelect = hilfe;
widget.menu.setSoftKey(mn1001, widget.menu.leftSoftKeyIndex);

var mn1002 = widget.menu.createMenuItem(1002);
mn1002.text = ‘Version’;
mn1002.onSelect = version;
widget.menu.append(mn1002);

function hilfe() {
alert(’Wähle eine Sprache um das Wort “Hallo” in diese zu übersetzen.’);
}

function version() {
alert(widget.name+’ v’+widget.version+’ von ‘+widget.authorName+’ ‘+widget.authorURL);
}

function hallo(e) {
var id=e.id;
var s=”;
if (id == ‘en’) s=’Hallo auf Englisch: Hello’;
if (id == ‘es’) s=’Hallo auf Spanisch: Hola’;
var h=document.getElementById(’hallo’);
h.innerHTML=s;
}

</script>
<style type=”text/css”>
</style>
</head>
<body>
<b>Widget Demo</b>
<h1>Hallo</h1>
<p>Dies hier ist ein kleines Hallo-Widget.<br/>Wähle eine Sprache.</p>
<input id=”en” type=”button” value=”Englisch” onclick=”hallo(this)”/>&nbsp;
<input id=”es” type=”button” value=”Spanisch” onclick=”hallo(this)”/><br/>
<br/>
<div id=”hallo”>

</div>
</body>
</html>

In der HTML Datei sind auch die Javascripts für die Steuerung enthalten. Die Script können auch extra abgelegt werden und im src Attribut des Script Elements angegeben werden.

Widget Object

Im Javascript kann das normale DOM Modell fast vollständig genutzt werden. Es gibt ein zusätzliches Object widget, welches einige Sonderfunktionen zur Verfügung stellt, u. a.

  • Belegung der Softkeys
  • Anpassung der Menüeinträge
  • Zugriff auf die Metadaten aus der config.xml
  • SystemState für Daten vom Telefon (Signalstärke, Provider, …)

Die widget und SystemState Objekte sind im Developing Widgets for Windows Mobile 6.5 Guide* beschrieben.

Datenspeicherung/-abruf

Ein Widget läuft in einer Sandbox und kann nicht auf den Speicher (außerhalb der eigenen Sandbox) des Smartphones zugreifen.

Daten befinden sich auf einem Web-Server in Internet und sind dort als XML abgelegt. Der Datenabruf und die Speicherung sind mit XMLHttpRequests* möglich.

Weiter können kurze Texte (max. 4000 Zeichen) in der Sandbox gespeichert werden, auf die ausschließlich dieses Widget zugreifen kann. Diese Daten stehen auch nach Beenden und Neustarten des Widgets wieder zur Verfügung.

Ein Beispiel für XMLHttpRequests bzw. Persistence gibt es im zweiten Teil. Die Funktion ist für Neugierige ;-) ebenfalls im Developer Guide zu finden.

Icon

Für ein Widget ist noch ein Icon notwendig. Dieses kann eine PNG, ICO oder JPG Datei sein und wird in der config.xml angegeben.

hello

Verpacken und Installieren

Die Dateien eines Widgets (config.xml, widget.html, widget.png, ggf. weitere Bilder oder .js Dateien und auch CSS) werden als ZIP Datei gepackt. Anschliessend muss das ZIP nach .wgt oder .widget umbenannt werden.

WM6.5 kann werkseitig nur Widget aus dem Marketplace installieren. Für eine Installation von SD Karte ist eine Anpassung der Registry notwendig.

[HKEY_CLASSES_ROOT\riapp]
“EditFlags”=dword:00010000
[HKEY_CLASSES_ROOT\riapp\Shell\Open\Command]
@=”wmwidgetinstaller.exe %1″

Die Einstellungen der Registry können z. B. mit dem PHM Registry Editor* durchgeführt werden. Nach der Anpassung werden .wgt und .widget Dateien wie gewöhnliche Programmepakete  (.cab) installiert und mit ihrem Icon im Startmenü aufgenommen.

regedit-1 regedit-2

regedit-3 regedit-4

[Update, 27.08.2010] Im Artikel Windows Mobile Registry Editor gibt es eine passende reg-Datei  einschl. Link zum Registry Editor für die Aktivierung der Widget-Installationen (exportiert aus dem WM Emulator).

Beispiel Widget

Das im Sourcecode beschriebene Widget kann hier heruntergeladen werden.

hello.widget

* Für den Inhalt externer Links bin ich nicht verantwortlich und übernehme keine Gewähr.

XMLHttpRequest

Diesen Artikel bookmarken:

    Bookmark [Update] Widgets mit Windows Mobile 6.5 at del.icio.us    Digg [Update] Widgets mit Windows Mobile 6.5 at Digg.com    Bookmark [Update] Widgets mit Windows Mobile 6.5 at Spurl.net    Bookmark [Update] Widgets mit Windows Mobile 6.5 with wists    Bookmark [Update] Widgets mit Windows Mobile 6.5 at Simpy.com    Bookmark [Update] Widgets mit Windows Mobile 6.5 at NewsVine    Blink this [Update] Widgets mit Windows Mobile 6.5 at blinklist.com    Bookmark [Update] Widgets mit Windows Mobile 6.5 at Furl.net    Bookmark [Update] Widgets mit Windows Mobile 6.5 at reddit.com    Fark [Update] Widgets mit Windows Mobile 6.5 at Fark.com    Bookmark [Update] Widgets mit Windows Mobile 6.5 at blogmarks    Bookmark [Update] Widgets mit Windows Mobile 6.5 at YahooMyWeb
Tags:, ,

Trackbacks & Pings

  1. Lexxy´s Welt am 14 Jun 2010 um 11:02 pm

    Das HTC Touch Diamond 2…

    Hallo! Toller und interessanter Beitrag. Ich habe daher einen Trackback zu meinem Blog gesetzt! :-)

Kommentare

  1. Danke für die Beschreibung mit der Registry, ich hatte es trotz der Anleitung auf http://msdn.microsoft.com/en-us/library/dd721906.aspx#DeployingtheWidget
    nicht geschafft!
    (Vielleicht in Tippfehler??)

    Jetzt funktioniert es allerdings.
    Vielen DANK!

  2. Im XDA Developers Forum habe ich folgenden Link gefunden, der ein CAB zur Verfügung stellt, welches die notwendigen Registryanpassungen vornimmt.

    http://www.todaypda.com/wm_widget/enable_widgets_wm6.5.cab

    Ich habe es noch nicht ausprobiert. Aber im XDA Developers Forum gab es dazu nix Negatives.

Kommentar schreiben

Die E-Mail-Adresse wird nicht angezeigt. Felder mit * müssen ausgefüllt werden.

*

*