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:
KeyEvent | Davranış |
---|---|
KEYCODE_BUTTON_B , KEYCODE_BACK | Geri |
KEYCODE_BUTTON_SELECT , KEYCODE_BUTTON_A , KEYCODE_ENTER ,
KEYCODE_DPAD_CENTER , KEYCODE_NUMPAD_ENTER | Seçim |
KEYCODE_DPAD_UP , KEYCODE_DPAD_DOWN , KEYCODE_DPAD_LEFT ,
KEYCODE_DPAD_RIGHT | Navigasyon |
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.
KeyEvent | TransportControls ç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_R1 | skipToNext() | Sonrakine atla |
BUTTON_L1 | skipToPrevious() | Öncekine atla |
DPAD_RIGHT , BUTTON_R2 , AXIS_RTRIGGER ,
AXIS_THROTTLE | fastForward() | İleri sarma |
DPAD_LEFT , BUTTON_L2 , AXIS_LTRIGGER ,
AXIS_BRAKE | rewind() | Geri sar |
Yok | stop() | 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.
![](https://developer.android.com/static/images/games/game-controller-buttons_2x.png?authuser=6&hl=tr)
Şekil 1. Android TV Oyun Kumandası Şablonu'nun kullanıldığı örnek kumanda talimatları.