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 birden fazla kaydedilmiş oturumu kaydetmesini sağlayarak zaman değiştirme özelliğini daha geniş bir kapsamda sunar.
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 sisteme uygulamanızın kaydı desteklediğini belirtmeniz, programları kaydetme özelliğini uygulamanız, kayıt sırasında oluşan hataları işleyip iletme ve kaydedilen oturumlarınızı yönetmeniz gerekir.
Kaydetmeye destek olduğunuzu 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 beyan etme 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 kayıt özelliğini desteklediğini belirtmek içinbuild()
yöntemini çağırmadan ö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, uygulamanızın kayıt uygulamasına erişmesi gerektiğinde sistem 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 ileterek RecordingSession.onTune()
işlevini çağırdığında, URI'nın belirttiği kanalı ayarlayın. notifyTuned()
numaralı telefonu arayarak uygulamanızın istenen kanala ayarlandığı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 bilgiler içeren bir URI sağlayabilir.
Kayıt tamamlandığında bu verileri RecordedPrograms
veri tablosuna kopyalayın.
Son olarak sistem RecordingSession.onStopRecording()
işlevini çağırır. Bu noktada uygulamanızın kaydetmeyi
hemen durdurması gerekir. Ayrıca RecordedPrograms
tablosunda RecordedPrograms.COLUMN_RECORDING_DATA_URI
sütununda kaydedilen oturum veri URI'sını ve onStartRecording()
için sistem tarafından sağlanan ilk çağrıda sistem tarafından sağlanan tüm 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 bir hata oluşursa ve bu durum kayıtlı verilerin kullanılamaz hale gelmesine yol açarsa notifyError()
yöntemini ç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şursa ancak oynatma için kullanıcılara kısmi bir kayıt sağlamak isterseniz sistemin kısmi oturumu kullanmasını sağlamak için notifyRecordingStopped()
öğesini arayın.
Kaydedilen oturumları yönetme
Sistem, kayıt özellikli tüm kanal uygulamalarından kaydedilen tüm oturumlarla ilgili bilgileri RecordedPrograms
içerik sağlayıcı tablosunda tutar. Bu bilgilere içerik kaydetme URI'leri
RecordedPrograms
ü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, kayıtlı oturumları kaydetmek için depolama alanı belirlerken dikkatli olun. Kayıtlı bir oturumu kaydetmek için yeterli alan olmadığında RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)
özelliğini kullanın.
Kullanıcı kaydı başlattığında verileri mümkün olan en kısa sürede 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 önceden zaman alan görevleri tamamlayın. Bu sayede onStartRecording()
geri çağırma etkinleştiğinde hemen kayıt yapmaya başlayabilirsiniz.