İçerik kaydını destekleme

TV giriş hizmetleri, kullanıcının Zaman kaydırma API'leri hakkında daha fazla bilgi edinin. Android 7.0 zaman kaydırmanın kapsamını genişletiyor kullanıcının kayıtlı birden fazla oturumu kaydetmesine olanak tanıyarak.

Kullanıcılar kayıtları önceden programlayabilir veya izlerken kayıt başlatabilirler çok önemli. Sistem bir kaydı kaydettikten sonra, kullanıcı videoya göz atabilir, ve sistem TV uygulamasını kullanarak kaydı oynatın.

TV giriş hizmetiniz için kayıt işlevi sağlamak istiyorsanız uygulamanızın kayıt özelliğini desteklediğini sisteme belirtmeniz, programları kaydetme, oluşan hataları işleme ve iletme becerisi kullanabilir ve kayıtlı oturumlarınızı yönetebilirsiniz.

Kayıt için desteği belirtin

Sisteme TV giriş hizmetinizin kaydı desteklediğini bildirmek için şunu ayarlayın: hizmet meta verileri XML dosyanızdaki android:canRecord özelliği - true:

<tv-input xmlns:android="http://schemas.android.com/apk/res/android"
  android:canRecord="true"
  android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" />

Hizmet meta verileri dosyası hakkında daha fazla bilgi edinmek için TV girişinizi beyan edin hizmetine bakın.

Alternatif olarak, kodunuzda kayıt desteğini belirtmek için şu adımları uygulayın:

  1. TV giriş hizmetiniz onCreate() yöntemini kullanarak yeni bir TvInputInfo nesnesi oluşturun TvInputInfo.Builder sınıf.
  2. Yeni TvInputInfo nesnesini oluştururken şunu çağırın: Aramadan önce setCanRecord(true) belirtmek için build() kaydı destekler.
  3. Şu çağrıyı yaparak TvInputInfo nesnenizi sisteme kaydedin: TvInputManager.updateTvInputInfo().

Oturum kaydetme

TV giriş hizmetiniz kaydı desteklediğini kaydettikten sonra çalışırsa sistem, Erişim gerektiğinde TvInputService.onCreateRecordingSession() yöntemi en iyi uygulamaları paylaşacağız. Kendi TvInputService.RecordingSession alt sınıf ve şunu döndür: onCreateRecordingSession() geri çağırması tetiklendiğinde. Bu alt sınıf, doğru kanal verilerine geçiş yapmak, istenen verileri kaydetmek, kayıt durumunu ve hataları sisteme iletir.

Sistem sizi aradığında RecordingSession.onTune(), kanal URI'sini iletme, kanalı ayarlama kullanabilirsiniz. Uygulamanızın şuna ayarladığını sisteme bildirin: numaralı telefonu arayarak notifyTuned() veya uygulamanız doğru kanala ayarlayamazsa notifyError().

Sistem daha sonra RecordingSession.onStartRecording() geri arama. Uygulamanız kaydetmeye başlamalıdır hemen teslim edebilirsiniz. Sistem bu geri çağırmayı gerçekleştirdiğinde bir URI sağlayabilir. program hakkında bilgi içeren bir dosya oluşturmanız gerekir. Kayıt tamamlandığında bu verileri şuraya kopyalayın: RecordedPrograms. veri tablosuna bakalım.

Son olarak sistem, RecordingSession.onStopRecording() Uygulamanız bu noktada durmalıdır kaydediyor olabilirsiniz. Ayrıca, RecordedPrograms. kaydedilen oturum verileri URI'sini içeren tablo RecordedPrograms.COLUMN_RECORDING_DATA_URI sütunu ve herhangi bir program yapılan ilk çağrıda sistemin sağladığı onStartRecording().

Daha fazla bilgi için RecordedPrograms tablo, Kayıtlı oturumları yönetme bölümüne bakın.

Kayıt hatalarını işleme

Kayıt sırasında bir hata oluşur ve bu da kayıtlı verilerin kullanılamaz hale gelmesine neden olursa şunu arayarak sistemi bilgilendir: notifyError() Ayrıca şu numarayı da arayabilirsiniz: Sisteme bunu bildirmek için bir kayıt oturumu oluşturulduktan sonra notifyError() uygulamanız artık oturumları kaydedemiyor.

Kayıt sırasında bir hata oluşursa, ancak oynatma, arama için kullanıcılara kısmi kayıt Sistemin şunları yapmasına izin vermek için notifyRecordingStopped(): ve kısmi oturumu kullanın.

Kayıtlı oturumları yönetme

Sistem, 30 günlük tüm oturumlardan kaydedilen tüm oturumlara ait bilgileri kayıt özelliği olan kanal uygulamalarından RecordedPrograms. içerik sağlayıcı tablosu. Bu bilgilere RecordedPrograms. daha fazla bilgi edinin. İçerik sağlayıcı API'lerini kullanarak bu tablodaki girişleri okuyabilir, ekleyebilir ve silebilirsiniz.

İçerik sağlayıcı verileriyle çalışma hakkında daha fazla bilgi için bkz. İçerik sağlayıcıyla ilgili temel bilgiler.

En iyi uygulamalar

TV cihazlarının depolama alanı sınırlı olabilir. Bu nedenle, lütfen en iyi şekilde değerlendirin kaydedilen oturumları kaydetmek için depolama alanı ayrılıyor. Tekliflerinizi otomatikleştirmek ve optimize etmek için Şu durumlarda RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE): kayıtlı bir oturumu kaydetmek için yeterli alan yok.

Kullanıcı kaydı başlattığı anda veri kaydetmeye başlayın yardımcı olabilirsiniz. Bunu kolaylaştırmak için, önceden yapılması gereken tüm zaman alıcı görevleri, depolama alanına erişmek ve tahsis etmek gibi işlemler için sistem onCreateRecordingSession() geri arama. Bu sayede otomatik olarak kayıt işleminden sonra onStartRecording() geri arama etkinleşti.