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ışı olan kumandaları işlemesi ve birden fazla kumanda türünden giriş yapması gerekebilir.

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

D-pad minimum kontrol sayısı

TV cihazı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 kumandadan çalışabilmelidir. Uygulamanız genellikle ek kontrollere sahip bir oyun kumandası gerektiren bir oyunsa yalnızca bu D-pad kontrolleriyle oynanabilirliği desteklemeye çalışın. Aksi takdirde, kullanıcıyı kumandanın gerektiği konusunda uyarın ve D-pad denetleyicisini kullanarak oyununuzdan sorunsuz bir şekilde çıkmasına izin verin.

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

Tutma yerinin bağlantısı kesiliyor

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üç tasarrufu yapmaya çalışabilirler. Bu, söz konusu yeniden bağlanma etkinliklerini işlemek üzere yapılandırılmamışsa uygulamanın kesintiye uğrayabileceği veya yeniden başlatılabileceği anlamına gelir. Bu etkinlikler, aşağıdaki koşulların herhangi birinde gerçekleşebilir:

  • Birkaç dakika uzunluğundaki 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 sırasında oyuncu oyundan ayrılabilir ve bir oyun kumandasının bağlantısını kesebilir.

Bağlantıyı 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, bir klavye ya da navigasyon cihazının bağlanması, bağlantısının kesilmesi veya yeniden bağlanması gibi yapılandırma değişikliklerini gerçekleştirmek 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 iyi bir kullanıcı deneyimi olmayan Android çerçevesi tarafından yeniden başlatılması yerine bir yeniden bağlantı etkinliği üzerinden çalışmaya devam etmesini sağlar.

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

TV cihazı kullanıcılarının, TV'leriyle birlikte kullandıkları birden fazla kumanda türü olabilir. Örneğin, bir kullanıcının hem temel bir D-pad kumandası hem de bir oyun kumandası olabilir. D-pad işlevleri için kullanılırken oyun kumandası tarafından sağlanan anahtar kodları, temel bir 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 varyasyonları ele alın. 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.

Tutma yeri 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 veya seçim veya gezinme gibi TV türünde bir etkinlik olabilir. İyi bir kullanıcı deneyimi sunmak 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 davranışı, aşağıdaki tabloda gösterildiği gibi KeyEvent türlerini oluşturan düğmelere atayın. Uygulamanız bir MediaSession öğesini kontrol ediyorsa tabloda gösterilen MediaControllerCompat.TransportControls yöntemlerinden birini çağırmak için MediaControllerAdapter kullanın. Seçim düğmelerinin bu bağlamda Oynat veya Duraklat düğmesi 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.

Geri düğmesi için uygun bir davranış sağlayın

Geri düğmesi hiçbir zaman açma/kapatma düğmesi olarak çalışmamalıdır. Örneğin, bir menüyü hem açmak hem de kapatmak için kullanmayın. Bunu yalnızca oynatıcının yer aldığı önceki ekranlarda geriye doğru, içerik haritası stilinde gezinmek için kullanın.

Geri düğmesi yalnızca doğrusal, geri gezinme gerçekleştirdiğinden, bunu farklı bir düğmeyle açılmış bir uygulama içi menüyü bırakıp uygulamaya dönmek için kullanabilirsiniz. Geri düğmesine arka arkaya bastığınızda her zaman Android TV ana ekranına yönlendirmeniz gerekir. Ö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 bilgi edinmek için Doğru geri gezinme sağlama konusuna bakın.

Oyunlarda kumandaları kullanın

D-pad kontrollerini destekleme

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

Oyuncunun kumandayla etkileşimini nasıl şekillendirdiğiniz, mükemmel bir kullanıcı deneyimi elde etmenin anahtarı olabilir. Aşağıdaki en iyi uygulamaları göz önünde bulundurun:

  • Kumanda gereksinimlerini önceden iletin: Kumandalarla ilgili beklentileri oyuncuya bildirmek için Google Play açıklamanızı kullanın. Bir oyun, kontrol çubuğu olan bir oyun kumandasına göre daha uygunsa yalnızca D-pad bulunan bir oyun yerine bunu açıkça belirtin. Oyun için 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: Pratik düğme eşleme, iyi bir kullanıcı deneyimi için çok önemlidir. Örneğin, kabul etmek için A düğmesini ve iptal etmek için B düğmesini kullanarak kabul edilen gümrük kurallarına bağlı kalın. Ayrıca yeniden eşlenebilirlik konusunda da esneklik sağlayabilirsiniz. Düğme eşleme hakkında daha fazla bilgi için Denetleyici işlemlerini işleme bölümüne bakın.
  • Kumanda özelliklerini tespit edip uygun şekilde ayarlayın: Kumanda ile oyun arasındaki eşleşmeyi optimize etmek için kumandayı becerileri hakkında sorgulayın. Örneğin, bir oyuncunun kumandayı havada sallayarak bir nesneyi 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 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

Bazı oyun kumandalarında Başlat, Ara veya Menü düğmeleri bulunmaz. Kullanıcı arayüzünüzün bu düğmelerin kullanımına bağlı olmadığından emin olun.

Birden fazla kumanda kullanın

Birden fazla oyuncu oyun oynarken her birinin kendi kumandası olur. Her oyuncu-denetleyici çiftini eşlemek önemlidir. Denetleyici numarası tanımlamasının nasıl uygulanacağı hakkında bilgi için getControllerNumber() bölümüne bakın.

Tutma yerinin bağlantısı kesiliyor

Oyun sırasında bir kumandanın bağlantısı kesilirse 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ış konularına göz atın.

Kumanda talimatlarını göster

Oyununuz, oyun kontrolüyle ilgili görsel talimatlar içeriyorsa marka içermeyen bir kumanda 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ı.