Freigeben über


Verwalten des Zugriffs und der Kalibrierung von Eye Tracking

Eye Tracking auf HoloLens 2 bietet leistungsstarke Funktionen zum Aufladen von Benutzerinteraktionen. Es gibt jedoch zwei Benutzerprüfpunkte, die erfolgreich abgeschlossen werden müssen, damit eye tracking in Ihrer App funktioniert. Die beiden Prüfpunkte sind (a) die Genehmigung des Eye Tracking-Zugriffs für Ihre App und (b) das Abschließen der Eye Tracking-Kalibrierung auf dem Gerät. Das System fordert diese bei Bedarf automatisch auf, aber es ist möglich, dass der Benutzer etwas versehentlich ablehnt und hängen bleibt. In diesem Dokument werden bewährte Methoden für die Navigation durch die Prüfpunkte für die Eye Tracking beschrieben und dem Benutzer bei Bedarf bei der Wiederholung geholfen, um eine reibungslose und hochwertige Erfahrung mit Ihrer Anwendung zu gewährleisten.

Zugriffsanforderung

Um Eye Tracking nutzen zu können, muss Ihre App zuerst zugriff anfordern. Dies geschieht durch einen Aufruf von EyesPose::RequestAccessAsync, der im Leitfaden zur Entwicklung der Augenaugen dokumentiert ist. Diese Funktion löst eine Systemüberprüfung aus, um festzustellen, ob der Blickzugriff für Ihre Anwendung verfügbar ist. Bei der ersten Zugriffsanforderung nach der Installation wird der Benutzer mit einem Berechtigungsdialogfeld aufgefordert. Wenn sie auf "Ja" klicken, gibt die Funktion GazeInputAccessStatus::Allowed zurück, und Sie können mit Ihrer Erfahrung fortfahren. Wenn der Benutzer jedoch "Nein" auswählt, gibt die Funktion GazeInputAccessStatus::D eniedByUser zurück.

Abbildung des Dialogfelds HoloLens 2 ET-Berechtigungen

Das Dialogfeld "Zugriffsanforderung" wird nur einmal beim ersten Start Ihrer Anwendung angezeigt. Sobald der Benutzer seine Wahl getroffen hat, merkt sich das System seine Präferenz und wendet sie automatisch auf alle zukünftigen Zugriffsanforderungen für diesen angemeldeten Benutzer an. Wenn der Benutzer seine Einstellung später ändern möchte, kann er dies über den Abschnitt "App-Berechtigungen" der Seite "Datenschutz" in der HoloLens-App "Einstellungen" tun. Da die Einstellung klebrig ist, kann der Benutzer leider in einen Zustand versetzt werden, in dem die Augenverfolgung deaktiviert ist und er nicht weiß, wie er es beheben soll. Wenn eye tracking ein wichtiger Bestandteil Ihrer App-Erfahrung ist und Sie feststellen, dass der Zugriff auf eye tracking verweigert wurde, können Sie dem Benutzer helfen, indem Sie die Einstellungs-App direkt auf der richtigen Seite starten. Dies geschieht über einen Aufruf von Launcher::LaunchUriAsync mit der Zeichenfolge "ms-settings:privacy-eyetracker".

using namespace winrt::Windows::System::Launcher;
using namespace winrt::Windows::Foundation;

LaunchUriAsync(Uri(L"ms-settings:privacy-eyetracker"));

Sie sollten vermeiden, die Einstellungs-App automatisch zu starten oder den Benutzer wiederholt dazu aufzufordern. Suchen Sie stattdessen einen relevanten Ort auf Ihrer Benutzeroberfläche, an dem Sie den aktuellen Status des ET-Zugriffs mitteilen, den Wert von Eye Tracking für Ihre Anwendung erläutern und eine Schaltfläche bereitstellen können, auf der der Benutzer sie selbst starten kann.

Verzögern der Zugriffsanforderung

Ein häufiger Grund für die versehentliche Ablehnung der Zugriffsanforderung ist, dass der Benutzer beim ersten Starten der App von mehreren Popups gespammt wird. Eine bewährte Methode besteht darin, zu warten und den Zugriff nur im ersten Moment anzufordern, wenn die Eye Tracking von Ihrer App verwendet wird. Beispielsweise wird zum ersten Mal ein ET-optimiertes Menü angezeigt. Infolgedessen hat der Benutzer mehr Kontext und weniger Ablenkung, während er seine Wahl trifft, was die Wahrscheinlichkeit verringert, dass er ihn später ändern muss.

Überlegungen zu OpenXR

Wenn Sie OpenXR verwenden, gelten dieselben Regeln, aber die APIs, die die Zugriffsanforderung auslösen, unterscheiden sich etwas. OpenXR-Anwendungen fordern nach dem Aufruf von xrCreateSession automatisch Berechtigungen an, wenn sie eine instance verwenden, für die die Eye Tracking-Erweiterung (XR_EXT_eye_gaze_interaction) aktiviert ist. Weitere Informationen zur Verwendung von Eye Tracking über OpenXR finden Sie in der Dokumentation zur Erweiterung des Auges in der OpenXR-Spezifikation.

Benutzerkalibrierung

Sobald Ihre App Zugriff auf Eye Tracking hat, ist der nächste Prüfpunkt die Benutzerkalibrierung. Ähnlich wie bei der Zugriffsanforderung gibt es eine bestimmte API, die beim Aufruf eine Kalibrierungs-UI-Eingabeaufforderung auslösen kann. Die API ist SpatialPointerPose::Eyes. Beachten Sie, dass dies die gleiche API ist, die zum Abrufen von Augenaugenhaltungsdaten für jeden Frame verwendet wird, sodass der Zugriff auf die Eye tracking-Daten tatsächlich die Kalibrierungsaufforderung auslöst. Aus diesem Grunde sollten Anwendungen warten, bis sie tatsächlich beabsichtigen, die Eye Tracking-Pose-Daten zu verwenden, bevor sie diese API aufrufen und möglicherweise die Eingabeaufforderung auslösen.

Abbildung der HoloLens 2 ET-Kalibrierungsaufforderung

HoloLens speichert Kalibrierungen zwischen und wechselt automatisch, wenn erkannt wird, dass ein kalibrierter Benutzer das Gerät eingeschaltet hat. Daher wird diese Eingabeaufforderung nur für Benutzer angezeigt, die ihren Blick auf das Gerät nicht kalibriert haben. Wenn ein nicht kalibrierter Benutzer an der Eingabeaufforderung "Abbrechen" drückt, um die Kalibrierung abzulehnen, ist sein Blick für keine Anwendungen auf dem Gerät verfügbar. HoloLens erinnert sich an ihre Auswahl und fordert erst wieder ein, wenn das Gerät entfernt und wieder eingeschaltet wird. Dies ist zwar wichtig für Datenschutzzwecke, kann jedoch zu Verwirrung für Benutzer führen, wenn sie die Eingabeaufforderung versehentlich abbrechen und dann eye tracking in Ihrer Anwendung nicht verwenden können.

Um zu überprüfen, ob der aktuelle Benutzer kalibriert ist, rufen Sie EyesPose::IsCalibrationValid auf. Wenn der aktuelle Benutzer nicht kalibriert ist, sollten Sie idealerweise auf Interaktionen zurückgreifen, die nicht vom Blick abhängig sind. Wenn der Blick jedoch kritisch für Ihre Erfahrung ist und Sie sicherstellen müssen, dass alle Benutzer kalibriert sind, können Sie die Kalibrierungs-App manuell aufrufen, indem Sie Launcher::LaunchUriForResultsAsync mit der Zeichenfolge "ms-hololenssetup://EyeTracking" verwenden.

using namespace winrt::Windows::System::Launcher;
using namespace winrt::Windows::Foundation;

winrt::Windows::System::LauncherOptions options;
auto package = winrt::Windows::ApplicationModel::Package::Current();
options.TargetApplicationPackageFamilyName(L"Microsoft.HoloLensSetup_8wekyb3d8bbwe");
winrt::Windows::System::Launcher::LaunchUriForResultsAsync(winrt::Windows::Foundation::Uri(L"ms-hololenssetup://EyeTracking"), options);

LaunchUriForResultsAsync ist ein Gleichgeordneter der bekannteren LaunchUriAsync-API, die bereits als Methode zum Starten der Kalibrierungs-App vorgeschlagen wurde. Die LaunchUriAsync-Methode garantiert jedoch keine Rückkehr zu Ihrer Anwendung nach Abschluss der Kalibrierung. In den meisten Fällen kehrt sie einfach zur Shell zurück. Die LaunchUriForResultsAsync-API garantiert eine Rückkehr zu Ihrer Anwendung und ist daher eine viel bessere Benutzeroberfläche für den Benutzer.

LaunchUriForResultsAsync erfordert einen zusätzlichen Optionsparameter, wobei die Eigenschaft "TargetApplicationPackageFamilyName" festgelegt ist, um der HoloLens-Setupanwendung zu entsprechen. Wenn Sie die Paketfamiliennamenzeichenfolge für eine anwendung benötigen, die auf Ihrer HoloLens installiert ist, finden Sie sie im Abschnitt "Apps: Installierte Apps" des Windows-Geräteportals unter "PackageRelativeId". Entfernen Sie einfach das "! App"-Zeichen am Ende der Zeichenfolge.

Abbildung eines Teils der Seite

Apps sollten die Kalibrierung des Blicks niemals automatisch und ohne Benutzerinteraktion starten. Ähnlich wie bei der Zugriffsanforderung empfehlen wir Ihnen, einen relevanten Ort auf Ihrer Benutzeroberfläche zu finden, an dem Sie die Kalibrierung status anzeigen, den Wert von Eye Tracking für Ihre Anwendung mitteilen und eine Schaltfläche bereitstellen können, auf der der Benutzer die Kalibrierung selbst starten kann.

Überlegungen zu OpenXR

Wenn Sie OpenXR verwenden, gelten dieselben Muster, aber die API, die die Kalibrierungsaufforderung auslöst, unterscheidet sich etwas. In OpenXR wird die Eingabeaufforderung für nicht kalibrierte Benutzer beim ersten Aufruf von xrSyncActions ausgelöst, wobei eine Augenaugenaktion aktiviert ist. Weitere Informationen zur Verwendung von Eye Tracking über OpenXR finden Sie in der Dokumentation zur Erweiterung des Auges in der OpenXR-Spezifikation.