Google berkomitmen untuk mendorong terwujudnya keadilan rasial bagi komunitas Kulit Hitam. Lihat caranya.

Mendukung perekaman konten

Layanan input TV memungkinkan pengguna menjeda dan melanjutkan pemutaran saluran melalui API pergeseran waktu. Android 7.0 memperluas kemampuan pergeseran waktu dengan memungkinkan pengguna menyimpan beberapa rekaman sesi.

Pengguna dapat menjadwalkan perekaman terlebih dahulu, atau memulai perekaman sambil menonton suatu program. Setelah sistem menyimpan rekaman, pengguna bisa mencari, mengelola, dan memutar kembali rekaman menggunakan aplikasi TV yang ada pada sistem.

Jika ingin menyediakan fungsionalitas perekaman untuk layanan input TV, tunjukkan kepada sistem bahwa aplikasi Anda mendukung perekaman, implementasikan kemampuan untuk merekam program, tangani dan komunikasikan masalah yang terjadi saat perekaman, serta kelola sesi yang direkam.

Menunjukkan dukungan untuk perekaman

Untuk memberi tahu sistem bahwa layanan input TV Anda mendukung perekaman, tetapkan atribut android:canRecord di file XML metadata layanan Anda ke true:

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

Untuk informasi selengkapnya tentang file metadata layanan, lihat Mendeklarasikan layanan input TV dalam manifes.

Atau, Anda dapat menunjukkan dukungan perekaman dalam kode menggunakan langkah-langkah berikut:

  1. Di metode onCreate() layanan input TV Anda, buat objek TvInputInfo baru menggunakan class TvInputInfo.Builder.
  2. Saat membuat objek TvInputInfo baru, panggil setCanRecord(true) sebelum memanggil build() untuk menunjukkan bahwa layanan Anda mendukung perekaman.
  3. Daftarkan objek TvInputInfo Anda pada sistem dengan memanggil TvInputManager.updateTvInputInfo().

Merekam sesi

Setelah layanan input TV Anda mendaftarkan bahwa fungsi tersebut mendukung fungsionalitas perekaman, sistem akan memanggil metode TvInputService.onCreateRecordingSession() Anda saat metode tersebut perlu mengakses implementasi perekaman aplikasi Anda. Implementasikan subclass TvInputService.RecordingSession Anda sendiri, lalu kembalikan jika callback onCreateRecordingSession() dipicu. Subclass ini berfungsi untuk mengalihkan ke data saluran yang benar, merekam data yang diminta, serta memberitahukan status perekaman dan error ke sistem.

Jika sistem memanggil RecordingSession.onTune(), dengan meneruskan URI saluran, setel ke saluran yang ditetapkan URI. Beri tahu sistem bahwa aplikasi Anda telah disetel ke saluran yang diinginkan dengan memanggil notifyTuned(), atau, jika aplikasi Anda tidak bisa disetel ke saluran yang tepat, panggil notifyError().

Sistem berikutnya akan memanggil callback RecordingSession.onStartRecording(). Aplikasi Anda harus segera mulai merekam. Ketika memanggil callback ini, sistem dapat menyediakan URI yang berisi informasi tentang program yang akan direkam. Setelah perekaman selesai, Anda akan menyalin data ini ke RecordedPrograms tabel data.

Terakhir, sistem akan memanggil RecordingSession.onStopRecording(). Pada tahap ini, aplikasi Anda harus segera menghentikan perekaman. Anda juga perlu membuat entri dalam tabel RecordedPrograms. Entri ini harus menyertakan URI data sesi yang direkam dalam kolom RecordedPrograms.COLUMN_RECORDING_DATA_URI, dan informasi program yang diberikan sistem dalam panggilan awal ke onStartRecording().

Untuk detail selengkapnya tentang cara mengakses tabel RecordedPrograms, lihat Mengelola sesi yang direkam.

Menangani error perekaman

Jika terjadi error saat merekam yang mengakibatkan data terekam tidak dapat digunakan, beri tahu sistem dengan memanggil notifyError(). Demikian juga, Anda dapat memanggil notifyError() setelah sesi perekaman dibuat agar sistem mengetahui bahwa aplikasi Anda tidak dapat merekam sesi lagi.

Jika terjadi error saat merekam, tetapi Anda ingin memberikan rekaman sebagian kepada pengguna untuk pemutaran, panggil notifyRecordingStopped() agar sistem dapat menggunakan sesi parsial.

Mengelola rekaman sesi

Sistem menyimpan informasi untuk semua sesi yang direkam dari semua aplikasi saluran yang mampu merekam dalam tabel penyedia konten RecordedPrograms. Informasi ini dapat diakses melalui URI perekaman konten RecordedPrograms. Gunakan API penyedia materi untuk membaca, menambahkan, dan menghapus entri dari tabel ini.

Untuk informasi selengkapnya tentang cara menggunakan data penyedia konten, lihat Dasar-dasar penyedia konten.

Tips

Perangkat TV mungkin memiliki penyimpanan terbatas, jadi pertimbangkan sebaik mungkin saat mengalokasikan penyimpanan untuk menyimpan rekaman sesi. Gunakan RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE) jika tidak cukup ruang untuk menyimpan sesi rekaman.

Ketika pengguna memulai perekaman, Anda harus memulai perekaman data secepatnya. Agar lebih mudah, selesaikan terlebih dahulu setiap tugas yang memakan waktu lama, seperti mengakses dan mengalokasikan ruang penyimpanan, saat sistem memanggil callback onCreateRecordingSession(). Langkah ini akan memungkinkan Anda memulai perekaman dengan segera jika callback onStartRecording() dipicu.