Mobile Widgets können mehr

Zugriff auf Gerätefunktionen aus Mobile Widgets mittels JavaScript
Kommentare

Nachdem ich im ersten Teil die Grundlagen von Mobile Widgets vorgestellt habe, zeige ich Ihnen in diesem Artikel anhand von zwei praktischen Beispielen, wie Sie in mobilen Widgets mittels JavaScript auf gerätespezifische Funktionen wie GPS oder den Lagesensor zugreifen können.

Mobile Widgets bieten eine Alternative zur klassischen, plattformbezogenen Entwicklung von Anwendungen für mobile Endgeräte. Mittels HTML, CSS, JavaScript und XML ist es möglich, plattformunabhängige Anwendungen zu entwickeln, die in einer browserähnlichen Laufzeitumgebung ausgeführt werden. Diese Laufzeitumgebung bietet zudem die Möglichkeit, mittels JavaScript auf Gerätefunktionen wie Video- und Audio-Player, Adressbuch oder GPS zuzugreifen – eine Möglichkeit, die Web-Applikationen normalerweise nicht zur Verfügung steht und so Mobile Widgets näher an klassische, native Anwendungen heranrücken lässt.

WAC vs. JIL

Wie im ersten Artikel erwähnt, sind die Spezifikationen JIL v1.2.2 und WAC v1.0.0 identisch. Die WAC hat sich daher dazu entschieden, auch den Namespace für die v1.0.0 ihrer Spezifikation vorerst nicht zu ändern, daher lautet er weiterhin http://jil.org/ns/widgets1.2.

WAC Handset API v1.0

Die Grundlage für den Zugriff auf Gerätefunktionen ist die WAC-Handset-API-v1.0.0-Spezifikation. In ihr wird eine Schnittstelle beschrieben, über die es mittels JavaScript möglich ist, auf Eigenschaften und Funktionen des Geräts zuzugreifen. Hierfür steht dem Entwickler ein verschachteltes JavaScript-Objekt namens Widget zur Verfügung, das Variablen, Funktionen und weitere verschachtelte Objekte bereithält, die statisch aufgerufen werden können (Listing 1). Möchte man also bspw. den Audio-Player dazu veranlassen, die Wiedergabe einer Musikdatei zu pausieren, genügt ein statischer Aufruf an die entsprechende Funktion: Widget.Multimedia.AudioPlayer.pause();

Listing 1

Widget = {
  Device: { . },
  Multimedia: {
    AudioPlayer: {
      onStateChange: function(state) { . },
      open: function(fileUrl) { . },
      pause: function() { . },
      play: function() { . },
      resume: function() { . },
      stop: function() { . } 
    },
    .
  },
  Messaging: { . },
  PIM: { . },
  .
};

Nachfolgend möchte ich anhand von zwei Beispielen demonstrieren, wie der Zugriff auf Gerätefunktionen praktisch durchgeführt werden kann. Das erste Beispiel soll zeigen, wie der aktuelle Standort des Geräts ermittelt wird. Anschließend werde ich zeigen, wie Informationen des Beschleunigungssensors abgefragt werden können. Als Basis für diese Beispiele dient mir eine sehr rudimentäre Konfigurationsdatei, die Sie in Listing 2 finden. In ihr lege ich nur eine ID () und den Namen () für das Widget fest und signalisiere der Widget Runtime, dass ich auf die APIs im WAC-Namespace zugreifen möchte (<widget xmlns:JIL="http://www.jil.org/ns/widgets1.2„>). Weitere Konfigurationsparameter können der WAC Developer Website entnommen werden, sind aber – außer dem feature-Parameter – für diese Beispiele nicht relevant. Außerdem benötigt jedes Widget mindestens eine HTML-Datei. Ein einfaches Beispiel findet sich in Listing 3, wo in diesem Fall nur eine JavaScript-Datei namens script.js eingebunden wird, welche die Applikationslogik für diese Beispiele enthält.

Listing 2

HelloWorld

Listing 3


  
    Demo 
Standort

Zunächst möchte ich Ihnen zeigen, wie Sie auf Standortinformationen mittels GPS zugreifen und diese Informationen in ihrem JavaScript-Code verwenden können. Dazu müssen wir zunächst der Laufzeitumgebung signalisieren, dass wir aus unserem Widget heraus auf die entsprechende Schnittstelle, die uns die Standortinformationen liefert, zugreifen möchten. Das wird zwingend von der API-Spezifikation gefordert. Fehlt diese Angabe, quittiert die Laufzeitumgebung Aufrufe an die entsprechende Schnittstelle mit einem Fehler. Um den Zugriff auf die Schnittstelle zu deklarieren, steht innerhalb der config.xml der -Tag zur Verfügung, der zwei Attribute besitzt:

  • Das Attribut name enthält den Bezeichner des API, der aus der Spezifikationsbeschreibung ermittelt werden kann.
  • Das Attribut required kann entweder true oder false sein und signalisiert der Laufzeitumgebung, ob das Widget auch ohne das geforderte API funktional ist. Sollte das Gerät, auf dem das Widget installiert werden soll, ein mit required=“true“ gekennzeichnetes API nicht bedienen können – in unserem Beispiel etwa, weil hardwareseitig kein GPS-Sensor verfügbar ist – so kann das Widget auf diesem Gerät nicht installiert bzw. ausgeführt werden.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -