TV giriş hizmetleri, kullanıcının zaman değiştirme API'lerini kullanarak kanal oynatmayı duraklatmasını ve devam ettirmesini sağlar. Android 7.0, kullanıcının kayıtlı birden fazla oturumu kaydetmesine olanak tanıyarak zaman değiştirme özelliğini daha da geliştirmiştir.
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 kayıt özelliğini desteklediğini sisteme bildirmeniz, programları kaydetme özelliğini uygulamanız, kayıt sırasında oluşan hataları işleyip iletmeniz ve kaydedilen oturumlarınızı yönetmeniz gerekir.
Kayıt desteğini belirtin
Sisteme TV giriş hizmetinizin kaydı desteklediğini 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'te TV giriş hizmetinizi tanımlama bölümüne bakın.
Alternatif olarak, aşağıdaki adımları izleyerek kodunuzda kayıt desteğini belirtebilirsiniz:
- TV giriş hizmeti
onCreate()
yönteminizde,TvInputInfo.Builder
sınıfını kullanarak yeni birTvInputInfo
nesnesi oluşturun. - Yeni
TvInputInfo
nesnesini oluştururken hizmetinizin kaydı desteklediğini belirtmek içinbuild()
çağrısından öncesetCanRecord(true)
yöntemini çağırın. TvInputManager.updateTvInputInfo()
yöntemini çağırarakTvInputInfo
nesnenizi 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ğırması tetiklendiğinde geri döndürün. Bu alt sınıf; doğru kanal verilerine geçmekten, istenen verileri kaydetmekten ve kayıt durumu ile hatalarını sisteme iletmekten sorumludur.
Sistem, bir kanal URI'si içinde ileterek RecordingSession.onTune()
çağrısı yaptığında URI'nın belirttiği kanala ayarlayın. notifyTuned()
numaralı telefonu arayarak uygulamanın istediğiniz kanalı ayarladığını sisteme bildirin. Uygulamanız doğru kanala ayarlayamıyorsa notifyError()
numaralı telefonu arayın.
Sistem daha sonra RecordingSession.onStartRecording()
geri çağırmasını çağırır. Uygulamanız hemen kayda
başlamalıdır. Sistem bu geri çağırmayı çağırdığında, kaydedilmek üzere olan program hakkında bilgi içeren bir URI sağlayabilir.
Kayıt tamamlandığında bu verileri RecordedPrograms
veri tablosuna kopyalayın.
Son olarak, sistem RecordingSession.onStopRecording()
yöntemini çağırır. Bu noktada uygulamanızın kaydetmeyi
hemen durdurması gerekir. Ayrıca, RecordedPrograms
tablosunda RecordedPrograms.COLUMN_RECORDING_DATA_URI
sütunundaki kayıtlı oturum veri URI'sını ve onStartRecording()
için sistem tarafından yapılan ilk çağrıda sağlanan program bilgilerini içeren 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ünü inceleyin.
Kayıt hatalarını işleme
Kayıt sırasında oluşan bir hata nedeniyle kayıtlı verilerin kullanılamaması durumunda, notifyError()
numaralı telefonu çağırarak sistemi bilgilendirin.
Ayrıca, uygulamanızın artık oturumları kaydedemediğini sisteme bildirmek için kayıt oturumu oluşturulduktan sonra notifyError()
numarasını arayabilirsiniz.
Kayıt sırasında bir hata oluşur ancak oynatma için kullanıcılara kısmi kayıt sağlamak isterseniz sistemin kısmi oturumu kullanmasını sağlamak için notifyRecordingStopped()
çağrısı yapın.
Kayıtlı oturumları yönetme
Sistem, kayıt özellikli tüm kanal uygulamalarından kaydedilen tüm oturumların bilgilerini RecordedPrograms
içerik sağlayıcı tablosunda tutar. Bu bilgilere RecordedPrograms
içerik kaydetme 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 sayfasına göz atın.
En iyi uygulamalar
TV cihazlarının depolama alanı sınırlı olabilir. Bu nedenle, kaydedilen oturumları kaydetmek için depolama alanı ayırırken dikkatli olun. Kaydedilmiş bir oturumu kaydetmek için yeterli alan yoksa RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)
kullanın.
Kullanıcı kaydı başlattığında, en kısa sürede verileri kaydetmeye başlayın. Bu işlemi 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 ilk zaman alan görevleri tamamlayın. Böylece onStartRecording()
geri çağırma etkinleştiğinde hemen kayda başlayabilirsiniz.