שירותי קלט טלוויזיה מאפשרים למשתמש להשהות ולהמשיך את הפעלת הערוץ באמצעות ממשקי 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" />
למידע נוסף על קובץ המטא-נתונים של השירות: הצהרה על קלט הטלוויזיה השירות שמצוין במניפסט שלו.
לחלופין, תוכלו לציין תמיכה בהקלטה בקוד באמצעות את השלבים הבאים:
- בשירות הקלט של הטלוויזיה
onCreate()
יוצרים אובייקטTvInputInfo
חדש באמצעות כיתה אחת (TvInputInfo.Builder
). - כשיוצרים את האובייקט
TvInputInfo
החדש, קוראים לפונקציהsetCanRecord(true)
לפני השיחהbuild()
כדי לציין השירות תומך בהקלטה. - רישום האובייקט
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()
.