Apps für Android programmieren leicht gemacht!

QR-Codes scannen

Auf Anfrage von Daniel hin werden wir uns heute mit der Verarbeitung von QR-Codes beschäftigen, wie man diese unter Android einliest und sich einen einfachen String zurückgeben lassen kann.
QR-Codes sind diese quadratischen Felder, bestehend aus kleineren weißen oder schwarzen Feldern, die man häufiger auf Plakaten oder ähnlichem findet. Sie enthalten Informationen, wie z. B. Texte, Internetadressen, Kontaktdaten oder ähnliches und können heutzutage von den allermeisten Geräten gescannt werden.
Vielleicht wäre es vorerst interessant zu klären, wie ein QR-Code aufgebaut ist, wie die Daten in einen QR-Code kommen und wie diese von einem Programm ausgelesen werden können.

Aufbau QR-Code:

Die Idee hinter einem QR-Code ist eigentlich recht simpel und dennoch sehr interessant.
Wir bekommen ja meistens lediglich ein schwarz-weißes Feld angezeigt, welches wir dann einscannen können, doch wie ist so ein QR-Code aufgebaut?

Grundsätzlich würde ich zwischen 3 Kategorien an Daten unterscheiden.

  1. Hilfsinformationen (Rot, Grün)
  2. Verarbeitungsinformationen (Gelb, Blau)
  3. Codierte Daten (unmarkiert)

Wir machen uns diese 3 Typen einmal in einem Beispiel anschaulicher.
qr-code aufbau

Die rot markierten Stellen geben Aufschluss über die Ausrichtung. Ein QR-Code Scanner kann mit diesen Felder erkennen wie rum ein QR-Code gedreht ist. Wir können ihn also nach belieben drehen und der Scanner erkennt dies.
Die grün markierten Stellen helfen dem Scanner zu erkennen wie groß die einzelnen Felder sind.
Innerhalb der blauen Stellen ist codiert mit welcher Version der QR-Code erstellt wurde, wobei die gelben Felder angeben, nach welchem Muster die richtigen Daten codiert wurden.
Die unmarkierten Stellen selber definieren den codierten Text.

 

QR-Code Funktionsweise:

Jetzt wo wir wissen, wie so ein QR-Code aufgebaut ist können wir uns mit der Theorie der Erstellung beschäftigen.

Einen Text oder auch Zahlen können wir -wenn wir ihn Binär darstellen- in 1-en und 0-en darstellen.
Zur Fehlerkorrektur fügen wir am Ende dieser Bitfolge noch ein paar zusätzliche Bits hinzu.
Diese 1-en und 0-en können wir auch alternativ als weiß und schwarz darstellen. So haben wir den ersten Schritt zu unserem QR-Code beschritten.
Im nächsten Schritt wählen wir eines der allgemeinen Muster aus und packen dies mit der Version des QR-Codes (blau), den Hilflinien (grün) und der Position (rot) schon einmal in den QR-Code. Welches Muster gewählt wurde fügen wir dem QR-Code ebenfalls an den gelb markierten Stellen hinzu.

Die eigentliche Arbeit besteht nun daraus, das Muster über unseren Binär codierten Text zu legen und zu vergleichen.
Hat das Muster und unser Text an den selben Stellen die selbe Farbe, dann fügen wir zum QR-Code ein weißes Feld hinzu.
Hat das Muster und unser Text an den selben Stellen eine unterschiedliche Farbe, dann fügen wir zum QR-Code ein schwarzes Feld hinzu.

Das Muster wird übrigens nicht zufällig gewählt, sondern so, dass die Anzahl der weißen und schwarzen Felder möglichst gleich ist.

Auf der nächsten Seite erkläre ich euch, wie ihr den QR-Code auslesen und den Inhalt dann anzeigen lassen könnt.

Marvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Kommentar hinzufügen

*Pflichtfeld