TV kumandalarını yönetme

TV cihazları, uygulamalarla etkileşim için ikincil bir donanım cihazı (temel uzaktan kumanda veya oyun kumandası) gerektirir. Dolayısıyla, uygulamanız yön tuşları (D-pad) girişini desteklemelidir. Ayrıca uygulamanızın çevrimdışı olan kumandaları işlemesi ve birden fazla kumanda türünden giriş yapması gerekebilir.

Bu kılavuzda, TV cihazlarının kumandalarını kullanma koşulları açıklanmaktadır.

D-pad minimum denetimleri

TV cihazlarının varsayılan kumandası D-pad'dir. Genel olarak uygulamanız yalnızca yukarı, aşağı, sol, sağ, Seç, Geri ve Ana Ekran düğmeleri olan bir uzaktan kumanda ile çalıştırılabilir olmalıdır. Uygulamanız genellikle ek kontrollere sahip bir oyun kumandası gerektiren bir oyunsa yalnızca bu D-pad kontrollerini kullanarak oynanabilirliği desteklemeyi deneyin. Aksi takdirde, kullanıcıyı kumandanın gerektiği konusunda uyarın ve D-pad denetleyiciyi kullanarak oyununuzdan sorunsuz bir şekilde çıkmasına izin verin.

TV cihazları için D-pad denetleyiciyle gezinme hakkında daha fazla bilgi edinmek için TV'de gezinme bölümüne bakın.

Kumandanın bağlantısını kesme

TV kumandaları genellikle Bluetooth cihazlarıdır. Bu cihazlar düzenli aralıklarla uyku moduna geçerek ve TV cihazının bağlantısını keserek güç tasarrufu yapmaya çalışabilirler. Bu, bir uygulamanın bu yeniden bağlanma etkinliklerini işlemek üzere yapılandırılmadığı takdirde kesilebileceği veya yeniden başlatılabileceği anlamına gelir. Bu etkinlikler aşağıdaki durumlarda gerçekleşebilir:

  • Birkaç dakikalık bir video oynatılırken D-pad veya oyun kumandası uyku moduna geçebilir, TV cihazının bağlantısını kesebilir ve daha sonra yeniden bağlanabilir.
  • Oyun sırasında yeni bir oyuncu, bağlı olmayan bir oyun kumandasını kullanarak oyuna katılabilir.
  • Oyun esnasında oyuncu oyundan ayrılabilir ve oyun kumandasının bağlantısını kesebilir.

Bağlantı kesme ve yeniden bağlama etkinliklerine tabi olan TV uygulaması etkinlikleri, uygulama manifestindeki yeniden bağlanma etkinliklerini işleyecek şekilde yapılandırılmalıdır. Aşağıdaki kod örneğinde, klavye ya da gezinme cihazının bağlanması, bağlantısının kesilmesi veya yeniden bağlanması gibi yapılandırma değişikliklerini işlemek için bir etkinliğin nasıl etkinleştirileceği gösterilmektedir:

<activity
  android:name="com.example.android.TvActivity"
  android:label="@string/app_name"
  android:configChanges="keyboard|keyboardHidden|navigation"
  android:theme="@style/Theme.Leanback">

  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
  </intent-filter>
  ...
</activity>

Bu yapılandırma değişikliği, uygulamanın Android çerçevesi tarafından yeniden başlatılması yerine, iyi bir kullanıcı deneyimi sunmayacak bir yeniden bağlantı etkinliği üzerinden çalışmaya devam etmesine olanak tanır.

D-pad giriş varyasyonlarını işleyin

TV cihazı kullanıcıları, TV'leriyle birlikte kullandıkları birden fazla kumanda türüne sahip olabilir. Örneğin, bir kullanıcının hem temel D-pad kumandası hem de oyun kumandası olabilir. Oyun kumandası tarafından D-pad işlevleri için kullanıldığında sağlanan anahtar kodları, temel D-pad tarafından gönderilen anahtar kodlarından farklı olabilir.

Kullanıcının uygulamanızı çalıştırmak için kumandaları değiştirmek zorunda kalmaması için D-pad girişindeki değişiklikleri yönetin. Giriş varyasyonlarını işleme hakkında daha fazla bilgi için İşlem yön tuşlarıyla giriş bölümüne bakın.

Düğme etkinliklerini işleme

Kullanıcı kumandadaki bir düğmeyi tıkladığında uygulamanız KeyEvent içeren bir etkinlik alır. Düğmenin amaçlanan davranışı, oynatma, duraklatma veya durdurma gibi bir medya etkinliği veya seçim ya da gezinme gibi TV türünde bir etkinlik olabilir. İyi bir kullanıcı deneyimi sağlamak için kumanda düğmelerine tutarlı davranışlar atayın.

TV kullanıcı arayüzü etkinlikleri

TV kullanıcı arayüzü davranışını, aşağıdaki tabloda gösterildiği gibi KeyEvent türleri oluşturan düğmelere atayın:

KeyEventDavranış
KEYCODE_BUTTON_B, KEYCODE_BACKGeri
KEYCODE_BUTTON_SELECT, KEYCODE_BUTTON_A, KEYCODE_ENTER, KEYCODE_DPAD_CENTER, KEYCODE_NUMPAD_ENTERSeçim
KEYCODE_DPAD_UP, KEYCODE_DPAD_DOWN, KEYCODE_DPAD_LEFT, KEYCODE_DPAD_RIGHTNavigasyon

Medya etkinlikleri

Kullanıcı medya izlerken aşağıdaki tabloda gösterildiği gibi KeyEvent türleri oluşturan düğmelere davranış atayın. Uygulamanız bir MediaSessionyı kontrol ediyorsa tabloda gösterilen MediaControllerCompat.TransportControls yöntemlerinden birini çağırmak için MediaControllerAdapter kullanın. Bu bağlamda seçim düğmelerinin Oynat veya Duraklat düğmeleri olarak görev yapacağını unutmayın.

KeyEventTransportControls çağrısıDavranış
BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER play()Oynat
BUTTON_START, BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER pause()Duraklat
BUTTON_R1skipToNext()Sonrakine atla
BUTTON_L1skipToPrevious()Öncekine atla
DPAD_RIGHT, BUTTON_R2, AXIS_RTRIGGER, AXIS_THROTTLEfastForward()İleri sarma
DPAD_LEFT, BUTTON_L2, AXIS_LTRIGGER, AXIS_BRAKErewind()Geri sar
Yokstop()Durdur

Not: MediaSession kullandığınızda KEYCODE_MEDIA_PLAY veya KEYCODE_MEDIA_PAUSE gibi medyaya özgü düğmelerin kullanımını geçersiz kılmayın. Sistem, uygun MediaSession.Callback yöntemini otomatik olarak tetikler.

Uygun Geri düğmesi davranışı sağlayın

Geri düğmesi hiçbir zaman açma/kapatma düğmesi olarak kullanılmamalıdır. Örneğin, bunu bir menüyü hem açmak hem de kapatmak için kullanmayın. Bunu yalnızca, oynatıcının bulunduğu önceki ekranlarda içerik haritası stilinde geri gitmek için kullanın.

Geri düğmesi yalnızca doğrusal, geri gezinme işlemi yaptığından farklı bir düğmeyle açık bir uygulama içi menüyü bırakıp uygulamaya dönmek için bunu kullanabilirsiniz. Arka arkaya Geri düğmesine basıldığında her zaman Android TV ana ekranına dönmek gerekir. Örneğin: Oyun oynama > oyun duraklatma ekranı > oyun ana ekranı > Android TV ana ekranı veya TV programı oynatma > TV uygulaması ana ekranı > Android TV ana ekranı.

Gezinme tasarımı hakkında daha fazla bilgi için Geri ve Yukarı gezinmeyi tasarlama konusuna bakın. Uygulama hakkında bilgi edinmek için Uygun geri gezinme sağlama konusuna bakın.

Oyunlardaki kumandaları kullanın

D-pad kontrollerini destekleyin

Android TV cihazları için varsayılan ayar bu olduğundan kontrol şemanızı D-pad kontrolü etrafında planlayın. Oyuncunun yalnızca temel oynanabilirliği kontrol etmekle kalmayıp menülerde ve reklamlarda da gezinerek oyunun tüm yönleri için D-pad kullanabilmesi gerekir. Bu nedenle, Android TV oyununuzun "Devam etmek için buraya dokun" gibi bir dil içeren dokunmatik arayüzü belirtmediğinden emin olun.

Oyuncunun kumandayla etkileşimini şekillendirme şekliniz, mükemmel bir kullanıcı deneyimi sağlamanın anahtarı olabilir. Aşağıdaki en iyi uygulamalardan yararlanabilirsiniz:

  • Kumanda gereksinimlerini önceden bildirin: Kumandalarla ilgili beklentileri oyuncuya bildirmek için Google Play açıklamanızı kullanın. Bir oyun, kontrol çubuğu olan bir oyun kumandası için yalnızca D-pad'in bulunduğu bir oyundan daha uygunsa bunu açıkça belirtin. Oyunda uygun olmayan kumanda kullanan bir oyuncu kötü bir deneyim yaşayabilir ve oyununuza kötü puan verebilir.
  • Tutarlı düğme eşleme kullanın: Sezgisel düğme eşleme, iyi bir kullanıcı deneyimi için olmazsa olmazdır. Örneğin, kabul etmek için A düğmesini, iptal etmek için B düğmesini kullanarak kabul edilen gümrük kurallarına bağlı kalabilirsiniz. Ayrıca, yeniden eşlenebilirlik konusunda da esneklik sunabilirsiniz. Düğme eşleme hakkında daha fazla bilgi için Denetleyici işlemlerini işleme bölümüne bakın.
  • Kumanda özelliklerini algılayıp buna göre ayarlama yapın: Denetleyici ile oyun arasındaki eşleşmeyi optimize etmek için kumandayı işlevleri hakkında sorgulayın. Örneğin, bir oyuncunun kumandayı havada sallayarak yönlendirmesini isteyebilirsiniz, ancak oyuncunun kumandasında ivme ölçer ve jiroskop donanımı yoksa sallama işe yaramaz. Kumandayı sorgulayın ve hareket algılama desteklenmiyorsa alternatif, kullanılabilir bir kontrol şemasına geçin. Denetleyici özelliklerini sorgulama hakkında daha fazla bilgi edinmek için Android sürümlerinde denetleyicileri destekleme bölümüne bakın.

Uygun düğmeleri kullanın

Her oyun kumandasında Başlat, Ara veya Menü düğmesi yoktur. Kullanıcı arayüzünüzün bu düğmelerin kullanımına bağlı olmadığından emin olun.

Birden fazla kumanda kullanın

Oyun oynarken her oyuncu kendi kumandasına sahip olduğunda oyuncu-denetleyici çiftini eşlemek önemlidir. Denetleyici numarası belirlemenin nasıl uygulanacağı hakkında bilgi edinmek için getControllerNumber() sayfasına bakın.

Kumandanın bağlantısını kesme

Oyun sırasında bir kumandanın bağlantısı kesildiğinde oyunu duraklatın ve bağlantısı kesilen oyuncunun kumandasını yeniden bağlamasını isteyen bir iletişim kutusu gösterin.

Ayrıca, iletişim kutusunda sorun giderme ipuçları sunun. Örneğin, oynatıcıya "Bluetooth bağlantınızı kontrol edin" deyin. Giriş cihazı desteğinin uygulanması hakkında daha fazla bilgi için Denetleyici işlemlerini işleme ve Bluetooth'a genel bakış sayfalarına göz atın.

Kumanda talimatlarını göster

Oyununuz oyun kontrolüyle ilgili talimatlar sağlıyorsa marka içermeyen bir denetleyici resmi kullanın ve yalnızca Android ile uyumlu düğmeleri ekleyin.

Android uyumlu kumandanın örnek resimleri için Android TV Oyun Kumandası Şablonu (ZIP) dosyasını indirin. PNG dosyası ve Adobe® Illustrator® dosyası olarak, siyah arka plan üzerinde beyaz bir denetleyici ve şekil 1'de gösterilen beyaz arka plan üzerinde siyah bir denetleyici içerir.

Şekil 1. Android TV Oyun Kumandası Şablonu'nun kullanıldığı örnek kumanda talimatları.