İçerik kaydını destekleme

TV giriş hizmetleri, kullanıcının zaman kaydırma API'lerini kullanarak kanal oynatmayı duraklatmasına ve devam ettirmesine olanak tanır. Android 7.0, kullanıcının birden fazla kaydedilmiş oturumu kaydetmesine olanak tanıyarak zaman kaydırma özelliğini genişletir.

Kullanıcılar, kayıtları önceden planlayabilir veya bir programı izlerken kayıt başlatabilir. Sistem bir kaydı kaydettikten sonra kullanıcı, sistem TV uygulamasını kullanarak kayda göz atabilir, kaydı yönetebilir ve oynatabilir.

TV giriş hizmetiniz için kayıt işlevi sağlamak istiyorsanız uygulamanızın kaydı desteklediğini sisteme belirtmeniz, programları kaydetme özelliğini uygulamanız, kayıt sırasında oluşan hataları ele alıp iletmeniz ve kayıtlı oturumlarınızı yönetmeniz gerekir.

Kayıt desteğini belirtme

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

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

Hizmet meta veri dosyası hakkında daha fazla bilgi için Manifest dosyasında TV girişi hizmetinizi bildirme başlıklı makaleyi inceleyin.

Alternatif olarak, aşağıdaki adımları uygulayarak kodunuzda kayıt desteğini belirtebilirsiniz:

  1. TV giriş hizmetinizdeki onCreate yönteminde, TvInputInfo.Builder sınıfını kullanarak yeni bir TvInputInfo nesnesi oluşturun.
  2. Yeni TvInputInfo nesnesini oluştururken, hizmetinizin kaydı desteklediğini belirtmek için build işlevini çağırmadan önce setCanRecord(true) işlevini çağırın.
  3. TvInputInfo nesnenizi TvInputManager.updateTvInputInfo işlevini çağırarak sisteme kaydedin.

Oturum kaydetme

TV giriş hizmetiniz kayıt işlevini desteklediğini kaydettikten sonra sistem, uygulamanızın kayıt uygulamasına erişmesi gerektiğinde TvInputService.onCreateRecordingSession yönteminizi çağırır. Kendi TvInputService.RecordingSession alt sınıfınızı uygulayın ve onCreateRecordingSession geri çağırma işlevi tetiklendiğinde bunu döndürün. Bu alt sınıf, doğru kanal verilerine geçiş yapmaktan, istenen verileri kaydetmekten ve kayıt durumunu ve hataları sisteme iletmekten sorumludur.

Sistem, kanal URI'si ileterek RecordingSession.onTune işlevini çağırdığında URI'nin belirttiği kanala geçin. notifyTuned işlevini çağırarak uygulamanızın seçilen kanala ayarlandığını sisteme bildirin veya uygulamanız uygun kanala ayarlanamıyorsa notifyError işlevini çağırın.

Ardından sistem, RecordingSession.onStartRecording geri çağırma işlevini başlatır. Uygulamanız hemen kayda başlamalıdır. Sistem bu geri çağırmayı çağırdığında, kaydedilmek üzere olan programla ilgili bilgileri içeren bir URI sağlayabilir. Kayıt tamamlandığında bu verileri RecordedPrograms veri tablosuna kopyalayın.

Son olarak, sistem çağrıları RecordingSession.onStopRecording. Bu noktada uygulamanızın kaydı hemen durdurması gerekir. Ayrıca, kaydedilen oturum verileri URI'sini RecordedPrograms.COLUMN_RECORDING_DATA_URI sütununda ve sistemin onStartRecording'ye yapılan ilk çağrıda sağladığı tüm program bilgilerini içeren RecordedPrograms tablosunda bir giriş oluşturmanız gerekir.

RecordedPrograms tablosuna erişme hakkında daha fazla bilgi için Kayıtlı oturumları yönetme bölümüne bakın.

Kayıt hatalarını giderme

Kayıt sırasında bir hata oluşursa ve kaydedilen veriler kullanılamaz hale gelirse notifyError numaralı telefonu arayarak sistemi bilgilendirin. Ayrıca, kayıt oturumu oluşturulduktan sonra notifyError numarasını arayarak sisteme uygulamanızın artık oturum kaydedemediğini bildirebilirsiniz.

Kayıt sırasında bir hata oluşursa ancak kullanıcılara oynatma için kısmi bir kayıt sağlamak istiyorsanız sistemin kısmi oturumu kullanmasını sağlamak için notifyRecordingStopped işlevini çağırın.

Kayıtlı oturumları yönetme

Sistem, RecordedPrograms içerik sağlayıcı tablosundaki kayıt özelliği olan tüm kanal uygulamalarından kaydedilen tüm oturumlarla ilgili bilgileri saklar. Bu bilgilere RecordedPrograms içerik kaydı URI'leri üzerinden erişilebilir. Bu tablodaki girişleri okumak, eklemek ve silmek için içerik sağlayıcı API'lerini kullanın.

İçerik sağlayıcı verileriyle çalışma hakkında daha fazla bilgi için İçerik sağlayıcı ile ilgili temel bilgiler başlıklı makaleyi inceleyin.

En iyi uygulamalar

TV cihazlarında depolama alanı sınırlı olabilir. Bu nedenle, kayıtlı oturumları kaydetmek için depolama alanı ayırırken dikkatli olun. Kayıtlı bir oturumu kaydetmek için yeterli alan olmadığında RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE) seçeneğini kullanın.

Kullanıcı kaydı başlattığında verileri mümkün olan en kısa sürede kaydetmeye başlayın. Bunu kolaylaştırmak için sistem onCreateRecordingSession geri çağırmasını çağırdığında depolama alanına erişme ve depolama alanı ayırma gibi önceden yapılması gereken zaman alıcı görevleri tamamlayın. Bu sayede, onStartRecording geri çağırma işlemi tetiklendiğinde hemen kayda başlayabilirsiniz.