Tutorial: Entwicklung eines Prototypen für Google Android mit Eclipse

Nun ist es schon etwas mehr als eineinhalb Jahre her, dass ich mich zum ersten mal mit Google Android beschäftigt habe. Damals war das Google Android SDK noch in der Beta-Phase und mobile Hardware (mobile Endgeräte) für Android gab es noch nicht zu kaufen. Stattdessen konnte man für einen Device Emulator entwickeln, auf dem man seine Anwendung testen kann.

Aber Google hatte schon in dieser frühen Phase einen Wettbewerb (Android Developer Challenge) ausgerufen. Ich hatte mich entschlossen, an diesem Wettbewerb teilzunehmen (natürlich auch in der Hoffnung, wenigstens einen Teil des Preisgeldes zu gewinnen …. ; ) Leider hat mein Engagement nicht zum gewünschten Ergebnis geführt…

Damit meine Erfahrungen, die ich mit Google Android gemacht habe, nicht ganz in Vergessenheit geraten, habe ich mich entschlossen, einen Screencast in Form eines Tutorials aufzuzeichnen. Alle Interessierten können sich den Screencast hier kostenlos ansehen oder herunterladen. Vielleicht hilft es ja Einsteigern, die sich mit dem Thema „Entwicklung für mobile Endgeräte“ oder „Google Android“ befassen wollen.

Wichtiger Hinweis: Ich habe mich entschlossen, kleinere Stolpersteine und aufgetrene Fehler, auf die ich während der Aufzeichnung gestossen bin, nicht herauszuschneiden. Denn so etwas gehört zum Entwickleralltag einfach dazu und kann ebenfalls sehr lehrreich sein…oder?

Viel Spass beim Zuschauen!


Bookmark

Zend Toolbar: Firefox und Vista – DebugNextPageMI is null

Problembeschreibung

Eben hat mich das Problem erwischt, dass beim Starten des Firefox (mit Zend Studio Toolbar zum Debuggen) folgende Fehlermeldung aufgetreten ist (Dialogbox, nur ein ‚OK‘-Button klickbar):

DebugNextPageMI is null

Die Zend Studio Toolbar erscheint dann nicht mehr und ist auch nicht funktionsfähig. Auch ein Deaktivieren und anschließendes Reaktivieren, sowie eine Deinstallation und anschließende Re-Installtion hat keinen Erfolg gepracht (die Fehlermeldung blieb).

Lösung

Dieses Problem mit der Zend Toolbar scheint nicht neu zu sein, immmerhin habe ich einen Blogbeitrag entdeckt, der eine Lösung beschreibt: DebugNextPageMI is null.
Die Lösung besteht also darin, den Firefox im „Abgesicherten Modus“ zu starten und im Dialogfeld, dass sich beim Starten des Firefox öffnet den Punkt „Toolbars zurücksetzen“ auswählen. Als Anmerkung zum eben zitierten Beitrag möchte ich jedoch hinzufügen, dass unter Windows Vista (zumindest bei mir) der beschriebene Befehl für den abgesicherten Modus

C:\Program Files\Mozilla Firefox\firefox.exe -safe-mode

nicht funktioniert (der Firefox startet weiter im „normalen“ Modus, vielleicht liegt es daran, dass ich mehrere Profile im Firefox aktiv habe). Letztendlich funktioniert hat es, indem ich im Startmenü von Vista nach „Firefox“ gesucht habe und dann die Verknüpfung „Mozilla Firefox (Abgesicherter Modus)“ angeklickt habe.


Duplicate Content: Google hat ein sehr langes Gedächnis…

Im November 2008 habe ich einige Modifikationen an bestimmten URLs der Webseite www.location-bretagne.de vorgenommen. Ausserdem war mir aufgefallen, dass wir einige hundert URLs hatten, die in verschiedener Schreibweise zum gleichen Inhalt führten. Auch wenn Duplicate Content auf der selben Website (zumindest bei Google) als Problem nicht allzu sehr überschätzt werden sollte (Demystifying the „duplicate content“ penalty), ist es doch nicht besonders schön.

Also habe ich mir die Mühe gemacht, alle nicht gewünschten URL via 301-Redirect auf die entsprechende bevorzugte Stamm-URL zu leiten, wie es Google in seiner Webmaster-Hilfe vorschlägt.

Richtig spannend finde ich nun die folgende Beobachtung: Mittlerweile haben wir es Ende Mai 2009 (also knapp 7 Monate später). Google kenn aber immer noch viele der alten URLs, die es vor November 2008 aufgeschnappt haben muss, denn im November habe ich sowohl sämtliche internen Links entfernt als auch wie eben beschrieben die 301-Redirects eingerichtet. Wir haben heute den 22.05.2009 und Google ruft immer noch hunderte dieser „uralten“ URLs auf…

Dieses „Elefanten-Gedächnis“ habe ich weder bei Yahoo! noch bei MSN Live Search beobachten können (dort war nach ca. 1-2 Monaten Schluss mit dem Aufrufen nicht mehr vorhandener URLs).

Google scheint also über zuviele Speicher- und CPU-Ressourcen zu verfügen, denn ansonsten würden sie wohl etwas ‚ökonomischer‘ damit umgehen…. : )

Roomba 560/580: Massive Probleme – Virtual Lighthouses wachen nicht auf!

Einführung

Zu meinem Roomba 580, den ich wie zuvor beschrieben, letztes Jahr mangels Verfügbarkeit in den USA bestellt habe, werden standardmäßig drei Virtual Lighthouses / Walls mitgeliefert. Da ich einen Virtual Lighthouse in den Betriebsmodus „Virtual Wall“ gesetzt habe, aber aufgrund der Raumaufteilung in meiner Wohnung drei Virtual Lighthouses benötige, entschied ich mich vor einigen Wochen, einen weiteren Lighthouse (in Deutschland) zu bestellen.

Funktionsweise

Wie im Artikel „Virtual-Walls und Lighthouses im Detail“ beschrieben, arbeiten die „virtuellen Leuchttürme“ sowohl mit Infrarot- als auch mit Funk-Kommunikation. Grob gesagt, werden die Virtual Lighthouses vom Roomba durch ein Funksignal aus dem Standy-Betrieb geweckt, weiterhin kann der Roomba via Funk ermitteln, wie viele Virtual Lighthouses sich im Wohnraum befinden.

Im zitierten Artikel wird beschrieben, dass der iRobot Roomba anhand der Anzahl der Funktürme sein Reinigungsprogramm plant. Der Infrarotstrahl wird nur als Leit- bzw. Begrenzungsstrahl benötigt, wenn Roomba auf ein (aktives) Lighthouse trifft.

Probleme mit der Funkkommunikation vom Roomba

Seitdem ich das vierte Lighthouse in Betrieb genommen haben, häuft sich leider folgendes Problem, das vorher nur sporadisch aufgetreten ist:

Die Virtual Lighthouses erwachen nicht aus dem Standy, sobald der Romba seinen Reinigungszyklus beginnt. Früher waren die Lighthouses auch nicht immer sofort, zumindest aber nach einigen Minuten aus dem Standby erwacht. Genauer: Meistens wachen ein oder zwei Virtual Lighthouses auf, die anderen bleiben zunächst einfach im Standy Modus.

Roomba findet nicht mehr die Basis-Station

Problematisch wird dieses Verhalten durch folgende zwei Auswirkungen:

  1. Wie im Artikel „Virtual-Walls und Lighthouses im Detail“ beschrieben, hat offensichtlich die Anzahl der erkannten Virtual Lighthouses einen Einfluss auf die Planung des Reinigungszykluses: Je mehr Virtual Lighthouses Roomba erkennt, desto weniger Zeit wird er sich pro Raum nehmen (können). Problematisch ist nun, dass Roomba zunächst keins (im schlimmsten Fall), eins oder zwei Lighthouses erkennt und „glaubt“, die Reinigungsfläche wäre kleiner, als sie tatsächlich ist. Dieses Problem ist eher theoretisch, konnte ich in der Praxis noch nicht nachvollziehen.
  2. Viel schlimmer ist nun folgendes Verhalten: Da einige Virtual Lighthouses nicht aus dem Standby erwachen, durchfährt Roomba diese, so als ob sie nicht existent wären. Irgendwann einmal (sei es nach 30, 45 Minuten oder noch später erwachen dann die zunächst „toten“ Leuchttürme doch noch. Promblematisch ist nun, dass Roomba beim ersten Durchfahren nicht registriert hat, ein Virtual Lighthouse passiert zu haben. Auf dem „Rückweg“ zu Basisstation steht nun das zu spät aktivierte Lighthouse „im Weg“. Roomba glaubt nun, dass es der falsche Weg zurück zur Basisstation ist, da er es auf dem Hinweg nicht registriert hat. Folge: Roomba findet nicht mehr zurück zur Basisstation und sucht so lange, bis der Akku leer ist..

Übrigens: Trägt man nun Roomba per Hand zur Ladestation, so scheint mein Roomba (Roomba 580) den letzten Irrtum sich gemerkt zu haben und startet sein neues Reinigungsprogramm ebenfalls fehlerhaft. Nun hilft nur, Roomba manuell sofort wieder andocken zu lassen (und dann einen erneuten Reinigungszyklus zu starten) oder einen „Reset“ durchzuführen (10-20 Sekunden die Spot-Taste und die Dock-Taste gleichzeitig zu drücken).

Ermittelt: Es ist kein spezifisches Problem meines Roomba’s…

In folgendem Foren-Beitrag wurde die Vermutung aufgestellt, es könnte ein „defekt“ des Roomba sein (Roomba sendet zu schwache Funksignale): Lighthouse „pennt“. Diese Vermutung kann ich in meinem Fall nicht bestätigen. Zur Sicherheit habe ich mir einen Roomba meines Kollegens ausgeliehen (Roomba 560). Ergebnis: Trotz mehrfachen Resets und „Batterie-Wechsel-Aktionen“ an den Lighthouses (vgl.  immer Probleme mit Lighthouses nach Batteriewechsel) bleibt das eben beschriebene Problem unverändert bestehen. Es ist also sehr unwahrscheinlich, dass zwei Roomba den gleichen Defekt zur gleichen Zeit aufweisen…

Vermutung: Es liegt an Funkstörungen…

Viel wahrscheinlicher halte ich Störungen in der Funkübertragung vom Roomba zum Virtual Lighthouse ursächlich… Störungen durch Mobilfunkmasten (vgl. http://www.roombaforum.com/showthread.php?p=5926) halte ich für unwahrscheinlich (dies hat mir auch ein Elektrotechnik-Ingeneur bestätigt). Immerhin senden GSM-Mobilfunkstationen bei ca. 900 MHz bzw. 1800 MHz (vgl. GSM) und UMTS-Mobilfunkstationen bei ca. 1,9 – 2,2 GHz (vgl. UMTS). Viel wahrscheinlich ist, dass die Störungen vom 2,4 GHz Band ausgehen. In diesem Band „tummeln“ sich vor allem W-LAN und Bluetooth.

Die Virtual Lighthouses selbst funken ebenfalls im 2,4 GHz Band, und zwar genauer auf Kanal 0,7 und 15. Diese Informationen erhält man, indem man mit der FCC-ID Nummer auf der Homepage der Federal Communications Commission sucht (die FCC-ID Nummer, die auf meinen Virtual Lighthouses aufgedruckt ist, lautet: UFE-R3MOD24A.

Gibt es Lösungsansätze…?

Meine Hoffnung war, dass sich das Problem lösen würde, sobald ich alle Funksender und -empfänger in meiner Wohnung deaktiviere. Wenn bei deaktiviertem Funk das Problem gelöst worden wäre, hätte ich schrittweise die Geräte mit Funk wieder eingeschaltet (davon gibt es einige in meiner Wohnung) bis ich den „Übeltäter“ gefunden habe. Leider hat diese Strategie nicht funktioniert. Selbst als ich alle Funksender (und -empfänger) in meiner Wohnung deaktiviert hatte, blieb das Problem bestehen.

Allerdings hat eine Analyse ergeben, dass viele meiner Nachbarn ebenfalls mit W-LAN funken (wenn ich es richtig in Erinnerung habe, sind es dieses Jahr noch deutlich mehr Nachbarn mit W-LAN als letztes Jahr). Da ich in sehr dichtbesiedelter Innenstadtlage wohne, ist es dazu extrem schwierig (wenn nicht unmöglich), die vielen W-LANs konkreten Nachbarn zuzuordnen…

Fazit: Im Moment erscheint mir die einzige Lösung, komplett auf die Virtual Lighthouses zu verzichten oder die ständigen Probleme bei der Rückkehr des iRobot Roomba zur Basisstation in Kauf zu nehmen. Sobald ich neuere Erkenntnisse habe oder sogar eine Lösung werde ich natürlich an dieser Stelle darüber schreiben.

iRobot Roomba: Fernbedienung (Wireless Command Center) mit Roomba verbinden (pairing)

Für alle, die zur Lösung von technischen Problemen lieber die Suchmaschine als das Handbuch befragen oder bei denen die Anleitung zum Verbinden (pairing) der Fernbedienung mit dem Roomba schlicht fehlt:

Die Fernbedienung (Wireless Command Center) ist entweder mitgeliefert bzw. kann als Zubehör bestellt werden (ab Roomba 560). Allerdings funktioniert die Fernbedienung nicht aus dem Stand, sondern diese muss zunächst mit dem Roomba bekannt gemacht werden.

Die Anleitung Wireless Command Center einrichten erläutert Schritt für Schritt,  wie der „Paarungsprozess“ aussieht. Eine Anmerkung meinerseits: Der Satz „Halten Sie das Wireless Command Center nahe zu Roomba und drücken Sie die Richtungstasten“ ist wörtlich zu nehmen. Bei mir hat es nur funktioniert, wenn ich mit der Fernbedienung den Roomba fast(!) berührt habe.

Möglicherweise habe ich aber in meiner Wohnung ein Funkproblem – meine Virtual Walls verhalten sich leider nicht so, wie gewünscht. Aber dazu mehr im nächsten Bericht.

Bretagne in Deutschland: Bretonische Küche im Ti Breizh Hamburg

Als deutscher Freund der bretonischen Lebensart hat man es nicht leicht: Die Bretagne ist ja nun nicht gerade ‚um die Ecke‘ und man kann ja nicht immer Urlaub haben….
Wenn man es zumindest bis nach Hamburg schafft, gibt es einen Lichtblick: Das Restaurant Ti Breizh in der Deichstraße 39 in Hamburg. Dort gibt es bretonische Küche mit Cidre, Crêpes und Galette. Die Inneneinrichtung erinnert tatsächlich ein wenig an eine bretonische Strand-Bar – sehr schlicht und hell, die Bedienungen tragen blau-weiß gestreifte T-Shirts im ‚Matrosen-Look‘. Die Speisen werden übrigens mit einem freundlichen ‚Bon-Appetit‘ serviert.
Sitzt man im hinteren Bereich des Restaurants so erinnert der Blick auf den Kanal tatsächlich ein wenig an den Atlantik in der Bretagne (natürlich nur fast :-).

Für Alle, die dann immer noch nicht genug von der Bretagne bekommen haben ist im Restaurant noch ein kleiner Bretagne-Shop integriert.

Fazit: Für echte Bretagne-Freunde ein Muss – für alle anderen ein interessantes und lohnenswertes Ausflugsziel – die Crêpes mit Spiegelei, Spinat, geschmorten Zwiebeln und ‚Fromage‘ sind wirklich lecker…

Als Team-Mitglied von Location Bretagne empfehle ich natürlich, den nächsten Urlaub in der Bretagne zu verbringen. In unserem Ferienhaus-Katalog gibt es ein „Haus der Bretagne“ für Ihren Urlaub zum mieten. Zurzeit haben wir auch ein (Ferien-)Haus mit dem (fast) gleichen Namen „Ty Breiz“ in Loctudy (Finistere) im Sortiment. Für alle, die Loctudy noch nicht kennen: Eine (zur Zeit recht knappe) Beschreibung des Ortes „Loctudy“ gibt es bei Wikipedia. Neben dem Katalog von Location Bretagne empfehle ich für Unterkünfte auch die Seite zur Bretagne des VDFA e.V. (Verband Deutscher Ferienhaus-Agenturen) zu besuchen.

Abonnierte RSS- oder ATOM- Feeds aus iGoogle exportieren

Die meisten Firefox-Benutzer (natürlich auch die Benutzer anderer Browser) kennen vielleicht das Problem, falls RSS- oder ATOM-Feeds mit Google abonniert werden sollen: Man wird gefragt, ob man den Feed in einem Gadget auf iGoogle oder im Google Reader abonnieren möchte… Ich konnte mich nicht immer entscheiden – beide Optionen haben ihre Vor- und Nachteile. Geärgert habe ich mich aber immer, dass diese Wahl scheinbar endgültig war – zumindest konnte ich trotz intensiver Suche keine Option entdecken, mit denen man die Abonnements von iGoogle in den Google-Reader übertragen kann. Dann hieß es für mich immer, die Abonnements manuell zu übertragen…

Gerade habe ich eine interessante Seite entdeckt, in der eine Anleitung und ein Tool enthalten ist, mit dem man die Feed-Abonnements aus iGoogle exportieren kann (um diese dann in andere Programme, bspw. Google-Reader) zu importieren: Export iGoogle Feeds to OPML

Möchte man Feeds oder andere Einstellungen in iGoogle importieren, so hilft dann (hoffentlich) der Artikel aus dem gleichen Blog: Import OPML Files to iGoogle


Google Visualization API – Visualization Gauge – Probleme mit IE 8

Leider habe ich Probleme, die tolle „Tacho-Ansicht“ der „Visualization Gauge“ aus der Google Visualization API unter dem Internet Explorer (IE) 8 darzustellen: Diese werden bei mir schlicht nicht angezeigt. Ein manueller Wechsel in den „Kompatibilitätsmodus“ zeigte dann aber ganz schnell, dass es in diesem Modus prima funktioniert. Woran es liegt, weiss ich im Moment nicht. Die Visualization Gauge wird ja mit JavaScript „gefüttert“…

Es muss also nicht immer schlechtes Webdesign sein, dass einen zum IE8-Kompatibilitätsmodus treibt.

Falls man nicht immer manuell in den Kompatibiltätsmodus schalten möchte, gibt es übrigens mehrere Möglichkeiten, dies automatisch und für den Benutzer unsichtbar zu tun:

  1. Per Anweisung: ,
  2. Als Header-Erweiterung: X-UA-Compatible: IE=EmulateIE7 ,
  3. Indem man sich auf die Microsoft-Kompatibilitätsliste setzt.

Schön beschrieben sind die Möglichkeiten, als Webmaster den Kompatibilitätsmodus zu erzwingen übrigens in folgenden beiden Artikeln:

Wollen wir hoffen, dass ich demnächst nicht auf noch mehr Probleme mit dem IE8 stosse….

Google Desktop Suche (GDS) auf Windows Vista: Erfahrungsbericht

Einführung

Ich habe die Google Desktop Suche (GDS) bereits vor einigen Jahren auf meinem alten Notebook (Windows XP) genutzt. Trotz vieler Kritiken bezüglich Datenschutz gefällt mir das Konzept recht gut. Soweit ich die Kritiker richtig verstanden habe, wird als besonders problematisch die Funktion zum gemeinschaftlichen Suchen über mehrere Computer genannt. Einleuchtender Grund: Inhalte von Dateien und Dokumenten werden auf dem Google-Server (oder soll ich besser sagen: Google-Grid?) gespeichert. Ich stimme dieser Problematik zu (und nutze daher auch nicht diese Funktion), möchte aber dagegen halten, dass dies eine allgemeine Schwäche fremdgehosteter Dienste (ASP – Application Service Provider Dienste) ist. Mit meinem neuen Windows-Vista Notebook bin ich sehr zufrieden, auch mit der integrierten Windows Desktop Suche (WDS). Nicht zufrieden bin ich allerdings mit der Such-Syntax von WDS. Als „geübter“ Google-Nutzer komme ich damit einfach nicht klar und wünsche mir wieder die bekannte „Google-Syntax“ auch auf meinem Desktop.

Erneuter Versuch mit GDS

Also entschloss ich mich vor einigen Tagen, der Google Desktop Suche eine „neue“ Chance zu geben. Derzeit lässt diese sich in der Version 5.8 auf der Google Desktop Seite von Google herunterladen. Interessant finde ich die Möglichkeit, zwecks Ressourcenschonung statt einem eigenen lokalen Desktop-Crawler von Google einfach den Index vom WDS-Dienst zu nutzen (der auf den meisten Vista-Rechnern eh standardmäßig aktiviert ist). So, dachte ich, hat man gleich zwei Fliegen mit einer Klappe (ohne nennenswert mehr Ressourcen auf dem Computer zu verbrauchen): Die bekannte Windows Desktop Suche plus Google Desktop Suche…

Schwächen und Probleme in der 5.8er Version

Leider haben sich (zumindest zur Zeit) meine Hoffnungen schnell gelegt: Es funktioniert zwar wie erwartet (Google Desktop und Windows Desktop lassen sich parallel nutzen), aber: Google Desktop „sucht“ nicht richtig! Es wird mir grundsätzlich nur eine Ergebnisseite mit maximal 10 Treffern angezeigt – den Rest „verschluckt“ GDS einfach! Diese Phänomen habe ich übrigens auf einem zweiten Vista-Rechner ebenfalls erlebt. Leider habe ich im Netz relativ wenig darüber gefunden und vor allem keine Lösung (siehe Google Groups Beitrag: Number of Results Problem when running on Vista).

Fazit

Zurzeit scheint die einzige Lösung zu sein, unter Vista die Option „Erweiterter Google Desktop Index“ zu aktivieren. Mit dem Nachteil freilich, dass damit zwei Desktop-Crawler Ressourcen verbrauchen (einmal der WDS-Dienst und dann der GDS-Crawler). Falls jemand eine Lösung kennt wäre ich über einen Tipp dankbar. Ansonsten hoffe ich, dass Google bald ein Update zur Verfügung stellt…