Table of Contents

Scannen von QR- und Barcodes

pit - Mobile unterstützt das Scannen von QR- und Barcodes sowie von NFC- und RFID-Tags. Diese Schnittstellen stehen über Aktivatoren vom Typ Funktion zur Verfügung.

Außerdem wird ein Skript benötigt, mit dem man auf den eingescannten Wert reagieren kann. Dieser wird dem Skript als Parameter barcode übergeben.

Das Scannen von Barcodes kann dabei helfen, die Produktivität des Benutzers zu steigern, wenn Datensätze eindeutig mit dem gescannten Barcode identifiziert werden können. Unter diesen Voraussetzungen kann im Skript eine Datensatz-Suche implementiert und der gefundene Datensatz beispielsweise in ein Referenzfeld geschrieben oder auf einer neuen App-Seite angezeigt werden.

Scannen über die Kamera

QR- und Barcodes lassen sich direkt über die Kamera des mobilen Geräts einscannen. Nachdem der Benutzer die Kamera-Ansicht geschlossen hat, wird das hinterlegte Skript aufgerufen.

Externe Scanner

Ein an das mobile Gerät angeschlossener externer Scanner kann ebenfalls verwendet werden. Im Gegensatz zum Scannen über die Kamera ist hier ein Textfeld Voraussetzung, das als Eingabefeld für den im Betriebssystem als Tastatur registrierten Scanner fungiert.

Dies macht die Einbinden einer Detailansicht nötig, die den gescannten Inhalt zwischenspeichert. Mittels eines ChangedActivators kann dann auf die Änderung des Wertes reagiert werden.

Scan Step

Es bietet sich an, das Eingabefeld für den Scanner zu fokussieren, sobald die App-Seite aufgerufen wird. Dies lässt sich über die dynamische Eigenschaft callOnFocus vom Typ Skript erreichen:

var v = Ti.App.viewController.getViewByID("view_scan");
var input = v.getInputByName("Barcode");
input.input.focus();

Visitenkarten

Neben dem Scannen von QR-Codes auf Basis von text ist es auch möglich Visitenkarten (vcard) zu scannen. Der Ablauf hierfür unterscheidet sich dabei nur minimal. In beiden Fällen muss der Aktivator die Funktion onScan implementieren. Zur weiteren Auswertung wird außerdem auszuführender Code an dem Aktivator hinterlegt. In diesem Skript stehen anschließend folgende Parameter zur Verfügung:

Parameter Wert Barcode/QR-Code text Wert QR-Code vcard
type text vcard
barcode Gescannter Wert Gescannter Wert in Rohformat
content Siehe barcode Liste an vcards

Beispiel

try {
    var m = Ti.App.ex.getModelFromViewID('VIEW');
    if (m == null) {
        alert('Fehler');
        return;
    }

    var changeArray = [];
    if(type == 'text'){
        changeArray.push(['Code', barcode]);
        // OR changeArray.push(['Code', content]);
    } else if(type != 'vcard') {
        if(content == null || content.length == 0){
            alert('Keine Kontaktdaten hinterlegt.');
            return;
        }
        var vcard = content[0];
        changeArray.push(['Name_ASP', vcard.LastName]);
        changeArray.push(['Vorname', vcard.FirstName]);
        changeArray.push(['Firma', vcard.Organization]);
        if (vcard.Addresses != null) {
            changeArray.push(['Strasse', vcard.Addresses[0].Street]);
            changeArray.push(['PLZ', vcard.Addresses[0].PostalCode]);
            changeArray.push(['Ort', vcard.Addresses[0].Locality]);
        }
        if (vcard.Telephones != null) {
            changeArray.push(['Telefon_ASP', vcard.Telephones[0].Number]);
        }
        if (vcard.Emails != null) {
            changeArray.push(['EMail', vcard.Emails[0].EmailAddress]);
        }
    }
    
    Ti.App.ex.setAttributeValues(m, changeArray, true);
} catch (ex) {
    alert(ex.message);
}

Siehe auch

Eingabefelder
Schnittstellenbeschreibung