Scrcpy vorgestellt – Steuere dein Android-Smartphone von deinem PC aus.

Verbesserung der Inbetriebnahmezeit

Schnelle Installation

Der Benutzer muss nichts auf dem Gerät installieren: Beim Start ist der Client für die Ausführung des Servers auf dem Gerät verantwortlich. Wir haben gesehen, dass wir auch die Hauptmethode des Servers von einem APK aus ausführen können:

  • installiert, oder
  • nach /data/local/tmp gepusht.

Welchen soll ich wählen?

$ time adb install server.apk

real 0m0,963s

$ time adb push server.apk /data/local/tmp/

real 0m0,022s

Also wurde beschlossen, zu pushen.

Parallelisierung

Wenn Du im vorherigen Abschnitt das Hello, world! ausgeführt hast, hast Du vielleicht bemerkt, dass das Ausführen von app_process einige Zeit in Anspruch nimmt: Hallo, World! wird erst nach einer gewissen Verzögerung (zwischen 0,5 und 1 Sekunde) angezeigt. Im Client dauert die Initialisierung von SDL ebenfalls einige Zeit. Daher wurden diese Initialisierungsschritte parallelisiert.

Bereinigung des Gerätes

Nach der Verwendung möchten wir den Server (/data/local/tmp/scrcpy-server.jar) vom Gerät entfernen. Wir könnten es am Ende entfernen, aber dann würde es bei der Trennung des Geräts bleiben. Stattdessen, sobald der Server von app_process geöffnet wird, trennt scrcpy den Link (rm). Somit ist die Datei nur für weniger als 1 Sekunde vorhanden (sie wird entfernt, noch bevor der Bildschirm angezeigt wird). Die Datei selbst (nicht ihr Name) wird tatsächlich entfernt, wenn der letzte zugehörige offene Datei-Deskriptor geschlossen wird (spätestens wenn app_process abläuft).

Texteingabe verarbeiten

Die Handhabung von Eingaben, die über eine Tastatur eingehen, ist komplizierter.

Events

Es gibt 2 Arten von „Tastatur“-Ereignissen:

  • Schlüsselereignisse,
  • Texteingabe-Ereignisse.

Schlüsselereignisse liefern sowohl den Scancode (die physische Position einer Taste auf der Tastatur) als auch den Keycode (abhängig vom Tastaturlayout). Nur Keycodes werden von scrcpy verwendet (es benötigt nicht die Position der physischen Schlüssel). Schlüsselereignisse reichen jedoch nicht aus, um die Texteingabe zu verarbeiten:

Manchmal kann es mehrere Tastendrücke dauern, bis ein Charakter entsteht.
Manchmal kann ein einziger Tastendruck mehrere Zeichen erzeugen.

Selbst einfache Zeichen können bei Schlüsselereignissen nicht einfach behandelt werden, da sie vom Layout abhängen. Zum Beispiel, auf einer französischen Tastatur, tippen Sie . (Punkt) erzeugt Shift+;. Daher leitet scrcpy Schlüsselereignisse nur für einen begrenzten Satz von Schlüsseln an das Gerät weiter. Die restlichen werden durch Texteingabe-Ereignisse behandelt.

Text einfügen

Auf der Android-Seite dürfen wir keinen Text direkt einfügen (das Einfügen eines vom jeweiligen Konstruktor erstellten KeyEvents funktioniert nicht). Stattdessen können wir eine Liste von KeyEvents abrufen, die für ein Zeichen[] erzeugt werden sollen, indem wir getEvents(char[]) verwenden. Zum Beispiel:

char[] chars = {'?'};
KeyEvent[] Ereignisse = charMap.getEvents(chars);

Hier wird das Ereignis mit einem Array von 4 Ereignissen initialisiert:

  • Drücke die Taste KEYCODE_SHIFT_LEFT
  • drücke KEYCODE_SLASH
  • Gebe KEYCODE_SLASH frei
  • Gebe KEYCODE_SHIFT_LEFT frei

Die korrekte Injektion dieser Ereignisse erzeugt das Zeichen ‚?‘.

Umgang mit akzentuierten Zeichen

Leider funktioniert die bisherige Methode nur bei ASCII-Zeichen:

char[] chars = {'é'};
KeyEvent[] events = charMap.getEvents(chars);
// events is null!!!

Aber es funktioniert, wenn wir die Zeichen mit der Kombination von diakritischen Dead Key Characters zerlegen. Konkret, anstatt „é“ zu injizieren, injizieren wir „\u0301e“:

char[] chars = {'\u0301', 'e'};
KeyEvent[] events = charMap.getEvents(chars);
// now, there are events

Um Akzentbuchstaben zu unterstützen, versucht scrcpy daher, die Zeichen mit KeyComposition zu zerlegen. Akzentzeichen funktionieren nicht mit der virtuellen Tastatur Gboard (der Standard-Google-Tastatur), sondern mit der Standard-Tastatur (AOSP) und SwiftKey.

Ein Fenstersymbol festlegen

Das Anwendungsfenster kann ein Symbol haben, das in der Titelleiste (für einige Desktop-Umgebungen) und/oder in der Desktop-Taskleiste verwendet wird. Das Fenstersymbol muss von einer SDL_Surface durch SDL_SetWindowIcon gesetzt werden. Die Erstellung der Oberfläche mit dem Symbolinhalt ist Sache des Entwicklers. Zum Beispiel könnten wir uns entscheiden, das Symbol aus einer PNG-Datei oder direkt aus seinen Rohpixeln im Speicher zu laden. Stattdessen schlug ein anderer Entwickler vor, das XPM-Bildformat zu verwenden, das ebenfalls ein gültiger C-Quellcode ist: icon.xpm. Man beachte, dass das Bild nicht der Inhalt der in icon.xpm deklarierten Variable icon_xpm ist: es ist die ganze Datei! Somit kann icon.xpm sowohl direkt in Gimp geöffnet als auch in C-Quellcode eingebunden werden:

include "icon.xpm".

Als Vorteil „erkennen“ wir das Icon direkt aus dem Quellcode und können es einfach patchen: Im Debug-Modus wird die Icon-Farbe geändert.

Werbeanzeigen

Seiten: 1 2

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Create a website or blog at WordPress.com

Nach oben ↑

Sascha Vilz

Langenfeld, Kreis Mettmann, NRW, Deutschland, Europa, und die Welt

Caschys Blog

Smart Home, Software, Hardware, Mobile Computing & Co

nadjasgeeky.wordpress.com/

Welcome to all the geekful things.

Kreativ Blog - DIY & Gadgets

DIY Blog aus Österreich für kreative Projekte und smarte Produkte

USCarlos

Coffee, Tech, Family, and Fun

Was (keine) Freude Macht

Weniger ist mehr

Apple4youngsters

All about Technic

Apple Support Service

News, Support, Tipps und Tricks

Vibora.de

Die Schlange durch die OpenSource Welt

Smartphone Guru

Welcome to my Blog about Android, Tech and the Digitized World!

%d Bloggern gefällt das: