TV kumandalarını yönetme

TV cihazları, uygulamalarla etkileşimde bulunmak için ikincil bir donanım cihazı (temel uzaktan kumanda veya oyun kumandası) gerektirir. Bu nedenle, uygulamanız yön tuşları (D-pad) girişini desteklemelidir. Ayrıca, uygulamanızın çevrimdışıyken birden fazla kumanda türünden giriş yapma ve kumandaları yönetmesi gerekebilir.

Bu kılavuzda, TV cihazları için kumandaların kullanımıyla ilgili şartlar açıklanmaktadır.

D-pad minimum kontrolleri

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

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

Kumandanın bağlantı kesilmesini yönetme

TV kumandaları genellikle Bluetooth cihazlardır. Bu cihazlar, düzenli aralıklarla uyku moduna girip TV cihazının bağlantısını keserek güçten tasarruf etmeye çalışabilir. Bu nedenle, bir uygulama bu yeniden bağlantı etkinliklerini işleyecek şekilde yapılandırılmazsa kesintiye uğrayabilir veya yeniden başlatılabilir. Bu etkinlikler aşağıdaki durumlardan herhangi birinde gerçekleşebilir:

  • Birkaç dakika süren 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.
  • Yeni oyuncu, oyun sırasında henüz bağlı olmayan bir oyun kumandasını kullanarak oyuna katılabilir.
  • Oyun sırasında bir oyuncu oyundan ayrılıp oyun kumandasının bağlantısını kesebilir.

Bağlantının kesilmesi ve yeniden bağlanmasına tabi olan TV uygulaması etkinlikleri, uygulama manifest dosyasında yeniden bağlantı etkinliklerini işleyecek şekilde yapılandırılmalıdır. Aşağıdaki kod örneğinde, klavye veya navigasyon cihazının bağlanması, bağlantısının kesilmesi veya yeniden bağlanması dahil olmak üzere 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ılmak yerine bir yeniden bağlantı etkinliği aracılığıyla çalışmaya devam etmesini sağlar. Bu iyi bir kullanıcı deneyimi değildir.

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

TV cihazı kullanıcıları, TV'lerinde birden fazla türde kumandaya sahip olabilir. Örneğin, bir kullanıcının hem temel bir D-pad kumandası hem de bir oyun kumandası olabilir. Oyun kumandası d-pad işlevleri için kullanılırken sağlanan anahtar kodları, temel bir D-pad tarafından gönderilen tuş 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 varyasyonları işleyin. Giriş varyasyonlarını yönetme hakkında daha fazla bilgi için Yön tuşu girişini işleme bölümüne bakın.

İşleme düğmesi etkinlikleri

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

TV kullanıcı arayüzü etkinlikleri

Aşağıdaki tabloda gösterildiği gibi, KeyEvent türlerini oluşturan düğmelere TV kullanıcı arayüzü davranışı 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, davranışı aşağıdaki tabloda gösterildiği gibi KeyEvent türlerini oluşturan düğmelere atayın. Uygulamanız bir MediaSession işlemini kontrol ediyorsa tabloda gösterilen MediaControllerCompat.TransportControls yöntemlerinden birini çağırmak için bir MediaControllerAdapter kullanın. Seçim düğmelerinin bu bağlamda Oynat veya Duraklat düğmeleri olarak işlev gördüğüne dikkat edin.

KeyEventTransportControls çağrısıDavranış
BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER play()Çal
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 kullanırken KEYCODE_MEDIA_PLAY veya KEYCODE_MEDIA_PAUSE gibi medyaya özel düğmelerin işlenme şeklini geçersiz kılmayın. Sistem otomatik olarak uygun MediaSession.Callback yöntemini tetikler.

Geri düğmesinin uygun şekilde çalışmasını sağlama

Geri düğmesi hiçbir zaman açma/kapatma işlevini kullanmamalıdır. Örneğin, bunu bir menüyü hem açmak hem de kapatmak için kullanmayın. Bu aracı yalnızca oynatıcının bulunduğu önceki ekranlar arasında içerik haritası tarzında geri gitmek için kullanın.

Geri düğmesi yalnızca doğrusal, geri gezinme gerçekleştirdiğinden, uygulama içi menüyü farklı bir düğmeyle açık bir şekilde bırakmak ve uygulamaya dönmek için kullanabilirsiniz. Art arda geri düğmesine basıldığında her zaman Android TV ana ekranına yönlendirilmelidir. Örneğin: oyun oynama > oyun duraklatma ekranı > oyun ana ekranı > Android TV ana ekranı veya TV dizisi 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 daha fazla bilgi edinmek için Doğru geri gezinme sağlama bölümüne bakın.

Oyunlar için kumandaları yönetme

D-pad kontrollerini destekleyin

Bu kontrol grubu Android TV cihazlar için varsayılan ayar olduğundan kontrol şemanızı D-pad kontrolüne göre planlayın. Oyuncunun yalnızca temel oynanabilirliği kontrol etmekle kalmayıp menüler ve reklamlarda da gezinmenin yanı sıra oyunun her yönü için d-pad kullanabilmesi gerekir. Bu nedenle, Android TV oyununuzun "Devam etmek için buraya dokunun" gibi bir dil içeren dokunmatik arayüzden bahsetmediğinden emin olun.

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

  • Kumanda şartlarını önceden bildirin: Google Play açıklamanızı kullanarak kumandalarla ilgili beklentileri oyuncuya bildirin. Bir oyun, yalnızca D-pad'i olan bir oyun kumandası yerine kontrol çubuğu olan oyun kumandası için daha uygunsa bunu açıkça belirtin. Oyun için uygun olmayan bir kumanda kullanan bir oyuncu kötü bir deneyim yaşayabilir ve oyununuza kötü puan verebilir.
  • Tutarlı bir düğme eşleme kullanın: Pratik düğme eşleme, iyi bir kullanıcı deneyimi için son derece önemlidir. Örneğin, kabul etmek için A düğmesini, iptal etmek için B düğmesini kullanarak kabul edilen gümrüklere uyun. Yeniden eşlenebilirlik biçiminde de esneklik sunabilirsiniz. Düğme eşleme hakkında daha fazla bilgi için Denetleyici işlemlerini işleme bölümüne bakın.
  • Denetleyici özelliklerini algılayıp buna göre ayarlama yapın: Denetleyici ile oyun arasındaki eşleşmeyi optimize etmek için denetleyiciye özellikleri hakkında sorgu gönderin. Örneğin, bir oyuncunun kumandayı havaya doğru sallayarak bir nesneyi yönlendirmesini isteyebilirsiniz, ancak bir oyuncunun kumandasında ivme ölçer ve jiroskop donanımı yoksa el sallama işe yaramaz. Kumandayı sorgulayın ve hareket algılama desteklenmiyorsa alternatif ve kullanılabilen bir kontrol şemasına geçin. Denetleyici özelliklerini sorgulama hakkında daha fazla bilgi için Android sürümlerinde destek denetleyicileri bölümüne göz atın.

Uygun düğmeleri kullanın

Başlat, Ara veya Menü düğmesi bazı oyun kumandaları tarafından kullanılamaz. Kullanıcı arayüzünüzün bu düğmelerin kullanımına bağlı olmadığından emin olun.

Birden fazla kumandayı yönetme

Birden fazla oyuncu, her birinin kendi kumandasına sahip bir oyun oynarken her oyuncu-denetleyici çiftinin haritasını çıkarmak önemlidir. Denetleyici-numarası tanımlamasını nasıl uygulayacağınız hakkında bilgi için getControllerNumber() sayfasını inceleyin.

Kumandanın bağlantı kesilmesini yönetme

Oyun oynarken kumandanın bağlantısı kesilirse oyunu duraklatın ve bağlantısı kesilen oyuncudan kumandasını yeniden bağlamasını isteyen bir iletişim kutusu gösterin.

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

Kumanda talimatlarını göster

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

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

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