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:
- TV giriş hizmetinizdeki
onCreateyönteminde,TvInputInfo.Buildersınıfını kullanarak yeni birTvInputInfonesnesi oluşturun. - Yeni
TvInputInfonesnesini oluştururken, hizmetinizin kaydı desteklediğini belirtmek içinbuildişlevini çağırmadan öncesetCanRecord(true)işlevini çağırın. TvInputInfonesneniziTvInputManager.updateTvInputInfoiş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.