টিভি ইনপুট সার্ভিস ব্যবহারকারীকে টাইম-শিফটিং এপিআই ব্যবহার করে চ্যানেল প্লেব্যাক পজ ও রিজুম করার সুযোগ দেয়। অ্যান্ড্রয়েড ৭.০ ব্যবহারকারীকে একাধিক রেকর্ড করা সেশন সেভ করার সুবিধা দিয়ে টাইম-শিফটিং-এর পরিধি আরও বাড়িয়েছে।
ব্যবহারকারীরা আগে থেকে রেকর্ডিং শিডিউল করতে পারেন অথবা কোনো প্রোগ্রাম দেখার সময় রেকর্ডিং শুরু করতে পারেন। সিস্টেমটি রেকর্ডিং সংরক্ষণ করার পর, ব্যবহারকারী সিস্টেমের টিভি অ্যাপ ব্যবহার করে রেকর্ডিংটি ব্রাউজ, পরিচালনা এবং প্লেব্যাক করতে পারেন।
আপনি যদি আপনার টিভি ইনপুট পরিষেবার জন্য রেকর্ডিং কার্যকারিতা প্রদান করতে চান, তবে আপনাকে অবশ্যই সিস্টেমকে জানাতে হবে যে আপনার অ্যাপটি রেকর্ডিং সমর্থন করে, প্রোগ্রাম রেকর্ড করার ক্ষমতা বাস্তবায়ন করতে হবে, রেকর্ডিং চলাকালীন ঘটা যেকোনো ত্রুটি পরিচালনা ও অবহিত করতে হবে এবং আপনার রেকর্ড করা সেশনগুলো পরিচালনা করতে হবে।
রেকর্ডিং এর জন্য সমর্থন নির্দেশ করুন
আপনার টিভি ইনপুট সার্ভিস যে রেকর্ডিং সমর্থন করে, তা সিস্টেমকে জানানোর জন্য, আপনার সার্ভিস মেটাডেটা XML ফাইলে android:canRecord অ্যাট্রিবিউটটিকে true তে সেট করুন:
<tv-input xmlns:android="http://schemas.android.com/apk/res/android" android:canRecord="true" android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" />
সার্ভিস মেটাডেটা ফাইল সম্পর্কে আরও তথ্যের জন্য, ম্যানিফেস্টে আপনার টিভি ইনপুট সার্ভিস ঘোষণা করুন দেখুন।
বিকল্পভাবে, আপনি এই ধাপগুলো অনুসরণ করে আপনার কোডে রেকর্ডিং সমর্থন নির্দেশ করতে পারেন:
- আপনার টিভি ইনপুট সার্ভিসের
onCreateমেথডে,TvInputInfo.Builderক্লাস ব্যবহার করে একটি নতুনTvInputInfoঅবজেক্ট তৈরি করুন। - নতুন
TvInputInfoঅবজেক্ট তৈরি করার সময়, আপনার সার্ভিসটি যে রেকর্ডিং সমর্থন করে তা বোঝানোর জন্যbuildকল করার আগেsetCanRecord(true)কল করুন। -
TvInputManager.updateTvInputInfoকল করে আপনারTvInputInfoঅবজেক্টটি সিস্টেমে রেজিস্টার করুন।
একটি সেশন রেকর্ড করুন
আপনার টিভি ইনপুট সার্ভিস রেকর্ডিং কার্যকারিতা সমর্থন করে বলে রেজিস্টার করার পর, সিস্টেম যখন আপনার অ্যাপের রেকর্ডিং ইমপ্লিমেন্টেশন অ্যাক্সেস করার প্রয়োজন হয়, তখন আপনার TvInputService.onCreateRecordingSession মেথডটি কল করে। আপনার নিজস্ব TvInputService.RecordingSession সাবক্লাস ইমপ্লিমেন্ট করুন এবং যখন onCreateRecordingSession কলব্যাকটি ফায়ার হবে, তখন সেটি রিটার্ন করুন। এই সাবক্লাসটি সঠিক চ্যানেল ডেটাতে সুইচ করা, অনুরোধ করা ডেটা রেকর্ড করা এবং সিস্টেমকে রেকর্ডিংয়ের স্ট্যাটাস ও ত্রুটি সম্পর্কে জানানোর জন্য দায়ী।
যখন সিস্টেম একটি চ্যানেল URI পাস করে RecordingSession.onTune কল করে, তখন সেই URI দ্বারা নির্দিষ্ট চ্যানেলে টিউন করুন। আপনার অ্যাপ নির্বাচিত চ্যানেলে টিউন করেছে তা notifyTuned কল করে সিস্টেমকে জানান অথবা, যদি আপনার অ্যাপ সঠিক চ্যানেলে টিউন করতে না পারে, তাহলে notifyError কল করুন।
এরপর সিস্টেমটি RecordingSession.onStartRecording কলব্যাকটি কল করে। আপনার অ্যাপকে অবশ্যই অবিলম্বে রেকর্ডিং শুরু করতে হবে। যখন সিস্টেম এই কলব্যাকটি কল করে, তখন এটি একটি URI প্রদান করতে পারে, যাতে যে প্রোগ্রামটি রেকর্ড করা হবে সেটির তথ্য থাকে। রেকর্ডিং সম্পন্ন হলে, এই ডেটা RecordedPrograms ডেটা টেবিলে কপি করুন।
অবশেষে, সিস্টেম RecordingSession.onStopRecording কল করে। এই পর্যায়ে, আপনার অ্যাপকে অবশ্যই অবিলম্বে রেকর্ডিং বন্ধ করতে হবে। এছাড়াও আপনাকে RecordedPrograms টেবিলে একটি এন্ট্রি তৈরি করতে হবে, যেখানে RecordedPrograms.COLUMN_RECORDING_DATA_URI কলামে রেকর্ড করা সেশন ডেটা URI এবং onStartRecording এর প্রাথমিক কলে সিস্টেম দ্বারা সরবরাহ করা যেকোনো প্রোগ্রাম তথ্য অন্তর্ভুক্ত থাকবে।
RecordedPrograms টেবিলটি কীভাবে অ্যাক্সেস করতে হয় সে সম্পর্কে আরও বিস্তারিত জানতে, "রেকর্ড করা সেশনগুলি পরিচালনা করুন" বিভাগটি দেখুন।
রেকর্ডিং ত্রুটিগুলি পরিচালনা করুন
রেকর্ডিং চলাকালীন কোনো ত্রুটি ঘটলে, যার ফলে রেকর্ড করা ডেটা ব্যবহার অযোগ্য হয়ে পড়ে, notifyError কল করে সিস্টেমকে অবহিত করুন। একটি রেকর্ডিং সেশন তৈরি হওয়ার পরেও আপনি notifyError কল করতে পারেন, যাতে সিস্টেম জানতে পারে যে আপনার অ্যাপ আর সেশন রেকর্ড করতে পারবে না।
রেকর্ডিং চলাকালীন কোনো ত্রুটি ঘটলে, কিন্তু ব্যবহারকারীদের প্লেব্যাকের জন্য আপনি যদি একটি আংশিক রেকর্ডিং প্রদান করতে চান, তাহলে সিস্টেমকে আংশিক সেশনটি ব্যবহার করার অনুমতি দিতে notifyRecordingStopped কল করুন।
রেকর্ড করা সেশনগুলি পরিচালনা করুন
সিস্টেমটি RecordedPrograms কন্টেন্ট প্রোভাইডার টেবিলে রেকর্ডিং-সক্ষম সকল চ্যানেল অ্যাপের সমস্ত রেকর্ড করা সেশনের তথ্য সংরক্ষণ করে। এই তথ্য RecordedPrograms কন্টেন্ট রেকর্ডিং URI-এর মাধ্যমে অ্যাক্সেসযোগ্য। এই টেবিল থেকে এন্ট্রি পড়তে, যোগ করতে এবং মুছে ফেলতে কন্টেন্ট প্রোভাইডার API ব্যবহার করুন।
কন্টেন্ট প্রোভাইডার ডেটা নিয়ে কাজ করার বিষয়ে আরও তথ্যের জন্য, কন্টেন্ট প্রোভাইডার বেসিকস দেখুন।
সর্বোত্তম অনুশীলন
টিভি ডিভাইসে স্টোরেজ সীমিত থাকতে পারে, তাই রেকর্ড করা সেশন সংরক্ষণের জন্য স্টোরেজ বরাদ্দ করার সময় নিজের বিচারবুদ্ধি ব্যবহার করুন। রেকর্ড করা সেশন সংরক্ষণের জন্য পর্যাপ্ত জায়গা না থাকলে RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE) ব্যবহার করুন।
যখন ব্যবহারকারী রেকর্ডিং শুরু করেন, তখন যত তাড়াতাড়ি সম্ভব ডেটা রেকর্ডিং শুরু করুন। এটি সহজ করার জন্য, সিস্টেম যখন onCreateRecordingSession কলব্যাকটি চালু করে, তখনই স্টোরেজ স্পেস অ্যাক্সেস করা ও বরাদ্দ করার মতো যেকোনো সময়সাপেক্ষ কাজ সম্পন্ন করুন। এর ফলে onStartRecording কলব্যাকটি চালু হওয়ার সাথে সাথেই আপনি রেকর্ডিং শুরু করতে পারবেন।