Android · Zebra · WebView

Zwischen Barcode-Scanner und Web-ERP

Billman ERP for Zebra ist eine Middleware-Anwendung für industrielle Zebra-Android-Geräte. Sie konfiguriert beim Start selbst das DataWedge-Profil, übergibt den gescannten Barcode der geladenen Webseite mit einem einzigen JavaScript-Aufruf — der Callback-Name ist serverseitig überschreibbar — und überwacht im Hintergrund eingehende MQTT-Push-Benachrichtigungen.

Version 2.4.5 · minSdk 33 · Paket hu.billman.erp.android.zebra

Was leistet die Anwendung?

Das installierte WebView lädt das ERP und übergibt den Barcode dem im Browser laufenden Code. Die übrigen Dienste — MQTT, PDF, Basic Auth, erzwungenes Update — arbeiten im Hintergrund.

WebView-Wrapper

Lädt die konfigurierte URL im Vollbild. Bei einem Netzwerkfehler erfolgt alle 3 Sekunden ein automatischer Neuversuch, nach Wiederherstellung erscheint eine Benachrichtigung.

Automatische DataWedge-Konfiguration

Beim Start legt die App das Profil Billman selbst an, weist sich zu und aktiviert das Intent-Output-Plugin. Den gescannten Barcode übergibt sie der onScan(data)-Funktion der Webseite — der Name der aufzurufenden Funktion lässt sich über die serverseitige Konfiguration (zebra.jsonscan_callback) überschreiben.

MQTT-Push-Dienst

Ein Foreground-Service hält die Verbindung zum Broker aufrecht. Bei eingehender Nachricht 500 ms Vibration, Tonsignal und Toast — auch wenn das Gerät im Standby ist.

Serverseitige Konfiguration

Die Datei <url>/zebra.json wird beim Start und nach dem Speichern automatisch geladen. Nur die gesendeten Felder werden überschrieben — Werte, die im JSON fehlen (darunter der lokal eingegebene Benutzername und das Passwort), bleiben unverändert.

Eingebauter PDF-Viewer

PDF-Links öffnen sich im PDF.js-Viewer unter Beibehaltung der Session-Cookies. Links mit anderem Schema (tel:, mailto:) werden an die System-App übergeben.

Versionserzwingung

Ist min_version_code höher als die installierte Version, zeigt die App beim Start einen nicht schließbaren Dialog — Play Store oder Beenden.

DataWedge: von der App eingerichtet

Beim Start nimmt die App die DataWedge-Konfiguration automatisch über die SET_CONFIG-API vor. Vom Bediener ist kein separater Einrichtungsschritt nötig — die Tabelle zeigt lediglich die Referenzwerte, welche die App selbst einträgt.

EinstellungWert
ProfilnameBillman
ModusCREATE_IF_NOT_EXIST — wird nur angelegt, wenn noch nicht vorhanden
Verknüpfte Apphu.billman.erp.android.zebra (alle Activities)
Intent-Actionhu.billman.SCAN
Intent-Categoryleer
Intent-DeliveryBroadcast Intent
Keystroke Outputdeaktiviert (damit nichts in den Fokus eingetippt wird)

Was gelangt zur Webseite?

Den gescannten Text übergibt die App dem browserseitigen Callback. Der Funktionsname ist standardmäßig onScan, lässt sich aber über das Feld scan_callback in zebra.json serverseitig überschreiben — etwa auf einen anderen Handler-Namen oder eine seitenabhängige Logik.

// Standard — diese Funktion ruft die App auf
window.onScan = function (data) {
    console.log('Gescannter Code:', data);
};

// In zebra.json: { "scan_callback": "handler" }
// → ab jetzt ruft die App diese auf:
window.handler = function (data) { /* ... */ };

Ist die angegebene Funktion auf der geladenen Seite nicht definiert, geht der Scan stillschweigend verloren — keine Exception und kein Standard-Fallback.

Serverseitige zebra.json

Eine im Wurzelverzeichnis der angegebenen Webadresse abgelegte JSON-Datei überschreibt ausgewählte Anwendungs-Einstellungen. Alle Felder sind optional; im Einstellungsbildschirm wird daraufhin der Button Konfiguration herunterladen angezeigt.

So lässt sich die Konfiguration aus der Ferne steuern: durch das Bearbeiten einer einzigen JSON-Datei stellen sich alle installierten Geräte einheitlich um. Bei einer Lagerflotte muss weder der Broker, noch die Kommissionier-URL, noch der Callback-Name pro Gerät eingestellt werden — einmal auf dem Server abgelegt, gilt es überall. Über das Feld min_version_code lassen sich ältere Installationen zwingend zu einer Aktualisierung anhalten, sodass keine veralteten Clients in der Flotte verbleiben.

FeldBedeutung
min_version_codeMindestens erwarteter versionCode. Bei älteren Installationen wird ein Update erzwungen.
min_app_versionIm Update-Dialog angezeigte Textversion.
order_picker_urlEigene URL für den Kommissionier-Bildschirm (order picker).
mqtt_serverMQTT-Broker-URL, z. B. tcp://host:1883.
mqtt_topicName des abonnierten Topics.
mqtt_payloadTrigger-Payload. Leer bedeutet: jede beliebige Nachricht löst aus.
mqtt_soundsystem · alarm · none
scan_callbackName der seitenseitigen Callback-Funktion. Standard: onScan.
{
    "min_version_code": 19,
    "order_picker_url": "https://billman.hu/order-picker",
    "mqtt_server": "tcp://broker.example:1883",
    "mqtt_topic": "billman/notifications",
    "mqtt_payload": "",
    "mqtt_sound": "system",
    "scan_callback": "onScan"
}

Die Aktualisierung ist selektiv: überschrieben werden nur jene Werte, die das JSON tatsächlich sendet. Alles Weitere bleibt als benutzerseitige, lokale Einstellung erhalten — Benutzername und Passwort werden zum Beispiel niemals vom Server überschrieben. Ist der Server nicht erreichbar oder die Datei nicht vorhanden, bleibt die gesamte lokale Konfiguration bestehen. Änderungen werden im Übrigen sofort wirksam, ohne Neustart.

Kommissionier-Ereignis-Benachrichtigung (MQTT)

Ist in den Einstellungen ein MQTT-Broker und ein Topic angegeben, hört die App auch im Hintergrund mit — selbst bei ausgeschaltetem Bildschirm oder einer anderen App im Vordergrund.

Tonmodi

  • system — Systembenachrichtigungston
  • alarm — Alarmton, für laute Umgebungen
  • none — nur Vibration und Toast

Trigger-Logik

Ist das Feld Payload ausgefüllt, löst nur eine exakte Übereinstimmung aus. Bei leerem Feld löst jede eingehende Nachricht einen Alarm aus.

Der Foreground-Service zeigt eine dauerhafte Benachrichtigung: „Picker listener active”.

Download und Aktualisierung

Der Paketname der App lautet hu.billman.erp.android.zebra. Updates werden über den Google Play Store ausgeliefert; das erzwungene Update wird über das Feld min_version_code gesteuert.

Version
2.4.5
versionCode
19
Mindest-SDK
Android 13 (API 33)
Ziel-SDK
Android 14 (API 36)
Sprachen
Ungarisch · Englisch · Deutsch

Tester gesucht

Die Anwendung befindet sich derzeit in einer geschlossenen Testphase. Der Play Store stellt den Build nur dem aufgenommenen Testerkreis zur Verfügung — ohne vorherige Anmeldung lässt sich der Download nicht starten.

Wir freuen uns über Bewerbungen von Betreibern industrieller Android-Geräte von Zebra aus produktiven Einsatzumgebungen. Bitte verwendet bei der Bewerbung die im Google Play Store hinterlegte E-Mail-Adresse — wenn mehrere Personen testen möchten, gebt im Nachrichtentext alle Play-Konto-E-Mail-Adressen an.

Kontakt aufnehmen