تتيح خدمات إدخال بيانات التلفزيون للمستخدم إيقاف تشغيل القناة مؤقتًا واستئنافها باستخدام واجهات برمجة التطبيقات لتغيير الوقت. يوسّع 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" />
لمزيد من المعلومات عن ملف البيانات الوصفية للخدمة، يُرجى الاطّلاع على مقالة الإعلان عن خدمة إدخال بيانات التلفزيون في ملف البيان.
بدلاً من ذلك، يمكنك الإشارة إلى إتاحة التسجيل في الرمز البرمجي باتّباع الخطوات التالية:
- في طريقة
onCreateخدمة إدخال بيانات التلفزيون، أنشِئ كائنTvInputInfoجديدًا باستخدام الفئةTvInputInfo.Builder. - عند إنشاء كائن
TvInputInfoالجديد، استدعِ الدالةsetCanRecord(true)قبل استدعاء الدالةbuildللإشارة إلى أنّ خدمتك تتيح التسجيل. - سجِّل الكائن
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.