GNU/Linux >> Znalost Linux >  >> Linux

Nový způsob vytváření meziplatformních uživatelských rozhraní pro zařízení Linux ARM

Vytvoření skvělé uživatelské zkušenosti (UX) pro vaše aplikace je obtížná práce, zvláště pokud vyvíjíte vestavěné aplikace. Dnes jsou pro vývoj vestavěného softwaru obecně dostupné dva typy nástrojů grafického uživatelského rozhraní (GUI):buď zahrnují složité technologie, nebo jsou extrémně drahé.

Vytvořili jsme však proof of concept (PoC) pro nový způsob, jak využít stávající, dobře zavedené nástroje k vytváření uživatelských rozhraní (UI) pro aplikace, které běží na stolních počítačích, mobilních zařízeních, vestavěných zařízeních a zařízeních Linux ARM s nízkou spotřebou. . Naše metoda používá Android Studio pro kreslení uživatelského rozhraní; TotalCross k vykreslení Android XML na zařízení; nové TotalCross API nazvané KnowCode; a Raspberry Pi 4 pro spuštění aplikace.

Výběr aplikace Android Studio

Je možné vytvořit citlivé a krásné uživatelské rozhraní pro aplikaci pomocí TotalCross API, ale vytvoření uživatelského rozhraní v Android Studio zkracuje dobu mezi prototypem a skutečnou aplikací.

Existuje mnoho dostupných nástrojů pro vytváření uživatelských rozhraní pro aplikace, ale Android Studio je ten, který vývojáři na celém světě používají nejčastěji. Kromě jeho masivního přijetí je tento nástroj také super-intuitivní k použití a je opravdu výkonný pro vytváření jednoduchých i složitých aplikací. Jedinou nevýhodou je podle mého názoru výpočetní výkon potřebný k použití tohoto nástroje, který je mnohem těžší než jiná integrovaná vývojová prostředí (IDE), jako je VSCode nebo jeho open source alternativa, VSCodium.

Promyšlením těchto problémů jsme vytvořili důkaz konceptu pomocí Android Studio pro kreslení uživatelského rozhraní a TotalCross pro spuštění Android XML přímo na zařízení.

Vytváření uživatelského rozhraní

Pro náš PoC jsme chtěli vytvořit aplikaci pro domácí spotřebiče pro ovládání teploty a dalších věcí, která by běžela na zařízení Linux ARM.

Chtěli jsme vyvinout naši aplikaci pro Raspberry Pi, a tak jsme použili ConstraintLayout Android k vytvoření uživatelského rozhraní s pevnou velikostí obrazovky 848 x 480 (rozlišení Raspberry Pi), ale můžete vytvářet citlivá uživatelská rozhraní s jinými rozvrženími.

Android XML přidává velkou flexibilitu pro vytváření uživatelského rozhraní, což usnadňuje vytváření bohatých uživatelských zkušeností pro aplikace. V níže uvedeném XML jsme použili dvě hlavní komponenty:ImageView a TextView.

<ImageView
android:id="@+id/imageView6"
android:layout_width="273dp"
android:layout_height="291dp"
android:background="@drawable/Casa"
tools:layout_editor_absoluteX="109dp"
tools:layout_editor_absoluteY="95dp" />
<TextView
android:id="@+id/insideTempEdit"
android:layout_width="94dp"
android:layout_height="92dp"
android:background="#F5F5F5"
android:text="20"
android:textAlignment="center"
android:gravity="center"
android:textColor="#000000"
android:textSize="67dp"
android:textStyle="bold"
tools:layout_editor_absoluteX="196dp"
tools:layout_editor_absoluteY="246dp" />

Prvky TextView se používají k zobrazení některých dat uživateli, jako je teplota uvnitř budovy. Většina ImageViews se používá jako tlačítka pro interakci uživatele s uživatelským rozhraním, ale jsou také potřeba k implementaci událostí poskytovaných komponentami na obrazovce.

Integrace s TotalCross

Druhou technologií v tomto PoC je TotalCross. Nechceme na zařízení používat nic z Androidu, protože:

  1. Naším cílem je poskytnout skvělé uživatelské rozhraní pro Linux ARM.
  2. Chceme na zařízení dosáhnout co nejmenších rozměrů.
  3. Chceme, aby aplikace běžela na hardwarových zařízeních nižší třídy s nízkým výpočetním výkonem (např. bez GPU, nízkou RAM atd.).

Nejprve jsme vytvořili prázdný projekt TotalCross pomocí našeho pluginu VSCode. Dále jsme uložili kopii obrázků do kreslitelného složku a kopii souboru XML pro Android uvnitř XML složka – obě jsou umístěny v Zdroje složka:

Pro spuštění souboru XML pomocí TotalCross Simulatoru jsme přidali nové TotalCross API nazvané KnowCode a MainWindow pro načtení XML. Níže uvedený kód používá API k načtení a vykreslení XML:

public void initUI() {
    XmlScreenAbstractLayout xmlCont = XmlScreenFactory.create(“xml / homeApplianceXML.xml”);
    swap(xmlCont);
}

A je to! Pouze pomocí dvou příkazů můžeme spustit soubor XML pro Android pomocí TotalCross. Zde je návod, jak XML funguje na simulátoru TotalCross:

K dokončení tohoto PoC zbývají dvě věci:přidání některých událostí pro interakci uživatele a jeho spuštění na Raspberry Pi.

Přidávání událostí

KnowCode API poskytuje způsob, jak získat prvek XML podle jeho ID (getControlByID) a změnit jeho chování tak, aby bylo možné přidávat události, měnit viditelnost a další.

Například, abychom uživatelům umožnili změnit teplotu ve svém domě nebo jiné budově, umístili jsme do spodní části uživatelského rozhraní tlačítka plus a mínus a událost „kliknutí“, která zvýší nebo sníží teplotu o jeden stupeň pokaždé, když klepnete na tlačítka:

Button plus = (Button) xmlCont.getControlByID("@+id/plus");
Label insideTempLabel = (Label) xmlCont.getControlByID("@+id/insideTempLabel");
plus.addPressListener(new PressListener() {
    @Override
    public void controlPressed(ControlEvent e) {
        try {
            String tempString = insideTempLabel.getText();
            int temp;
            temp = Convert.toInt(tempString);
            insideTempLabel.setText(Convert.toString(++temp));
        } catch (InvalidNumberException e1) {
            e1.printStackTrace();
        }
    }
});

Testování na Raspberry Pi 4

Konečně poslední krok! Spustili jsme aplikaci na zařízení a zkontrolovali výsledky. Potřebovali jsme pouze zabalit aplikaci a nasadit a spustit na cílovém zařízení. VNC lze také použít ke kontrole aplikace v zařízení.

Celá aplikace včetně aktiv (obrázků atd.), Android XML, TotalCross a KnowCode API má na Linux ARM asi 8 MB.

Zde je ukázka aplikace:

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

V tomto příkladu byla aplikace zabalena pouze pro Linux ARM, ale stejná aplikace poběží jako desktopová aplikace pro Linux, zařízení Android, Windows, Windows CE a dokonce i iOS.

Veškerý ukázkový zdrojový kód a projekt jsou k dispozici v úložišti HomeApplianceXML GitHub.

Nové možnosti se stávajícími nástroji

Vytváření GUI pro vestavěné aplikace nemusí být tak těžké jako dnes. Tento důkaz konceptu přináší nový pohled na to, jak tento úkol snadno provést – nejen pro vestavěné systémy, ale pro všechny hlavní operační systémy, všechny používající stejnou kódovou základnu.

Naším cílem není vytvořit nový nástroj pro návrháře nebo vývojáře k vytváření aplikací uživatelského rozhraní; naším cílem je poskytnout nové možnosti využití nejlepších nástrojů, které jsou již dostupné.

Jaký je váš názor na tento nový způsob vytváření aplikací? Podělte se o své myšlenky v komentářích níže.


Linux
  1. Shedbuilt GNU/Linux:Vzdělávací distribuce exkluzivně pro ARM Boards

  2. Clapper – nový přehrávač médií Gnome pro Linux

  3. Lollypop – nový moderní hudební přehrávač pro Linux

  1. Codeanywhere – multiplatformní cloudové IDE bohaté na funkce pro Linux

  2. Přenos – multiplatformní BitTorrent klient pro Linux

  3. Multiplatformní sestavení pod Windows zaměřené na Linux pomocí CMake

  1. Jak postavit domácí laboratoř, abyste se naučili nové dovednosti v Linuxu

  2. Linuxové distribuce pro procesory Arm?

  3. Existuje způsob, jak získat poměry Hit/Miss mezipaměti pro bloková zařízení v Linuxu?