Integračná dokumentácia Help

Integrácia ANDROID cez LDM

Pre podporu rýchlej a jednoduchej integrácie sme pripravili základné príklady ako sa pripojiť k službe a vykonať jednoduchý Pegas Script.

Projekt pre AdnroidStudio je k dispozícii na:

Link

Projekt obsahuje knižnice so všetkými potrebnými funkciami pre spracovanie skriptu v zložke app/libs.

Popis

V AndroidManifest.xml je potrebné vykonať nasledovné úpravy

  1. Pridať oprávnenie:

    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
  2. Od Androidu 11 je potrebné ďalej definovať:

    <queries> <package android:name="sk.epopay.pos.printer" /> <package android:name="sk.singularisdev.androidekasa.client" /> </queries>
  3. Do build.gradle pridať:

    implementation (files("libs/LdmClient-release.aar"))

Príklad AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.LdmClientExample" tools:targetApi="31"> <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <queries> <package android:name="sk.epopay.pos.printer" /> <package android:name="sk.singularisdev.androidekasa.client" /> </queries> </manifest>

Inicializácia pripojenia

Pozor: Je potrebné vykonávať metódy pre pripojenie, vykonanie skriptu mimo UI vlákna! V prípade volaní na UI vlákne dôjde k jeho zablokovaniu. Toto je ošetrené priamo v knžnici a bude vyvolaná výnimka UiThreadViolationException.

private LdmClient ldmClient; // ... @Override protected void onCreate(Bundle savedInstanceState) { // ... ldmClient = new LdmClient(getApplicationContext()); // ... }

Pripojenie k službe LDM

private class ConnectAsyncTask extends AsyncTask<Void, Void, String> { protected String doInBackground(Void... params) { try { boolean connected = ldmClient.connect(); return connected ? "connected" : "not connected - call again"; } catch (UiThreadViolationException e) { return "connect called from UI thread - please use non-ui thread!"; } catch (ServiceDoesNotExistException e) { return "LDM service does not exists on this device!"; } } @Override protected void onPostExecute(String message) { Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show(); if (message.equals( "connected")) { testScriptButton.setVisibility(View.VISIBLE); reconnectButton.setVisibility(View.GONE); } else { testScriptButton.setVisibility(View.GONE); reconnectButton.setVisibility(View.VISIBLE); } } }

Riešenie chybových výnimiek

Výnimka

Riešenie

UiThreadViolationException

Využiť samostatné vlákno pre pripojenie k službe

ServiceDoesNotExistException

Služba neexistuje, overiť existenciu potrebnej aplikácie - eKasaClient alebo EpoPay POS Service

Vykonanie skriptu

private class TestSciptAsyncTask extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... params) { try { String result = ldmClient.processFmScript("gettVariable:B51\r\n"); return result; } catch (LdmCommunicationException e) { e.printStackTrace(); return "LdmCommunicationException"; } catch (ScriptProcessingException e) { e.printStackTrace(); return "ScriptProcessingException"; } catch (ScriptParsingException e) { e.printStackTrace(); return "ScriptParsingException - unknown command, wrong format etc."; } catch (LdmIsNotInitialized e) { e.printStackTrace(); return "LDM is not initialized"; } catch (UiThreadViolationException e) { return "connect called from UI thread - please use non-ui thread!"; } catch (ClientIsNotInitializedException e) { return "LDM client is not initialized - call connect again"; } catch (LdmException e) { e.printStackTrace(); return "internal error - log this exception for support"; } } @Override protected void onPostExecute(String message) { Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show(); } }

Riešenie chybových výnimiek

Výnimka

Riešenie

LdmCommunicationException

Chyba pri komunikácií so službou, zavolať disconnect a znova connect. V prípade oprakovanie chyby kontaktovať podporu

ScriptProcessingException

Služba neexistuje, overiť existenciu potrebnej aplikácie - eKasaClient alebo EpoPay POS Service

ScriptParsingException

Chyba pri spracovaní skriptu, neznámy príkaz, chybný zápis parametrov a pod.

LdmIsNotInitialized

Služba LDM nie je inicializovaná. Je potrrebné inicializovať buď cez GUI alebo EpoPay Launcher OnBoarding

UiThreadViolationException

Využiť samostatné vlákno pre pripojenie k službe

ClientIsNotInitializedException

Služba nie je pripojená. Je potrebné zavolať metódu connect

LdmException

Interná chyba, ktorá by nemala nastať, zalogovať výninmku a kontaktovať podporu

Last modified: 23 februára 2026