הקלטת תוכן לתמיכה

שירותי קלט טלוויזיה מאפשרים למשתמש להשהות ולהמשיך את הפעלת הערוץ באמצעות ממשקי API לשינוי זמן. מערכת 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) והחזרה כשהקריאה החוזרת (callback) של 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 של הקלטת תוכן. השתמשו בממשקי API של ספקי תוכן כדי קריאה, הוספה ומחיקה של רשומות מהטבלה הזו.

למידע נוסף על עבודה עם נתונים של ספק תוכן: מידע בסיסי על ספקי תוכן.

שיטות מומלצות

מכשירי טלוויזיה עשויים להכיל נפח אחסון מוגבל, לכן הפעל שיקול דעת כאשר מקצה נפח אחסון לשמירת סשנים מוקלטים. כדאי להשתמש RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE) כאשר אין מספיק מקום אחסון כדי לשמור פעילות מוקלטת.

כשהמשתמש מתחיל הקלטה, צריך להתחיל להקליט נתונים ברגע ככל האפשר. כדי לעשות את זה, תצטרכו לבצע משימות ראשוניות שגוזלות זמן רב. כמו גישה לשטח אחסון והקצאתו, כאשר המערכת מפעילה התקשרות חזרה onCreateRecordingSession(). כך תוכלו להתחיל מיד אחרי מופעל קריאה חוזרת (callback) ב-onStartRecording().