DataWedge – jak przekazać skan do dowolnej aplikacji Android
DataWedge to usługa Zebra, która przekazuje dane ze skanera terminala do dowolnej aplikacji Android, bez programowania.
Spis treści
- Jak działa DataWedge: profile i powiązania z aplikacjami
- Wejścia: skaner, RFID, MSR i inne
- Przetwarzanie danych: Basic i Advanced Data Formatting
- Wyjścia: Keystroke, Intent, IP
- DataWedge krok po kroku: profil dla aplikacji z Enterem po skanie
- Eksport, import i wdrożenie na flotę
- Typowe problemy według dokumentacji
- Terminale Zebra z DataWedge w ofercie
- Źródła
DataWedge to usługa Zebra, która przekazuje dane ze skanera terminala do dowolnej aplikacji Android, bez programowania. Zebra opisuje ją jako usługę usprawniającą zbieranie danych zarówno w nowych, jak i istniejących aplikacjach, preinstalowaną na każdym urządzeniu Zebra z Androidem. Poniżej wyjaśniamy, jak działają profile, którą metodę wyjścia wybrać (Keystroke, Intent, IP) i jak wdrożyć te same ustawienia na całą flotę.
Jak działa DataWedge: profile i powiązania z aplikacjami
Całą konfigurację DataWedge przechowuje w profilach. Według dokumentacji Zebra profil zawiera informacje o tym, jak DataWedge ma się zachowywać wobec powiązanych aplikacji. Ma trzy grupy ustawień (wtyczek, plug-ins): wejście (skąd pochodzą dane), przetwarzanie (opcjonalne formatowanie) i wyjście (jak dane trafiają do aplikacji).
Zasady powiązań:
- jeden profil można powiązać z jedną lub wieloma aplikacjami albo aktywnościami,
- aplikacja lub aktywność może być powiązana tylko z jednym profilem,
- DataWedge stale monitoruje aplikację na pierwszym planie i przełącza profile, gdy ta się zmienia.
Profile wbudowane, które warto znać:
| Profil | Rola według Zebra |
|---|---|
| Profile0 | Domyślny profil ogólny. Działa automatycznie dla każdej aplikacji, która nie ma przypisanego profilu. Nie można go powiązać z konkretną aplikacją. Można go wyłączyć, żeby zablokować skanowanie w aplikacjach, których celowo nie skonfigurowano. |
| Launcher | Profil używany, gdy urządzenie jest na ekranie głównym (launcherze). |
| DWDemo | Profil aplikacji demonstracyjnej DataWedge. Ma wbudowaną konfigurację, dlatego skanowanie działa w niej „od razu”. |
W zarządzanej flocie dobrze jest mieć osobny profil dla każdej aplikacji produkcyjnej i świadomie zdecydować, co robi Profile0. Ten temat w kontekście całej floty omawiamy w artykule o zarządzaniu flotą terminali Android.
Wejścia: skaner, RFID, MSR i inne
Strona profili w dokumentacji DataWedge wymienia te wtyczki wejścia: Barcode, Workflow (m.in. OCR i przechwytywanie obrazu), MSR (czytnik pasków magnetycznych), RFID, Serial i Voice. Według FAQ DataWedge nie obsługuje NFC. Do NFC służy EMDK albo API Androida.
- Barcode. Domyślny wybór skanera to „Auto”, który automatycznie wybiera najlepsze urządzenie skanujące. Popularne dekodery są domyślnie włączone. Zebra zaleca wyłączenie wszystkich dekoderów, których aplikacja nie potrzebuje, bo poprawia to wydajność skanowania. Jeden profil może obsługiwać kilka skanerów (np. wbudowany i zewnętrzny), z zastrzeżeniem, że dwa skanery tego samego typu i protokołu (np. dwa Bluetooth) nie są wspierane.
- RFID. Według dokumentacji wtyczka jest wspierana tylko na MC3300R, RFD40, RFD90, TC53E, EM45 i ET6X. Obsługuje jeden aktywny czytnik naraz. Przy odbiorze danych przez Keystroke wymaga ustawienia opóźnienia między znakami (inter-character delay) na 50 ms.
- MSR. Dokumentacja wymienia MC40 z MSR oraz TC70/TC75 z modułem MSR i zaznacza, że to urządzenia wycofane. Dane z MSR DataWedge wysyła wyłącznie przez intencje.
Skanowanie RFID przez DataWedge ma sens np. na terminalu Zebra TC53e-RFID z oferty, bo TC53E jest na liście urządzeń obsługiwanych przez wtyczkę RFID.
Przetwarzanie danych: Basic i Advanced Data Formatting
Basic Data Formatting (BDF)
Proste modyfikacje, ustawiane osobno dla każdego wyjścia. Według dokumentacji Zebra:
- Prefix to data / Suffix to data – dodaje znaki przed lub po danych,
- Send TAB key / Send ENTER key – dołącza do danych znak TAB lub ENTER,
- Send as hex – wysyła dane szesnastkowo,
- Send data – przekazuje zeskanowane dane (domyślnie włączone). Po wyłączeniu prefiks i sufiks nadal trafiają do aplikacji.
Jeśli BDF nie jest włączone, dane trafiają do wyjścia bez zmian.
Advanced Data Formatting (ADF)
Reguły zależne od treści danych. Konfiguracja ma trzy etapy: reguła, kryteria, akcje. Kryteria to m.in. typ wejścia i symbologia, szukany ciąg znaków na danej pozycji (liczonej od 0) i długość danych. Akcje obejmują ruch kursora (np. przeskok o N znaków), modyfikację danych (usuwanie spacji i zer wiodących, dopełnianie zerami, zamianę ciągu) oraz wysyłanie (następne N znaków, resztę, ciąg, znak, pauzę). Akcje wykonują się od góry listy w dół. Zebra zaleca pauzę 50 ms po każdym ENTER, LINE FEED lub TAB wysyłanym akcją, żeby ograniczyć utratę danych.
Praktyczny przykład z dokumentacji: dla kodów Code 39 o długości 12 znaków, zaczynających się od „129”, reguła dopełnia dane zerami do 8 cyfr, wysyła dane do znaku „X” i dodaje spację.
Wyjścia: Keystroke, Intent, IP
| Wyjście | Jak działa (wg Zebra) | Kiedy wybrać |
|---|---|---|
| Keystroke | Wysyła przetworzone dane do aplikacji na pierwszym planie jako serię naciśnięć klawiszy | Aplikacja bez integracji ze skanerem: formularz, przeglądarka, emulator terminala. Zebra pisze, że Keystroke pozwala dodać skanowanie do aplikacji bez pisania kodu. |
| Intent | Przekazuje dane programowo przez intencję Androida z akcją i kategorią zdefiniowaną w profilu | Aplikacja natywna, którą możesz zmodyfikować (albo producent obsługuje intencje DataWedge) |
| IP | Wysyła dane na wskazany adres IP i port przez TCP lub UDP. Domyślnie TCP, port 58627. | Przekazanie skanu do komputera z Windows i aplikacją Zebra IPWedge, która wstawia dane jako naciśnięcia klawiszy lub do schowka |
Keystroke – ustawienia, które warto znać
- Inter-character delay – opóźnienie po każdym znaku w ms, domyślnie 0. Przy błędach wprowadzania Zebra sugeruje zwiększać je o 100 ms, maksymalnie do 1000 ms, i ostrzega, że może to spowolnić aplikację.
- Multi-byte character delay – stosuje to opóźnienie tylko do znaków wielobajtowych, domyślnie wyłączone. Według Zebra ma pomagać przy wysyłaniu znaków Unicode i wielobajtowych do przeglądarki Android.
- Action key character – gdy w danych pojawi się wybrany znak (Tab, Line feed lub Carriage return), DataWedge wysyła w jego miejsce klawisz akcji.
- Send Enter as string / Send Tab as string – domyślnie wyłączone, wtedy ENTER i TAB idą jako zdarzenia klawisza.
- Send Control Characters as Events – znaki ASCII 1–31 jako zdarzenia klawiszy, domyślnie wyłączone (dane wysyłane jako tekst).
Dokumentacja zwraca uwagę na aplikacje webowe. Odczytują one zdarzenia klawiszy przez DOM, więc skróty wywoływane znakami sterującymi (np. Ctrl+F) mogą nie uruchomić funkcji przeglądarki. Danych surowych (raw) nie da się wysłać przez Keystroke.
Intent – na co uważać
- Metody dostarczenia to Start Activity, Start Service, Start Foreground Service i Broadcast Intent. Według Zebra Start Service nie działa w aplikacjach kompilowanych dla SDK 26 i nowszych, a Start Foreground Service – dla SDK 31 i nowszych.
- Przy Start Activity aktywność odbiorcy musi mieć w manifeście tryb „singleTop”. Inaczej każde odczytanie kodu uruchomi nową instancję.
- Dane są w dodatkach intencji, m.in.
com.symbol.datawedge.data_string(treść kodu),com.symbol.datawedge.label_type(symbologia) icom.symbol.datawedge.source(źródło, np. scanner, msr, rfid). - Opcja Component Information ogranicza odbiorców do wskazanych pakietów i podpisów aplikacji. Zebra ostrzega, że sama nazwa pakietu może zostać podszyta przez inną aplikację.
Który sposób integracji wybrać dla konkretnego ERP lub WMS, opisujemy w artykule Kolektor danych do programu magazynowego – zgodność i integracja.
DataWedge krok po kroku: profil dla aplikacji z Enterem po skanie
Przykładowa konfiguracja: aplikacja magazynowa przyjmuje kod w polu tekstowym i oczekuje Entera. Kroki według instrukcji „Create Profiles” z dokumentacji Zebra, uzupełnione o ustawienia BDF:
- Uruchom DataWedge z ikony aplikacji. Jeśli otworzy się inny ekran, naciskaj WSTECZ aż do listy profili.
- Otwórz menu (ikona „hamburger”) i wybierz New profile. Wpisz krótką, unikalną nazwę alfanumeryczną i zatwierdź OK.
- Stuknij nowy profil. Zaznacz Profile enabled, a następnie wejdź w Associated apps.
- Z menu wybierz New app/activity i wskaż swoją aplikację. Stuknij gwiazdkę (*), żeby powiązać wszystkie jej aktywności, albo wybierz jedną aktywność.
- Wróć do ekranu profilu. Sprawdź, czy włączone są Barcode Input i Keystroke Output.
- W Barcode Input wyłącz dekodery, których nie potrzebuje aplikacja powiązana z profilem – Zebra zaleca to dla wydajności skanowania.
- W Keystroke Output otwórz Basic data formatting, włącz je i zaznacz Send ENTER key. Jeśli aplikacja ma kilka pól, użyj zamiast tego Send TAB key.
- Przetestuj skanowanie w aplikacji. Jeśli znaki są gubione albo przestawiane, zwiększ Inter character delay (zob. wyżej).
- Gdy profil działa, wyeksportuj go (następna sekcja) i wdrażaj na pozostałe urządzenia.
Profil możesz zmienić, sklonować lub usunąć, przytrzymując jego nazwę na liście. Jeśli konfigurujesz czytnik podłączony do komputera, a nie terminal z Androidem, funkcje takie jak prefiks i sufiks ustawia się w konfiguracji samego czytnika. Opisujemy to w artykule konfiguracja czytnika kodów: polskie znaki, prefiksy i sufiksy.
Eksport, import i wdrożenie na flotę
Pliki konfiguracji
- Cała konfiguracja (wszystkie profile i ustawienia): plik
datawedge.db, domyślnie eksportowany do/storage/emulated/0/Download/. Zebra ostrzega, że import pliku konfiguracji nadpisuje wszystkie ustawienia i profile zapisane wcześniej na urządzeniu. - Pojedynczy profil: plik
dwprofile_<nazwaprofilu>.db. Dokumentacja zastrzega: nie zmieniaj nazwy wyeksportowanego pliku i nie edytuj ręcznie jego zawartości. - Auto import: DataWedge sprawdza folder
/enterprise/device/settings/datawedge/autoimportprzy starcie i w trakcie pracy, a plik umieszczony w nim od razu importuje i aktywuje.
Trzy drogi wdrożenia
- Ręcznie. Skopiuj plik na urządzenie i zaimportuj go w ustawieniach DataWedge. Wystarcza przy kilku urządzeniach.
- StageNow. Plik umieszczasz na serwerze FTP lub HTTP. W StageNow budujesz profil, który kopiuje go (File Manager CSP) do folderu auto-import albo do wskazanego folderu, z którego importuje go DataWedge Manager CSP. Generujesz kod stagingowy i skanujesz go klientem StageNow. Proces stagingu opiszemy szerzej w artykule StageNow krok po kroku – masowa konfiguracja terminali.
- EMM. Konsola EMM może wysłać plik do folderu auto-import, wdrożyć XML przygotowany w StageNow albo skonfigurować DataWedge przez Zebra Managed Configurations w aplikacji OEMConfig. Dla Androida 11 i nowszych Zebra zaleca foldery
/enterprise/device/settings/datawedgelub/data/tmp/public, bo w modelu scoped storage EMM nie może kopiować plików do folderów DataWedge.
DataWedge Manager CSP (moduł MX) pozwala też m.in. wyłączyć dostęp użytkownika do interfejsu DataWedge, kontrolować dostęp do API intencji i auto-import.
Konfiguracja z aplikacji: Intent API
Według dokumentacji API DataWedge działa przez intencje Androida, a wiele wywołań można wysłać w jednej intencji. Na przykład Set Config (akcja com.symbol.datawedge.api.ACTION, dodatek com.symbol.datawedge.api.SET_CONFIG) tworzy, aktualizuje lub zastępuje profil. Tryb CONFIG_MODE może mieć wartość CREATE_IF_NOT_EXIST, OVERWRITE (domyślnie) lub UPDATE. Inne API pozwalają m.in. przełączyć profil, wyzwolić skan programowo (Soft Scan Trigger) czy pobrać listę profili. Zebra zaleca, żeby po restarcie urządzenia najpierw sprawdzić stan DataWedge (Get DataWedge Status), bo intencje wysłane przed jego inicjalizacją mogą nie zostać obsłużone.
Licencje
Dokumentacja wymienia licencje tylko dla wybranych funkcji. Licencja Mobility DNA Enterprise jest potrzebna na urządzeniach serii Professional do funkcji MultiBarcode i Document Capture (NextGen SimulScan). Licencja Mobility DNA OCR Wedge jest potrzebna na każdym urządzeniu Zebra do funkcji OCR. Bez licencji aplikacja z włączonym MultiBarcode odczyta tylko pojedyncze kody.
Typowe problemy według dokumentacji
| Objaw | Przyczyna i rozwiązanie wg Zebra |
|---|---|
| Skanowanie działa w DWDemo, ale nie w mojej aplikacji | DWDemo ma własny wbudowany profil. Twoja aplikacja potrzebuje profilu z odpowiednim wejściem i wyjściem. |
| Wiązka świeci, kod się odczytuje, ale dane nie trafiają do aplikacji | Brak profilu powiązanego z aplikacją albo błędnie ustawione wejście lub wyjście. Według FAQ domyślny Profile0 włącza wiązkę, ale nie wie, jak przekazać zeskanowane dane. Utwórz i powiąż profil albo skonfiguruj wejście i wyjście w Profile0. |
| Gubione lub przestawione znaki przy Keystroke | Zwiększ Inter-character delay (krokami po 100 ms, do 1000 ms); dla znaków wielobajtowych włącz Multi-byte character delay. Dla RFID wymagane jest 50 ms. |
| Aplikacja nie odbiera intencji | Sprawdź zgodność akcji i kategorii z manifestem, metodę dostarczenia (ograniczenia Start Service i Start Foreground Service dla nowszych SDK) oraz ustawienia Component Information. |
| Wywołania API po restarcie nie działają | DataWedge potrzebuje kilku sekund na inicjalizację; najpierw wywołaj Get DataWedge Status. |
| Skanowanie zablokowane w aplikacji | Sterowanie skanerem jest wyłączne. Aplikacja EMDK, która nie zwolni skanera, może zablokować skanowanie w aplikacjach używających DataWedge. Sprawdź też Disabled app list w ustawieniach DataWedge. |
| Funkcja z dokumentacji nie działa | Sprawdź w Feature Matrix, czy wersje komponentów na urządzeniu ją obsługują. |
Ostatnia deska ratunku to opcja Restore w ustawieniach DataWedge. Przywraca ona ustawienia fabryczne i według Zebra nie da się jej cofnąć, dlatego wcześniej wyeksportuj konfigurację.
Terminale Zebra z DataWedge w ofercie
DataWedge jest preinstalowany na każdym urządzeniu Zebra z Androidem, więc profile przygotowane na jednym modelu możesz stosować w całej flocie. Pamiętaj, żeby sprawdzić zgodność wersji DataWedge na poszczególnych urządzeniach. Przykłady z kategorii terminale ręczne Android: kompaktowy Zebra TC27, Zebra TC53 i Zebra TC58e, wzmocniony Zebra TC73 oraz pistoletowy Zebra MC9400 z klawiaturą alfanumeryczną. Ogólne kryteria wyboru terminala opisujemy w przewodniku Kolektor danych – co to jest i jak wybrać.
Wdrażasz terminale Zebra i chcesz, żeby trafiły do zespołu z gotowymi profilami DataWedge i konfiguracją w MDM? Napisz do nas przez formularz kontaktowy. Podaj liczbę urządzeń i aplikacje, w których ma działać skanowanie. Zajmiemy się stagingiem i konfiguracją, a dla większych wdrożeń przygotujemy ofertę projektową.
Źródła
- Zebra TechDocs – DataWedge: About
- Zebra TechDocs – DataWedge: Getting Started
- Zebra TechDocs – DataWedge: Profiles
- Zebra TechDocs – DataWedge: Create Profiles
- Zebra TechDocs – DataWedge: Barcode Input
- Zebra TechDocs – DataWedge: RFID Input
- Zebra TechDocs – DataWedge: MSR Input
- Zebra TechDocs – DataWedge: Basic Data Formatting
- Zebra TechDocs – DataWedge: Advanced Data Formatting
- Zebra TechDocs – DataWedge: Keystroke Output
- Zebra TechDocs – DataWedge: Intent Output
- Zebra TechDocs – DataWedge: IP Output
- Zebra TechDocs – DataWedge: Settings
- Zebra TechDocs – DataWedge: Deployment (Admin)
- Zebra TechDocs – DataWedge: APIs
- Zebra TechDocs – DataWedge: Set Config API
- Zebra TechDocs – DataWedge: Licensing
- Zebra TechDocs – DataWedge: FAQ
Produkty z artykułu
Na zamówienieZebra TC27, 2D, SE4710, Projected Capacitive, 2-Pin, USB-C, BT, Wi-Fi, eSIM, 5G, NFC, Android, GMS (WCMTB-T27B6ABE2-A6)WCMTB-T27B6ABE2-A62 928,46 zł netto
Na zamówienieZebra TC53, 2D, SE5500, warm-swap, PTT, BT, Wi-Fi, NFC, Android, GMSTC5301-0T1K7B1000-A67 138,21 zł netto
Na zamówienieZebra TC58e, 2D, SE4770, GPS, IST, warm-swap, USB-C, BT, Wi-Fi (Wi-Fi), eSIM, 5G, NFC, Android, GMS (TC58BE-3T1J6B1W80-)TC58BE-3T1J6B1W80-A66 155,28 zł netto
Na zamówienieZebra TC53e-RFID 800 MHz, przenośne urządzenie do zbierania danych, 2D, skaner (SE4720), 15, 2 cm (6''), RAM: 8 GBTC530R-0T1E6B1000-EA6 820,33 zł netto
Na zamówienieZebra TC73, 2D, SE4770, USB, BT, Wi-Fi, NFC, warm-swap, GMS, AndroidTC7301-0T1J4B1000-A67 571,54 zł netto
Na zamówienieZebra MC9400, 2D, SE4770, alpha, Gun, Camera, front camera, BT, Wi-Fi (Wi-Fi), NFC, Android, GMS (MC9401-0G1P6DSS-A6)MC9401-0G1P6DSS-A69 156,91 zł nettoNajczęściej zadawane pytania
Czy DataWedge trzeba instalować?
Nie. Według Zebra DataWedge jest preinstalowany na każdym urządzeniu Zebra z Androidem. Wystarczy go skonfigurować w aplikacji DataWedge, przez API intencji albo przez narzędzia wdrożeniowe (StageNow, EMM).
Keystroke czy Intent – co wybrać?
Keystroke działa z każdą aplikacją, która przyjmuje tekst, i nie wymaga programowania. Intent przekazuje dane programowo i daje aplikacji dodatkowe informacje, np. symbologię i źródło danych. Wymaga jednak obsługi po stronie aplikacji. Jeśli nie możesz zmieniać aplikacji, wybierz Keystroke.
Jak dodać Enter po zeskanowaniu kodu w DataWedge?
W profilu aplikacji, w sekcji Keystroke Output, włącz Basic data formatting i zaznacz Send ENTER key. Analogicznie Send TAB key dodaje tabulator, a pola Prefix to data i Suffix to data – dowolne znaki.
Czy mogę wyłączyć skanowanie we wszystkich aplikacjach poza wybranymi?
Tak. Utwórz profile dla wybranych aplikacji i wyłącz Profile0, który działa dla wszystkich aplikacji bez profilu. Dodatkowo ustawienie Disabled app list blokuje skanowanie we wskazanych aplikacjach lub aktywnościach.
Jak przenieść profil DataWedge na inne terminale?
Wyeksportuj profil (dwprofile_.db) albo całą konfigurację (datawedge.db). Następnie zaimportuj ręcznie, umieść plik w folderze auto-import przez StageNow albo wyślij go z konsoli EMM. Zmiany ustawień z EMM możesz też wdrażać przez OEMConfig.
Czy DataWedge odczyta tag NFC?
Nie. Według FAQ DataWedge nie obsługuje NFC. Do odczytu NFC służy EMDK for Android (Secure NFC) albo standardowe API NFC Androida.