Ses arabirimli gözlükler için fiziksel giriş yönlendirmesini anlama

Uygun XR cihazlar
Bu kılavuz, bu tür XR cihazları için deneyimler geliştirmenize yardımcı olur.
Ses Arabirimli Gözlük

Ses arabirimli gözlüklerde sistem, fiziksel girişi (ör. dokunmatik alan hareketleri veya düğmeye basma) görsel ekran odağı yerine kullanıcı farkındalığına göre yönlendirir. Kullanıcılar bir kullanıcı arayüzü göremediğinden sistem, fiziksel girişi kullanıcının algıladığı veya aktif olarak etkileşimde bulunduğu uygulama deneyiminin yansıtılan etkinliğine yönlendirir.

Sistem, kullanıcı farkındalığını nasıl belirler?

Sistem, aşağıdaki veri akışlarından hangilerinin etkin olduğunu izleyerek kullanıcı farkındalığını belirler:

  • Ses çıkış akışları: Sesli okumalar, sesli uyarılar veya medya oynatma.
  • Mikrofon kayıt akışları: Kullanıcının çevresinden gelen devam eden sesli komutlar veya ses kaydı.
  • Kamera yakalama akışları: Video veya fotoğraf akışları.

Bazı veri akışları geçicidir ve kullanıcı farkındalığını yalnızca kısa bir süre için korur. Örneğin, bir rotada gezinirken kullanıcının yapması gereken bir sonraki dönüşün sesli olarak okunması. Diğer veri akışları süresizdir ve devam ettikleri sürece kullanıcı farkındalığını korur. Örneğin, sonsuz ve rastgele bir oynatma listesiyle medya oynatma. Geçici bir veri akışı, süresiz bir veri akışını kesintiye uğrattığında geçici olarak kullanıcı farkındalığı kazanır.

Eşzamanlılık ve giriş odağı

Kullanıcılar genellikle ses arabirimli gözlüklerde aynı anda birden fazla uygulama deneyimi çalıştırır. Örneğin, kullanıcı adım adım rotayı takip ederken müzik dinleyebilir. Bu durumlarda sistem, bir eşzamanlılık durumu atar ve aşağıdakileri yaparak giriş odağını ses odağıyla eşleşecek şekilde değiştirir:

  • Uygulamanızın öngörülen etkinliğini devam ettirme veya durdurma
  • Fiziksel giriş, ön plandaki yansıtılan etkinliğe yönlendiriliyor.

Bu yaklaşım, tutarlı bir kullanıcı deneyimi sunmaya yardımcı olur.

Sistemin, yansıtılan etkinliğinizi yeniden başlatmasına izin verme

Uygulamanız kullanıcı farkındalığı kazandığında, özellikle de öngörülen etkinliği arka plandaysa sistem, etkinliği devam ettirebilmeli ve fiziksel girişi bu etkinliğe yönlendirebilmelidir.

Sistemin etkinliğinizi yeniden başlatabilmesi için:

  1. Beklemede olan intent oluşturun: Hedef yansıtılan etkinliğinizi gösteren açık bir Intent oluşturun. Güvenli ve öngörülebilir başlatma davranışını sürdürmek için intent'i PendingIntent içine alın ve FLAG_UPDATE_CURRENT veya FLAG_IMMUTABLE değerini ayarlayın:

    // Build an explicit Intent pointing to this projected activity and wrap it in a
    // PendingIntent so the system can relaunch it and route physical input to it.
    private val pendingIntent: PendingIntent by lazy {
        val intent = Intent(this, ProjectedInputFocusActivity::class.java)
    
        PendingIntent.getActivity(
            this,
            0,
            intent,
            PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
        )
    }

  2. Giriş alıcısını kaydetme: ProjectedActivityCompat örneği alın ve PendingIntent öğenizi setActivityAsInputReceiver öğesine ileterek belirlenen giriş alıcısı olarak kaydedin.

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        lifecycleScope.launch {
            // Create or obtain the ProjectedActivityCompat instance
            val projectedActivity = ProjectedActivityCompat.create(this@ProjectedInputFocusActivity)
    
            // Register the PendingIntent as the designated input receiver
            projectedActivity.setActivityAsInputReceiver(pendingIntent)
        }

  3. Temizleme sırasında giriş alıcıyı temizleyin: Etkinliğiniz yok edildiğinde veya artık fiziksel giriş alması gerekmediğinde, eski PendingIntent gönderimlerini ve bellek sızıntılarını önlemek için giriş alıcıyı temizleyin.

    override fun onDestroy() {
        super.onDestroy()
        lifecycleScope.launch {
            val projectedActivity = ProjectedActivityCompat.create(this@ProjectedInputFocusActivity)
            projectedActivity.clearActivityAsInputReceiver()
        }
    }

Giriş odağının eşzamanlılık durumları arasında nasıl değiştiğini anlama

Sistem, hangi uygulamanın giriş odağını alacağını belirlemek için etkin veri akışlarını değerlendirir ve girişi şu eşzamanlılık durumlarına göre yönlendirir:

Eşzamanlılık durumu Çevresel bağlam Sistem davranışı ve giriş odağı Örnek

Eşzamanlı olmayan

Bağımsız bir yansıtılan etkinlik etkin; arka planda medya oturumu çalışmıyor.

Giriş odağı, sesli okumalar arasındaki sessiz dönemlerde bile tamamen yansıtılan etkinliğinize yönlendirilir.

Bir kullanıcı, antrenman takip uygulaması çalıştırıyor. Sessizlik anlarında bile dokunmatik alan girişleri doğrudan fitness uygulamasına yönlendiriliyor.

Yarı eş zamanlı

Yansıtılan bir etkinlik etkin ancak arka planda medya oturumu duraklatılmış durumda.

Uygulamanın etkin okumaları arasındaki sessiz dönemlerde giriş odağı varsayılan olarak duraklatılmış medya kontrollerine geçer.

Kullanıcı, müzik duraklatılmışken antrenman takip uygulaması çalıştırıyor. Fitness koçu güncellemeleri arasında, dokunmatik alana dokunulduğunda antrenman işlevi tetiklenmez, müzik devam ettirilir.

Eşzamanlı

İkili oynatma etkin (ör. uygulamanızın sesli duyurusu arka plan müziğini kesintiye uğratıyor veya kısıyor).

Ses odağı, giriş odağına eşittir.

Giriş odağı, etkin sesli okumalar sırasında yansıtılan etkinliğinize yönlendirilir ve ses akışı sona erdiğinde medya kontrollerine geri döner.

Kullanıcı müzik dinlerken bir navigasyon uygulaması talimat okuması başlatır. Sesli okuma sırasında navigasyon uygulaması giriş odağını alır. Sesli okuma bittikten sonra giriş odağı medya kontrollerine geri döner.

Sistem zamanlaması önlemleri

Sistem, kullanıcıların yanlışlıkla giriş yapmasını veya beklenmedik davranışlar sergilemesini önlemek için aşağıdaki önlemleri sağlar:

  • Yeni başlatılan yansıtılan etkinlikler için ek süreler: Soğuk başlatma öğe yükleme veya ağ gecikmelerini önlemek için yeni başlatılan yansıtılan etkinliklere, sistem yansıtılan etkinliği durdurup arka plana taşımadan önce veri akışı oluşturmak ve kullanıcı farkındalığı kazanmak için kısa bir ek süre verilir.
  • Odak, kullanıcı farkındalığına göre yönlendirilir: Kullanıcı farkındalığı, sesli okuma gibi yeni ve etkin bir veri akışından değişirse sistem, yansıtılan etkinliğinizi anında devam ettirir ve giriş odağını bu etkinliğe yönlendirir.
  • Medya oynatma sırasında geçiş arabellekleri: Arka planda medya oynatma sırasında geçici bir sesli okuma tamamlandığında giriş odağı, yansıtılan etkinlikte anlık olarak kalır. Tampon süre, kullanıcının sesli okumayı kapatmaya çalışırken yanlışlıkla müzik parçasını atlaması gibi yanlış girişleri önlemeye yardımcı olur. Geçiş arabelleğinden sonra sistem, uygulamanın yansıtılan etkinliğini durdurur ve giriş odağını medya kontrollerine yönlendirir.
  • Boştaki yansıtılan etkinlikler durdurulur veya duraklatılır: Sistem, etkin veri akışı olmayan boştaki yansıtılan etkinlikleri birkaç dakika sonra (veya duraklatıldığında devam eden medya çıkışı için anlık olarak) durdurur.

Giriş odağı geçişleri uygulamada

Giriş odağının eşzamanlılık durumları arasında nasıl geçiş yaptığını anlamak için adım adım rehberlik sağlayan bir navigasyon uygulamasıyla ilgili aşağıdaki örnek senaryoları inceleyin:

A senaryosu: Eşzamanlı olmayan (etkin olmayan medya)

Bu senaryoda sistem, girişi tüm yolculuk boyunca kullanıcı farkındalığına sahip olan navigasyon uygulamasına yönlendirir.

Şekil 1. Bu eşzamanlı olmayan senaryoda, giriş odağının bir navigasyon uygulaması için nasıl yönlendirileceği.
  1. Kullanıcı, arka planda müzik çalmadan navigasyonu başlatır.
  2. Navigasyon uygulaması, yansıtılan etkinliğini ses arabirimli gözlükte başlatır.
  3. Etkin bir medya oturumu olmadığından navigasyon uygulaması, yolculuk boyunca dokunmatik alan giriş odağını korur.
  4. Kullanıcı işlemleri: Sesli okuma sırasında ekrana dokunulduğunda sesli yönlendirme kapatılabilir. Sessizlik sırasında dokunursanız son talimat tekrarlanabilir.

B Senaryosu: Yarı eşzamanlı (duraklatılmış medya)

Bu senaryoda, navigasyon uygulamasının kullanıcı farkındalığı olmadığında sistem, girişi sistem medya kontrollerine yönlendirir.

Şekil 2. Bu yarı eşzamanlı senaryoda giriş odağının bir navigasyon uygulaması için nasıl yönlendirileceği.
  1. Kullanıcı, arka plan müziği duraklatılmışken navigasyonu başlatır.
  2. Okumalar arasındaki sessiz dönemlerde giriş odağı varsayılan olarak medya kontrollerine geçer.
  3. Navigasyon uygulaması "500 metre sonra sola dönün" dediğinde giriş odağı kazanır.
  4. Kullanıcı işlemleri: Sesli okuma sırasında ekrana dokunulduğunda sesli yönlendirme kapatılabilir. Sessizlik sırasında dokunulduğunda müzik çalmaya devam eder.

C Senaryosu: Eşzamanlı (etkin medya)

Bu senaryoda sistem, navigasyon uygulamasının kullanıcı farkındalığına sahip olmadığı her durumda girişi sistem medya kontrollerine yönlendirir ve navigasyon uygulamasından her sesli okuma sırasında etkin medya oynatmanın sesi kısılır.

Şekil 3. Bu eşzamanlı senaryoda giriş odağının bir navigasyon uygulaması için nasıl yönlendirileceği.
  1. Kullanıcı, müzik çalarken navigasyonu başlatır.
  2. Talimatlar okunurken sistem, arka plan sesini kısar ve giriş odağını navigasyon uygulamasına kaydırır.
  3. Kullanıcı işlemleri: Sesli okuma sırasında ekrana dokunulduğunda sesli yönlendirme kapatılabilir. Sessiz dönemlerde dokunulduğunda medya oynatmayı kontrol eder (duraklatma veya devam ettirme).