Zum Inhalt springen
Sprache: DE

Arbeitet Host Card Emulation bei ausgeschaltetem Bildschirm?

Es hängt an der Android-Fassung und an einer Einstellung des Geräts. Bis Android 9 antwortet bei ausgeschaltetem Bildschirm nichts. Ab Android 12 kann ein Dienst requireDeviceScreenOn auf falsch setzen. Und solange Secure NFC eingeschaltet ist, ab Android 10, steht jeder Kartenemulator bei ausgeschaltetem Bildschirm nicht zur Verfügung.

Fassung für Fassung

Androids Leitfaden zur Kartenemulation beantwortet das nach Fassung, und die Antworten gehen weit genug auseinander, dass ein einziger Satz irgendwo falsch wäre.

Unter Android 9 und darunter sind der Controller und der Hauptprozessor aus, wenn der Bildschirm aus ist, es antwortet also kein Dienst; vom Sperrbildschirm aus antworten sie, sofern der Dienst nicht ein Entsperren verlangt. Ab Android 10 ändert die Einstellung Secure NFC die Frage: Solange sie eingeschaltet ist, steht jeder Kartenemulator, auf dem Host oder außerhalb, bei ausgeschaltetem Bildschirm nicht zur Verfügung, und ein Dienst auf dem Host kann vom Sperrbildschirm aus nicht arbeiten, was auch immer er deklariert hat; solange sie ausgeschaltet ist, bleiben Anwendungen außerhalb des Hosts bei ausgeschaltetem Bildschirm verfügbar. isSecureNfcSupported meldet, ob das Gerät die Einstellung überhaupt hat.

Ab Android 12 kann eine Anwendung, die diese Fassung oder eine neuere anvisiert, requireDeviceScreenOn auf falsch setzen und bei ausgeschaltetem Bildschirm antworten. Ab Android 15 kehrt eine Standard-Wallet, die den Observe-Modus einschaltet, sowohl das Verhalten beim Entsperren als auch das beim ausgeschalteten Bildschirm um, weil sie entscheidet, wann ein Vorgang stattfinden darf.

Die zwei Deklarationen

Beide leben in dem XML, das die Kennungen einträgt, am Element host-apdu-service. requireDeviceUnlock steht voreingestellt auf falsch, was heißt, dass der Dienst auch auf einem gesperrten Telefon aufgerufen wird. Auf wahr gesetzt, lässt ein Antippen, das zu dem Dienst führt, Android um ein Entsperren bitten und dann um ein erneutes Antippen, da das Telefon zum Entsperren bewegt werden musste.

requireDeviceScreenOn ist die neuere, und falsch ist es, was ab Android 12 eine Zahlung bei ausgeschaltetem Bildschirm antworten lässt. Keines der beiden Merkmale gilt für einen Dienst außerhalb des Hosts: Der Hauptprozessor ist an diesem Austausch nicht beteiligt, er kann das sichere Element also nicht zurückhalten.

Was der Observe-Modus geändert hat

Der Observe-Modus, ab Android 15, lässt das Gerät Suchschleifen beobachten, ohne einen Vorgang zuzulassen. Ein Dienst schaltet ihn mit setObserveModeEnabled(true) ein, und der Stack beobachtet dann, statt Vorgänge abzuwickeln, womit eine Wallet auf die Nutzenden warten kann, bevor sie irgendetwas beantwortet.

Was der Dienst beobachtet, ist gefiltert. Für einen Dienst eingetragene Filter passen genau oder nach Muster auf einen Suchrahmen, und passende Rahmen erreichen processPollingFrames(), wo die Anwendung vorbereiten oder die Nutzenden authentifizieren kann; Rahmen von einem Lesegerät, das mit genormten Rahmen sucht, gehen an den bevorzugten Dienst im Vordergrund oder an die Inhaberin der Rolle der Wallet. Ein Rahmen trägt außerdem eine herstellereigene Messung der Feldstärke, gelesen mit getVendorSpecificGain.

Den Observe-Modus zu verlassen ist das Zeichen, dass die Anwendung bereit ist: setObserveModeEnabled(false), oder autoTransact an einem Filter, damit ein passender Rahmen es tut. Ein Dienst kann darum bitten, im Observe-Modus zu starten, sobald er der bevorzugte Dienst für Zahlungen ist, über shouldDefaultToObserveMode im Manifest oder setShouldDefaultToObserveModeForService.

Für ein gesperrtes Telefon entwerfen

Prüfen Sie die Zustände statt der Fassungen. Bildschirm an und entsperrt, Bildschirm an und gesperrt, Bildschirm aus, jeweils mit Secure NFC ein und aus, ist eine kurze Matrix, die beantwortet, was jemand antreffen wird, und das Telefon in der Tasche ist der Zustand, den die meisten Vorführungen überspringen. Die Seite zum ausgeschalteten Bildschirm behandelt dieselbe Grenze von der Seite der Nutzenden.

Entscheiden Sie dann, wie der Fehlschlag aussieht. Ein Dienst, der bei gesperrtem Telefon nicht antworten kann, lässt jemanden vor einem Lesegerät stehen, das nichts sagt, die Anwendung muss den Zustand also dort erklären, wo jemand hinsieht, was die Aufforderung zum Entsperren des Leitfadens nur dann tut, wenn der Dienst das Entsperren verlangt hat.

Und lässt sich ein Lesegerät ändern, ändern Sie es mit dem Telefon: Der Leitfaden ermutigt zur Zusammenarbeit mit den Herstellern der Lesegeräte, damit deren Suchschleifen ein erkennbares Muster tragen, was einen Dienst sein eigenes Terminal erkennen lässt, bevor er über einen Vorgang entscheidet.

Häufige Fragen

Kann eine emulierte Karte bei ausgeschaltetem Bildschirm antworten?

Ab Android 12, wenn der Dienst requireDeviceScreenOn auf falsch setzt und Secure NFC ausgeschaltet ist. Bis Android 9 ist der Controller mit dem Bildschirm aus.

Was ändert Secure NFC?

Solange es eingeschaltet ist, steht jeder Kartenemulator bei ausgeschaltetem Bildschirm nicht zur Verfügung, und ein Dienst auf dem Host kann vom Sperrbildschirm aus nicht arbeiten, was auch immer er deklariert hat.

Was tut requireDeviceUnlock?

Auf wahr gesetzt, fordert ein Antippen zum Entsperren und dann zu einem erneuten Antippen auf. Voreingestellt ist falsch, der Dienst antwortet also auf einem gesperrten Telefon.

Gelten diese Einstellungen für ein sicheres Element?

Nein. Keines der beiden Merkmale gilt für einen Dienst außerhalb des Hosts, da der Hauptprozessor an diesem Austausch nicht beteiligt ist.