Zaman kaydırmayı destekleme

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.

Şekil 1. Zaman kaydırma için kullanılan Android TV oynatma kontrolleri.

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:

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.