OCR App für Android

Eine Android App mit serverbasierter Erkennung von fotografierten Texten,
welche im Rahmen der Lehrveranstaltung Embedded Systems an der BHT Berlin entstanden ist.

Weitere Informationen zu den Features und zur Entwicklung finden Sie im Assemblaeintrag:

http://www.assembla.com/wiki/show/AndroidOCR/d-pWtw6pKr36CpeJe5cbLr

Der Source-Code befindet sich in folgendem SVN Repository:

http://www.assembla.com/code/AndroidOCR/subversion/nodes


Design der OCR App nach dem Start


OCR App, nachdem ein Foto aufgenommen wurde


OCR App, nachdem ein Text erkannt wurde. Das Ergebnis schwankt sehr u.a. von der Belichtung.

iPhone AccelerometerTestApp howto

In unserem ersten Blogeintrag (http://bht.mobilecoders.de/2010/11/hello-iphone/) haben wir mal kurz beschrieben worauf man sich Einstellen muss wenn man nen App schreiben will. In diesem Blog wollen wir euch anhand eines Beispiels das howto etwas näher bringen.

Wir haben mal das Accelerometer ausgelesen und die Werte auf UILabel und UIProgressViews (das sind die blauen Balken die im Appicon erscheinen wenn man eine neue App aus dem Store lädt) ausgegeben, dazu haben wir noch ein Imageview hinzugefügt um den Achsenbeschreibungen x,y und z auch eine Richtung zu geben. Aber nun mal zu sache!

Als erstes öffnet man ein leeres iPhone Projekt in xCode (z.B. die View-Based Application) welche ist eigentlich egal, der Unterschied besteht eigentlich nur in dem Template welches geladen wird. Das View-Based Template ist sehr simpel und daher für unser Vorhaben gut geeignet! Wenn das Projekt angelegt ist sieht man in XCode links die 4 angelegten Projektdateien (ProjektnameAppDelegate h/m und ProjektnameViewController h/m) wobei die .h – Datei die Headerdatei und .m die Implementierung darstellt. Wir werden alles in die ProjektnameViewController h/m Dateien schreiben, denn die AppDelegateDdateien sollte man nur editieren wenn es für die Funktion notwendig ist (bei uns nicht der Fall).

Als erstes die Headerdatei “ProjektnameViewController.h” (viewController_h). Hier fürgen wir als erstes das Delegateprotokoll für den Beschleunigungsmesser ein, danach alle Elemente die wir im Interface Builder (IB) verwenden wollen, also 3 Labels und 3 ProgressViews und anschließend noch ein UIAccerometer aus welchem wir die Beschleunigungswerte erhalten. Für diese Objekte werden dann noch mit “@property….” die Accesormethoden deklariert. 

In der Implementierungsdatei “ProjektnameViewController.m”(viewController_m) werden zwei Methoden verwendet. In der “-(void)viewDidLoad”-Methode (wird vom Template erzeugt) steht was beim laden der Klasse ausgeführt werden soll, in unserem Fall müssen 3Dinge beachtet werden:

  1. das Zuweisen der Singelton Klasse von UIAccererometer
  2. setzen der Delegateklasse
  3. und setzen des Aktualisierungsintervalls

Intern werden jetzt alle 0.1s die Accerometerdaten ausgelesen und den Klassen zur Verfügung gestellt in denen das Delegate Protokoll, ein Objekt “UIAccelerometer” UND  die Delegate Methode “-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration” Implementiert ist. Diese Methode ist der Schlüssel zum Auslesen/Anzeigen oder Verarbeiten der Beschleunigungswerte! In dem parameter “accerelration” sind die gewünschten Werte enthalten,  die können als property des Objects über Punktnotation erreicht werden (z.B. accerleration.x).

Das wars….fast, denn noch zeigt das App nichts an, denn die angelegten Felder müssen nun noch im IB angelegt werden. Im Projektbrowser gibt es einen Ordner “Nib Files” in welchem die bereits erzeugten IB- Dateien liegen, hier klickt man doppelt auf “ProjektnameViewController.xib” und es öffnet sich der IB (siehe IB). Hier geht man in folgender Reihenfolge vor:

  1. das gewünschte Objekt (also hier Label oder Progressview in der Library suchen und ber Drag n’ Drop in das  “Windows view” ziehen, danach
  2. im Objekt Browser auf Filesowner klicken, dann
  3. im Inspektor auf den 2. reiter von links klicken (“connections”)
  4. und anschließend die Namen der Outlets mit den Elementen per drag n’ drop verbinden
  5. speichern und fertig 🙂

Das wars dann, das App ist fertig und kann getestet werden! An dieser Stelle sei noch gesagt das wir mit dem Simulator hier nur wenig Freude haben denn der Wertet keine Beschleunigungsdaten aus…. aber auf einem realen Endgerät funktioniert es wunderbar!

Mobile Webcam

Lass deine Freunde das sehen, was du gerade siehst. Mit dieser App wird dein Mobiltelefon zu einer mobilen Webcam. Dein Smartphone streamt die Cameradaten direkt an einen Server. Über einen Login kannst Du kontrollieren wer sich den Videostream anschauen darf und wem das verwehrt bleibt.

Befindest Du dich gerade im Museum of Modern Art in New York und möchtest deine Eindrücke mit einem Kunst-Fan teilen, kein Problem mit dieser App.

Alles was Du benötigst: ein Android-Smartphone mit einer Kamera und einen permanenten Internetzugang(Wlan-Hotspots, UMTS)

Google Sky Map

Richten Sie ihr Handy auf den Himmel und Google Sky Maps zeigt die Sterne, Planeten, Konstellationen und mehr, die helfen das Himmelsobjekt im Blickfeld zu identifizieren.

Ebenso können die Himmelsobjekte in einem Manuellen Modus durchsucht werden.

Wer schon immer auf der Suche nach einer Spiralgalaxie war, die im aktuellen Berliner Dunst nicht mehr zu sehen ist, hier wird er fündig.

Verwendet werden Kompass, GPS und Uhrzeit um die Ausrichtung des Handys und die angepeilten Himmelskörper zu bestimmen.

Hello iPhone

Eines vorweg: Ja, um eigene Software auf einem nicht gehackten iPhone/iPod touch/iPad laufen zu lassen, muss man registrierter Apple-Developer sein und mindestens $99 pro Jahr bezahlen. Über Sinn und Unsinn dieser Verfahrenweise soll es in diesem Eintrag nicht gehen…

Bevor es losgehen kann, muss die Entwicklungsumgebung installiert werden. Diese nennt sich XCode und ist kostenlos erhältlich. Eigentlich bekommt man mit XCode nicht nur eine IDE, sondern gleich für sämtliche Entwicklungsarbeit ein Komplettpaket – ob für OS X oder iPhone, mit Kompiler, Bibliotheken, allem. Einfach das Rundrum-Sorglospaket. Herunterzuladen gibt es das Paket im iOS-DeveloperPortal unter: http://developer.apple.com/devcenter/ios/index.action.

Die Größe des Paketes (derzeit 2.9Gb) läßt schon erahnen, dass man nach der Installion nicht mehr viel brauchen kann. In der Tat, ist man sofort und ohne jegliche Konfiguration vollständig einsatzbereit. Wer ersteinmal Geld sparen und spielen will, der kann trotzdem loslegen und einfach im mitgelieferten iPhone-Simulator entwickeln. Die üblichen Einschränkungen wie bei anderen Simulatoren gelten auch hier: GPS gibt es nicht, Sensoren gibt es nicht. Man kann jedoch beispiesweise ein Schütteln des Gerätes simulieren, das Gerät drehen oder gar multitouch ausprobieren.

Programmiert wird in ObjectiveC, einem C-Klon, welcher für objektorientiertes Programmieren umgebaut wurde. Die Syntax ist auf den ersten Blick grausig, auf den zweiten Blick jedoch durchaus sinnvoll. Besonderer Wert wird darauf gelegt, dass die Entwicklung beschleunigt und vor allem stets kontrolliert erfolgt. Dem Entwickler wird allein durch die Sprachstruktur einerseits viel Verantwortung, andererseits ein hohes Maß an Flexibilität und Kontrolle in die Hand gelegt. Zusammen mit XCode machen die Sprachkonvetionen zum Beispiel zur Deklaration von Argumenten in Methoden gleich richtig Sinn. Eine Garbage-Collection gibt es im Prinzip keine, und so macht man sich zum ersten Mal jenseits der Uni ernsthaft Gedanken über das Leben und Sterben von Objekten. Zugegebenermaßen anfangs etwas gewöhnungsbedürftig, aber da wir für ein mobiles Endgerät entwickeln wollen, ist die Kontrolle über das Speichermanagement durchaus sinnvoll und wichtig.

Hauptanlaufpunkt für den iOS-Developer ist sicherlich die iOS-Reference-Library. Dies ist das absolute Standardwerk von Apple und sehr sauber strukturiert. Neben der kompletten Klassenreferenz finden sich hier allgemeine Themen zur Struktur von Apps, Sample-Code für verschiedene Anwendungen sowie die kompletten Richtlinien zum Design eines User-Interface’. Für Neueinsteiger lohnen sich als erstes folgende Themen: Einführung in Objective-C, Einstieg in die Entwicklung mit XCode und Wir schreiben unser erstes iOS-App.

Wie schon beschrieben, bekommen wir eine ganze Menge an Werkzeugen mitgeliefert, von den 3 absolut unersetzlich sind: Xcode, die Entwicklungsugebung an sich, InterfaceBuilder, ein graphisches Werkzeug zum Bau von Oberflächen und zur Verwaltung der entsprechenden Objekte inkl. Anbindung an den Sourcecode, sowie der iPhone-Simulator. Der Simulator kann derzeit sowohl das iPhone 3GS/4, als auch das iPad simulieren.

eyetracking

Wer kennt es nicht? Der Tag war lang, der Stopp-and-Go-Verkehr ermüdend und allmählich werden einem am Steuer die Augen schwer. Etwa jeder vierte tödliche Autobahnunfall geht laut dem Deutschen Verkehrssicherheitsrat (DVR) auf das Konto des sogenannten “Sekundeschlafs”.

Und hier kommt der eyetracker zum Einsatz. Der eyetracker ist ein android app, welches mit der Frontkamera eines smartphones und mit bestimmter Bildverarbeitungs Algorithmen das Auge eines Fahrers beobachtet und bei aufkommender Müdigkeit akustisch alarm schlägt. Die Applikation kommt ohne externe Hardware aus und lässt sich mit minimalem Aufwand beispielsweise hinter der Sonnenblende installieren.

PingChat! 2.0

PingChat! ist ein kostenloses Messenger App. Es funktioniert wie das normale SMS Interface und man kann über Text hinaus auch Bilder, Kontakte, Videos oder Positionsinformationen. Selbst Gruppenchatts werden unterstützt. Schön ist das man lediglich eine GPRS/UMTS/WLAN Internetverbindung benötigt und das tool ansonsten Providerunabhängig und kostenlos ist (abgesehen von den 0,79€ Anschaffungskosten, aber  Hand aufs Herz….das lohnt sich!!!) Das App ist für iPhone, Android und mobile Windows 7 verfügbar und es ist auch möglich zwischen den Plattformen zu kommunizieren!

Car Locator – Autosuche für Android

Car Locator bietet euch die Möglichkeit die Position eures Fahrzeuges zu speichern, und zwar durch einfachen Tastendruck auf die sogenannte “Save Location” Taste. Nun könnt ihr euch fortbewegen, shoppen gehen, Freunde treffen, zum Bewerbungsgespräch antreten. Sobald ihr zu eurem Eisenstuhl zurück wollt hilft euch die App den richtigen Weg einzuschlagen. Auf dem “Details Tab” sieht man dann Entfernung in Meter und die Himmelsrichtung in die man gehen soll. Hat man beim Verlassen des Autos auch eine Parkzeit angegeben, so sieht man diese zur Erinnerung ebenfalls. So kann man auch gut abschätzen ob man einen Strafzettel wegen Falschparkens bekommt, oder ob man doch noch ein Ticket per SMS lösen sollte. Zu einer gespeicherten Position kann man auch noch Fotos und Notizen hinzufügen um etwas noch klarer zu dokumentieren. Ich denke da an riesige Parkflächen wo jede Straße, jeder Pfeiler gleich aussieht und man erst recht nicht weiß hinter welchem sein Auto nun steht.

Warum man nicht im Gefängnis bleiben will

Der Begriff jailbreak schlug in der iPhone-community ja schon von Beginn an hohe Wellen und so fragt sich auch die durchschnittliche Hausfrau, was es denn damit auf sich hat. Da das Hacken des iPhones in den USA jetzt sogar gesetzlich erlaubt wurde, ist eigentlich die letzte wirkliche Hürde gefallen, die einen von einem jailbreak abhalten könnte. Gut, es gibt ein paar technische Schweinereien in Sachen backup und FirmwareUpdate – Apple muss einen ja nicht unterstützen, machen sie auch nicht – doch sehr kleine aber feine Verbesserungen lassen sich mit einem jailbreak durchaus ohne großen Aufwand für jedermann erreichen. Man muss ja nicht gleich eigene Software schreiben und installieren wollen oder tief unter der Haube in der *nix-Welt des iPhones herumkramen wollen.

Ein sehr simples und dennoch effektives Tool(-paket) steht im Cydia-Store (selbiger ist nach dem erfolgten jailbreak automatisch verfügbar) kostenlos zur Verfügung: sbsettings, sowie diverse Plugins dafür. Eigentlich macht dieses App nichts anderes, als gesammelte shortcuts zu verschiedenen Systemfunktionen in ein kleines, durch eine simple Handbewegung von überall erreichbares Menü, zusammenzufassen. So kann man tatsächlich zum Stromsparen binnen einer Sekunde mal das UMTS ausschalten oder fix das Bluetooth aktivieren, ohne sich erst umständlich durch die Einstellungen klicken zu müssen. Wer noch kein Besitzer eines iPhone4 ist und deshalb gerne mal Strom spart, wird das sehr zu schätzen wissen. Durch ein weiteres Plugin zu diesem Paket, sbtethering, kann ein weiterer Button in das Menü gelügt werden. Fortan ist das Nutzen der iPhone-Internetverbindung über Bluetooth oder USB eine Sache von genau einer Sekunde. Da man seine sowieso bezahlten 300M oder gar 1G sowieso kaum mit deinem Mobiltelefon ausnutzen kann, ist diese Funktion für die Arbeit unterwegs perfekt. Auf einem Mac dauert die Einrichtung 10 Sekunden. Um dann mit dem Rechner ins Netz zu kommen, Bedarf es dann genau 2 Klicks: Auf dem Telefon tethering aktivieren, auf dem Mac direkt über das Bluetooth-Symbol auf Connect to Network klicken. Funktioniert perfekt und hat mich durch den letzten Urlaub gebracht…

WordPress Appliance - Powered by TurnKey Linux