Kullanıcıların duraklatmasına, geri sarmasına ve duraklatmasına olanak tanımak için TV giriş hizmetinizde zaman kaydırma API'leri kullanın hizmet kanallarınızdaki canlı programları ileri sürün. Uygulamanız destekliyorsa kullanıcılar içeriklerinizi izleme konusunda esneklik kazanır:
- Kullanıcılar kısa süreli bir kesintiyle ilgilenirken programları duraklatabilirler. hiçbir önemli anları kaçırmazlar.
- Kullanıcılar, önceden gördükleri içerikleri veya henüz izlemedikleri ilgilenmezler.
- Kullanıcılar program içeriğinde en sevdikleri anları geri sarabilir ve tekrar izleyebilirler.
Zaman kaydırma işleminde, program verilerinin kısa, geçici, kayıtlı segmentleri canlı programları oynatma özelliğini devreye sokmaktır. Kullanıcılar bu zaman kaydırma hareketlerini oynatamaz mevcut oynatma oturumunun dışındaki kayıtlar. Bu, kullanıcının bir programı ertesi gün izlemek üzere duraklatmak veya farklı bir kanala geçerken daha sonra izlediklerini biliyoruz.
İsterseniz TV kayıt API'lerini kullanabilirsiniz. Kullanıcılarınızın mevcut oynatmanın dışında izlemek üzere program içeriği kaydetmesine olanak tanımak için kabul edilir.
Zaman kaydırma desteği ekleyin
TV giriş hizmetinize zaman kaydırma desteği eklemek için
TvInputService.Session
sınıfınızda zaman değiştirme API'leri
kayıt ve oynatma işlemlerini yapabilir, Google Etiket Yöneticisi'ni kullanarak
giriş hizmetinizin zaman kaydırma desteği sağladığı sistemdir.
Uyguladığınız TvInputService.Session
yöntemleri şunlardır:
şu:
onTimeShiftGetCurrentPosition()
: bilgileri almak için sistem tarafından oynatma konumu (milisaniye cinsinden) Daha fazla bilgi için Oynatma sürelerini takip et bölümü.onTimeShiftGetStartPosition()
: başlangıç için sistem tarafından geçerli zaman kaydırma kaydının konumu (milisaniye cinsinden). Daha ayrıntılı bilgi için Oynatma sürelerini takip et bölümüne bakın.onTimeShiftPause()
: kullanıcı oynatmayı duraklattığında çağrılır.onTimeShiftResume()
: Kullanıcı oynatmaya devam ettiğinde çağrılır.onTimeShiftSeekTo(long)
: ve sistemin belirli bir hedef yeni saat konumu. Normalde yeni konum başlangıç konumunu ve geçerli konumu.onTimeShiftSetPlaybackParams(PlaybackParams)
: sistem tarafından aranır geçerli oturum için oynatma hızı gibi oynatma parametrelerini sağlayın. Daha fazla bilgi için Destek oynatma parametreleri bölümüne bakın.
Giriş hizmetinizin desteklediğini sisteme nasıl bildireceğiniz hakkında daha fazla bilgi için hakkında daha fazla bilgi için Sistemi zaman kaydırma durumu hakkında bilgilendirin bölümüne ekleyin.
TvInputService.Session
sınıf için otomatik olarak bir
zaman kaydırma uygulamasının kullanılabilmesidir. Bunu kullanabilirsiniz
veya zaman değiştirme API yöntemlerini geçersiz kılmak için
BaseTvInputService.Session
ve kendi
hakkında bilgi edindiniz. TIF Tamamlayıcı Kitaplığı'nı kullanma hakkında daha fazla bilgi için bkz.
TIF Tamamlayıcı Kitaplığı'ndan erişebilirsiniz.
Oturum başladığında içeriği kaydet
Kullanıcı, sırasında Seç'e basarak kanalın oynatma kontrollerini kullanabilirsiniz. izlerken veya oynatma kontrollerine giderek ya da özel oynatma kontrollerini kullanabilirsiniz.
Çünkü kullanıcı
TV'nizi izlerken istediğiniz zaman zaman değiştirme özelliğini
kullanabilirsiniz.
giriş hizmeti, kullanıcı otomatik olarak etkinleştiği anda zaman kaydırma içeriğini kaydetmeye başlamalıdır
şuradaki bir kanala uyar:
onTune()
.
hakkında bilgi edindiniz. Ayrıca şunu da yapmanız gerekir:
telefon ederek kayıt yapabileceğinizi sisteme bildirin
notifyTimeShiftStatusChanged(int)
,
aşağıdaki adımları izleyin:
Zaman kaydırma durumu hakkında sistemi bilgilendirin
bölümüne ekleyin.
Kaydedilen içerik depolama alanını yönetme
TV giriş hizmetiniz zaman kaydırmalı kayıtların şurada saklanmasından sorumludur:
sistem şunu aradığında uygulamanızın özel uygulama depolama alanını ve içeriği oynatmasını sağlayın:
zaman değiştirme yöntemleriniz, örneğin
onTimeShiftResume()
İçeriğiniz zaten bulutta depolanıyorsa ve uygulamanız bunları yönetebiliyorsa
buluttaki zaman değiştirme uygulaması kullanıyorsanız, bunun yerine bulut depolama alanını kullanabilirsiniz
büyük bir kısmını kapsıyor.
İçeriğinizde korunan içerik kullanılıyorsa TV giriş hizmetiniz şunlardan sorumludur: sırasında kaydedilen içeriğin uygun şekilde şifrelenmesi ve oynatmaya devam edebilirsiniz.
Kaydedilen video içeriği büyük miktarda depolama alanı gerektirebileceğinden Oturum oynatma sırasında, kaydedilen içeriği dikkatli bir şekilde yönetmeniz gerekir. Oynatmanın oturum süresi, kaydedebileceğiniz süreyi aşıyor. kullanıyorsanız, zaman değiştirme kaydınızı ayarlayarak tampon üzerindeyken geçerli zamanın bulunduğundan emin olun. Örneğin, kullanıcı 31 dakikadır içerik oynatıyor ve maksimum zaman değiştirme boyutu 30 dakika olarak ayarlayın. Kaydınızı ve başlangıç zamanını 1. dakikadan 31. dakikaya kadar olan sürede
TV giriş hizmetiniz, depolama alanı söz konusu olduğunda, sisteme bunu destek kısıtlamaları hakkında bilgi edinmek için Sistemi zaman kaydırma durumu hakkında bilgilendirin bölümüne ekleyin.
Kullanıcı farklı bir kanala geçtiğinde veya oynatmasını başka bir şekilde sonlandırdığında kaydedilen zaman kaydırma verilerinizi silin.
Sistemi zaman kaydırma durumu hakkında bilgilendirin
TV giriş hizmetiniz zaman kaydırmayı destekliyorsa şu numarayı arayın:
notifyTimeShiftStatusChanged(TvInputManager.TIME_SHIFT_STATUS_AVAILABLE)
uygulanması
Kullanıcı ayarladığında onTune()
kanalla ilişkilendirilmektedir.
Giriş hizmetinizin zaman değiştirme olanağı olup olmadığı konusunda sistemi bilgilendirmek
değiştir, kullan
notifyTimeShiftStatusChanged(int)
Örneğin, TV giriş hizmetiniz zaman kaydırmayı desteklemiyorsa
depolama alanı kısıtlamalarından veya başka sebeplerden dolayı,
notifyTimeShiftStatusChanged(TvInputManager.TIME_SHIFT_STATUS_UNAVAILABLE)
TV giriş hizmetiniz zaman kaydırmayı hiç desteklemiyorsa şunu arayın:
notifyTimeShiftStatusChanged(TvInputManager.TIME_SHIFT_STATUS_UNSUPPORTED)
.
bir oynatma oturumu oluşturulduğunda. Sistem, giriş hizmetini
asla arama
notifyTimeShiftStatusChanged()
yapamayan bir giriş hizmeti olarak
zaman kaymayı
desteklerler. Bu, API Düzeyi 22 ve
anlatacağım.
Oynatma sürelerini takip edin
Zaman kaydırmalı bir kaydın başlangıç konumu, en erken mutlak zamandır
kullanıcının arayabileceği konum (milisaniye cinsinden). Bu
genellikle videonun oynatılmaya başlandığı zaman
onTune()
çağrıldı.
Ancak kullanıcı, izlemesi önerilen içeriklerin sayısını aşan bir içerik izlediğinde
kaydedebiliyorsa o segment için yeni bir segment kaydetmeye başlamanız
zaman kaydırmaya tabi tutun ve başlangıç saatinizi buna göre güncelleyin.
Zaman kaydırmalı bir kaydın mevcut konumu, o anki oynatmadır milisaniye cinsinden tutar. Bu konum sürekli olarak değişir oynatma sırasında. Genellikle bunu belirlemek için oynatma motorunuzu kullanabilirsiniz. değeri olacaktır:
Kotlin
override fun onTimeShiftGetCurrentPosition(): Long = tvPlayer?.run { currentProgram?.let { program -> currentPosition + program.startTimeUtcMillis } } ?: TvInputManager.TIME_SHIFT_INVALID_TIME
Java
@Override public long onTimeShiftGetCurrentPosition() { if (getTvPlayer() != null && currentProgram != null) { return getTvPlayer().getCurrentPosition() + currentProgram.getStartTimeUtcMillis(); } return TvInputManager.TIME_SHIFT_INVALID_TIME; }
Sistem,
onTimeShiftGetStartPosition()
.
hiçbir zaman
onTimeShiftGetCurrentPosition()
.
Sistem bu çağrıları
oynatma kontrolleri kullanıcı arayüzündeki zaman kaydırma süresini güncelleyebilirsiniz.
Destek oynatma parametreleri
Sistem, zaman kaydırma sırasında oynatma hızını değiştirmek için oynatma parametrelerini kullanır. Örneğin, Örneğin, kullanıcı mevcut oynatmayı geri sarmaya karar verirse yeni oynatma parametrelerin uygulamanıza negatif bir oynatma hızıyla geçirilmesini sağlar. Zaman kaydırma özelliği de birkaç farklı oynatma hızı seviyesini (2 veya 3 kat) destekler kullanılabilir.
Sistem,
onTimeShiftSetPlaybackParams(PlaybackParams)
.
yöntemini içeren PlaybackParams
nesnesi
parametrelerini kullanır. Bu bilgileri kullanarak
medya oynatma motorunuzu uygun şekilde yapılandırın.
Oynatma motorunuz bir parametreyi desteklemiyorsa beklenen davranışı mümkün olan en iyi şekilde taklit edin. Örneğin, oynatmanız motor 2x hızı desteklemiyor. Oynatma sırasında tekrarlanan sarma işlemleri kullanın. yaklaşık iki kat daha fazla oynatma hızına ulaşmasını sağlar.
Parametreler ayarlandıktan sonra, kullanıcı farklı bir parametre veya anahtar gerektiren bir oynatma komutu yayınladığında yeni bir kanal seçin.