Compartir a través de


Administrar el acceso y la calibración del seguimiento ocular

El seguimiento ocular en HoloLens 2 proporciona funcionalidades eficaces para sobrecargar las interacciones del usuario. Sin embargo, hay dos puntos de comprobación de usuario que deben completarse correctamente para que el seguimiento ocular funcione en la aplicación. Los dos puntos de control son (a) aprobar el acceso de seguimiento ocular para la aplicación y (b) completar la calibración del seguimiento ocular en el dispositivo. El sistema solicita automáticamente que los complete según sea necesario, pero es posible que el usuario rechace accidentalmente algo y se bloquee. En este documento se describen los procedimientos recomendados para navegar por los puntos de control de seguimiento ocular y ayudar al usuario a reintentar cuando sea necesario, lo que garantiza una experiencia fluida y de calidad con la aplicación.

Solicitud de acceso

Para poder usar el seguimiento ocular, la aplicación debe solicitar primero el acceso. Esto se realiza a través de una llamada a EyesPose::RequestAccessAsync, que se documenta en la guía de desarrollo de miradas oculares. Esta función desencadena una comprobación del sistema para ver si el acceso a la mirada ocular está disponible para la aplicación. En la primera solicitud de acceso después de la instalación, se le pedirá al usuario un cuadro de diálogo de permisos. Si hacen clic en "Sí", la función devolverá GazeInputAccessStatus::Allowed y podrá continuar con su experiencia. Sin embargo, si el usuario selecciona "No", la función devolverá GazeInputAccessStatus::D eniedByUser.

Imagen del cuadro de diálogo permisos et de HoloLens 2

El cuadro de diálogo de solicitud de acceso solo aparece una vez, en el primer inicio de la aplicación. Una vez que el usuario ha elegido, el sistema recuerda sus preferencias y lo aplica a todas las solicitudes de acceso futuras automáticamente para ese usuario que ha iniciado sesión. Si el usuario quiere cambiar su preferencia más adelante, puede hacerlo a través de la sección "Permisos de aplicación" de la página "Privacidad" en la aplicación "Configuración" de HoloLens. Dado que la preferencia es pegajosa, el usuario puede, por desgracia, entrar en un estado en el que el seguimiento ocular está desactivado y no sabe cómo corregirlo. Si el seguimiento ocular es una parte importante de la experiencia de la aplicación y detectas que se ha denegado el acceso al seguimiento ocular, puedes ayudar al usuario iniciando directamente la aplicación de configuración en la página correcta. Esto se realiza a través de una llamada a Launcher::LaunchUriAsync con la cadena "ms-settings:privacy-eyetracker".

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

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

Debe evitar iniciar la aplicación de configuración automáticamente o preguntar al usuario repetidamente. En su lugar, busque una ubicación relevante en la interfaz de usuario en la que pueda comunicar el estado actual del acceso et, explicar el valor del seguimiento ocular de la aplicación y proporcionar un botón para que el usuario lo inicie por sí mismo.

Retrasar la solicitud de acceso

Una razón habitual para rechazar accidentalmente la solicitud de acceso es que varios elementos emergentes envíen correo no deseado al usuario cuando se inicia la aplicación por primera vez. Un procedimiento recomendado aquí es esperar y solicitar acceso solo en el primer momento en que la aplicación usará el seguimiento ocular. Por ejemplo, aparece la primera vez que aparece un menú optimizado para ET. Como resultado, el usuario tendrá más contexto y menos distracciones mientras toma su elección, lo que reduce la posibilidad de que necesite cambiarlo más adelante.

Consideraciones para OpenXR

Si usa OpenXR, se aplican las mismas reglas, pero las API que desencadenan la solicitud de acceso son un poco diferentes. Las aplicaciones de OpenXR solicitarán automáticamente permisos después de la llamada a xrCreateSession al usar una instancia que tenga habilitada la extensión de seguimiento ocular (XR_EXT_eye_gaze_interaction). Para obtener más información sobre cómo usar el seguimiento ocular a través de OpenXR, visite la documentación de la extensión de mirada ocular en la especificación de OpenXR.

Calibración del usuario

Una vez que la aplicación tiene acceso al seguimiento ocular, el siguiente punto de control es la calibración del usuario. De forma similar a la solicitud de acceso, hay una API específica que puede desencadenar una solicitud de interfaz de usuario de calibración cuando se llama. La API es SpatialPointerPose::Eyes. Tenga en cuenta que esta es la misma API que se usa para recuperar los datos de la posición de la mirada ocular en cada fotograma, por lo que, en efecto, el acceso a los datos de seguimiento ocular desencadena el aviso de calibración. Por este motivo, las aplicaciones deben esperar hasta que realmente intenten usar los datos de la posición de seguimiento ocular antes de llamar a esta API y, posiblemente, desencadenar el aviso.

Imagen del mensaje de calibración et de HoloLens 2

HoloLens almacena en caché las calibraciones y cambia automáticamente cuando detecta que un usuario calibrado ha activado el dispositivo. Por lo tanto, este mensaje solo aparecerá para los usuarios que no han calibrado su mirada ocular en el dispositivo. Si un usuario sin calibrar presiona "Cancelar" en el símbolo del sistema para rechazar la calibración, su mirada ocular no estará disponible para ninguna aplicación del dispositivo. HoloLens recuerda su selección y no volverá a preguntar hasta que el dispositivo se quite y vuelva a colocarlo. Aunque es importante para fines de privacidad, esto puede crear confusión para los usuarios si cancelan accidentalmente el mensaje, entonces no pueden usar el seguimiento ocular en la aplicación.

Para comprobar si el usuario actual está calibrado, llame a EyesPose::IsCalibrationValid. Si el usuario actual no está calibrado, lo ideal es recurrir a interacciones que no dependen de la mirada ocular. Sin embargo, si la mirada con los ojos es fundamental para su experiencia y necesita asegurarse de que todos los usuarios están calibrados, puede invocar manualmente la aplicación de calibración mediante Launcher::LaunchUriForResultsAsync con la cadena "ms-hololenssetup://EyeTracking".

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 es un elemento relacionado de la API LaunchUriAsync más conocida, que ya se ha sugerido como un método para iniciar la aplicación de calibración. Sin embargo, el método LaunchUriAsync no garantiza un retorno a la aplicación una vez completada la calibración. En la mayoría de los casos, simplemente volverá al shell. La API LaunchUriForResultsAsync garantiza un retorno a la aplicación y, por tanto, es una experiencia mucho mejor para el usuario.

LaunchUriForResultsAsync requiere un parámetro "options" adicional con la propiedad "TargetApplicationPackageFamilyName" establecida para que coincida con la aplicación de instalación de HoloLens. Si alguna vez necesita la cadena de nombre de familia del paquete para una aplicación instalada en HoloLens, puede encontrarlo en la sección "Aplicaciones: Aplicaciones: Aplicaciones instaladas" del Portal de dispositivos Windows en "PackageRelativeId". ¡Solo tienes que quitar la "! Caracteres app" del final de la cadena.

Imagen de una parte de la página de aplicaciones instaladas en portsl de dispositivos Windows

Las aplicaciones nunca deben iniciar la calibración de la mirada ocular automáticamente y sin interacción del usuario. De forma similar a la solicitud de acceso, se recomienda encontrar una ubicación relevante en la interfaz de usuario donde puede mostrar el estado de calibración, comunicar el valor del seguimiento ocular de la aplicación y proporcionar un botón para que el usuario inicie la calibración.

Consideraciones para OpenXR

Si usa OpenXR, se aplican los mismos patrones, pero la API que desencadena el aviso de calibración es un poco diferente. En OpenXR, el mensaje se desencadenará para los usuarios sin almacenar en la primera llamada a xrSyncActions con una acción de mirada con los ojos habilitada. Para obtener más información sobre cómo usar el seguimiento ocular a través de OpenXR, visite la documentación de la extensión de mirada ocular en la especificación de OpenXR.