Aracılığıyla paylaş


Gözle İzleme Erişimini ve Kalibrasyonu Yönetme

HoloLens 2 gözle izleme, kullanıcı etkileşimlerini süper şarj etme için güçlü özellikler sağlar. Ancak, uygulamanızda göz izlemenin çalışması için başarıyla tamamlanması gereken iki kullanıcı denetim noktası vardır. İki kontrol noktası (a) uygulamanız için göz izleme erişimini onaylama ve (b) cihazda göz izleme kalibrasyonunu tamamlamadır. Sistem bunları gerektiğinde otomatik olarak tamamlamasını ister, ancak kullanıcının yanlışlıkla bir şeyi reddetmesi ve takılması mümkündür. Bu belgede göz izleme denetim noktalarında gezinmek ve gerektiğinde kullanıcının yeniden denemesine yardımcı olmak, uygulamanızla sorunsuz ve kaliteli bir deneyim sağlamak için en iyi yöntemler özetlenmiştir.

Erişim isteği

Gözle izlemeyi kullanmak için uygulamanızın önce erişim istemesi gerekir. Bu, göz bakışı geliştirme kılavuzunda belgelenen EyesPose::RequestAccessAsync çağrısıyla yapılır. Bu işlev, göz bakışı erişiminin uygulamanız için kullanılabilir olup olmadığını görmek için bir sistem denetimi tetikler. Yüklemeden sonraki ilk erişim isteğinde, kullanıcıdan bir izinler iletişim kutusu istenir. "Evet" seçeneğine tıklarsa işlev GazeInputAccessStatus::Allowed değerini döndürür ve deneyiminize devam edebilirsiniz. Ancak kullanıcı "Hayır"ı seçerse işlev GazeInputAccessStatus::D eniedByUser döndürür.

HoloLens 2 ET izinleri iletişim kutusunun resmi

Erişim isteği iletişim kutusu, uygulamanızın ilk başlatıldığında yalnızca bir kez görüntülenir. Kullanıcı seçimini yaptıktan sonra, sistem tercihini hatırlar ve bu oturum açmış kullanıcı için gelecekteki tüm erişim isteklerine otomatik olarak uygular. Kullanıcı daha sonra tercihini değiştirmek isterse, Bunu HoloLens 'Ayarlar' uygulamasındaki 'Gizlilik' sayfasının 'Uygulama izinleri' bölümü aracılığıyla yapabilir. Tercih yapışkan olduğundan, kullanıcı ne yazık ki göz izlemenin kapalı olduğu ve nasıl düzeltileceğini bilmediği bir duruma geçebilir. Göz izleme uygulama deneyiminizin önemli bir parçasıysa ve göz izleme erişiminin reddedildiğini algılarsanız, ayarlar uygulamasını doğrudan doğru sayfaya başlatarak kullanıcıya yardımcı olabilirsiniz. Bu, "ms-settings:privacy-eyetracker" dizesiyle Launcher::LaunchUriAsync çağrısıyla yapılır.

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

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

Ayarlar uygulamasını otomatik olarak başlatmaktan kaçınmanız veya kullanıcıya tekrar tekrar sormanız gerekir. Bunun yerine, kullanıcı arabiriminizde ET erişiminin geçerli durumunu iletebileceğiniz, uygulamanız için göz izleme değerini açıklayabileceğiniz ve kullanıcının uygulamayı başlatması için bir düğme sağlayabileceğiniz ilgili bir konum bulun.

Erişim isteğini geciktirme

Erişim isteğini yanlışlıkla azaltmanın yaygın nedenlerinden biri, kullanıcının uygulama ilk başlatıldığında birden çok açılan pencere tarafından istenmeyen posta gönderilmesidir. Burada en iyi uygulama, yalnızca uygulamanız tarafından göz izlemenin kullanılacağı ilk anda beklemek ve erişim istemektir. Örneğin, ET için iyileştirilmiş bir menü ilk kez görüntülenir. Sonuç olarak, kullanıcı seçim yaparken daha fazla bağlama ve daha az dikkat dağınıklığına sahip olur ve daha sonra değiştirme şansını azaltır.

OpenXR ile ilgili dikkat edilmesi gerekenler

OpenXR kullanıyorsanız, aynı kurallar geçerlidir, ancak erişim isteğini tetikleyen API'ler biraz farklıdır. OpenXR uygulamaları, göz izleme uzantısı (XR_EXT_eye_gaze_interaction) etkinleştirilmiş bir örneği kullanırken xrCreateSession çağrısından sonra otomatik olarak izin ister. OpenXR aracılığıyla göz izlemeyi kullanma hakkında daha fazla bilgi edinmek için OpenXR belirtimindeki göz bakışı uzantısı belgelerini ziyaret edin .

Kullanıcı ayarı

Uygulamanız gözle izlemeye erişime sahip olduktan sonra bir sonraki denetim noktası kullanıcı ayarıdır. Erişim isteğine benzer şekilde, çağrıldığında ayar kullanıcı arabirimi istemini tetikleyebilen belirli bir API vardır. API , SpatialPointerPose::Eyes şeklindedir. Bunun her karede göz bakışı poz verilerini almak için kullanılan API ile aynı olduğuna dikkat edin. Bu nedenle göz izleme verilerine erişildiğinde kalibrasyon istemi tetikleniyor. Bu nedenle, uygulamalar bu API'yi çağırmadan ve istem tetiklemeden önce göz izleme poz verilerini kullanmayı gerçekten amaçlayana kadar beklemelidir.

HoloLens 2 ET kalibrasyon isteminin görüntüsü

HoloLens kalibrasyonları önbelleğe alır ve cihazı ayarlı bir kullanıcının yerleştirdiğini algıladığında otomatik olarak değiştirir. Bu istem yalnızca cihazdaki göz bakışlarını ayarlamamış kullanıcılar için görünür. Hesaplanmamış bir kullanıcı ayarı reddetme isteminde "İptal" tuşuna basarsa, göz bakışı cihazdaki hiçbir uygulama tarafından kullanılamaz. HoloLens seçimini hatırlar ve cihaz kaldırılıp yeniden açılmadan bir daha sormaz. Gizlilik açısından önemli olsa da, istem yanlışlıkla iptal edilirse ve uygulamanızda gözle izlemeyi kullanamıyorlarsa bu durum kullanıcılar için karışıklığa neden olabilir.

Geçerli kullanıcının kalibre edilip edilmediğini denetlemek için EyesPose::IsCalibrationValid öğesini çağırın. Geçerli kullanıcı ayarlanmamışsa, göz bakışına bağımlı olmayan etkileşimlere geri dönmeniz idealdir. Ancak, göz bakışı deneyiminiz için kritik öneme sahipse ve tüm kullanıcılarınızın kalibre olduğundan emin olmanız gerekiyorsa Launcher ::LaunchUriForResultsAsync komutunu "ms-hololenssetup://EyeTracking" dizesiyle kullanarak kalibrasyon uygulamasını el ile çağırabilirsiniz.

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, kalibrasyon uygulamasını başlatma yöntemi olarak zaten önerilen daha iyi bilinen LaunchUriAsync API'sinin eşdüzey bir örneğidir. Ancak LaunchUriAsync yöntemi, kalibrasyon tamamlandıktan sonra uygulamanıza geri dönme garantisi vermez . Çoğu durumda, yalnızca kabuğa geri döner. LaunchUriForResultsAsync API'si, uygulamanıza geri dönmeyi garanti eder ve bu nedenle kullanıcı için çok daha iyi bir deneyimdir.

LaunchUriForResultsAsync, HoloLens Kurulum uygulamasıyla eşleşecek şekilde ayarlanmış 'TargetApplicationPackageFamilyName' özelliğine sahip ek bir 'options' parametresi gerektirir. HoloLens'inizde yüklü bir uygulama için paket ailesi adı dizesine ihtiyacınız olursa, bunu Windows Cihaz Portalı'nın "Uygulamalar: Yüklü uygulamalar" bölümünde "PackageRelativeId" altında bulabilirsiniz. "! Dizenin sonundaki Uygulama" karakterleri.

Windows Cihaz Bağlantı Noktaları'nda yüklü uygulamalar sayfasının bir bölümünün görüntüsü

Uygulamalar hiçbir zaman göz bakışı kalibrasyonu otomatik olarak ve kullanıcı etkileşimi olmadan başlatmamalıdır. Erişim isteğine benzer şekilde kullanıcı arabiriminizde kalibrasyon durumunu gösterebileceğiniz, uygulamanız için göz izleme değerini iletebileceğiniz ve kullanıcının kalibrasyonu başlatması için bir düğme sağlayabileceğiniz ilgili bir konum bulmanızı öneririz.

OpenXR ile ilgili dikkat edilmesi gerekenler

OpenXR kullanıyorsanız aynı desenler geçerlidir, ancak kalibrasyon istemini tetikleyen API biraz farklıdır. OpenXR'de, göz bakışı eylemi etkinleştirilmiş xrSyncActions'a yapılan ilk çağrıda ayarlanmamış kullanıcılar için istem tetiklenir. OpenXR aracılığıyla göz izlemeyi kullanma hakkında daha fazla bilgi edinmek için OpenXR belirtimindeki göz bakışı uzantısı belgelerini ziyaret edin .