Android-Apps entwickeln - Ideal für Programmiereinsteiger geeignet
von: Uwe Post
Galileo Press, 2011
ISBN: 9783836218139
Sprache: Deutsch
383 Seiten, Download: 12411 KB
Format: PDF, auch als Online-Lesen
»Ich sehe was, was du nicht siehst, und das ist ... infrarot.« (unfair spielende Digicam)
8 Kamera und Augmented Reality (S. 253-254)
Digicams sind bloß für Schnappschüsse gut, und die klitzekleinen Linsen, die in Smartphones üblicherweise verbaut sind, beschränken Aufnahmebedingungen und Bildqualität? Entscheidend ist, was man mit dem aufgenommenen Bild anstellt. Moderne Apps erkennen beispielsweise Barcodes auf Produktverpackungen, andere können Texte lesen und sogar übersetzen – alles mithilfe mächtiger Software im Hintergrund, versteht sich.
Der Fantasie sind keine Grenzen gesetzt, was den Einsatz der in jedem Android- Gerät eingebauten Kamera betrifft. Freilich kostet aufwendige Bildmanipulation mehr Rechenpower, als ein Telefon liefern kann, aber selbst mit einfachen Mitteln lässt sich Erstaunliches bewirken.
Lassen Sie uns also die Digicam des Smartphones verwenden, um den Mückenfang noch spannender zu gestalten: Zunächst ersetzen wir den Bildschirmhintergrund durch einen Blick durch die Kameralinse. Dadurch wird der Bildschirm des Handys ein Fenster in die Wirklichkeit, in die nicht-reale Elemente (die Mücken) eingeblendet werden – der erste Schritt zur Augmented Reality. Der Übersicht halber habe ich für dieses Kapitel eine separate Kopie des Projektverzeichnisses auf die Buch-DVD gepackt. Sie finden es unter dem Namen Mueckenfang3.
8.1 Die Kamera verwenden
Vielleicht ist Ihnen aufgefallen, dass es in der Palette des Layout-Editors keinen View gibt, der so ausschaut, als könne er mit der Kamera zu tun haben. Es gibt lediglich den VideoView, der eignet sich aber nur zum Abspielen von Filmen, nicht für die eingebaute Kamera. Uns bleibt daher nichts anderes übrig, als einen eigenen View zu bauen, dessen Inhalt nichts anderes ist als das Vorschaubild der Kamera. Der beste Ansatz ist es, eine eigene Klasse von einer anderen abzuleiten.
Der CameraView
Die Basisklasse für die eigene Kameravorschau ist der SurfaceView – das ist ein View, dessen sichtbarer Inhalt komplett der Kontrolle des Programmierers unterliegt. Praktisch jeder Inhalt ist möglich – von simplen Zeichnungen über 3-DAction bis hin zum Vorschaubild der Kamera. Erstellen Sie also als Erstes eine neue Klasse namens CameraView, die von SurfaceView erbt:
public class CameraView extends SurfaceView { }
Um auf die Zeichenfläche zuzugreifen, benötigen wir ein SurfaceHolder-Objekt, das mit unserem View über ein Interface kommuniziert. Dieses Interface heißt SurfaceHolder.Callback, und die Klasse CameraView muss es implementieren. Erzeugen Sie außerdem ein Attribut für das eigentliche Kamera-Objekt:
public class CameraView extends SurfaceView implements SurfaceHolder .Callback {
SurfaceHolder surfaceHolder;
Camera camera; ... }
Lassen Sie sich von Eclipse die Methodenrümpfe hinzufügen, die nötig sind, um dem Callback-Interface zu genügen, indem Sie die automatische Fehlerkorrektur die Arbeit erledigen lassen.