TV kumandalarını yönetme

TV cihazlarında uygulamalarla etkileşim için ikincil bir donanım cihazı (temel bir uzaktan kumanda veya oyun kumandası) gerekir. Bu nedenle, uygulamanız d-pad girişini desteklemelidir. Ayrıca uygulamanız, kumandaların çevrimdışı kalmasını ve birden fazla kumanda türünden gelen girişleri de yönetmelidir.

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

D-pad minimum kontrolleri

TV cihazının varsayılan denetleyicisi D-pad'dir. Genel olarak uygulamanız yalnızca yukarı, aşağı, sol, sağ, seç, geri ve ana sayfa düğmelerine sahip bir uzaktan kumanda ile çalıştırılabilmelidir. Uygulamanız, genellikle ek kontroller içeren bir oyun kumandası gerektiren bir oyunsa yalnızca bu D-pad kontrolleriyle oynanmayı desteklemeye çalışın. Aksi takdirde, kullanıcıyı kontrol cihazı gerektiği konusunda uyarın ve D-pad kontrol cihazını kullanarak oyundan sorunsuz bir şekilde çıkmasına izin verin.

TV cihazları için D-pad denetleyicilerle gezinme hakkında daha fazla bilgi edinmek için TV'de gezinme başlıklı makaleyi inceleyin.

Kumanda bağlantısının kesilmesiyle ilgili sorunları giderme

TV kumandaları genellikle Bluetooth cihazlardır. Bu cihazlar, belirli aralıklarla uyku moduna geçerek ve TV cihazıyla bağlantıyı keserek güç tasarrufu yapmaya çalışabilir. Bu nedenle, yeniden bağlanma etkinliklerini işleyecek şekilde yapılandırılmamışsa bir uygulama kesintiye uğrayabilir veya yeniden başlatılabilir. Bu etkinlikler aşağıdaki koşullardan 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, önceden bağlanmamış bir oyun kumandası kullanarak oyuna katılabilir.
  • Oyun sırasında oyuncular oyundan ayrılabilir ve oyun kumandasının bağlantısını kesebilir.

Bağlantı kesme ve yeniden bağlanma etkinliklerine tabi olan tüm TV uygulaması etkinlikleri, uygulama manifestinde yeniden bağlanma etkinliklerini işleyecek şekilde yapılandırılmalıdır. Aşağıdaki kod örneğinde, klavye veya gezinme cihazının bağlanması, bağlantısının kesilmesi ya da 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 yeniden bağlanma etkinliği sırasında çalışmaya devam etmesini sağlar. Bu sayede uygulama, Android çerçevesi tarafından yeniden başlatılmaz. Bu da iyi bir kullanıcı deneyimi değildir.

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

TV cihazı kullanıcıları, TV'leriyle birden fazla türde kumanda kullanabilir. Örneğin, bir kullanıcının hem temel D-pad kumandası hem de oyun kumandası olabilir. D-pad işlevleri için kullanılan bir oyun kumandasının sağladığı tuş kodları, temel bir D-pad'in gönderdiği tuş kodlarından farklı olabilir.

D-pad girişindeki varyasyonları ele alın. Böylece kullanıcı, uygulamanızı çalıştırmak için kontrol cihazını değiştirmek zorunda kalmaz. Giriş varyasyonlarını ele alma hakkında daha fazla bilgi için Yön tuşu girişini işleme başlıklı makaleyi inceleyin.

Düğme etkinliklerini işleme

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

TV kullanıcı arayüzü etkinlikleri

Aşağıdaki tabloda gösterildiği gibi, KeyEvent türleri 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_RIGHTGezinme

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 MediaSession kontrol ediyorsa tabloda gösterilen MediaControllerCompat.TransportControls yöntemlerinden birini çağırmak için MediaControllerAdapter kullanın. Seçim düğmelerinin bu bağlamda oynatma veya duraklatma düğmesi işlevi gördüğü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 sar
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 özel düğmelerin işlenmesini geçersiz kılmayın. Sistem, uygun MediaSession.Callback yöntemini otomatik olarak tetikler.

Uygun geri düğmesi davranışı sağlama

Geri düğmesi asla açma/kapatma düğmesi olarak kullanılmamalıdır. Örneğin, bir menüyü hem açmak hem de kapatmak için kullanmayın. Bu düğmeyi yalnızca oyuncunun daha önce bulunduğu ekranlarda gezinmek için kullanın.

Geri düğmesi yalnızca doğrusal ve geriye doğru gezinme işlemi yaptığından, farklı bir düğmeyle açılan uygulama içi menüden çıkmak ve uygulamaya geri dönmek için bu düğmeyi kullanabilirsiniz. Geri düğmesine art arda basıldığında her zaman Android TV ana ekranına dönülmelidir. Örneğin: oyun oynama > oyunu duraklatma ekranı > oyunun ana ekranı > Android TV ana ekranı veya TV programı oynatma > TV uygulamasının ana ekranı > Android TV ana ekranı.

Gezinme için tasarım hakkında daha fazla bilgi edinmek isterseniz Geri ve yukarı gezinme tasarlama başlıklı makaleyi inceleyin. Uygulama hakkında bilgi edinmek için Uygun geri gezinme sağlama başlıklı makaleyi inceleyin.

Oyunlar için kumanda kolları

D-pad kontrollerini destekler.

Android TV cihazlarında varsayılan olarak D-pad kontrolü kullanıldığından kontrol şemanızı bu kontrol setine göre planlayın. Oyuncunun, oyunun tüm yönleri için (yalnızca temel oynanışı kontrol etmek değil, menülerde ve reklamlarda gezinmek de dahil) yön tuşlarını kullanabilmesi gerekir. Bu nedenle, Android TV oyununuzda "Devam etmek için buraya dokunun" gibi ifadelerle dokunma arayüzüne atıfta bulunmadığınızdan emin olun.

Oyuncunun kontrol cihazıyla etkileşimini nasıl şekillendirdiğiniz, mükemmel bir kullanıcı deneyimi elde etmenin anahtarı olabilir. Aşağıdaki en iyi uygulamalardan yararlanabilirsiniz:

  • Kumanda gereksinimlerini önceden bildirin: Oyuncuya kumandalarla ilgili beklentileri bildirmek için Google Play açıklamanızı kullanın. Bir oyunun yalnızca D-pad'li bir oyun kumandası yerine joystick'li bir oyun kumandasına daha uygun olduğunu belirtin. Bir oyunda uygun olmayan bir kontrol cihazı kullanan oyuncu kötü bir deneyim yaşayabilir ve oyununuza kötü bir puan verebilir.
  • Tutarlı düğme eşleme kullanın: Sezgisel düğme eşleme, iyi bir kullanıcı deneyimi için çok önemlidir. Örneğin, A düğmesini kabul etmek ve B düğmesini iptal etmek için kullanarak kabul edilen geleneklere uyun. Yeniden eşlenebilirlik şeklinde esneklik de sunabilirsiniz. Düğme eşleme hakkında daha fazla bilgi için Denetleyici işlemlerini işleme başlıklı makaleyi inceleyin.
  • Kumanda özelliklerini algılama ve buna göre ayarlama: Kumanda ile oyun arasındaki eşleşmeyi optimize etmek için kumandanın özelliklerini 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şlemi 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 için Farklı Android sürümlerinde denetleyicileri destekleme başlıklı makaleyi inceleyin.

Uygun düğmeleri kullanma

Tüm oyun kumandalarında Başlat, Arama 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 denetleyiciyi kullanma

Birden fazla oyuncu kendi kontrol cihazıyla oyun oynarken her oyuncu-kontrol cihazı çiftini eşlemek önemlidir. Denetleyici numarası tanımlamayı uygulama hakkında bilgi edinmek için getControllerNumber() başlıklı makaleyi inceleyin.

Kumanda bağlantısının kesilmesiyle ilgili sorunları giderme

Oyun oynarken kumandanın bağlantısı kesilirse oyunu duraklatın ve bağlantısı kesilen oyuncuyu kumandasını yeniden bağlamaya yönlendiren 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 Kumanda işlemlerini işleme ve Bluetooth'a genel bakış başlıklı makaleleri inceleyin.

Kumanda talimatlarını gösterme

Oyununuzda görsel oyun kontrolü talimatları veriliyorsa markasız bir oyun kumandası resmi kullanın ve yalnızca Android ile uyumlu düğmeleri ekleyin.

Android uyumlu bir denetleyicinin örnek resimleri için Android TV Oyun Kumandası Şablonu'nu (ZIP) indirin. Siyah arka plan üzerinde beyaz bir denetleyici ve beyaz arka plan üzerinde siyah bir denetleyici (Şekil 1'de gösterilmiştir) PNG dosyası ve Adobe® Illustrator® dosyası olarak yer alır.

Şekil 1. Android TV Oyun Kumandası Şablonu'nu kullanarak denetleyici talimatı örneği.