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

تتيح خدمات إدخال التلفزيون للمستخدم إيقاف تشغيل القناة مؤقتًا واستئنافه باستخدام واجهات برمجة تطبيقات التسجيل على الوقت. يتّسع 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 جدول موفِّر المحتوى. يمكن الوصول إلى هذه المعلومات من خلال RecordedPrograms معرّفات الموارد المنتظمة (URI) لتسجيل المحتوى. استخدم واجهات برمجة تطبيقات موفر المحتوى لقراءة الإدخالات وإضافتها وحذفها من هذا الجدول.

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

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

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

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