تسجيل محتوى الدعم

تتيح خدمات إدخال التلفزيون للمستخدم إيقاف تشغيل القناة مؤقتًا واستئنافه باستخدام واجهات برمجة تطبيقات التسجيل على الوقت. يتوسع Android 7.0 في عملية التسجيل على وسيط من خلال السماح للمستخدم بحفظ جلسات مسجلة متعددة.

يمكن للمستخدمين جدولة التسجيلات مسبقًا أو بدء التسجيل أثناء مشاهدة برنامج ما. بعد أن يحفظ النظام التسجيل، يمكن للمستخدم تصفُّح التسجيل وإدارته وتشغيله باستخدام تطبيق تلفزيون النظام.

إذا كنت تريد توفير وظيفة تسجيل لخدمة إدخال التلفزيون، عليك إبلاغ النظام بأنّ تطبيقك يتيح التسجيل، وتوفير إمكانية تسجيل البرامج، والتعامل مع أي أخطاء تحدث أثناء التسجيل، وإدارة الجلسات المسجَّلة.

توضيح إمكانية التسجيل

لإبلاغ النظام بأنّ خدمة إدخال التلفزيون تتيح التسجيل، اضبط السمة android:canRecord في ملف XML الخاص بالبيانات الوصفية للخدمة على true:

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

لمزيد من المعلومات حول ملف البيانات الوصفية للخدمة، يُرجى الاطّلاع على القسم تعريف خدمة إدخال التلفزيون في البيان.

بدلاً من ذلك، يمكنك الإشارة إلى دعم التسجيل في الرمز الخاص بك باستخدام هذه الخطوات:

  1. في طريقة onCreate() الخاصة بخدمة إدخال التلفزيون، أنشِئ كائن TvInputInfo جديدًا باستخدام الفئة TvInputInfo.Builder.
  2. عند إنشاء عنصر TvInputInfo جديد، يجب استدعاء setCanRecord(true) قبل طلب build() للإشارة إلى أنّ الخدمة تتيح التسجيل.
  3. يُرجى تسجيل كائن TvInputInfo لدى النظام من خلال استدعاء TvInputManager.updateTvInputInfo().

تسجيل جلسة

بعد أن تسجّل خدمة إدخال التلفزيون دعمها لوظائف التسجيل، يطلب النظام طريقة TvInputService.onCreateRecordingSession() عندما تحتاج إلى الوصول إلى تنفيذ التسجيل في تطبيقك. نفِّذ الفئة الفرعية "TvInputService.RecordingSession" الخاصة بك وأعِدها عند تنشيط رد الاتصال "onCreateRecordingSession()". تُعدّ هذه الفئة الفرعية مسؤولة عن التبديل إلى بيانات القناة الصحيحة وتسجيل البيانات المطلوبة وإبلاغ النظام بحالة التسجيل والأخطاء.

عندما يستدعي النظام RecordingSession.onTune()، ويمرر معرّف موارد منتظم (URI) للقناة، اضبط القناة التي يحدّدها معرّف الموارد المنتظم (URI). أبلِغ النظام بأنّ تطبيقك قد ضبط القناة المطلوبة من خلال الاتصال بـ notifyTuned() أو الاتصال بالرقم notifyError() إذا تعذّر على تطبيقك ضبط القناة المناسبة.

يستدعي النظام بعد ذلك معاودة الاتصال بـ RecordingSession.onStartRecording(). يجب أن يبدأ تطبيقك في التسجيل على الفور عندما يستدعي النظام معاودة الاتصال هذه، قد يوفّر معرّف موارد منتظم (URI) يحتوي على معلومات عن البرنامج الذي على وشك تسجيله. عند انتهاء التسجيل، انسخ هذه البيانات إلى جدول البيانات RecordedPrograms.

وأخيرًا، يطلب النظام الرقم RecordingSession.onStopRecording(). عند هذه المرحلة، يجب أن يتوقف تطبيقك عن التسجيل على الفور. عليك أيضًا إنشاء إدخال في جدول RecordedPrograms يتضمّن معرّف الموارد المنتظم (URI) لبيانات الجلسات المسجّلة في العمود "RecordedPrograms.COLUMN_RECORDING_DATA_URI"، بالإضافة إلى أيّ معلومات للبرنامج قدّمها النظام في الطلب الأوّلي المُرسَل إلى onStartRecording().

لمزيد من التفاصيل حول كيفية الوصول إلى جدول "RecordedPrograms"، يُرجى الاطّلاع على قسم إدارة الجلسات المسجَّلة.

التعامل مع أخطاء التسجيل

في حال حدوث خطأ أثناء التسجيل، ينتج عنه بيانات مسجّلة غير قابلة للاستخدام، يُرجى إبلاغ النظام عن طريق طلب notifyError(). يمكنك أيضًا الاتصال بالرقم notifyError() بعد إنشاء جلسة تسجيل لإعلام النظام بأنه لم يعد بإمكان تطبيقك تسجيل الجلسات.

إذا حدث خطأ أثناء التسجيل ولكنك تريد توفير تسجيل جزئي للمستخدمين لتشغيله، يمكنك طلب notifyRecordingStopped() لتفعيل النظام من استخدام جزء من الجلسة.

إدارة الجلسات المسجَّلة

يحتفظ النظام بمعلومات عن كل الجلسات المسجَّلة من جميع تطبيقات القنوات التي تتيح التسجيل في جدول موفّري المحتوى RecordedPrograms. ويمكن الوصول إلى هذه المعلومات من خلال معرّفات الموارد المنتظمة (URI) لتسجيل المحتوىRecordedPrograms. استخدم واجهات برمجة تطبيقات موفر المحتوى لقراءة الإدخالات من هذا الجدول وإضافتها وحذفها.

لمزيد من المعلومات حول استخدام بيانات موفّر المحتوى، راجِع أساسيات موفّر المحتوى.

أفضل الممارسات

قد تكون مساحة التخزين محدودة في أجهزة التلفزيون، لذا استخدِم أفضل تقدير عند تخصيص مساحة التخزين لحفظ الجلسات المسجَّلة. استخدِم RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE) عندما لا تتوفّر مساحة كافية لحفظ جلسة مسجّلة.

عندما يبدأ المستخدم التسجيل، ابدأ في تسجيل البيانات في أقرب وقت ممكن. لتسهيل ذلك، أكمِل أي مهام تحتاج إلى وقت مبكر، مثل الوصول إلى مساحة التخزين وتخصيصها، عندما يستدعي النظام استدعاء onCreateRecordingSession(). يتيح لك ذلك بدء التسجيل فورًا عند تنشيط معاودة الاتصال بـ onStartRecording().