Mobile

Ausgereift

Hmm. Ich bin schon ein wenig enttäuscht. Ich dachte GPS in mobilen Endgeräten wäre in den meisten Situationen voll alltagstauglich oder wenigstens bedingt einsetzbar.
Die letzten Tage habe ich beim Fahrrad fahren den kürzlich vorgestellten Sport Track in der Praxis eingesetzt. Hier das ernüchternde Ergebnis:



Nicht das Missverständnisse aufkommen: Ich bin beide Male die selbe Strecke gefahren. Das Handy war beide Male in der selben Seitentasche. Das erste Bild zeigt das Resultat der ersten Fahrt, bei der ich in den ersten paar Minuten kein Signal hatte und schon eine ganze Zeit lang unterwegs war, bevor der Startvorgang eingeleitet werden konnte. Bei der zweiten Fahrt (zweites Bild) war die Initialisierungsphase sehr kurz. Leider gab es nur recht selten ein GPS Signal, so das die Berechnung der Strecke nicht komplett aufgezeichnet wurde. Ich bin davon ausgegangen das der Anwendungsfall "Zeit und Strecke messen" nichts besonders ist und das diese einfache Anforderung problemlos einsetzbar ist.

Lag es vielleicht an der eingesetzten Technik? Ist das Endgerät für einen solchen Anwendungsfall nicht geeignet? Ich werde weiter testen und schauen ob man das Ergebnis beeinflussen und verbessern können. Was ist eure Erfahrung mit GPS und Handys? Was kann man optimieren? Was funktioniert? Freue mich über eure Resultate, Kommentare und Meinungen.

PS: Meine sportlichen "Leistungen" stehen nicht zur Diskussion ;-)

Mobile Web Teil 2 - WRT

Im ersten Teil von "Mobile Web WRT" waren die Widgets noch optimierungsbedürftig. Um es direkt vorweg zu nehmen: sind sie immer noch. Aber es gibt neue Erkenntnisse und zwar in den folgenden Bereichen:
  * Persistente Objekte
  * Zugriff auf Standort Informationen (GPS)
  * Netzwerkzugriffe
  * Aptana Studio und der Emulator

Persistente Objekte
Nicht selten besteht die Anforderung das ein Programm sich bestimmte Daten speichert und das diese Daten beim erneuten ausführen wieder zur Verfügung stehen. Im Zeitalter der "Cloud" kann man natürlich sämtliche Daten einfach an einen Server schicken und diese einfach von dort aus wieder laden. Wir betrachten hier aber die Möglichkeiten von WRT und es ist zum Glück mehr als einfach Daten zu speichern und wieder zu laden. Und das geht so:
   // Save
   widget.setPreferenceForKey("VALUE", "KEY");

   // Load
   var value = widget.preferenceForKey("KEY");

Da wir uns innerhalb eines JavaScript Kontextes bewegen kann man natürlich für den "VALUE" Part auch JSON verwenden und kann so komplexe Objekte auf recht einfache Art und Weise speichern und wieder laden.
Da es ja bei diesem Experiment darum geht möglichst viele Devices zu unterstützen schauen wir schnell ob wir einer proprietären Funktion auf den Leim gegangen sind. Das Resultat ist sehr erfreulich, denn die Funktion finden wir bei:
Opera
Apple/iPhone
Da das "Widget"-Element Bestandteil von WebKit ist, kann es durchaus sein das Android und der Palm Pre diese Funktionen kennen.

Mobile Web Teil 1 - WRT

Ich habe ja vor einigen Tagen angekündigt, das ich hier über Ansätze schreibe, wie man webbasierte Anwendungen auf einem mobilen Endgerät entwickeln kann. Das Ziel ist es, am Ende eine Anwendung zu haben, die nahezu alle marktrelevanten (neuen) Endgeräte abdeckt. Dabei sollte die verwendete Technologie möglichst identisch und der Aufwand gering sein. Mal schauen wie weit wir damit kommen.

Als ersten Kandidaten habe ich mit die Web Runtime Widgets (WRT) ausgesucht. Die nachfolgenden Beispiele beziehen auf Endgeräte mit Touch Screen, bei denen als Basis die S60 5th Edition dient.

Nach aktuellem Stand basieren die folgenden Endgeräte auf der S60 5th Edition:
  * Nokia 5800 XpressMusic
  * Nokia N97
  * Samsung i8910 Omnia HD
  * Sony Ericsson Satio

Um ein Widgets zu erstellen benötigt man HTML, CSS und JavaScript Kenntnisse. Widgets lassen sich auf den Endgeräten installieren und bieten Zugriff auf bestimmte Systemressourcen.
Es gibt diverse Entwicklungstools und ich habe mich für Aptana Studio entschieden da diese Plattform auch iPhone Entwicklung ermöglicht. Leider wird derzeitig nur Windows und kein Linux unterstützt, eine Linux Version ist angekündigt.
Zu Installation und Basics von Aptana Studio möchte ich eigentlich nichts sagen, denn da gibt es gute Ressourcen im Web.

Einführung
In Aptana Studio kann man einfach ein existierendes Widget importieren oder ein neues erstellen. Widgets enden mit der Dateiendung ".wgz", allerdings sind Widgets einfache Zip-Archive. Man kann diese Archive also selber erzeugen und man benötigt Aptana Studio nicht unbedingt.

Mobile Entwicklung

Es ist nun knapp ein halbes Jahr her das ich über die mobile Fragmentierung des Marktes geschrieben habe und seither ist recht viel passiert. Der Markt ist noch stärker fragmentiert. Für den Hersteller, respektive den Entwickler, ist es noch aufwendiger eine breite Masse an Anwendern zu erreichen . Schauen wir uns die aktuelle Situation an. Als erstes schauen wir uns aktuelle Marktzahlen an des gesamten Marktes an.

Marktanteile Q1 2009:

Nokia: 40.43 %
Samsung: 19.91 %
LG: 9.83 %
Motorola: 6.39 %
Sony Ericsson: 6.3 %
Blackberry/RIM: 3.39 %
Apple: 1.65 %
Others: 12.09 %

Quelle: http://www.mobileisgood.com/statistics.php?year=2009

Wenn wir uns diese Zahlen anschauen und einmal den Anteil der Java-fähigen Geräte extrahieren kommen wir auf min. 70 % (Nokia + Samsung + Motorola + Blackberry + ein paar % others).

Die gleiche Betrachtung auf den Smartphone Markt angewendet zeigt (leider nur Q4/2008 Zahlen):

Nokia: 40.8 %
Blackbery/RIM: 19.5 %
Apple: 10.7 %
HTC: 4.3 %
Samsung: 4.2 %
Others: 20.5 %

Quelle: http://www.gartner.com/it/page.jsp?id=910112

Alleine Nokia und Blackberry/RIM kommen auf stolze 60.3 % und ich denke das man auch im Smartphone Markt von einer Java-Abdeckung von min. 2/3 ausgehen kann (und nein, den Win Mobile Java Stack zähle ich nicht dazu).

Was aber, wenn man nahezu 100% abdecken möchte? In Zeiten von Cloud computing und immer besser werdenden Browser Unterstützung liegt eine Webanwendung nahe - gemeinhin auch als Webseite bezeichnet. Interessanter Weise zeichnet sich bei den mobilen Geräten ein Trend ab, der eine Konsolidierung aufweist: Der mobile Browser. Schaut man sich den Trend an, dann zeichnet sich ab, das zukünftig die folgenden Browser auf mobilen Geräten zu finden sind:

WebKit basierend (Safari/Android/Nokia)
IE
Fennec/Firefox
Opera

Das ist eine recht positive Entwicklung denn sie birgt die Chance Entwicklungen einer breiten Masse zur Verfügung zu stellen.

Vom Smartphone zum smarten Phone

in
Der Begriff Smartphone ist ja nicht unbedingt sehr konkret. Ein Smartphone ist ein Telefon welches zusätzlich noch persönliche Informationen verwaltet. Moderne Smartphone sind meiner Meinung nach aber noch nicht smart. Oder anders ausgedrückt: Anhand der zur Verfügung stehenden Daten könnte ein Smartphone wirklich smart werden. Bisher wurde eher versucht existierende Anwendungen auf einen schmalen Prozessor und einen kleinen Bildschirm zu portieren. Nachfolgend ein Schaubild über den mobilen Kontext:



Ein einfaches Beispiel für ein smartes Phone: Ein Benutzer ist im Büro und hat gerade eine Besprechung. Eigentlich eine Information die in einem Smartphone zur Verfügung steht. Ich fände es smart, wenn zu Beginn eines Meetings das Profil in "Besprechung" geändert wird (in fast jedem Meeting hat ein Teilnehmer sein Telefon nicht in diesem Modus und wird prompt angerufen). Das ganze ist noch recht fehleranfällig, denn ein Meeting kann vorzeitig beendet werden, oder es gibt eine Pause. In solchen Fällen wäre es doch nett, wenn das Smartphone wieder das normale Profil übernehmen würde - für den Fall das ein Meeting länger dauert als geplant habe ich übrigens keine Idee, freue mich aber über jede Anregung.

Kling kompliziert? Es ist nicht einfach, aber moderne Smartphones verfügen über leistungsstarke Sensoren und liefern interessante Daten, welche man recht effektiv kombinieren kann. Eine Übersicht über einige Sensoren:


Mobile Darstellung

Heute habe ich mich endlich dazu durchgerungen das bishoph.org auch auf mobilen Endgeräten darstellbar ist. Wurde ja auch höchste Zeit, denn gesurft wird immer mehr auch mit dem Handy. Ich muß noch herausfinden warum die Hauptnavigation nicht dargestellt wird, aber sonst wird reines HTML ohne Stylesheets ausgegeben (nicht schön, aber schön schnell und funktional).

Eigentlich ganz einfach mit Drupal als unterliegendes System: Man installiere die Module "Browscap" und "Mobile Theme". Weiterhin benötigt man noch den "Mobile"-Theme. Nach der Installation sollte man als Admin die Module und den neuen Theme aktivieren. Abschließend deklariert man den "Mobile"-Theme als mobilen Theme. Das war es dann eigentlich auch schon. Viel Spaß beim mobilen Surfen.

Nachtrag: Die Hauptnavigation kann man hinzufügen indem man die folgenden Zeilen in das "Mobile-Theme-Page-Template" kopiert:

<?php if (isset($primary_links)) : ?>
<?php print theme('links', $primary_links, array('class' => 'links primary-links')) ?>
<?php endif; ?>

Mobile Fragmentierung

Der mobile Markt war vor einiger Zeit recht übersichtlich und als Programmierer war klar welche Plattform mit welcher Sprache unterstützt werden musste, um eine breite Masse zu erreichen. J2ME als Technologie reichte aus um plattformübergreifend - manchmal mit devicespezifischen Anpassungen - die Anwendung zu erstellen. Seit einiger Zeit hat sich der Markt allerdings gewandelt und es ist davon auszugehen das sich das zukünftige Bild noch viel stärker verändern wird. Aus Hersteller-/ oder Entwicklersicht sind die aufkommenden Neuerungen nur bedingt positiv. So bleiben nur die Fragen: wie erreiche ich die meisten Anwender, was ist die beste Sprache/Technologie und welches ist der beste Weg dem Benutzer eine positive "user experience" zukommen zu lassen. Eine kurze - ohne Anspruch auf Vollständigkeit - Übersicht.

Apple/iPhone
Im Bereich der "user experience" derzeitig eine der besten Möglichkeiten. Auch der Vertriebskanal ist denkbar einfach (sofern man keine Anwendung hat die Apple nicht passt und von daher nicht im Appstore landet). Wer allerdings noch keine Erfahrungen in Objective-C hat und keinen Apple mit OS X 10.5.2 sein eigen nennt wird nicht weit kommen, es sei denn, man entwickelt eine Web App - hier kann man mit HTML, CSS und JavaScript punkten, hat aber natürlich nicht den vollen Zugriff (na gut, den hat man beim iPhone ohnehin nicht :).

Google/Android

Ubiquität

Ein Wort welches mir in letzter Zeit immer häufiger begegnet ist Ubiquität. Und das obwohl das Wort und der Zusammenhang mit der Informationstechnologie schon einige Jahre alt ist. Ein tolles Wort welches meint, das etwas allgegenwärtig ist. Also immer und jederzeit verfügbar. Mozilla hat kürzlich ein interessantes Projekt veröffentlicht welches den englischen Namen trägt.

Cloud computing und SaaS sind eindeutig Treiber von ubiquitären Systemen. Mail trifft das Wort ubiquitär heute den Nagel fast schon auf den Kopf. Per Webmail, über das Handy, auf dem PC per Fat-Client. Zugriff immer und überall - allerdings müsste man noch an den Daten-Roaming-Gebühren arbeiten, denn die sind eindeutig zu hoch und die Tarfife zu verworren.

Ein weiterer wichtiger Schritt, in eine Zukunft in der uns die Technik ubiquitär unterstützt, ist das Semantische Web. Es gibt eine riesige Menge an Informationen, aber wir sind heute gar nicht in der Lage diese Informationen zu filter und zu nutzen. Auf jeden Fall nicht im Sinne der Ubiquität. Aber ich bin mir sicher, das wir in einigen Jahren einige sehr interessante Anwendungen nutzen werden - die alle in der Cloud als Service angeboten werden bzw. auf Informationen zugreifen - und welche die Nutzer als ubiquitär bezeichnen werden. Nun gut, es kann durchaus sein das wir alle aus Marketing Gründen ein anderes Wort gefunden haben, welches dem dann anstehenden Trend besser entsprechen wird.

Inhalt abgleichen

Back to top